Step |
Hyp |
Ref |
Expression |
1 |
|
frlmfzoccat.w |
|- W = ( K freeLMod ( 0 ..^ L ) ) |
2 |
|
frlmfzoccat.x |
|- X = ( K freeLMod ( 0 ..^ M ) ) |
3 |
|
frlmfzoccat.y |
|- Y = ( K freeLMod ( 0 ..^ N ) ) |
4 |
|
frlmfzoccat.b |
|- B = ( Base ` W ) |
5 |
|
frlmfzoccat.c |
|- C = ( Base ` X ) |
6 |
|
frlmfzoccat.d |
|- D = ( Base ` Y ) |
7 |
|
frlmfzoccat.k |
|- ( ph -> K e. Z ) |
8 |
|
frlmfzoccat.l |
|- ( ph -> ( M + N ) = L ) |
9 |
|
frlmfzoccat.m |
|- ( ph -> M e. NN0 ) |
10 |
|
frlmfzoccat.n |
|- ( ph -> N e. NN0 ) |
11 |
|
frlmfzoccat.u |
|- ( ph -> U e. C ) |
12 |
|
frlmfzoccat.v |
|- ( ph -> V e. D ) |
13 |
|
eqid |
|- ( Base ` K ) = ( Base ` K ) |
14 |
2 5 13
|
frlmfzowrd |
|- ( U e. C -> U e. Word ( Base ` K ) ) |
15 |
11 14
|
syl |
|- ( ph -> U e. Word ( Base ` K ) ) |
16 |
3 6 13
|
frlmfzowrd |
|- ( V e. D -> V e. Word ( Base ` K ) ) |
17 |
12 16
|
syl |
|- ( ph -> V e. Word ( Base ` K ) ) |
18 |
|
ccatcl |
|- ( ( U e. Word ( Base ` K ) /\ V e. Word ( Base ` K ) ) -> ( U ++ V ) e. Word ( Base ` K ) ) |
19 |
15 17 18
|
syl2anc |
|- ( ph -> ( U ++ V ) e. Word ( Base ` K ) ) |
20 |
|
ccatlen |
|- ( ( U e. Word ( Base ` K ) /\ V e. Word ( Base ` K ) ) -> ( # ` ( U ++ V ) ) = ( ( # ` U ) + ( # ` V ) ) ) |
21 |
15 17 20
|
syl2anc |
|- ( ph -> ( # ` ( U ++ V ) ) = ( ( # ` U ) + ( # ` V ) ) ) |
22 |
|
ovexd |
|- ( ph -> ( 0 ..^ M ) e. _V ) |
23 |
2 13 5
|
frlmbasf |
|- ( ( ( 0 ..^ M ) e. _V /\ U e. C ) -> U : ( 0 ..^ M ) --> ( Base ` K ) ) |
24 |
22 11 23
|
syl2anc |
|- ( ph -> U : ( 0 ..^ M ) --> ( Base ` K ) ) |
25 |
|
fnfzo0hash |
|- ( ( M e. NN0 /\ U : ( 0 ..^ M ) --> ( Base ` K ) ) -> ( # ` U ) = M ) |
26 |
9 24 25
|
syl2anc |
|- ( ph -> ( # ` U ) = M ) |
27 |
|
ovexd |
|- ( ph -> ( 0 ..^ N ) e. _V ) |
28 |
3 13 6
|
frlmbasf |
|- ( ( ( 0 ..^ N ) e. _V /\ V e. D ) -> V : ( 0 ..^ N ) --> ( Base ` K ) ) |
29 |
27 12 28
|
syl2anc |
|- ( ph -> V : ( 0 ..^ N ) --> ( Base ` K ) ) |
30 |
|
fnfzo0hash |
|- ( ( N e. NN0 /\ V : ( 0 ..^ N ) --> ( Base ` K ) ) -> ( # ` V ) = N ) |
31 |
10 29 30
|
syl2anc |
|- ( ph -> ( # ` V ) = N ) |
32 |
26 31
|
oveq12d |
|- ( ph -> ( ( # ` U ) + ( # ` V ) ) = ( M + N ) ) |
33 |
21 32 8
|
3eqtrd |
|- ( ph -> ( # ` ( U ++ V ) ) = L ) |
34 |
9 10
|
nn0addcld |
|- ( ph -> ( M + N ) e. NN0 ) |
35 |
8 34
|
eqeltrrd |
|- ( ph -> L e. NN0 ) |
36 |
1 4 13
|
frlmfzowrdb |
|- ( ( K e. Z /\ L e. NN0 ) -> ( ( U ++ V ) e. B <-> ( ( U ++ V ) e. Word ( Base ` K ) /\ ( # ` ( U ++ V ) ) = L ) ) ) |
37 |
7 35 36
|
syl2anc |
|- ( ph -> ( ( U ++ V ) e. B <-> ( ( U ++ V ) e. Word ( Base ` K ) /\ ( # ` ( U ++ V ) ) = L ) ) ) |
38 |
19 33 37
|
mpbir2and |
|- ( ph -> ( U ++ V ) e. B ) |