| Step | Hyp | Ref
| Expression |
| 1 | | wrdfin 10988 |
. . . 4
⊢ (𝑆 ∈ Word 𝐴 → 𝑆 ∈ Fin) |
| 2 | | wrdfin 10988 |
. . . 4
⊢ (𝑇 ∈ Word 𝐵 → 𝑇 ∈ Fin) |
| 3 | | ccatfvalfi 11023 |
. . . 4
⊢ ((𝑆 ∈ Fin ∧ 𝑇 ∈ Fin) → (𝑆 ++ 𝑇) = (𝑥 ∈ (0..^((♯‘𝑆) + (♯‘𝑇))) ↦ if(𝑥 ∈
(0..^(♯‘𝑆)),
(𝑆‘𝑥), (𝑇‘(𝑥 − (♯‘𝑆)))))) |
| 4 | 1, 2, 3 | syl2an 289 |
. . 3
⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) → (𝑆 ++ 𝑇) = (𝑥 ∈ (0..^((♯‘𝑆) + (♯‘𝑇))) ↦ if(𝑥 ∈
(0..^(♯‘𝑆)),
(𝑆‘𝑥), (𝑇‘(𝑥 − (♯‘𝑆)))))) |
| 5 | 4 | fveq2d 5574 |
. 2
⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) → (♯‘(𝑆 ++ 𝑇)) = (♯‘(𝑥 ∈ (0..^((♯‘𝑆) + (♯‘𝑇))) ↦ if(𝑥 ∈
(0..^(♯‘𝑆)),
(𝑆‘𝑥), (𝑇‘(𝑥 − (♯‘𝑆))))))) |
| 6 | | fvexg 5589 |
. . . . . . 7
⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑥 ∈ (0..^((♯‘𝑆) + (♯‘𝑇)))) → (𝑆‘𝑥) ∈ V) |
| 7 | 6 | adantlr 477 |
. . . . . 6
⊢ (((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) ∧ 𝑥 ∈ (0..^((♯‘𝑆) + (♯‘𝑇)))) → (𝑆‘𝑥) ∈ V) |
| 8 | | simplr 528 |
. . . . . . 7
⊢ (((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) ∧ 𝑥 ∈ (0..^((♯‘𝑆) + (♯‘𝑇)))) → 𝑇 ∈ Word 𝐵) |
| 9 | | elfzoelz 10251 |
. . . . . . . . 9
⊢ (𝑥 ∈
(0..^((♯‘𝑆) +
(♯‘𝑇))) →
𝑥 ∈
ℤ) |
| 10 | 9 | adantl 277 |
. . . . . . . 8
⊢ (((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) ∧ 𝑥 ∈ (0..^((♯‘𝑆) + (♯‘𝑇)))) → 𝑥 ∈ ℤ) |
| 11 | | lencl 10973 |
. . . . . . . . . 10
⊢ (𝑆 ∈ Word 𝐴 → (♯‘𝑆) ∈
ℕ0) |
| 12 | 11 | ad2antrr 488 |
. . . . . . . . 9
⊢ (((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) ∧ 𝑥 ∈ (0..^((♯‘𝑆) + (♯‘𝑇)))) → (♯‘𝑆) ∈
ℕ0) |
| 13 | 12 | nn0zd 9475 |
. . . . . . . 8
⊢ (((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) ∧ 𝑥 ∈ (0..^((♯‘𝑆) + (♯‘𝑇)))) → (♯‘𝑆) ∈
ℤ) |
| 14 | 10, 13 | zsubcld 9482 |
. . . . . . 7
⊢ (((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) ∧ 𝑥 ∈ (0..^((♯‘𝑆) + (♯‘𝑇)))) → (𝑥 − (♯‘𝑆)) ∈ ℤ) |
| 15 | | fvexg 5589 |
. . . . . . 7
⊢ ((𝑇 ∈ Word 𝐵 ∧ (𝑥 − (♯‘𝑆)) ∈ ℤ) → (𝑇‘(𝑥 − (♯‘𝑆))) ∈ V) |
| 16 | 8, 14, 15 | syl2anc 411 |
. . . . . 6
⊢ (((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) ∧ 𝑥 ∈ (0..^((♯‘𝑆) + (♯‘𝑇)))) → (𝑇‘(𝑥 − (♯‘𝑆))) ∈ V) |
| 17 | 7, 16 | ifexd 4529 |
. . . . 5
⊢ (((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) ∧ 𝑥 ∈ (0..^((♯‘𝑆) + (♯‘𝑇)))) → if(𝑥 ∈
(0..^(♯‘𝑆)),
(𝑆‘𝑥), (𝑇‘(𝑥 − (♯‘𝑆)))) ∈ V) |
| 18 | 17 | ralrimiva 2578 |
. . . 4
⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) → ∀𝑥 ∈ (0..^((♯‘𝑆) + (♯‘𝑇)))if(𝑥 ∈ (0..^(♯‘𝑆)), (𝑆‘𝑥), (𝑇‘(𝑥 − (♯‘𝑆)))) ∈ V) |
| 19 | | eqid 2204 |
. . . . 5
⊢ (𝑥 ∈
(0..^((♯‘𝑆) +
(♯‘𝑇))) ↦
if(𝑥 ∈
(0..^(♯‘𝑆)),
(𝑆‘𝑥), (𝑇‘(𝑥 − (♯‘𝑆))))) = (𝑥 ∈ (0..^((♯‘𝑆) + (♯‘𝑇))) ↦ if(𝑥 ∈
(0..^(♯‘𝑆)),
(𝑆‘𝑥), (𝑇‘(𝑥 − (♯‘𝑆))))) |
| 20 | 19 | fnmpt 5396 |
. . . 4
⊢
(∀𝑥 ∈
(0..^((♯‘𝑆) +
(♯‘𝑇)))if(𝑥 ∈
(0..^(♯‘𝑆)),
(𝑆‘𝑥), (𝑇‘(𝑥 − (♯‘𝑆)))) ∈ V → (𝑥 ∈ (0..^((♯‘𝑆) + (♯‘𝑇))) ↦ if(𝑥 ∈
(0..^(♯‘𝑆)),
(𝑆‘𝑥), (𝑇‘(𝑥 − (♯‘𝑆))))) Fn (0..^((♯‘𝑆) + (♯‘𝑇)))) |
| 21 | 18, 20 | syl 14 |
. . 3
⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) → (𝑥 ∈ (0..^((♯‘𝑆) + (♯‘𝑇))) ↦ if(𝑥 ∈
(0..^(♯‘𝑆)),
(𝑆‘𝑥), (𝑇‘(𝑥 − (♯‘𝑆))))) Fn (0..^((♯‘𝑆) + (♯‘𝑇)))) |
| 22 | | 0zd 9366 |
. . . 4
⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) → 0 ∈ ℤ) |
| 23 | 11 | adantr 276 |
. . . . . 6
⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) → (♯‘𝑆) ∈
ℕ0) |
| 24 | 23 | nn0zd 9475 |
. . . . 5
⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) → (♯‘𝑆) ∈ ℤ) |
| 25 | | lencl 10973 |
. . . . . . 7
⊢ (𝑇 ∈ Word 𝐵 → (♯‘𝑇) ∈
ℕ0) |
| 26 | 25 | nn0zd 9475 |
. . . . . 6
⊢ (𝑇 ∈ Word 𝐵 → (♯‘𝑇) ∈ ℤ) |
| 27 | 26 | adantl 277 |
. . . . 5
⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) → (♯‘𝑇) ∈ ℤ) |
| 28 | 24, 27 | zaddcld 9481 |
. . . 4
⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) → ((♯‘𝑆) + (♯‘𝑇)) ∈ ℤ) |
| 29 | | fzofig 10558 |
. . . 4
⊢ ((0
∈ ℤ ∧ ((♯‘𝑆) + (♯‘𝑇)) ∈ ℤ) →
(0..^((♯‘𝑆) +
(♯‘𝑇))) ∈
Fin) |
| 30 | 22, 28, 29 | syl2anc 411 |
. . 3
⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) → (0..^((♯‘𝑆) + (♯‘𝑇))) ∈ Fin) |
| 31 | | fihashfn 10926 |
. . 3
⊢ (((𝑥 ∈
(0..^((♯‘𝑆) +
(♯‘𝑇))) ↦
if(𝑥 ∈
(0..^(♯‘𝑆)),
(𝑆‘𝑥), (𝑇‘(𝑥 − (♯‘𝑆))))) Fn (0..^((♯‘𝑆) + (♯‘𝑇))) ∧
(0..^((♯‘𝑆) +
(♯‘𝑇))) ∈
Fin) → (♯‘(𝑥 ∈ (0..^((♯‘𝑆) + (♯‘𝑇))) ↦ if(𝑥 ∈
(0..^(♯‘𝑆)),
(𝑆‘𝑥), (𝑇‘(𝑥 − (♯‘𝑆)))))) =
(♯‘(0..^((♯‘𝑆) + (♯‘𝑇))))) |
| 32 | 21, 30, 31 | syl2anc 411 |
. 2
⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) → (♯‘(𝑥 ∈ (0..^((♯‘𝑆) + (♯‘𝑇))) ↦ if(𝑥 ∈
(0..^(♯‘𝑆)),
(𝑆‘𝑥), (𝑇‘(𝑥 − (♯‘𝑆)))))) =
(♯‘(0..^((♯‘𝑆) + (♯‘𝑇))))) |
| 33 | | nn0addcl 9312 |
. . . 4
⊢
(((♯‘𝑆)
∈ ℕ0 ∧ (♯‘𝑇) ∈ ℕ0) →
((♯‘𝑆) +
(♯‘𝑇)) ∈
ℕ0) |
| 34 | 11, 25, 33 | syl2an 289 |
. . 3
⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) → ((♯‘𝑆) + (♯‘𝑇)) ∈
ℕ0) |
| 35 | | hashfzo0 10949 |
. . 3
⊢
(((♯‘𝑆)
+ (♯‘𝑇)) ∈
ℕ0 → (♯‘(0..^((♯‘𝑆) + (♯‘𝑇)))) = ((♯‘𝑆) + (♯‘𝑇))) |
| 36 | 34, 35 | syl 14 |
. 2
⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) →
(♯‘(0..^((♯‘𝑆) + (♯‘𝑇)))) = ((♯‘𝑆) + (♯‘𝑇))) |
| 37 | 5, 32, 36 | 3eqtrd 2241 |
1
⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) → (♯‘(𝑆 ++ 𝑇)) = ((♯‘𝑆) + (♯‘𝑇))) |