| Step | Hyp | Ref
| Expression |
| 1 | | swrdval2 11104 |
. . . 4
⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆))) → (𝑆 substr 〈𝑀, 𝑁〉) = (𝑥 ∈ (0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀)))) |
| 2 | 1 | 3expb 1207 |
. . 3
⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) → (𝑆 substr 〈𝑀, 𝑁〉) = (𝑥 ∈ (0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀)))) |
| 3 | | wrdf 11000 |
. . . . . . . . . 10
⊢ (𝑆 ∈ Word 𝐴 → 𝑆:(0..^(♯‘𝑆))⟶𝐴) |
| 4 | 3 | ffund 5429 |
. . . . . . . . 9
⊢ (𝑆 ∈ Word 𝐴 → Fun 𝑆) |
| 5 | 4 | adantr 276 |
. . . . . . . 8
⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) → Fun 𝑆) |
| 6 | 5 | adantr 276 |
. . . . . . 7
⊢ (((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) ∧ 𝑥 ∈ (0..^(𝑁 − 𝑀))) → Fun 𝑆) |
| 7 | | wrddm 11002 |
. . . . . . . . 9
⊢ (𝑆 ∈ Word 𝐴 → dom 𝑆 = (0..^(♯‘𝑆))) |
| 8 | | elfzodifsumelfzo 10330 |
. . . . . . . . . . . . 13
⊢ ((𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆))) → (𝑥 ∈ (0..^(𝑁 − 𝑀)) → (𝑥 + 𝑀) ∈ (0..^(♯‘𝑆)))) |
| 9 | 8 | imp 124 |
. . . . . . . . . . . 12
⊢ (((𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆))) ∧ 𝑥 ∈ (0..^(𝑁 − 𝑀))) → (𝑥 + 𝑀) ∈ (0..^(♯‘𝑆))) |
| 10 | 9 | adantl 277 |
. . . . . . . . . . 11
⊢ ((dom
𝑆 =
(0..^(♯‘𝑆))
∧ ((𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆))) ∧ 𝑥 ∈ (0..^(𝑁 − 𝑀)))) → (𝑥 + 𝑀) ∈ (0..^(♯‘𝑆))) |
| 11 | | eleq2 2269 |
. . . . . . . . . . . 12
⊢ (dom
𝑆 =
(0..^(♯‘𝑆))
→ ((𝑥 + 𝑀) ∈ dom 𝑆 ↔ (𝑥 + 𝑀) ∈ (0..^(♯‘𝑆)))) |
| 12 | 11 | adantr 276 |
. . . . . . . . . . 11
⊢ ((dom
𝑆 =
(0..^(♯‘𝑆))
∧ ((𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆))) ∧ 𝑥 ∈ (0..^(𝑁 − 𝑀)))) → ((𝑥 + 𝑀) ∈ dom 𝑆 ↔ (𝑥 + 𝑀) ∈ (0..^(♯‘𝑆)))) |
| 13 | 10, 12 | mpbird 167 |
. . . . . . . . . 10
⊢ ((dom
𝑆 =
(0..^(♯‘𝑆))
∧ ((𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆))) ∧ 𝑥 ∈ (0..^(𝑁 − 𝑀)))) → (𝑥 + 𝑀) ∈ dom 𝑆) |
| 14 | 13 | exp32 365 |
. . . . . . . . 9
⊢ (dom
𝑆 =
(0..^(♯‘𝑆))
→ ((𝑀 ∈
(0...𝑁) ∧ 𝑁 ∈
(0...(♯‘𝑆)))
→ (𝑥 ∈
(0..^(𝑁 − 𝑀)) → (𝑥 + 𝑀) ∈ dom 𝑆))) |
| 15 | 7, 14 | syl 14 |
. . . . . . . 8
⊢ (𝑆 ∈ Word 𝐴 → ((𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆))) → (𝑥 ∈ (0..^(𝑁 − 𝑀)) → (𝑥 + 𝑀) ∈ dom 𝑆))) |
| 16 | 15 | imp31 256 |
. . . . . . 7
⊢ (((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) ∧ 𝑥 ∈ (0..^(𝑁 − 𝑀))) → (𝑥 + 𝑀) ∈ dom 𝑆) |
| 17 | | simpr 110 |
. . . . . . . 8
⊢ (((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) ∧ 𝑥 ∈ (0..^(𝑁 − 𝑀))) → 𝑥 ∈ (0..^(𝑁 − 𝑀))) |
| 18 | | elfzelz 10147 |
. . . . . . . . . . 11
⊢ (𝑁 ∈
(0...(♯‘𝑆))
→ 𝑁 ∈
ℤ) |
| 19 | 18 | adantl 277 |
. . . . . . . . . 10
⊢ ((𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆))) → 𝑁 ∈ ℤ) |
| 20 | 19 | adantl 277 |
. . . . . . . . 9
⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) → 𝑁 ∈ ℤ) |
| 21 | 20 | adantr 276 |
. . . . . . . 8
⊢ (((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) ∧ 𝑥 ∈ (0..^(𝑁 − 𝑀))) → 𝑁 ∈ ℤ) |
| 22 | | elfzelz 10147 |
. . . . . . . . . 10
⊢ (𝑀 ∈ (0...𝑁) → 𝑀 ∈ ℤ) |
| 23 | 22 | ad2antrl 490 |
. . . . . . . . 9
⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) → 𝑀 ∈ ℤ) |
| 24 | 23 | adantr 276 |
. . . . . . . 8
⊢ (((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) ∧ 𝑥 ∈ (0..^(𝑁 − 𝑀))) → 𝑀 ∈ ℤ) |
| 25 | | fzoaddel2 10319 |
. . . . . . . 8
⊢ ((𝑥 ∈ (0..^(𝑁 − 𝑀)) ∧ 𝑁 ∈ ℤ ∧ 𝑀 ∈ ℤ) → (𝑥 + 𝑀) ∈ (𝑀..^𝑁)) |
| 26 | 17, 21, 24, 25 | syl3anc 1250 |
. . . . . . 7
⊢ (((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) ∧ 𝑥 ∈ (0..^(𝑁 − 𝑀))) → (𝑥 + 𝑀) ∈ (𝑀..^𝑁)) |
| 27 | | funfvima 5816 |
. . . . . . . 8
⊢ ((Fun
𝑆 ∧ (𝑥 + 𝑀) ∈ dom 𝑆) → ((𝑥 + 𝑀) ∈ (𝑀..^𝑁) → (𝑆‘(𝑥 + 𝑀)) ∈ (𝑆 “ (𝑀..^𝑁)))) |
| 28 | 27 | imp 124 |
. . . . . . 7
⊢ (((Fun
𝑆 ∧ (𝑥 + 𝑀) ∈ dom 𝑆) ∧ (𝑥 + 𝑀) ∈ (𝑀..^𝑁)) → (𝑆‘(𝑥 + 𝑀)) ∈ (𝑆 “ (𝑀..^𝑁))) |
| 29 | 6, 16, 26, 28 | syl21anc 1249 |
. . . . . 6
⊢ (((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) ∧ 𝑥 ∈ (0..^(𝑁 − 𝑀))) → (𝑆‘(𝑥 + 𝑀)) ∈ (𝑆 “ (𝑀..^𝑁))) |
| 30 | 29 | fmpttd 5735 |
. . . . 5
⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) → (𝑥 ∈ (0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀))):(0..^(𝑁 − 𝑀))⟶(𝑆 “ (𝑀..^𝑁))) |
| 31 | | simpll 527 |
. . . . . . . . . . . 12
⊢ (((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) ∧ 𝑥 ∈ (0..^(𝑁 − 𝑀))) → 𝑆 ∈ Word 𝐴) |
| 32 | | elfzoelz 10269 |
. . . . . . . . . . . . . 14
⊢ (𝑥 ∈ (0..^(𝑁 − 𝑀)) → 𝑥 ∈ ℤ) |
| 33 | 32 | adantl 277 |
. . . . . . . . . . . . 13
⊢ (((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) ∧ 𝑥 ∈ (0..^(𝑁 − 𝑀))) → 𝑥 ∈ ℤ) |
| 34 | 33, 24 | zaddcld 9499 |
. . . . . . . . . . . 12
⊢ (((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) ∧ 𝑥 ∈ (0..^(𝑁 − 𝑀))) → (𝑥 + 𝑀) ∈ ℤ) |
| 35 | | fvexg 5595 |
. . . . . . . . . . . 12
⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑥 + 𝑀) ∈ ℤ) → (𝑆‘(𝑥 + 𝑀)) ∈ V) |
| 36 | 31, 34, 35 | syl2anc 411 |
. . . . . . . . . . 11
⊢ (((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) ∧ 𝑥 ∈ (0..^(𝑁 − 𝑀))) → (𝑆‘(𝑥 + 𝑀)) ∈ V) |
| 37 | 36 | ralrimiva 2579 |
. . . . . . . . . 10
⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) → ∀𝑥 ∈ (0..^(𝑁 − 𝑀))(𝑆‘(𝑥 + 𝑀)) ∈ V) |
| 38 | | eqid 2205 |
. . . . . . . . . . 11
⊢ (𝑥 ∈ (0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀))) = (𝑥 ∈ (0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀))) |
| 39 | 38 | fnmpt 5402 |
. . . . . . . . . 10
⊢
(∀𝑥 ∈
(0..^(𝑁 − 𝑀))(𝑆‘(𝑥 + 𝑀)) ∈ V → (𝑥 ∈ (0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀))) Fn (0..^(𝑁 − 𝑀))) |
| 40 | 37, 39 | syl 14 |
. . . . . . . . 9
⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) → (𝑥 ∈ (0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀))) Fn (0..^(𝑁 − 𝑀))) |
| 41 | | 0z 9383 |
. . . . . . . . . . 11
⊢ 0 ∈
ℤ |
| 42 | | elfzel2 10145 |
. . . . . . . . . . . 12
⊢ (𝑀 ∈ (0...𝑁) → 𝑁 ∈ ℤ) |
| 43 | 42, 22 | zsubcld 9500 |
. . . . . . . . . . 11
⊢ (𝑀 ∈ (0...𝑁) → (𝑁 − 𝑀) ∈ ℤ) |
| 44 | | fzofig 10577 |
. . . . . . . . . . 11
⊢ ((0
∈ ℤ ∧ (𝑁
− 𝑀) ∈ ℤ)
→ (0..^(𝑁 −
𝑀)) ∈
Fin) |
| 45 | 41, 43, 44 | sylancr 414 |
. . . . . . . . . 10
⊢ (𝑀 ∈ (0...𝑁) → (0..^(𝑁 − 𝑀)) ∈ Fin) |
| 46 | 45 | ad2antrl 490 |
. . . . . . . . 9
⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) → (0..^(𝑁 − 𝑀)) ∈ Fin) |
| 47 | | fihashfn 10945 |
. . . . . . . . 9
⊢ (((𝑥 ∈ (0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀))) Fn (0..^(𝑁 − 𝑀)) ∧ (0..^(𝑁 − 𝑀)) ∈ Fin) → (♯‘(𝑥 ∈ (0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀)))) = (♯‘(0..^(𝑁 − 𝑀)))) |
| 48 | 40, 46, 47 | syl2anc 411 |
. . . . . . . 8
⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) →
(♯‘(𝑥 ∈
(0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀)))) = (♯‘(0..^(𝑁 − 𝑀)))) |
| 49 | | fznn0sub 10179 |
. . . . . . . . . 10
⊢ (𝑀 ∈ (0...𝑁) → (𝑁 − 𝑀) ∈
ℕ0) |
| 50 | | hashfzo0 10968 |
. . . . . . . . . 10
⊢ ((𝑁 − 𝑀) ∈ ℕ0 →
(♯‘(0..^(𝑁
− 𝑀))) = (𝑁 − 𝑀)) |
| 51 | 49, 50 | syl 14 |
. . . . . . . . 9
⊢ (𝑀 ∈ (0...𝑁) → (♯‘(0..^(𝑁 − 𝑀))) = (𝑁 − 𝑀)) |
| 52 | 51 | ad2antrl 490 |
. . . . . . . 8
⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) →
(♯‘(0..^(𝑁
− 𝑀))) = (𝑁 − 𝑀)) |
| 53 | 48, 52 | eqtrd 2238 |
. . . . . . 7
⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) →
(♯‘(𝑥 ∈
(0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀)))) = (𝑁 − 𝑀)) |
| 54 | 53 | oveq2d 5960 |
. . . . . 6
⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) →
(0..^(♯‘(𝑥
∈ (0..^(𝑁 −
𝑀)) ↦ (𝑆‘(𝑥 + 𝑀))))) = (0..^(𝑁 − 𝑀))) |
| 55 | 54 | feq2d 5413 |
. . . . 5
⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) → ((𝑥 ∈ (0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀))):(0..^(♯‘(𝑥 ∈ (0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀)))))⟶(𝑆 “ (𝑀..^𝑁)) ↔ (𝑥 ∈ (0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀))):(0..^(𝑁 − 𝑀))⟶(𝑆 “ (𝑀..^𝑁)))) |
| 56 | 30, 55 | mpbird 167 |
. . . 4
⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) → (𝑥 ∈ (0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀))):(0..^(♯‘(𝑥 ∈ (0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀)))))⟶(𝑆 “ (𝑀..^𝑁))) |
| 57 | 49 | ad2antrl 490 |
. . . . 5
⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) → (𝑁 − 𝑀) ∈
ℕ0) |
| 58 | 53, 57 | eqeltrd 2282 |
. . . 4
⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) →
(♯‘(𝑥 ∈
(0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀)))) ∈
ℕ0) |
| 59 | | iswrdinn0 10999 |
. . . 4
⊢ (((𝑥 ∈ (0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀))):(0..^(♯‘(𝑥 ∈ (0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀)))))⟶(𝑆 “ (𝑀..^𝑁)) ∧ (♯‘(𝑥 ∈ (0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀)))) ∈ ℕ0) →
(𝑥 ∈ (0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀))) ∈ Word (𝑆 “ (𝑀..^𝑁))) |
| 60 | 56, 58, 59 | syl2anc 411 |
. . 3
⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) → (𝑥 ∈ (0..^(𝑁 − 𝑀)) ↦ (𝑆‘(𝑥 + 𝑀))) ∈ Word (𝑆 “ (𝑀..^𝑁))) |
| 61 | 2, 60 | eqeltrd 2282 |
. 2
⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆)))) → (𝑆 substr 〈𝑀, 𝑁〉) ∈ Word (𝑆 “ (𝑀..^𝑁))) |
| 62 | 61 | 3impb 1202 |
1
⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆))) → (𝑆 substr 〈𝑀, 𝑁〉) ∈ Word (𝑆 “ (𝑀..^𝑁))) |