This is an inofficial mirror of http://metamath.tirix.org for personal testing of a visualizer extension only.
Description: Closure of the subword extractor. (Contributed by Stefan O'Rear, 16-Aug-2015) (Revised by Mario Carneiro, 26-Feb-2016)
| Ref | Expression | ||
|---|---|---|---|
| Assertion | swrdcl | ⊢ ( 𝑆 ∈ Word 𝐴 → ( 𝑆 substr 〈 𝐹 , 𝐿 〉 ) ∈ Word 𝐴 ) |
| Step | Hyp | Ref | Expression |
|---|---|---|---|
| 1 | eleq1 | ⊢ ( ( 𝑆 substr 〈 𝐹 , 𝐿 〉 ) = ∅ → ( ( 𝑆 substr 〈 𝐹 , 𝐿 〉 ) ∈ Word 𝐴 ↔ ∅ ∈ Word 𝐴 ) ) | |
| 2 | n0 | ⊢ ( ( 𝑆 substr 〈 𝐹 , 𝐿 〉 ) ≠ ∅ ↔ ∃ 𝑥 𝑥 ∈ ( 𝑆 substr 〈 𝐹 , 𝐿 〉 ) ) | |
| 3 | df-substr | ⊢ substr = ( 𝑠 ∈ V , 𝑏 ∈ ( ℤ × ℤ ) ↦ if ( ( ( 1st ‘ 𝑏 ) ..^ ( 2nd ‘ 𝑏 ) ) ⊆ dom 𝑠 , ( 𝑥 ∈ ( 0 ..^ ( ( 2nd ‘ 𝑏 ) − ( 1st ‘ 𝑏 ) ) ) ↦ ( 𝑠 ‘ ( 𝑥 + ( 1st ‘ 𝑏 ) ) ) ) , ∅ ) ) | |
| 4 | 3 | elmpocl2 | ⊢ ( 𝑥 ∈ ( 𝑆 substr 〈 𝐹 , 𝐿 〉 ) → 〈 𝐹 , 𝐿 〉 ∈ ( ℤ × ℤ ) ) |
| 5 | opelxp | ⊢ ( 〈 𝐹 , 𝐿 〉 ∈ ( ℤ × ℤ ) ↔ ( 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) ) | |
| 6 | 4 5 | sylib | ⊢ ( 𝑥 ∈ ( 𝑆 substr 〈 𝐹 , 𝐿 〉 ) → ( 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) ) |
| 7 | 6 | exlimiv | ⊢ ( ∃ 𝑥 𝑥 ∈ ( 𝑆 substr 〈 𝐹 , 𝐿 〉 ) → ( 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) ) |
| 8 | 2 7 | sylbi | ⊢ ( ( 𝑆 substr 〈 𝐹 , 𝐿 〉 ) ≠ ∅ → ( 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) ) |
| 9 | swrdval | ⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) → ( 𝑆 substr 〈 𝐹 , 𝐿 〉 ) = if ( ( 𝐹 ..^ 𝐿 ) ⊆ dom 𝑆 , ( 𝑥 ∈ ( 0 ..^ ( 𝐿 − 𝐹 ) ) ↦ ( 𝑆 ‘ ( 𝑥 + 𝐹 ) ) ) , ∅ ) ) | |
| 10 | wrdf | ⊢ ( 𝑆 ∈ Word 𝐴 → 𝑆 : ( 0 ..^ ( ♯ ‘ 𝑆 ) ) ⟶ 𝐴 ) | |
| 11 | 10 | 3ad2ant1 | ⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) → 𝑆 : ( 0 ..^ ( ♯ ‘ 𝑆 ) ) ⟶ 𝐴 ) |
| 12 | 11 | ad2antrr | ⊢ ( ( ( ( 𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) ∧ ( 𝐹 ..^ 𝐿 ) ⊆ dom 𝑆 ) ∧ 𝑥 ∈ ( 0 ..^ ( 𝐿 − 𝐹 ) ) ) → 𝑆 : ( 0 ..^ ( ♯ ‘ 𝑆 ) ) ⟶ 𝐴 ) |
| 13 | simplr | ⊢ ( ( ( ( 𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) ∧ ( 𝐹 ..^ 𝐿 ) ⊆ dom 𝑆 ) ∧ 𝑥 ∈ ( 0 ..^ ( 𝐿 − 𝐹 ) ) ) → ( 𝐹 ..^ 𝐿 ) ⊆ dom 𝑆 ) | |
| 14 | simpr | ⊢ ( ( ( ( 𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) ∧ ( 𝐹 ..^ 𝐿 ) ⊆ dom 𝑆 ) ∧ 𝑥 ∈ ( 0 ..^ ( 𝐿 − 𝐹 ) ) ) → 𝑥 ∈ ( 0 ..^ ( 𝐿 − 𝐹 ) ) ) | |
| 15 | simpll3 | ⊢ ( ( ( ( 𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) ∧ ( 𝐹 ..^ 𝐿 ) ⊆ dom 𝑆 ) ∧ 𝑥 ∈ ( 0 ..^ ( 𝐿 − 𝐹 ) ) ) → 𝐿 ∈ ℤ ) | |
| 16 | simpll2 | ⊢ ( ( ( ( 𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) ∧ ( 𝐹 ..^ 𝐿 ) ⊆ dom 𝑆 ) ∧ 𝑥 ∈ ( 0 ..^ ( 𝐿 − 𝐹 ) ) ) → 𝐹 ∈ ℤ ) | |
| 17 | fzoaddel2 | ⊢ ( ( 𝑥 ∈ ( 0 ..^ ( 𝐿 − 𝐹 ) ) ∧ 𝐿 ∈ ℤ ∧ 𝐹 ∈ ℤ ) → ( 𝑥 + 𝐹 ) ∈ ( 𝐹 ..^ 𝐿 ) ) | |
| 18 | 14 15 16 17 | syl3anc | ⊢ ( ( ( ( 𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) ∧ ( 𝐹 ..^ 𝐿 ) ⊆ dom 𝑆 ) ∧ 𝑥 ∈ ( 0 ..^ ( 𝐿 − 𝐹 ) ) ) → ( 𝑥 + 𝐹 ) ∈ ( 𝐹 ..^ 𝐿 ) ) |
| 19 | 13 18 | sseldd | ⊢ ( ( ( ( 𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) ∧ ( 𝐹 ..^ 𝐿 ) ⊆ dom 𝑆 ) ∧ 𝑥 ∈ ( 0 ..^ ( 𝐿 − 𝐹 ) ) ) → ( 𝑥 + 𝐹 ) ∈ dom 𝑆 ) |
| 20 | 12 | fdmd | ⊢ ( ( ( ( 𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) ∧ ( 𝐹 ..^ 𝐿 ) ⊆ dom 𝑆 ) ∧ 𝑥 ∈ ( 0 ..^ ( 𝐿 − 𝐹 ) ) ) → dom 𝑆 = ( 0 ..^ ( ♯ ‘ 𝑆 ) ) ) |
| 21 | 19 20 | eleqtrd | ⊢ ( ( ( ( 𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) ∧ ( 𝐹 ..^ 𝐿 ) ⊆ dom 𝑆 ) ∧ 𝑥 ∈ ( 0 ..^ ( 𝐿 − 𝐹 ) ) ) → ( 𝑥 + 𝐹 ) ∈ ( 0 ..^ ( ♯ ‘ 𝑆 ) ) ) |
| 22 | 12 21 | ffvelcdmd | ⊢ ( ( ( ( 𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) ∧ ( 𝐹 ..^ 𝐿 ) ⊆ dom 𝑆 ) ∧ 𝑥 ∈ ( 0 ..^ ( 𝐿 − 𝐹 ) ) ) → ( 𝑆 ‘ ( 𝑥 + 𝐹 ) ) ∈ 𝐴 ) |
| 23 | 22 | fmpttd | ⊢ ( ( ( 𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) ∧ ( 𝐹 ..^ 𝐿 ) ⊆ dom 𝑆 ) → ( 𝑥 ∈ ( 0 ..^ ( 𝐿 − 𝐹 ) ) ↦ ( 𝑆 ‘ ( 𝑥 + 𝐹 ) ) ) : ( 0 ..^ ( 𝐿 − 𝐹 ) ) ⟶ 𝐴 ) |
| 24 | iswrdi | ⊢ ( ( 𝑥 ∈ ( 0 ..^ ( 𝐿 − 𝐹 ) ) ↦ ( 𝑆 ‘ ( 𝑥 + 𝐹 ) ) ) : ( 0 ..^ ( 𝐿 − 𝐹 ) ) ⟶ 𝐴 → ( 𝑥 ∈ ( 0 ..^ ( 𝐿 − 𝐹 ) ) ↦ ( 𝑆 ‘ ( 𝑥 + 𝐹 ) ) ) ∈ Word 𝐴 ) | |
| 25 | 23 24 | syl | ⊢ ( ( ( 𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) ∧ ( 𝐹 ..^ 𝐿 ) ⊆ dom 𝑆 ) → ( 𝑥 ∈ ( 0 ..^ ( 𝐿 − 𝐹 ) ) ↦ ( 𝑆 ‘ ( 𝑥 + 𝐹 ) ) ) ∈ Word 𝐴 ) |
| 26 | wrd0 | ⊢ ∅ ∈ Word 𝐴 | |
| 27 | 26 | a1i | ⊢ ( ( ( 𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) ∧ ¬ ( 𝐹 ..^ 𝐿 ) ⊆ dom 𝑆 ) → ∅ ∈ Word 𝐴 ) |
| 28 | 25 27 | ifclda | ⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) → if ( ( 𝐹 ..^ 𝐿 ) ⊆ dom 𝑆 , ( 𝑥 ∈ ( 0 ..^ ( 𝐿 − 𝐹 ) ) ↦ ( 𝑆 ‘ ( 𝑥 + 𝐹 ) ) ) , ∅ ) ∈ Word 𝐴 ) |
| 29 | 9 28 | eqeltrd | ⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) → ( 𝑆 substr 〈 𝐹 , 𝐿 〉 ) ∈ Word 𝐴 ) |
| 30 | 29 | 3expb | ⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ ( 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ ) ) → ( 𝑆 substr 〈 𝐹 , 𝐿 〉 ) ∈ Word 𝐴 ) |
| 31 | 8 30 | sylan2 | ⊢ ( ( 𝑆 ∈ Word 𝐴 ∧ ( 𝑆 substr 〈 𝐹 , 𝐿 〉 ) ≠ ∅ ) → ( 𝑆 substr 〈 𝐹 , 𝐿 〉 ) ∈ Word 𝐴 ) |
| 32 | 26 | a1i | ⊢ ( 𝑆 ∈ Word 𝐴 → ∅ ∈ Word 𝐴 ) |
| 33 | 1 31 32 | pm2.61ne | ⊢ ( 𝑆 ∈ Word 𝐴 → ( 𝑆 substr 〈 𝐹 , 𝐿 〉 ) ∈ Word 𝐴 ) |