| Step | Hyp | Ref
| Expression |
| 1 | | ccatcl 11049 |
. . . . 5
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → (𝑆 ++ 𝑇) ∈ Word 𝐵) |
| 2 | | lencl 10998 |
. . . . . . 7
⊢ (𝑆 ∈ Word 𝐵 → (♯‘𝑆) ∈
ℕ0) |
| 3 | 2 | nn0zd 9493 |
. . . . . 6
⊢ (𝑆 ∈ Word 𝐵 → (♯‘𝑆) ∈ ℤ) |
| 4 | 3 | adantr 276 |
. . . . 5
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → (♯‘𝑆) ∈ ℤ) |
| 5 | 2 | adantr 276 |
. . . . . . 7
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → (♯‘𝑆) ∈
ℕ0) |
| 6 | | lencl 10998 |
. . . . . . . 8
⊢ (𝑇 ∈ Word 𝐵 → (♯‘𝑇) ∈
ℕ0) |
| 7 | 6 | adantl 277 |
. . . . . . 7
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → (♯‘𝑇) ∈
ℕ0) |
| 8 | 5, 7 | nn0addcld 9352 |
. . . . . 6
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → ((♯‘𝑆) + (♯‘𝑇)) ∈
ℕ0) |
| 9 | 8 | nn0zd 9493 |
. . . . 5
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → ((♯‘𝑆) + (♯‘𝑇)) ∈ ℤ) |
| 10 | | swrdclg 11103 |
. . . . 5
⊢ (((𝑆 ++ 𝑇) ∈ Word 𝐵 ∧ (♯‘𝑆) ∈ ℤ ∧ ((♯‘𝑆) + (♯‘𝑇)) ∈ ℤ) →
((𝑆 ++ 𝑇) substr 〈(♯‘𝑆), ((♯‘𝑆) + (♯‘𝑇))〉) ∈ Word 𝐵) |
| 11 | 1, 4, 9, 10 | syl3anc 1250 |
. . . 4
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → ((𝑆 ++ 𝑇) substr 〈(♯‘𝑆), ((♯‘𝑆) + (♯‘𝑇))〉) ∈ Word 𝐵) |
| 12 | | wrdfn 11009 |
. . . 4
⊢ (((𝑆 ++ 𝑇) substr 〈(♯‘𝑆), ((♯‘𝑆) + (♯‘𝑇))〉) ∈ Word 𝐵 → ((𝑆 ++ 𝑇) substr 〈(♯‘𝑆), ((♯‘𝑆) + (♯‘𝑇))〉) Fn
(0..^(♯‘((𝑆 ++
𝑇) substr
〈(♯‘𝑆),
((♯‘𝑆) +
(♯‘𝑇))〉)))) |
| 13 | 11, 12 | syl 14 |
. . 3
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → ((𝑆 ++ 𝑇) substr 〈(♯‘𝑆), ((♯‘𝑆) + (♯‘𝑇))〉) Fn
(0..^(♯‘((𝑆 ++
𝑇) substr
〈(♯‘𝑆),
((♯‘𝑆) +
(♯‘𝑇))〉)))) |
| 14 | | nn0uz 9683 |
. . . . . . . . . 10
⊢
ℕ0 = (ℤ≥‘0) |
| 15 | 2, 14 | eleqtrdi 2298 |
. . . . . . . . 9
⊢ (𝑆 ∈ Word 𝐵 → (♯‘𝑆) ∈
(ℤ≥‘0)) |
| 16 | 15 | adantr 276 |
. . . . . . . 8
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → (♯‘𝑆) ∈
(ℤ≥‘0)) |
| 17 | 3 | uzidd 9663 |
. . . . . . . . 9
⊢ (𝑆 ∈ Word 𝐵 → (♯‘𝑆) ∈
(ℤ≥‘(♯‘𝑆))) |
| 18 | | uzaddcl 9707 |
. . . . . . . . 9
⊢
(((♯‘𝑆)
∈ (ℤ≥‘(♯‘𝑆)) ∧ (♯‘𝑇) ∈ ℕ0) →
((♯‘𝑆) +
(♯‘𝑇)) ∈
(ℤ≥‘(♯‘𝑆))) |
| 19 | 17, 6, 18 | syl2an 289 |
. . . . . . . 8
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → ((♯‘𝑆) + (♯‘𝑇)) ∈
(ℤ≥‘(♯‘𝑆))) |
| 20 | | elfzuzb 10141 |
. . . . . . . 8
⊢
((♯‘𝑆)
∈ (0...((♯‘𝑆) + (♯‘𝑇))) ↔ ((♯‘𝑆) ∈ (ℤ≥‘0)
∧ ((♯‘𝑆) +
(♯‘𝑇)) ∈
(ℤ≥‘(♯‘𝑆)))) |
| 21 | 16, 19, 20 | sylanbrc 417 |
. . . . . . 7
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → (♯‘𝑆) ∈ (0...((♯‘𝑆) + (♯‘𝑇)))) |
| 22 | | nn0addcl 9330 |
. . . . . . . . . . 11
⊢
(((♯‘𝑆)
∈ ℕ0 ∧ (♯‘𝑇) ∈ ℕ0) →
((♯‘𝑆) +
(♯‘𝑇)) ∈
ℕ0) |
| 23 | 2, 6, 22 | syl2an 289 |
. . . . . . . . . 10
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → ((♯‘𝑆) + (♯‘𝑇)) ∈
ℕ0) |
| 24 | 23, 14 | eleqtrdi 2298 |
. . . . . . . . 9
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → ((♯‘𝑆) + (♯‘𝑇)) ∈
(ℤ≥‘0)) |
| 25 | 23 | nn0zd 9493 |
. . . . . . . . . 10
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → ((♯‘𝑆) + (♯‘𝑇)) ∈ ℤ) |
| 26 | 25 | uzidd 9663 |
. . . . . . . . 9
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → ((♯‘𝑆) + (♯‘𝑇)) ∈
(ℤ≥‘((♯‘𝑆) + (♯‘𝑇)))) |
| 27 | | elfzuzb 10141 |
. . . . . . . . 9
⊢
(((♯‘𝑆)
+ (♯‘𝑇)) ∈
(0...((♯‘𝑆) +
(♯‘𝑇))) ↔
(((♯‘𝑆) +
(♯‘𝑇)) ∈
(ℤ≥‘0) ∧ ((♯‘𝑆) + (♯‘𝑇)) ∈
(ℤ≥‘((♯‘𝑆) + (♯‘𝑇))))) |
| 28 | 24, 26, 27 | sylanbrc 417 |
. . . . . . . 8
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → ((♯‘𝑆) + (♯‘𝑇)) ∈ (0...((♯‘𝑆) + (♯‘𝑇)))) |
| 29 | | ccatlen 11051 |
. . . . . . . . 9
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → (♯‘(𝑆 ++ 𝑇)) = ((♯‘𝑆) + (♯‘𝑇))) |
| 30 | 29 | oveq2d 5960 |
. . . . . . . 8
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → (0...(♯‘(𝑆 ++ 𝑇))) = (0...((♯‘𝑆) + (♯‘𝑇)))) |
| 31 | 28, 30 | eleqtrrd 2285 |
. . . . . . 7
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → ((♯‘𝑆) + (♯‘𝑇)) ∈ (0...(♯‘(𝑆 ++ 𝑇)))) |
| 32 | | swrdlen 11105 |
. . . . . . 7
⊢ (((𝑆 ++ 𝑇) ∈ Word 𝐵 ∧ (♯‘𝑆) ∈ (0...((♯‘𝑆) + (♯‘𝑇))) ∧ ((♯‘𝑆) + (♯‘𝑇)) ∈
(0...(♯‘(𝑆 ++
𝑇)))) →
(♯‘((𝑆 ++ 𝑇) substr
〈(♯‘𝑆),
((♯‘𝑆) +
(♯‘𝑇))〉))
= (((♯‘𝑆) +
(♯‘𝑇)) −
(♯‘𝑆))) |
| 33 | 1, 21, 31, 32 | syl3anc 1250 |
. . . . . 6
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → (♯‘((𝑆 ++ 𝑇) substr 〈(♯‘𝑆), ((♯‘𝑆) + (♯‘𝑇))〉)) =
(((♯‘𝑆) +
(♯‘𝑇)) −
(♯‘𝑆))) |
| 34 | 2 | nn0cnd 9350 |
. . . . . . 7
⊢ (𝑆 ∈ Word 𝐵 → (♯‘𝑆) ∈ ℂ) |
| 35 | 6 | nn0cnd 9350 |
. . . . . . 7
⊢ (𝑇 ∈ Word 𝐵 → (♯‘𝑇) ∈ ℂ) |
| 36 | | pncan2 8279 |
. . . . . . 7
⊢
(((♯‘𝑆)
∈ ℂ ∧ (♯‘𝑇) ∈ ℂ) →
(((♯‘𝑆) +
(♯‘𝑇)) −
(♯‘𝑆)) =
(♯‘𝑇)) |
| 37 | 34, 35, 36 | syl2an 289 |
. . . . . 6
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → (((♯‘𝑆) + (♯‘𝑇)) − (♯‘𝑆)) = (♯‘𝑇)) |
| 38 | 33, 37 | eqtrd 2238 |
. . . . 5
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → (♯‘((𝑆 ++ 𝑇) substr 〈(♯‘𝑆), ((♯‘𝑆) + (♯‘𝑇))〉)) =
(♯‘𝑇)) |
| 39 | 38 | oveq2d 5960 |
. . . 4
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → (0..^(♯‘((𝑆 ++ 𝑇) substr 〈(♯‘𝑆), ((♯‘𝑆) + (♯‘𝑇))〉))) =
(0..^(♯‘𝑇))) |
| 40 | 39 | fneq2d 5365 |
. . 3
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → (((𝑆 ++ 𝑇) substr 〈(♯‘𝑆), ((♯‘𝑆) + (♯‘𝑇))〉) Fn
(0..^(♯‘((𝑆 ++
𝑇) substr
〈(♯‘𝑆),
((♯‘𝑆) +
(♯‘𝑇))〉)))
↔ ((𝑆 ++ 𝑇) substr
〈(♯‘𝑆),
((♯‘𝑆) +
(♯‘𝑇))〉)
Fn (0..^(♯‘𝑇)))) |
| 41 | 13, 40 | mpbid 147 |
. 2
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → ((𝑆 ++ 𝑇) substr 〈(♯‘𝑆), ((♯‘𝑆) + (♯‘𝑇))〉) Fn
(0..^(♯‘𝑇))) |
| 42 | | wrdfn 11009 |
. . 3
⊢ (𝑇 ∈ Word 𝐵 → 𝑇 Fn (0..^(♯‘𝑇))) |
| 43 | 42 | adantl 277 |
. 2
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → 𝑇 Fn (0..^(♯‘𝑇))) |
| 44 | 1, 21, 31 | 3jca 1180 |
. . . 4
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → ((𝑆 ++ 𝑇) ∈ Word 𝐵 ∧ (♯‘𝑆) ∈ (0...((♯‘𝑆) + (♯‘𝑇))) ∧ ((♯‘𝑆) + (♯‘𝑇)) ∈
(0...(♯‘(𝑆 ++
𝑇))))) |
| 45 | 37 | oveq2d 5960 |
. . . . . 6
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → (0..^(((♯‘𝑆) + (♯‘𝑇)) − (♯‘𝑆))) = (0..^(♯‘𝑇))) |
| 46 | 45 | eleq2d 2275 |
. . . . 5
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → (𝑘 ∈ (0..^(((♯‘𝑆) + (♯‘𝑇)) − (♯‘𝑆))) ↔ 𝑘 ∈ (0..^(♯‘𝑇)))) |
| 47 | 46 | biimpar 297 |
. . . 4
⊢ (((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) ∧ 𝑘 ∈ (0..^(♯‘𝑇))) → 𝑘 ∈ (0..^(((♯‘𝑆) + (♯‘𝑇)) − (♯‘𝑆)))) |
| 48 | | swrdfv 11106 |
. . . 4
⊢ ((((𝑆 ++ 𝑇) ∈ Word 𝐵 ∧ (♯‘𝑆) ∈ (0...((♯‘𝑆) + (♯‘𝑇))) ∧ ((♯‘𝑆) + (♯‘𝑇)) ∈
(0...(♯‘(𝑆 ++
𝑇)))) ∧ 𝑘 ∈
(0..^(((♯‘𝑆) +
(♯‘𝑇)) −
(♯‘𝑆)))) →
(((𝑆 ++ 𝑇) substr 〈(♯‘𝑆), ((♯‘𝑆) + (♯‘𝑇))〉)‘𝑘) = ((𝑆 ++ 𝑇)‘(𝑘 + (♯‘𝑆)))) |
| 49 | 44, 47, 48 | syl2an2r 595 |
. . 3
⊢ (((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) ∧ 𝑘 ∈ (0..^(♯‘𝑇))) → (((𝑆 ++ 𝑇) substr 〈(♯‘𝑆), ((♯‘𝑆) + (♯‘𝑇))〉)‘𝑘) = ((𝑆 ++ 𝑇)‘(𝑘 + (♯‘𝑆)))) |
| 50 | | ccatval3 11055 |
. . . 4
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ∧ 𝑘 ∈ (0..^(♯‘𝑇))) → ((𝑆 ++ 𝑇)‘(𝑘 + (♯‘𝑆))) = (𝑇‘𝑘)) |
| 51 | 50 | 3expa 1206 |
. . 3
⊢ (((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) ∧ 𝑘 ∈ (0..^(♯‘𝑇))) → ((𝑆 ++ 𝑇)‘(𝑘 + (♯‘𝑆))) = (𝑇‘𝑘)) |
| 52 | 49, 51 | eqtrd 2238 |
. 2
⊢ (((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) ∧ 𝑘 ∈ (0..^(♯‘𝑇))) → (((𝑆 ++ 𝑇) substr 〈(♯‘𝑆), ((♯‘𝑆) + (♯‘𝑇))〉)‘𝑘) = (𝑇‘𝑘)) |
| 53 | 41, 43, 52 | eqfnfvd 5680 |
1
⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → ((𝑆 ++ 𝑇) substr 〈(♯‘𝑆), ((♯‘𝑆) + (♯‘𝑇))〉) = 𝑇) |