Step |
Hyp |
Ref |
Expression |
1 |
|
ccatcl |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( 𝑆 ++ 𝑇 ) ∈ Word 𝐵 ) |
2 |
|
swrdcl |
⊢ ( ( 𝑆 ++ 𝑇 ) ∈ Word 𝐵 → ( ( 𝑆 ++ 𝑇 ) substr 〈 ( ♯ ‘ 𝑆 ) , ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) 〉 ) ∈ Word 𝐵 ) |
3 |
|
wrdfn |
⊢ ( ( ( 𝑆 ++ 𝑇 ) substr 〈 ( ♯ ‘ 𝑆 ) , ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) 〉 ) ∈ Word 𝐵 → ( ( 𝑆 ++ 𝑇 ) substr 〈 ( ♯ ‘ 𝑆 ) , ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) 〉 ) Fn ( 0 ..^ ( ♯ ‘ ( ( 𝑆 ++ 𝑇 ) substr 〈 ( ♯ ‘ 𝑆 ) , ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) 〉 ) ) ) ) |
4 |
1 2 3
|
3syl |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( ( 𝑆 ++ 𝑇 ) substr 〈 ( ♯ ‘ 𝑆 ) , ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) 〉 ) Fn ( 0 ..^ ( ♯ ‘ ( ( 𝑆 ++ 𝑇 ) substr 〈 ( ♯ ‘ 𝑆 ) , ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) 〉 ) ) ) ) |
5 |
|
lencl |
⊢ ( 𝑆 ∈ Word 𝐵 → ( ♯ ‘ 𝑆 ) ∈ ℕ0 ) |
6 |
|
nn0uz |
⊢ ℕ0 = ( ℤ≥ ‘ 0 ) |
7 |
5 6
|
eleqtrdi |
⊢ ( 𝑆 ∈ Word 𝐵 → ( ♯ ‘ 𝑆 ) ∈ ( ℤ≥ ‘ 0 ) ) |
8 |
7
|
adantr |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( ♯ ‘ 𝑆 ) ∈ ( ℤ≥ ‘ 0 ) ) |
9 |
5
|
nn0zd |
⊢ ( 𝑆 ∈ Word 𝐵 → ( ♯ ‘ 𝑆 ) ∈ ℤ ) |
10 |
9
|
uzidd |
⊢ ( 𝑆 ∈ Word 𝐵 → ( ♯ ‘ 𝑆 ) ∈ ( ℤ≥ ‘ ( ♯ ‘ 𝑆 ) ) ) |
11 |
|
lencl |
⊢ ( 𝑇 ∈ Word 𝐵 → ( ♯ ‘ 𝑇 ) ∈ ℕ0 ) |
12 |
|
uzaddcl |
⊢ ( ( ( ♯ ‘ 𝑆 ) ∈ ( ℤ≥ ‘ ( ♯ ‘ 𝑆 ) ) ∧ ( ♯ ‘ 𝑇 ) ∈ ℕ0 ) → ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ∈ ( ℤ≥ ‘ ( ♯ ‘ 𝑆 ) ) ) |
13 |
10 11 12
|
syl2an |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ∈ ( ℤ≥ ‘ ( ♯ ‘ 𝑆 ) ) ) |
14 |
|
elfzuzb |
⊢ ( ( ♯ ‘ 𝑆 ) ∈ ( 0 ... ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ) ↔ ( ( ♯ ‘ 𝑆 ) ∈ ( ℤ≥ ‘ 0 ) ∧ ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ∈ ( ℤ≥ ‘ ( ♯ ‘ 𝑆 ) ) ) ) |
15 |
8 13 14
|
sylanbrc |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( ♯ ‘ 𝑆 ) ∈ ( 0 ... ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ) ) |
16 |
|
nn0addcl |
⊢ ( ( ( ♯ ‘ 𝑆 ) ∈ ℕ0 ∧ ( ♯ ‘ 𝑇 ) ∈ ℕ0 ) → ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ∈ ℕ0 ) |
17 |
5 11 16
|
syl2an |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ∈ ℕ0 ) |
18 |
17 6
|
eleqtrdi |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ∈ ( ℤ≥ ‘ 0 ) ) |
19 |
17
|
nn0zd |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ∈ ℤ ) |
20 |
19
|
uzidd |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ∈ ( ℤ≥ ‘ ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ) ) |
21 |
|
elfzuzb |
⊢ ( ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ∈ ( 0 ... ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ) ↔ ( ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ∈ ( ℤ≥ ‘ 0 ) ∧ ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ∈ ( ℤ≥ ‘ ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ) ) ) |
22 |
18 20 21
|
sylanbrc |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ∈ ( 0 ... ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ) ) |
23 |
|
ccatlen |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( ♯ ‘ ( 𝑆 ++ 𝑇 ) ) = ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ) |
24 |
23
|
oveq2d |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( 0 ... ( ♯ ‘ ( 𝑆 ++ 𝑇 ) ) ) = ( 0 ... ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ) ) |
25 |
22 24
|
eleqtrrd |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ∈ ( 0 ... ( ♯ ‘ ( 𝑆 ++ 𝑇 ) ) ) ) |
26 |
|
swrdlen |
⊢ ( ( ( 𝑆 ++ 𝑇 ) ∈ Word 𝐵 ∧ ( ♯ ‘ 𝑆 ) ∈ ( 0 ... ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ) ∧ ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ∈ ( 0 ... ( ♯ ‘ ( 𝑆 ++ 𝑇 ) ) ) ) → ( ♯ ‘ ( ( 𝑆 ++ 𝑇 ) substr 〈 ( ♯ ‘ 𝑆 ) , ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) 〉 ) ) = ( ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) − ( ♯ ‘ 𝑆 ) ) ) |
27 |
1 15 25 26
|
syl3anc |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( ♯ ‘ ( ( 𝑆 ++ 𝑇 ) substr 〈 ( ♯ ‘ 𝑆 ) , ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) 〉 ) ) = ( ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) − ( ♯ ‘ 𝑆 ) ) ) |
28 |
5
|
nn0cnd |
⊢ ( 𝑆 ∈ Word 𝐵 → ( ♯ ‘ 𝑆 ) ∈ ℂ ) |
29 |
11
|
nn0cnd |
⊢ ( 𝑇 ∈ Word 𝐵 → ( ♯ ‘ 𝑇 ) ∈ ℂ ) |
30 |
|
pncan2 |
⊢ ( ( ( ♯ ‘ 𝑆 ) ∈ ℂ ∧ ( ♯ ‘ 𝑇 ) ∈ ℂ ) → ( ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) − ( ♯ ‘ 𝑆 ) ) = ( ♯ ‘ 𝑇 ) ) |
31 |
28 29 30
|
syl2an |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) − ( ♯ ‘ 𝑆 ) ) = ( ♯ ‘ 𝑇 ) ) |
32 |
27 31
|
eqtrd |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( ♯ ‘ ( ( 𝑆 ++ 𝑇 ) substr 〈 ( ♯ ‘ 𝑆 ) , ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) 〉 ) ) = ( ♯ ‘ 𝑇 ) ) |
33 |
32
|
oveq2d |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( 0 ..^ ( ♯ ‘ ( ( 𝑆 ++ 𝑇 ) substr 〈 ( ♯ ‘ 𝑆 ) , ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) 〉 ) ) ) = ( 0 ..^ ( ♯ ‘ 𝑇 ) ) ) |
34 |
33
|
fneq2d |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( ( ( 𝑆 ++ 𝑇 ) substr 〈 ( ♯ ‘ 𝑆 ) , ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) 〉 ) Fn ( 0 ..^ ( ♯ ‘ ( ( 𝑆 ++ 𝑇 ) substr 〈 ( ♯ ‘ 𝑆 ) , ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) 〉 ) ) ) ↔ ( ( 𝑆 ++ 𝑇 ) substr 〈 ( ♯ ‘ 𝑆 ) , ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) 〉 ) Fn ( 0 ..^ ( ♯ ‘ 𝑇 ) ) ) ) |
35 |
4 34
|
mpbid |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( ( 𝑆 ++ 𝑇 ) substr 〈 ( ♯ ‘ 𝑆 ) , ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) 〉 ) Fn ( 0 ..^ ( ♯ ‘ 𝑇 ) ) ) |
36 |
|
wrdfn |
⊢ ( 𝑇 ∈ Word 𝐵 → 𝑇 Fn ( 0 ..^ ( ♯ ‘ 𝑇 ) ) ) |
37 |
36
|
adantl |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → 𝑇 Fn ( 0 ..^ ( ♯ ‘ 𝑇 ) ) ) |
38 |
1 15 25
|
3jca |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( ( 𝑆 ++ 𝑇 ) ∈ Word 𝐵 ∧ ( ♯ ‘ 𝑆 ) ∈ ( 0 ... ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ) ∧ ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ∈ ( 0 ... ( ♯ ‘ ( 𝑆 ++ 𝑇 ) ) ) ) ) |
39 |
31
|
oveq2d |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( 0 ..^ ( ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) − ( ♯ ‘ 𝑆 ) ) ) = ( 0 ..^ ( ♯ ‘ 𝑇 ) ) ) |
40 |
39
|
eleq2d |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( 𝑘 ∈ ( 0 ..^ ( ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) − ( ♯ ‘ 𝑆 ) ) ) ↔ 𝑘 ∈ ( 0 ..^ ( ♯ ‘ 𝑇 ) ) ) ) |
41 |
40
|
biimpar |
⊢ ( ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) ∧ 𝑘 ∈ ( 0 ..^ ( ♯ ‘ 𝑇 ) ) ) → 𝑘 ∈ ( 0 ..^ ( ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) − ( ♯ ‘ 𝑆 ) ) ) ) |
42 |
|
swrdfv |
⊢ ( ( ( ( 𝑆 ++ 𝑇 ) ∈ Word 𝐵 ∧ ( ♯ ‘ 𝑆 ) ∈ ( 0 ... ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ) ∧ ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) ∈ ( 0 ... ( ♯ ‘ ( 𝑆 ++ 𝑇 ) ) ) ) ∧ 𝑘 ∈ ( 0 ..^ ( ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) − ( ♯ ‘ 𝑆 ) ) ) ) → ( ( ( 𝑆 ++ 𝑇 ) substr 〈 ( ♯ ‘ 𝑆 ) , ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) 〉 ) ‘ 𝑘 ) = ( ( 𝑆 ++ 𝑇 ) ‘ ( 𝑘 + ( ♯ ‘ 𝑆 ) ) ) ) |
43 |
38 41 42
|
syl2an2r |
⊢ ( ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) ∧ 𝑘 ∈ ( 0 ..^ ( ♯ ‘ 𝑇 ) ) ) → ( ( ( 𝑆 ++ 𝑇 ) substr 〈 ( ♯ ‘ 𝑆 ) , ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) 〉 ) ‘ 𝑘 ) = ( ( 𝑆 ++ 𝑇 ) ‘ ( 𝑘 + ( ♯ ‘ 𝑆 ) ) ) ) |
44 |
|
ccatval3 |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ∧ 𝑘 ∈ ( 0 ..^ ( ♯ ‘ 𝑇 ) ) ) → ( ( 𝑆 ++ 𝑇 ) ‘ ( 𝑘 + ( ♯ ‘ 𝑆 ) ) ) = ( 𝑇 ‘ 𝑘 ) ) |
45 |
44
|
3expa |
⊢ ( ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) ∧ 𝑘 ∈ ( 0 ..^ ( ♯ ‘ 𝑇 ) ) ) → ( ( 𝑆 ++ 𝑇 ) ‘ ( 𝑘 + ( ♯ ‘ 𝑆 ) ) ) = ( 𝑇 ‘ 𝑘 ) ) |
46 |
43 45
|
eqtrd |
⊢ ( ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) ∧ 𝑘 ∈ ( 0 ..^ ( ♯ ‘ 𝑇 ) ) ) → ( ( ( 𝑆 ++ 𝑇 ) substr 〈 ( ♯ ‘ 𝑆 ) , ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) 〉 ) ‘ 𝑘 ) = ( 𝑇 ‘ 𝑘 ) ) |
47 |
35 37 46
|
eqfnfvd |
⊢ ( ( 𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ) → ( ( 𝑆 ++ 𝑇 ) substr 〈 ( ♯ ‘ 𝑆 ) , ( ( ♯ ‘ 𝑆 ) + ( ♯ ‘ 𝑇 ) ) 〉 ) = 𝑇 ) |