Users' Mathboxes Mathbox for Alexander van der Vekens < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >   Mathboxes  >  swrdccatin2 Unicode version

Theorem swrdccatin2 28018
Description: The subword of a concatenation of two words within the second of the concatenated words. (Contributed by Alexander van der Vekens, 28-Mar-2018.)
Hypothesis
Ref Expression
swrdccat3.l  |-  L  =  ( # `  A
)
Assertion
Ref Expression
swrdccatin2  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  (
( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( ( A concat  B ) substr  <. M ,  N >. )  =  ( B substr  <. ( M  -  L ) ,  ( N  -  L )
>. ) ) )

Proof of Theorem swrdccatin2
Dummy variable  k is distinct from all other variables.
StepHypRef Expression
1 ccatcl 11698 . . . . . . 7  |-  ( ( A  e. Word  V  /\  B  e. Word  V )  ->  ( A concat  B )  e. Word  V )
213adant1 975 . . . . . 6  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  ( A concat  B )  e. Word  V
)
32adantr 452 . . . . 5  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( A concat  B )  e. Word  V )
4 lencl 11690 . . . . . . . 8  |-  ( A  e. Word  V  ->  ( # `
 A )  e. 
NN0 )
5 elnn0uz 10479 . . . . . . . . . . . 12  |-  ( (
# `  A )  e.  NN0  <->  ( # `  A
)  e.  ( ZZ>= ` 
0 ) )
6 swrdccat3.l . . . . . . . . . . . . . 14  |-  L  =  ( # `  A
)
76eleq1i 2467 . . . . . . . . . . . . 13  |-  ( L  e.  ( ZZ>= `  0
)  <->  ( # `  A
)  e.  ( ZZ>= ` 
0 ) )
87biimpri 198 . . . . . . . . . . . 12  |-  ( (
# `  A )  e.  ( ZZ>= `  0 )  ->  L  e.  ( ZZ>= ` 
0 ) )
95, 8sylbi 188 . . . . . . . . . . 11  |-  ( (
# `  A )  e.  NN0  ->  L  e.  ( ZZ>= `  0 )
)
10 fzss1 11047 . . . . . . . . . . 11  |-  ( L  e.  ( ZZ>= `  0
)  ->  ( L ... N )  C_  (
0 ... N ) )
119, 10syl 16 . . . . . . . . . 10  |-  ( (
# `  A )  e.  NN0  ->  ( L ... N )  C_  (
0 ... N ) )
1211sseld 3307 . . . . . . . . 9  |-  ( (
# `  A )  e.  NN0  ->  ( M  e.  ( L ... N
)  ->  M  e.  ( 0 ... N
) ) )
1312adantrd 455 . . . . . . . 8  |-  ( (
# `  A )  e.  NN0  ->  ( ( M  e.  ( L ... N )  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) )  ->  M  e.  ( 0 ... N ) ) )
144, 13syl 16 . . . . . . 7  |-  ( A  e. Word  V  ->  (
( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) )  ->  M  e.  ( 0 ... N ) ) )
15143ad2ant2 979 . . . . . 6  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  (
( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) )  ->  M  e.  ( 0 ... N ) ) )
1615imp 419 . . . . 5  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  M  e.  ( 0 ... N
) )
17 peano2nn0 10216 . . . . . . . . . . . . . . 15  |-  ( (
# `  A )  e.  NN0  ->  ( ( # `
 A )  +  1 )  e.  NN0 )
18 elnn0uz 10479 . . . . . . . . . . . . . . 15  |-  ( ( ( # `  A
)  +  1 )  e.  NN0  <->  ( ( # `  A )  +  1 )  e.  ( ZZ>= ` 
0 ) )
1917, 18sylib 189 . . . . . . . . . . . . . 14  |-  ( (
# `  A )  e.  NN0  ->  ( ( # `
 A )  +  1 )  e.  (
ZZ>= `  0 ) )
204, 19syl 16 . . . . . . . . . . . . 13  |-  ( A  e. Word  V  ->  (
( # `  A )  +  1 )  e.  ( ZZ>= `  0 )
)
21203ad2ant2 979 . . . . . . . . . . . 12  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  (
( # `  A )  +  1 )  e.  ( ZZ>= `  0 )
)
22 fzss1 11047 . . . . . . . . . . . 12  |-  ( ( ( # `  A
)  +  1 )  e.  ( ZZ>= `  0
)  ->  ( (
( # `  A )  +  1 ) ... ( ( # `  A
)  +  ( # `  B ) ) ) 
C_  ( 0 ... ( ( # `  A
)  +  ( # `  B ) ) ) )
2321, 22syl 16 . . . . . . . . . . 11  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  (
( ( # `  A
)  +  1 ) ... ( ( # `  A )  +  (
# `  B )
) )  C_  (
0 ... ( ( # `  A )  +  (
# `  B )
) ) )
2423sseld 3307 . . . . . . . . . 10  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  ( N  e.  ( (
( # `  A )  +  1 ) ... ( ( # `  A
)  +  ( # `  B ) ) )  ->  N  e.  ( 0 ... ( (
# `  A )  +  ( # `  B
) ) ) ) )
25 oveq1 6047 . . . . . . . . . . . . 13  |-  ( L  =  ( # `  A
)  ->  ( L  +  1 )  =  ( ( # `  A
)  +  1 ) )
26 oveq1 6047 . . . . . . . . . . . . 13  |-  ( L  =  ( # `  A
)  ->  ( L  +  ( # `  B
) )  =  ( ( # `  A
)  +  ( # `  B ) ) )
2725, 26oveq12d 6058 . . . . . . . . . . . 12  |-  ( L  =  ( # `  A
)  ->  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) )  =  ( ( ( # `  A
)  +  1 ) ... ( ( # `  A )  +  (
# `  B )
) ) )
2827eleq2d 2471 . . . . . . . . . . 11  |-  ( L  =  ( # `  A
)  ->  ( N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) )  <->  N  e.  ( ( ( # `  A )  +  1 ) ... ( (
# `  A )  +  ( # `  B
) ) ) ) )
2928imbi1d 309 . . . . . . . . . 10  |-  ( L  =  ( # `  A
)  ->  ( ( N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) )  ->  N  e.  ( 0 ... (
( # `  A )  +  ( # `  B
) ) ) )  <-> 
( N  e.  ( ( ( # `  A
)  +  1 ) ... ( ( # `  A )  +  (
# `  B )
) )  ->  N  e.  ( 0 ... (
( # `  A )  +  ( # `  B
) ) ) ) ) )
3024, 29syl5ibr 213 . . . . . . . . 9  |-  ( L  =  ( # `  A
)  ->  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  ( N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) )  ->  N  e.  ( 0 ... (
( # `  A )  +  ( # `  B
) ) ) ) ) )
316, 30ax-mp 8 . . . . . . . 8  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  ( N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) )  ->  N  e.  ( 0 ... (
( # `  A )  +  ( # `  B
) ) ) ) )
3231imp 419 . . . . . . 7  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  N  e.  (
( L  +  1 ) ... ( L  +  ( # `  B
) ) ) )  ->  N  e.  ( 0 ... ( (
# `  A )  +  ( # `  B
) ) ) )
33 ccatlen 11699 . . . . . . . . . . 11  |-  ( ( A  e. Word  V  /\  B  e. Word  V )  ->  ( # `  ( A concat  B ) )  =  ( ( # `  A
)  +  ( # `  B ) ) )
3433oveq2d 6056 . . . . . . . . . 10  |-  ( ( A  e. Word  V  /\  B  e. Word  V )  ->  ( 0 ... ( # `
 ( A concat  B
) ) )  =  ( 0 ... (
( # `  A )  +  ( # `  B
) ) ) )
3534eleq2d 2471 . . . . . . . . 9  |-  ( ( A  e. Word  V  /\  B  e. Word  V )  ->  ( N  e.  ( 0 ... ( # `  ( A concat  B ) ) )  <->  N  e.  ( 0 ... (
( # `  A )  +  ( # `  B
) ) ) ) )
36353adant1 975 . . . . . . . 8  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  ( N  e.  ( 0 ... ( # `  ( A concat  B ) ) )  <-> 
N  e.  ( 0 ... ( ( # `  A )  +  (
# `  B )
) ) ) )
3736adantr 452 . . . . . . 7  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  N  e.  (
( L  +  1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( N  e.  ( 0 ... ( # `
 ( A concat  B
) ) )  <->  N  e.  ( 0 ... (
( # `  A )  +  ( # `  B
) ) ) ) )
3832, 37mpbird 224 . . . . . 6  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  N  e.  (
( L  +  1 ) ... ( L  +  ( # `  B
) ) ) )  ->  N  e.  ( 0 ... ( # `  ( A concat  B ) ) ) )
3938adantrl 697 . . . . 5  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  N  e.  ( 0 ... ( # `
 ( A concat  B
) ) ) )
40 swrdvalfn 28007 . . . . 5  |-  ( ( ( A concat  B )  e. Word  V  /\  M  e.  ( 0 ... N
)  /\  N  e.  ( 0 ... ( # `
 ( A concat  B
) ) ) )  ->  ( ( A concat  B ) substr  <. M ,  N >. )  Fn  (
0..^ ( N  -  M ) ) )
413, 16, 39, 40syl3anc 1184 . . . 4  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( ( A concat  B ) substr  <. M ,  N >. )  Fn  (
0..^ ( N  -  M ) ) )
42 elfz2 11006 . . . . . . . . 9  |-  ( M  e.  ( L ... N )  <->  ( ( L  e.  ZZ  /\  N  e.  ZZ  /\  M  e.  ZZ )  /\  ( L  <_  M  /\  M  <_  N ) ) )
43 zcn 10243 . . . . . . . . . . . 12  |-  ( N  e.  ZZ  ->  N  e.  CC )
44 zcn 10243 . . . . . . . . . . . 12  |-  ( M  e.  ZZ  ->  M  e.  CC )
45 zcn 10243 . . . . . . . . . . . 12  |-  ( L  e.  ZZ  ->  L  e.  CC )
4643, 44, 453anim123i 1139 . . . . . . . . . . 11  |-  ( ( N  e.  ZZ  /\  M  e.  ZZ  /\  L  e.  ZZ )  ->  ( N  e.  CC  /\  M  e.  CC  /\  L  e.  CC ) )
47463comr 1161 . . . . . . . . . 10  |-  ( ( L  e.  ZZ  /\  N  e.  ZZ  /\  M  e.  ZZ )  ->  ( N  e.  CC  /\  M  e.  CC  /\  L  e.  CC ) )
4847adantr 452 . . . . . . . . 9  |-  ( ( ( L  e.  ZZ  /\  N  e.  ZZ  /\  M  e.  ZZ )  /\  ( L  <_  M  /\  M  <_  N ) )  ->  ( N  e.  CC  /\  M  e.  CC  /\  L  e.  CC ) )
4942, 48sylbi 188 . . . . . . . 8  |-  ( M  e.  ( L ... N )  ->  ( N  e.  CC  /\  M  e.  CC  /\  L  e.  CC ) )
5049ad2antrl 709 . . . . . . 7  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( N  e.  CC  /\  M  e.  CC  /\  L  e.  CC ) )
51 nnncan2 9294 . . . . . . 7  |-  ( ( N  e.  CC  /\  M  e.  CC  /\  L  e.  CC )  ->  (
( N  -  L
)  -  ( M  -  L ) )  =  ( N  -  M ) )
5250, 51syl 16 . . . . . 6  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( ( N  -  L )  -  ( M  -  L ) )  =  ( N  -  M
) )
5352oveq2d 6056 . . . . 5  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( 0..^ ( ( N  -  L )  -  ( M  -  L )
) )  =  ( 0..^ ( N  -  M ) ) )
5453fneq2d 5496 . . . 4  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( (
( A concat  B ) substr  <. M ,  N >. )  Fn  ( 0..^ ( ( N  -  L
)  -  ( M  -  L ) ) )  <->  ( ( A concat  B ) substr  <. M ,  N >. )  Fn  (
0..^ ( N  -  M ) ) ) )
5541, 54mpbird 224 . . 3  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( ( A concat  B ) substr  <. M ,  N >. )  Fn  (
0..^ ( ( N  -  L )  -  ( M  -  L
) ) ) )
56 simpr 448 . . . . . . . . . 10  |-  ( ( ( # `  A
)  e.  NN0  /\  B  e. Word  V )  ->  B  e. Word  V )
5756adantr 452 . . . . . . . . 9  |-  ( ( ( ( # `  A
)  e.  NN0  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  B  e. Word  V )
58 elfzmlbm 27977 . . . . . . . . . 10  |-  ( M  e.  ( L ... N )  ->  ( M  -  L )  e.  ( 0 ... ( N  -  L )
) )
5958ad2antrl 709 . . . . . . . . 9  |-  ( ( ( ( # `  A
)  e.  NN0  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( M  -  L )  e.  ( 0 ... ( N  -  L ) ) )
60 lencl 11690 . . . . . . . . . . . 12  |-  ( B  e. Word  V  ->  ( # `
 B )  e. 
NN0 )
6160nn0zd 10329 . . . . . . . . . . 11  |-  ( B  e. Word  V  ->  ( # `
 B )  e.  ZZ )
6261adantl 453 . . . . . . . . . 10  |-  ( ( ( # `  A
)  e.  NN0  /\  B  e. Word  V )  ->  ( # `  B
)  e.  ZZ )
63 uzid 10456 . . . . . . . . . . . . . . . 16  |-  ( L  e.  ZZ  ->  L  e.  ( ZZ>= `  L )
)
64 peano2uz 10486 . . . . . . . . . . . . . . . 16  |-  ( L  e.  ( ZZ>= `  L
)  ->  ( L  +  1 )  e.  ( ZZ>= `  L )
)
6563, 64syl 16 . . . . . . . . . . . . . . 15  |-  ( L  e.  ZZ  ->  ( L  +  1 )  e.  ( ZZ>= `  L
) )
66653ad2ant1 978 . . . . . . . . . . . . . 14  |-  ( ( L  e.  ZZ  /\  N  e.  ZZ  /\  M  e.  ZZ )  ->  ( L  +  1 )  e.  ( ZZ>= `  L
) )
6766adantr 452 . . . . . . . . . . . . 13  |-  ( ( ( L  e.  ZZ  /\  N  e.  ZZ  /\  M  e.  ZZ )  /\  ( L  <_  M  /\  M  <_  N ) )  ->  ( L  +  1 )  e.  ( ZZ>= `  L )
)
6842, 67sylbi 188 . . . . . . . . . . . 12  |-  ( M  e.  ( L ... N )  ->  ( L  +  1 )  e.  ( ZZ>= `  L
) )
69 fzss1 11047 . . . . . . . . . . . 12  |-  ( ( L  +  1 )  e.  ( ZZ>= `  L
)  ->  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) )  C_  ( L ... ( L  +  ( # `  B ) ) ) )
7068, 69syl 16 . . . . . . . . . . 11  |-  ( M  e.  ( L ... N )  ->  (
( L  +  1 ) ... ( L  +  ( # `  B
) ) )  C_  ( L ... ( L  +  ( # `  B
) ) ) )
7170sselda 3308 . . . . . . . . . 10  |-  ( ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) ) )  ->  N  e.  ( L ... ( L  +  (
# `  B )
) ) )
72 elfzmlbp 27978 . . . . . . . . . 10  |-  ( ( ( # `  B
)  e.  ZZ  /\  N  e.  ( L ... ( L  +  (
# `  B )
) ) )  -> 
( N  -  L
)  e.  ( 0 ... ( # `  B
) ) )
7362, 71, 72syl2an 464 . . . . . . . . 9  |-  ( ( ( ( # `  A
)  e.  NN0  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( N  -  L )  e.  ( 0 ... ( # `  B ) ) )
7457, 59, 733jca 1134 . . . . . . . 8  |-  ( ( ( ( # `  A
)  e.  NN0  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( B  e. Word  V  /\  ( M  -  L )  e.  ( 0 ... ( N  -  L )
)  /\  ( N  -  L )  e.  ( 0 ... ( # `  B ) ) ) )
7574ex 424 . . . . . . 7  |-  ( ( ( # `  A
)  e.  NN0  /\  B  e. Word  V )  ->  ( ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( B  e. Word  V  /\  ( M  -  L )  e.  ( 0 ... ( N  -  L ) )  /\  ( N  -  L )  e.  ( 0 ... ( # `  B ) ) ) ) )
764, 75sylan 458 . . . . . 6  |-  ( ( A  e. Word  V  /\  B  e. Word  V )  ->  ( ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( B  e. Word  V  /\  ( M  -  L )  e.  ( 0 ... ( N  -  L ) )  /\  ( N  -  L )  e.  ( 0 ... ( # `  B ) ) ) ) )
77763adant1 975 . . . . 5  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  (
( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( B  e. Word  V  /\  ( M  -  L )  e.  ( 0 ... ( N  -  L ) )  /\  ( N  -  L )  e.  ( 0 ... ( # `  B ) ) ) ) )
7877imp 419 . . . 4  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( B  e. Word  V  /\  ( M  -  L )  e.  ( 0 ... ( N  -  L )
)  /\  ( N  -  L )  e.  ( 0 ... ( # `  B ) ) ) )
79 swrdvalfn 28007 . . . 4  |-  ( ( B  e. Word  V  /\  ( M  -  L
)  e.  ( 0 ... ( N  -  L ) )  /\  ( N  -  L
)  e.  ( 0 ... ( # `  B
) ) )  -> 
( B substr  <. ( M  -  L ) ,  ( N  -  L
) >. )  Fn  (
0..^ ( ( N  -  L )  -  ( M  -  L
) ) ) )
8078, 79syl 16 . . 3  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( B substr  <.
( M  -  L
) ,  ( N  -  L ) >.
)  Fn  ( 0..^ ( ( N  -  L )  -  ( M  -  L )
) ) )
81 3simpc 956 . . . . . . . 8  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  ( A  e. Word  V  /\  B  e. Word  V ) )
8281ad2antrr 707 . . . . . . 7  |-  ( ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  /\  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )  /\  k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) ) )  ->  ( A  e. Word  V  /\  B  e. Word  V ) )
834, 60anim12i 550 . . . . . . . . . 10  |-  ( ( A  e. Word  V  /\  B  e. Word  V )  ->  ( ( # `  A
)  e.  NN0  /\  ( # `  B )  e.  NN0 ) )
84833adant1 975 . . . . . . . . 9  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  (
( # `  A )  e.  NN0  /\  ( # `
 B )  e. 
NN0 ) )
8584ad2antrr 707 . . . . . . . 8  |-  ( ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  /\  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )  /\  k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) ) )  ->  ( ( # `
 A )  e. 
NN0  /\  ( # `  B
)  e.  NN0 )
)
866oveq1i 6050 . . . . . . . . . . . 12  |-  ( L ... N )  =  ( ( # `  A
) ... N )
8786eleq2i 2468 . . . . . . . . . . 11  |-  ( M  e.  ( L ... N )  <->  M  e.  ( ( # `  A
) ... N ) )
8887biimpi 187 . . . . . . . . . 10  |-  ( M  e.  ( L ... N )  ->  M  e.  ( ( # `  A
) ... N ) )
8988adantr 452 . . . . . . . . 9  |-  ( ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) ) )  ->  M  e.  ( ( # `
 A ) ... N ) )
9089ad2antlr 708 . . . . . . . 8  |-  ( ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  /\  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )  /\  k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) ) )  ->  M  e.  ( ( # `  A
) ... N ) )
916, 27ax-mp 8 . . . . . . . . . . . 12  |-  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) )  =  ( ( ( # `  A
)  +  1 ) ... ( ( # `  A )  +  (
# `  B )
) )
9291eleq2i 2468 . . . . . . . . . . 11  |-  ( N  e.  ( ( L  +  1 ) ... ( L  +  (
# `  B )
) )  <->  N  e.  ( ( ( # `  A )  +  1 ) ... ( (
# `  A )  +  ( # `  B
) ) ) )
9392biimpi 187 . . . . . . . . . 10  |-  ( N  e.  ( ( L  +  1 ) ... ( L  +  (
# `  B )
) )  ->  N  e.  ( ( ( # `  A )  +  1 ) ... ( (
# `  A )  +  ( # `  B
) ) ) )
9493adantl 453 . . . . . . . . 9  |-  ( ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) ) )  ->  N  e.  ( (
( # `  A )  +  1 ) ... ( ( # `  A
)  +  ( # `  B ) ) ) )
9594ad2antlr 708 . . . . . . . 8  |-  ( ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  /\  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )  /\  k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) ) )  ->  N  e.  ( ( ( # `  A )  +  1 ) ... ( (
# `  A )  +  ( # `  B
) ) ) )
9647, 51syl 16 . . . . . . . . . . . . . 14  |-  ( ( L  e.  ZZ  /\  N  e.  ZZ  /\  M  e.  ZZ )  ->  (
( N  -  L
)  -  ( M  -  L ) )  =  ( N  -  M ) )
9796adantr 452 . . . . . . . . . . . . 13  |-  ( ( ( L  e.  ZZ  /\  N  e.  ZZ  /\  M  e.  ZZ )  /\  ( L  <_  M  /\  M  <_  N ) )  ->  ( ( N  -  L )  -  ( M  -  L ) )  =  ( N  -  M
) )
9842, 97sylbi 188 . . . . . . . . . . . 12  |-  ( M  e.  ( L ... N )  ->  (
( N  -  L
)  -  ( M  -  L ) )  =  ( N  -  M ) )
9998ad2antrl 709 . . . . . . . . . . 11  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( ( N  -  L )  -  ( M  -  L ) )  =  ( N  -  M
) )
10099oveq2d 6056 . . . . . . . . . 10  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( 0..^ ( ( N  -  L )  -  ( M  -  L )
) )  =  ( 0..^ ( N  -  M ) ) )
101100eleq2d 2471 . . . . . . . . 9  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) )  <-> 
k  e.  ( 0..^ ( N  -  M
) ) ) )
102101biimpa 471 . . . . . . . 8  |-  ( ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  /\  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )  /\  k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) ) )  ->  k  e.  ( 0..^ ( N  -  M ) ) )
103 swrdccatin2lem1 28017 . . . . . . . 8  |-  ( ( ( ( # `  A
)  e.  NN0  /\  ( # `  B )  e.  NN0 )  /\  ( M  e.  (
( # `  A ) ... N )  /\  N  e.  ( (
( # `  A )  +  1 ) ... ( ( # `  A
)  +  ( # `  B ) ) )  /\  k  e.  ( 0..^ ( N  -  M ) ) ) )  ->  ( k  +  M )  e.  ( ( # `  A
)..^ ( ( # `  A )  +  (
# `  B )
) ) )
10485, 90, 95, 102, 103syl13anc 1186 . . . . . . 7  |-  ( ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  /\  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )  /\  k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) ) )  ->  ( k  +  M )  e.  ( ( # `  A
)..^ ( ( # `  A )  +  (
# `  B )
) ) )
105 df-3an 938 . . . . . . 7  |-  ( ( A  e. Word  V  /\  B  e. Word  V  /\  (
k  +  M )  e.  ( ( # `  A )..^ ( (
# `  A )  +  ( # `  B
) ) ) )  <-> 
( ( A  e. Word  V  /\  B  e. Word  V
)  /\  ( k  +  M )  e.  ( ( # `  A
)..^ ( ( # `  A )  +  (
# `  B )
) ) ) )
10682, 104, 105sylanbrc 646 . . . . . 6  |-  ( ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  /\  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )  /\  k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) ) )  ->  ( A  e. Word  V  /\  B  e. Word  V  /\  ( k  +  M )  e.  ( ( # `  A
)..^ ( ( # `  A )  +  (
# `  B )
) ) ) )
107 ccatval2 11701 . . . . . 6  |-  ( ( A  e. Word  V  /\  B  e. Word  V  /\  (
k  +  M )  e.  ( ( # `  A )..^ ( (
# `  A )  +  ( # `  B
) ) ) )  ->  ( ( A concat  B ) `  (
k  +  M ) )  =  ( B `
 ( ( k  +  M )  -  ( # `  A ) ) ) )
108106, 107syl 16 . . . . 5  |-  ( ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  /\  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )  /\  k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) ) )  ->  ( ( A concat  B ) `  (
k  +  M ) )  =  ( B `
 ( ( k  +  M )  -  ( # `  A ) ) ) )
109 elfzo2 11098 . . . . . . . 8  |-  ( k  e.  ( 0..^ ( ( N  -  L
)  -  ( M  -  L ) ) )  <->  ( k  e.  ( ZZ>= `  0 )  /\  ( ( N  -  L )  -  ( M  -  L )
)  e.  ZZ  /\  k  <  ( ( N  -  L )  -  ( M  -  L
) ) ) )
110 elnn0uz 10479 . . . . . . . . . 10  |-  ( k  e.  NN0  <->  k  e.  (
ZZ>= `  0 ) )
111 nn0cn 10187 . . . . . . . . . . . . . . . . . . . . . . . . 25  |-  ( k  e.  NN0  ->  k  e.  CC )
112111adantl 453 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  ( ( ( L  e.  ZZ  /\  M  e.  ZZ )  /\  k  e.  NN0 )  ->  k  e.  CC )
11344ad2antlr 708 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  ( ( ( L  e.  ZZ  /\  M  e.  ZZ )  /\  k  e.  NN0 )  ->  M  e.  CC )
11445ad2antrr 707 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  ( ( ( L  e.  ZZ  /\  M  e.  ZZ )  /\  k  e.  NN0 )  ->  L  e.  CC )
115112, 113, 114addsubassd 9387 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( ( L  e.  ZZ  /\  M  e.  ZZ )  /\  k  e.  NN0 )  ->  ( ( k  +  M )  -  L )  =  ( k  +  ( M  -  L ) ) )
116115ex 424 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( L  e.  ZZ  /\  M  e.  ZZ )  ->  ( k  e.  NN0  ->  ( ( k  +  M )  -  L
)  =  ( k  +  ( M  -  L ) ) ) )
117116a1d 23 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( L  e.  ZZ  /\  M  e.  ZZ )  ->  ( L  e.  NN0  ->  ( k  e.  NN0  ->  ( ( k  +  M )  -  L
)  =  ( k  +  ( M  -  L ) ) ) ) )
1181173adant2 976 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( L  e.  ZZ  /\  N  e.  ZZ  /\  M  e.  ZZ )  ->  ( L  e.  NN0  ->  (
k  e.  NN0  ->  ( ( k  +  M
)  -  L )  =  ( k  +  ( M  -  L
) ) ) ) )
119118adantr 452 . . . . . . . . . . . . . . . . . . 19  |-  ( ( ( L  e.  ZZ  /\  N  e.  ZZ  /\  M  e.  ZZ )  /\  ( L  <_  M  /\  M  <_  N ) )  ->  ( L  e.  NN0  ->  ( k  e.  NN0  ->  ( (
k  +  M )  -  L )  =  ( k  +  ( M  -  L ) ) ) ) )
12042, 119sylbi 188 . . . . . . . . . . . . . . . . . 18  |-  ( M  e.  ( L ... N )  ->  ( L  e.  NN0  ->  (
k  e.  NN0  ->  ( ( k  +  M
)  -  L )  =  ( k  +  ( M  -  L
) ) ) ) )
121120adantr 452 . . . . . . . . . . . . . . . . 17  |-  ( ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) ) )  -> 
( L  e.  NN0  ->  ( k  e.  NN0  ->  ( ( k  +  M )  -  L
)  =  ( k  +  ( M  -  L ) ) ) ) )
122121com12 29 . . . . . . . . . . . . . . . 16  |-  ( L  e.  NN0  ->  ( ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) ) )  -> 
( k  e.  NN0  ->  ( ( k  +  M )  -  L
)  =  ( k  +  ( M  -  L ) ) ) ) )
123 eleq1 2464 . . . . . . . . . . . . . . . . 17  |-  ( (
# `  A )  =  L  ->  ( (
# `  A )  e.  NN0  <->  L  e.  NN0 ) )
124 oveq2 6048 . . . . . . . . . . . . . . . . . . . 20  |-  ( (
# `  A )  =  L  ->  ( ( k  +  M )  -  ( # `  A
) )  =  ( ( k  +  M
)  -  L ) )
125124eqeq1d 2412 . . . . . . . . . . . . . . . . . . 19  |-  ( (
# `  A )  =  L  ->  ( ( ( k  +  M
)  -  ( # `  A ) )  =  ( k  +  ( M  -  L ) )  <->  ( ( k  +  M )  -  L )  =  ( k  +  ( M  -  L ) ) ) )
126125imbi2d 308 . . . . . . . . . . . . . . . . . 18  |-  ( (
# `  A )  =  L  ->  ( ( k  e.  NN0  ->  ( ( k  +  M
)  -  ( # `  A ) )  =  ( k  +  ( M  -  L ) ) )  <->  ( k  e.  NN0  ->  ( (
k  +  M )  -  L )  =  ( k  +  ( M  -  L ) ) ) ) )
127126imbi2d 308 . . . . . . . . . . . . . . . . 17  |-  ( (
# `  A )  =  L  ->  ( ( ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( k  e. 
NN0  ->  ( ( k  +  M )  -  ( # `  A ) )  =  ( k  +  ( M  -  L ) ) ) )  <->  ( ( M  e.  ( L ... N )  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( k  e. 
NN0  ->  ( ( k  +  M )  -  L )  =  ( k  +  ( M  -  L ) ) ) ) ) )
128123, 127imbi12d 312 . . . . . . . . . . . . . . . 16  |-  ( (
# `  A )  =  L  ->  ( ( ( # `  A
)  e.  NN0  ->  ( ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( k  e. 
NN0  ->  ( ( k  +  M )  -  ( # `  A ) )  =  ( k  +  ( M  -  L ) ) ) ) )  <->  ( L  e.  NN0  ->  ( ( M  e.  ( L ... N )  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( k  e. 
NN0  ->  ( ( k  +  M )  -  L )  =  ( k  +  ( M  -  L ) ) ) ) ) ) )
129122, 128mpbiri 225 . . . . . . . . . . . . . . 15  |-  ( (
# `  A )  =  L  ->  ( (
# `  A )  e.  NN0  ->  ( ( M  e.  ( L ... N )  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( k  e. 
NN0  ->  ( ( k  +  M )  -  ( # `  A ) )  =  ( k  +  ( M  -  L ) ) ) ) ) )
130129eqcoms 2407 . . . . . . . . . . . . . 14  |-  ( L  =  ( # `  A
)  ->  ( ( # `
 A )  e. 
NN0  ->  ( ( M  e.  ( L ... N )  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( k  e. 
NN0  ->  ( ( k  +  M )  -  ( # `  A ) )  =  ( k  +  ( M  -  L ) ) ) ) ) )
1316, 4, 130mpsyl 61 . . . . . . . . . . . . 13  |-  ( A  e. Word  V  ->  (
( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( k  e. 
NN0  ->  ( ( k  +  M )  -  ( # `  A ) )  =  ( k  +  ( M  -  L ) ) ) ) )
1321313ad2ant2 979 . . . . . . . . . . . 12  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  (
( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( k  e. 
NN0  ->  ( ( k  +  M )  -  ( # `  A ) )  =  ( k  +  ( M  -  L ) ) ) ) )
133132imp 419 . . . . . . . . . . 11  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( k  e.  NN0  ->  ( (
k  +  M )  -  ( # `  A
) )  =  ( k  +  ( M  -  L ) ) ) )
134133com12 29 . . . . . . . . . 10  |-  ( k  e.  NN0  ->  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( (
k  +  M )  -  ( # `  A
) )  =  ( k  +  ( M  -  L ) ) ) )
135110, 134sylbir 205 . . . . . . . . 9  |-  ( k  e.  ( ZZ>= `  0
)  ->  ( (
( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( (
k  +  M )  -  ( # `  A
) )  =  ( k  +  ( M  -  L ) ) ) )
1361353ad2ant1 978 . . . . . . . 8  |-  ( ( k  e.  ( ZZ>= ` 
0 )  /\  (
( N  -  L
)  -  ( M  -  L ) )  e.  ZZ  /\  k  <  ( ( N  -  L )  -  ( M  -  L )
) )  ->  (
( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  /\  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( (
k  +  M )  -  ( # `  A
) )  =  ( k  +  ( M  -  L ) ) ) )
137109, 136sylbi 188 . . . . . . 7  |-  ( k  e.  ( 0..^ ( ( N  -  L
)  -  ( M  -  L ) ) )  ->  ( (
( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( (
k  +  M )  -  ( # `  A
) )  =  ( k  +  ( M  -  L ) ) ) )
138137impcom 420 . . . . . 6  |-  ( ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  /\  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )  /\  k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) ) )  ->  ( (
k  +  M )  -  ( # `  A
) )  =  ( k  +  ( M  -  L ) ) )
139138fveq2d 5691 . . . . 5  |-  ( ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  /\  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )  /\  k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) ) )  ->  ( B `  ( ( k  +  M )  -  ( # `
 A ) ) )  =  ( B `
 ( k  +  ( M  -  L
) ) ) )
140108, 139eqtrd 2436 . . . 4  |-  ( ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  /\  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )  /\  k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) ) )  ->  ( ( A concat  B ) `  (
k  +  M ) )  =  ( B `
 ( k  +  ( M  -  L
) ) ) )
1412ad2antrr 707 . . . . 5  |-  ( ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  /\  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )  /\  k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) ) )  ->  ( A concat  B )  e. Word  V )
142123eqcoms 2407 . . . . . . . . . . . . 13  |-  ( L  =  ( # `  A
)  ->  ( ( # `
 A )  e. 
NN0 
<->  L  e.  NN0 )
)
143142biimpa 471 . . . . . . . . . . . 12  |-  ( ( L  =  ( # `  A )  /\  ( # `
 A )  e. 
NN0 )  ->  L  e.  NN0 )
144 elnn0uz 10479 . . . . . . . . . . . . 13  |-  ( L  e.  NN0  <->  L  e.  ( ZZ>=
`  0 ) )
145144, 10sylbi 188 . . . . . . . . . . . 12  |-  ( L  e.  NN0  ->  ( L ... N )  C_  ( 0 ... N
) )
146 ssel 3302 . . . . . . . . . . . 12  |-  ( ( L ... N ) 
C_  ( 0 ... N )  ->  ( M  e.  ( L ... N )  ->  M  e.  ( 0 ... N
) ) )
147143, 145, 1463syl 19 . . . . . . . . . . 11  |-  ( ( L  =  ( # `  A )  /\  ( # `
 A )  e. 
NN0 )  ->  ( M  e.  ( L ... N )  ->  M  e.  ( 0 ... N
) ) )
1486, 4, 147sylancr 645 . . . . . . . . . 10  |-  ( A  e. Word  V  ->  ( M  e.  ( L ... N )  ->  M  e.  ( 0 ... N
) ) )
1491483ad2ant2 979 . . . . . . . . 9  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  ( M  e.  ( L ... N )  ->  M  e.  ( 0 ... N
) ) )
150149com12 29 . . . . . . . 8  |-  ( M  e.  ( L ... N )  ->  (
( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  M  e.  ( 0 ... N ) ) )
151150adantr 452 . . . . . . 7  |-  ( ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) ) )  -> 
( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  ->  M  e.  ( 0 ... N
) ) )
152151impcom 420 . . . . . 6  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  M  e.  ( 0 ... N
) )
153152adantr 452 . . . . 5  |-  ( ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  /\  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )  /\  k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) ) )  ->  M  e.  ( 0 ... N
) )
154 oveq1 6047 . . . . . . . . . . . 12  |-  ( L  =  ( # `  A
)  ->  ( L ... N )  =  ( ( # `  A
) ... N ) )
155154eleq2d 2471 . . . . . . . . . . 11  |-  ( L  =  ( # `  A
)  ->  ( M  e.  ( L ... N
)  <->  M  e.  (
( # `  A ) ... N ) ) )
156155, 28anbi12d 692 . . . . . . . . . 10  |-  ( L  =  ( # `  A
)  ->  ( ( M  e.  ( L ... N )  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) )  <-> 
( M  e.  ( ( # `  A
) ... N )  /\  N  e.  ( (
( # `  A )  +  1 ) ... ( ( # `  A
)  +  ( # `  B ) ) ) ) ) )
157156anbi2d 685 . . . . . . . . 9  |-  ( L  =  ( # `  A
)  ->  ( (
( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  <->  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( ( # `
 A ) ... N )  /\  N  e.  ( ( ( # `  A )  +  1 ) ... ( (
# `  A )  +  ( # `  B
) ) ) ) ) ) )
15821adantl 453 . . . . . . . . . . . . 13  |-  ( ( M  e.  ( (
# `  A ) ... N )  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V ) )  -> 
( ( # `  A
)  +  1 )  e.  ( ZZ>= `  0
) )
159158, 22syl 16 . . . . . . . . . . . 12  |-  ( ( M  e.  ( (
# `  A ) ... N )  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V ) )  -> 
( ( ( # `  A )  +  1 ) ... ( (
# `  A )  +  ( # `  B
) ) )  C_  ( 0 ... (
( # `  A )  +  ( # `  B
) ) ) )
160159sseld 3307 . . . . . . . . . . 11  |-  ( ( M  e.  ( (
# `  A ) ... N )  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V ) )  -> 
( N  e.  ( ( ( # `  A
)  +  1 ) ... ( ( # `  A )  +  (
# `  B )
) )  ->  N  e.  ( 0 ... (
( # `  A )  +  ( # `  B
) ) ) ) )
161160impancom 428 . . . . . . . . . 10  |-  ( ( M  e.  ( (
# `  A ) ... N )  /\  N  e.  ( ( ( # `  A )  +  1 ) ... ( (
# `  A )  +  ( # `  B
) ) ) )  ->  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  N  e.  ( 0 ... (
( # `  A )  +  ( # `  B
) ) ) ) )
162161impcom 420 . . . . . . . . 9  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( ( # `  A
) ... N )  /\  N  e.  ( (
( # `  A )  +  1 ) ... ( ( # `  A
)  +  ( # `  B ) ) ) ) )  ->  N  e.  ( 0 ... (
( # `  A )  +  ( # `  B
) ) ) )
163157, 162syl6bi 220 . . . . . . . 8  |-  ( L  =  ( # `  A
)  ->  ( (
( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  N  e.  ( 0 ... (
( # `  A )  +  ( # `  B
) ) ) ) )
1646, 163ax-mp 8 . . . . . . 7  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  N  e.  ( 0 ... (
( # `  A )  +  ( # `  B
) ) ) )
165333adant1 975 . . . . . . . . 9  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  ( # `
 ( A concat  B
) )  =  ( ( # `  A
)  +  ( # `  B ) ) )
166165adantr 452 . . . . . . . 8  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( # `  ( A concat  B ) )  =  ( ( # `  A
)  +  ( # `  B ) ) )
167166oveq2d 6056 . . . . . . 7  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( 0 ... ( # `  ( A concat  B ) ) )  =  ( 0 ... ( ( # `  A
)  +  ( # `  B ) ) ) )
168164, 167eleqtrrd 2481 . . . . . 6  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  N  e.  ( 0 ... ( # `
 ( A concat  B
) ) ) )
169168adantr 452 . . . . 5  |-  ( ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  /\  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )  /\  k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) ) )  ->  N  e.  ( 0 ... ( # `
 ( A concat  B
) ) ) )
17049, 51syl 16 . . . . . . . . . 10  |-  ( M  e.  ( L ... N )  ->  (
( N  -  L
)  -  ( M  -  L ) )  =  ( N  -  M ) )
171170oveq2d 6056 . . . . . . . . 9  |-  ( M  e.  ( L ... N )  ->  (
0..^ ( ( N  -  L )  -  ( M  -  L
) ) )  =  ( 0..^ ( N  -  M ) ) )
172171eleq2d 2471 . . . . . . . 8  |-  ( M  e.  ( L ... N )  ->  (
k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L )
) )  <->  k  e.  ( 0..^ ( N  -  M ) ) ) )
173172biimpd 199 . . . . . . 7  |-  ( M  e.  ( L ... N )  ->  (
k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L )
) )  ->  k  e.  ( 0..^ ( N  -  M ) ) ) )
174173ad2antrl 709 . . . . . 6  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) )  ->  k  e.  ( 0..^ ( N  -  M ) ) ) )
175174imp 419 . . . . 5  |-  ( ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  /\  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )  /\  k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) ) )  ->  k  e.  ( 0..^ ( N  -  M ) ) )
176 swrdfv 11726 . . . . 5  |-  ( ( ( ( A concat  B
)  e. Word  V  /\  M  e.  ( 0 ... N )  /\  N  e.  ( 0 ... ( # `  ( A concat  B ) ) ) )  /\  k  e.  ( 0..^ ( N  -  M ) ) )  ->  ( (
( A concat  B ) substr  <. M ,  N >. ) `
 k )  =  ( ( A concat  B
) `  ( k  +  M ) ) )
177141, 153, 169, 175, 176syl31anc 1187 . . . 4  |-  ( ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  /\  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )  /\  k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) ) )  ->  ( (
( A concat  B ) substr  <. M ,  N >. ) `
 k )  =  ( ( A concat  B
) `  ( k  +  M ) ) )
178 simpl3 962 . . . . . 6  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  B  e. Word  V )
17958ad2antrl 709 . . . . . 6  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( M  -  L )  e.  ( 0 ... ( N  -  L ) ) )
180613ad2ant3 980 . . . . . . . 8  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  ( # `
 B )  e.  ZZ )
181180adantr 452 . . . . . . 7  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( # `  B
)  e.  ZZ )
182 id 20 . . . . . . . . . . . . . . . . . 18  |-  ( L  e.  ZZ  ->  L  e.  ZZ )
183 peano2z 10274 . . . . . . . . . . . . . . . . . 18  |-  ( L  e.  ZZ  ->  ( L  +  1 )  e.  ZZ )
184 zre 10242 . . . . . . . . . . . . . . . . . . 19  |-  ( L  e.  ZZ  ->  L  e.  RR )
185184lep1d 9898 . . . . . . . . . . . . . . . . . 18  |-  ( L  e.  ZZ  ->  L  <_  ( L  +  1 ) )
186182, 183, 1853jca 1134 . . . . . . . . . . . . . . . . 17  |-  ( L  e.  ZZ  ->  ( L  e.  ZZ  /\  ( L  +  1 )  e.  ZZ  /\  L  <_  ( L  +  1 ) ) )
1871863ad2ant1 978 . . . . . . . . . . . . . . . 16  |-  ( ( L  e.  ZZ  /\  N  e.  ZZ  /\  M  e.  ZZ )  ->  ( L  e.  ZZ  /\  ( L  +  1 )  e.  ZZ  /\  L  <_  ( L  +  1 ) ) )
188187adantr 452 . . . . . . . . . . . . . . 15  |-  ( ( ( L  e.  ZZ  /\  N  e.  ZZ  /\  M  e.  ZZ )  /\  ( L  <_  M  /\  M  <_  N ) )  ->  ( L  e.  ZZ  /\  ( L  +  1 )  e.  ZZ  /\  L  <_ 
( L  +  1 ) ) )
18942, 188sylbi 188 . . . . . . . . . . . . . 14  |-  ( M  e.  ( L ... N )  ->  ( L  e.  ZZ  /\  ( L  +  1 )  e.  ZZ  /\  L  <_  ( L  +  1 ) ) )
190189ad2antrr 707 . . . . . . . . . . . . 13  |-  ( ( ( M  e.  ( L ... N )  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( L  e.  ZZ  /\  ( L  +  1 )  e.  ZZ  /\  L  <_ 
( L  +  1 ) ) )
191 eluz2 10450 . . . . . . . . . . . . 13  |-  ( ( L  +  1 )  e.  ( ZZ>= `  L
)  <->  ( L  e.  ZZ  /\  ( L  +  1 )  e.  ZZ  /\  L  <_ 
( L  +  1 ) ) )
192190, 191sylibr 204 . . . . . . . . . . . 12  |-  ( ( ( M  e.  ( L ... N )  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( L  + 
1 )  e.  (
ZZ>= `  L ) )
193192, 69syl 16 . . . . . . . . . . 11  |-  ( ( ( M  e.  ( L ... N )  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( ( L  +  1 ) ... ( L  +  (
# `  B )
) )  C_  ( L ... ( L  +  ( # `  B ) ) ) )
194 simpr 448 . . . . . . . . . . 11  |-  ( ( ( M  e.  ( L ... N )  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) )  ->  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) )
195193, 194sseldd 3309 . . . . . . . . . 10  |-  ( ( ( M  e.  ( L ... N )  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) )  ->  N  e.  ( L ... ( L  +  ( # `  B
) ) ) )
196195ex 424 . . . . . . . . 9  |-  ( ( M  e.  ( L ... N )  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )
)  ->  ( N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) )  ->  N  e.  ( L ... ( L  +  (
# `  B )
) ) ) )
197196impancom 428 . . . . . . . 8  |-  ( ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) ) )  -> 
( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  ->  N  e.  ( L ... ( L  +  ( # `  B
) ) ) ) )
198197impcom 420 . . . . . . 7  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  N  e.  ( L ... ( L  +  ( # `  B
) ) ) )
199181, 198, 72syl2anc 643 . . . . . 6  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( N  -  L )  e.  ( 0 ... ( # `  B ) ) )
200178, 179, 1993jca 1134 . . . . 5  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( B  e. Word  V  /\  ( M  -  L )  e.  ( 0 ... ( N  -  L )
)  /\  ( N  -  L )  e.  ( 0 ... ( # `  B ) ) ) )
201 swrdfv 11726 . . . . 5  |-  ( ( ( B  e. Word  V  /\  ( M  -  L
)  e.  ( 0 ... ( N  -  L ) )  /\  ( N  -  L
)  e.  ( 0 ... ( # `  B
) ) )  /\  k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L )
) ) )  -> 
( ( B substr  <. ( M  -  L ) ,  ( N  -  L ) >. ) `  k )  =  ( B `  ( k  +  ( M  -  L ) ) ) )
202200, 201sylan 458 . . . 4  |-  ( ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  /\  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )  /\  k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) ) )  ->  ( ( B substr  <. ( M  -  L ) ,  ( N  -  L )
>. ) `  k )  =  ( B `  ( k  +  ( M  -  L ) ) ) )
203140, 177, 2023eqtr4d 2446 . . 3  |-  ( ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  /\  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )  /\  k  e.  ( 0..^ ( ( N  -  L )  -  ( M  -  L ) ) ) )  ->  ( (
( A concat  B ) substr  <. M ,  N >. ) `
 k )  =  ( ( B substr  <. ( M  -  L ) ,  ( N  -  L ) >. ) `  k ) )
20455, 80, 203eqfnfvd 5789 . 2  |-  ( ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  /\  ( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )  ->  ( ( A concat  B ) substr  <. M ,  N >. )  =  ( B substr  <. ( M  -  L ) ,  ( N  -  L )
>. ) )
205204ex 424 1  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  (
( M  e.  ( L ... N )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( ( A concat  B ) substr  <. M ,  N >. )  =  ( B substr  <. ( M  -  L ) ,  ( N  -  L )
>. ) ) )
Colors of variables: wff set class
Syntax hints:    -> wi 4    <-> wb 177    /\ wa 359    /\ w3a 936    = wceq 1649    e. wcel 1721    C_ wss 3280   <.cop 3777   class class class wbr 4172    Fn wfn 5408   ` cfv 5413  (class class class)co 6040   CCcc 8944   0cc0 8946   1c1 8947    + caddc 8949    < clt 9076    <_ cle 9077    - cmin 9247   NN0cn0 10177   ZZcz 10238   ZZ>=cuz 10444   ...cfz 10999  ..^cfzo 11090   #chash 11573  Word cword 11672   concat cconcat 11673   substr csubstr 11675
This theorem is referenced by:  swrdccatin12b  28027  swrdccat3  28029
This theorem was proved from axioms:  ax-1 5  ax-2 6  ax-3 7  ax-mp 8  ax-gen 1552  ax-5 1563  ax-17 1623  ax-9 1662  ax-8 1683  ax-13 1723  ax-14 1725  ax-6 1740  ax-7 1745  ax-11 1757  ax-12 1946  ax-ext 2385  ax-rep 4280  ax-sep 4290  ax-nul 4298  ax-pow 4337  ax-pr 4363  ax-un 4660  ax-cnex 9002  ax-resscn 9003  ax-1cn 9004  ax-icn 9005  ax-addcl 9006  ax-addrcl 9007  ax-mulcl 9008  ax-mulrcl 9009  ax-mulcom 9010  ax-addass 9011  ax-mulass 9012  ax-distr 9013  ax-i2m1 9014  ax-1ne0 9015  ax-1rid 9016  ax-rnegex 9017  ax-rrecex 9018  ax-cnre 9019  ax-pre-lttri 9020  ax-pre-lttrn 9021  ax-pre-ltadd 9022  ax-pre-mulgt0 9023
This theorem depends on definitions:  df-bi 178  df-or 360  df-an 361  df-3or 937  df-3an 938  df-tru 1325  df-ex 1548  df-nf 1551  df-sb 1656  df-eu 2258  df-mo 2259  df-clab 2391  df-cleq 2397  df-clel 2400  df-nfc 2529  df-ne 2569  df-nel 2570  df-ral 2671  df-rex 2672  df-reu 2673  df-rab 2675  df-v 2918  df-sbc 3122  df-csb 3212  df-dif 3283  df-un 3285  df-in 3287  df-ss 3294  df-pss 3296  df-nul 3589  df-if 3700  df-pw 3761  df-sn 3780  df-pr 3781  df-tp 3782  df-op 3783  df-uni 3976  df-int 4011  df-iun 4055  df-br 4173  df-opab 4227  df-mpt 4228  df-tr 4263  df-eprel 4454  df-id 4458  df-po 4463  df-so 4464  df-fr 4501  df-we 4503  df-ord 4544  df-on 4545  df-lim 4546  df-suc 4547  df-om 4805  df-xp 4843  df-rel 4844  df-cnv 4845  df-co 4846  df-dm 4847  df-rn 4848  df-res 4849  df-ima 4850  df-iota 5377  df-fun 5415  df-fn 5416  df-f 5417  df-f1 5418  df-fo 5419  df-f1o 5420  df-fv 5421  df-ov 6043  df-oprab 6044  df-mpt2 6045  df-1st 6308  df-2nd 6309  df-riota 6508  df-recs 6592  df-rdg 6627  df-1o 6683  df-oadd 6687  df-er 6864  df-en 7069  df-dom 7070  df-sdom 7071  df-fin 7072  df-card 7782  df-pnf 9078  df-mnf 9079  df-xr 9080  df-ltxr 9081  df-le 9082  df-sub 9249  df-neg 9250  df-nn 9957  df-n0 10178  df-z 10239  df-uz 10445  df-fz 11000  df-fzo 11091  df-hash 11574  df-word 11678  df-concat 11679  df-substr 11681
  Copyright terms: Public domain W3C validator