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

Theorem swrdccatin12b 28027
Description: The subword of a concatenation of two words within both of the concatenated words. REMARK: If swrdccatin12c 28028 is proven directly, this theorem would be obsolete then). (Contributed by Alexander van der Vekens, 5-Apr-2018.)
Hypothesis
Ref Expression
swrdccat3.l  |-  L  =  ( # `  A
)
Assertion
Ref Expression
swrdccatin12b  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  (
( M  e.  ( 0 ... L )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( ( A concat  B ) substr  <. M ,  N >. )  =  ( ( A substr  <. M ,  L >. ) concat  ( B substr  <.
0 ,  ( N  -  L ) >.
) ) ) )

Proof of Theorem swrdccatin12b
StepHypRef Expression
1 elfzelz 11015 . . . . . . . 8  |-  ( M  e.  ( 0 ... M )  ->  M  e.  ZZ )
2 elfzelz 11015 . . . . . . . . 9  |-  ( N  e.  ( ( M  +  1 ) ... ( M  +  (
# `  B )
) )  ->  N  e.  ZZ )
3 zcn 10243 . . . . . . . . . . . . . . . 16  |-  ( M  e.  ZZ  ->  M  e.  CC )
43subidd 9355 . . . . . . . . . . . . . . 15  |-  ( M  e.  ZZ  ->  ( M  -  M )  =  0 )
54adantl 453 . . . . . . . . . . . . . 14  |-  ( ( N  e.  ZZ  /\  M  e.  ZZ )  ->  ( M  -  M
)  =  0 )
65opeq1d 3950 . . . . . . . . . . . . 13  |-  ( ( N  e.  ZZ  /\  M  e.  ZZ )  -> 
<. ( M  -  M
) ,  ( N  -  M ) >.  =  <. 0 ,  ( N  -  M )
>. )
7 oveq2 6048 . . . . . . . . . . . . . . 15  |-  ( L  =  M  ->  ( M  -  L )  =  ( M  -  M ) )
8 oveq2 6048 . . . . . . . . . . . . . . 15  |-  ( L  =  M  ->  ( N  -  L )  =  ( N  -  M ) )
97, 8opeq12d 3952 . . . . . . . . . . . . . 14  |-  ( L  =  M  ->  <. ( M  -  L ) ,  ( N  -  L ) >.  =  <. ( M  -  M ) ,  ( N  -  M ) >. )
109eqeq1d 2412 . . . . . . . . . . . . 13  |-  ( L  =  M  ->  ( <. ( M  -  L
) ,  ( N  -  L ) >.  =  <. 0 ,  ( N  -  M )
>. 
<-> 
<. ( M  -  M
) ,  ( N  -  M ) >.  =  <. 0 ,  ( N  -  M )
>. ) )
116, 10syl5ibr 213 . . . . . . . . . . . 12  |-  ( L  =  M  ->  (
( N  e.  ZZ  /\  M  e.  ZZ )  ->  <. ( M  -  L ) ,  ( N  -  L )
>.  =  <. 0 ,  ( N  -  M
) >. ) )
1211adantr 452 . . . . . . . . . . 11  |-  ( ( L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )
)  ->  ( ( N  e.  ZZ  /\  M  e.  ZZ )  ->  <. ( M  -  L ) ,  ( N  -  L ) >.  =  <. 0 ,  ( N  -  M ) >. )
)
1312com12 29 . . . . . . . . . 10  |-  ( ( N  e.  ZZ  /\  M  e.  ZZ )  ->  ( ( L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V ) )  ->  <. ( M  -  L
) ,  ( N  -  L ) >.  =  <. 0 ,  ( N  -  M )
>. ) )
1413ex 424 . . . . . . . . 9  |-  ( N  e.  ZZ  ->  ( M  e.  ZZ  ->  ( ( L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )  ->  <. ( M  -  L ) ,  ( N  -  L ) >.  =  <. 0 ,  ( N  -  M ) >. )
) )
152, 14syl 16 . . . . . . . 8  |-  ( N  e.  ( ( M  +  1 ) ... ( M  +  (
# `  B )
) )  ->  ( M  e.  ZZ  ->  ( ( L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )  ->  <. ( M  -  L ) ,  ( N  -  L ) >.  =  <. 0 ,  ( N  -  M ) >. )
) )
161, 15mpan9 456 . . . . . . 7  |-  ( ( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B ) ) ) )  -> 
( ( L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V ) )  ->  <. ( M  -  L
) ,  ( N  -  L ) >.  =  <. 0 ,  ( N  -  M )
>. ) )
1716impcom 420 . . . . . 6  |-  ( ( ( L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )  /\  ( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B ) ) ) ) )  ->  <. ( M  -  L ) ,  ( N  -  L )
>.  =  <. 0 ,  ( N  -  M
) >. )
1817oveq2d 6056 . . . . 5  |-  ( ( ( L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )  /\  ( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B ) ) ) ) )  ->  ( B substr  <. ( M  -  L ) ,  ( N  -  L ) >. )  =  ( B substr  <. 0 ,  ( N  -  M ) >. )
)
19 simplr 732 . . . . . 6  |-  ( ( ( L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )  /\  ( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B ) ) ) ) )  ->  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )
20 elfz2 11006 . . . . . . . . . . . . . 14  |-  ( N  e.  ( ( M  +  1 ) ... ( M  +  (
# `  B )
) )  <->  ( (
( M  +  1 )  e.  ZZ  /\  ( M  +  ( # `
 B ) )  e.  ZZ  /\  N  e.  ZZ )  /\  (
( M  +  1 )  <_  N  /\  N  <_  ( M  +  ( # `  B ) ) ) ) )
21 simplr 732 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( N  e.  ZZ  /\  M  e.  ZZ )  /\  ( M  + 
1 )  <_  N
)  ->  M  e.  ZZ )
22 simpll 731 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( N  e.  ZZ  /\  M  e.  ZZ )  /\  ( M  + 
1 )  <_  N
)  ->  N  e.  ZZ )
23 zre 10242 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( N  e.  ZZ  ->  N  e.  RR )
24 zre 10242 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( M  e.  ZZ  ->  M  e.  RR )
25 simplr 732 . . . . . . . . . . . . . . . . . . . . . . . . 25  |-  ( ( ( N  e.  RR  /\  M  e.  RR )  /\  ( M  + 
1 )  <_  N
)  ->  M  e.  RR )
26 simpll 731 . . . . . . . . . . . . . . . . . . . . . . . . 25  |-  ( ( ( N  e.  RR  /\  M  e.  RR )  /\  ( M  + 
1 )  <_  N
)  ->  N  e.  RR )
27 simpr 448 . . . . . . . . . . . . . . . . . . . . . . . . 25  |-  ( ( ( N  e.  RR  /\  M  e.  RR )  /\  ( M  + 
1 )  <_  N
)  ->  ( M  +  1 )  <_  N )
28 p1le 9809 . . . . . . . . . . . . . . . . . . . . . . . . 25  |-  ( ( M  e.  RR  /\  N  e.  RR  /\  ( M  +  1 )  <_  N )  ->  M  <_  N )
2925, 26, 27, 28syl3anc 1184 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  ( ( ( N  e.  RR  /\  M  e.  RR )  /\  ( M  + 
1 )  <_  N
)  ->  M  <_  N )
3029ex 424 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( N  e.  RR  /\  M  e.  RR )  ->  ( ( M  + 
1 )  <_  N  ->  M  <_  N )
)
3123, 24, 30syl2an 464 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( N  e.  ZZ  /\  M  e.  ZZ )  ->  ( ( M  + 
1 )  <_  N  ->  M  <_  N )
)
3231imp 419 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( N  e.  ZZ  /\  M  e.  ZZ )  /\  ( M  + 
1 )  <_  N
)  ->  M  <_  N )
3321, 22, 323jca 1134 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( ( N  e.  ZZ  /\  M  e.  ZZ )  /\  ( M  + 
1 )  <_  N
)  ->  ( M  e.  ZZ  /\  N  e.  ZZ  /\  M  <_  N ) )
3433exp31 588 . . . . . . . . . . . . . . . . . . 19  |-  ( N  e.  ZZ  ->  ( M  e.  ZZ  ->  ( ( M  +  1 )  <_  N  ->  ( M  e.  ZZ  /\  N  e.  ZZ  /\  M  <_  N ) ) ) )
3534com23 74 . . . . . . . . . . . . . . . . . 18  |-  ( N  e.  ZZ  ->  (
( M  +  1 )  <_  N  ->  ( M  e.  ZZ  ->  ( M  e.  ZZ  /\  N  e.  ZZ  /\  M  <_  N ) ) ) )
36353ad2ant3 980 . . . . . . . . . . . . . . . . 17  |-  ( ( ( M  +  1 )  e.  ZZ  /\  ( M  +  ( # `
 B ) )  e.  ZZ  /\  N  e.  ZZ )  ->  (
( M  +  1 )  <_  N  ->  ( M  e.  ZZ  ->  ( M  e.  ZZ  /\  N  e.  ZZ  /\  M  <_  N ) ) ) )
3736com12 29 . . . . . . . . . . . . . . . 16  |-  ( ( M  +  1 )  <_  N  ->  (
( ( M  + 
1 )  e.  ZZ  /\  ( M  +  (
# `  B )
)  e.  ZZ  /\  N  e.  ZZ )  ->  ( M  e.  ZZ  ->  ( M  e.  ZZ  /\  N  e.  ZZ  /\  M  <_  N ) ) ) )
3837adantr 452 . . . . . . . . . . . . . . 15  |-  ( ( ( M  +  1 )  <_  N  /\  N  <_  ( M  +  ( # `  B ) ) )  ->  (
( ( M  + 
1 )  e.  ZZ  /\  ( M  +  (
# `  B )
)  e.  ZZ  /\  N  e.  ZZ )  ->  ( M  e.  ZZ  ->  ( M  e.  ZZ  /\  N  e.  ZZ  /\  M  <_  N ) ) ) )
3938impcom 420 . . . . . . . . . . . . . 14  |-  ( ( ( ( M  + 
1 )  e.  ZZ  /\  ( M  +  (
# `  B )
)  e.  ZZ  /\  N  e.  ZZ )  /\  ( ( M  + 
1 )  <_  N  /\  N  <_  ( M  +  ( # `  B
) ) ) )  ->  ( M  e.  ZZ  ->  ( M  e.  ZZ  /\  N  e.  ZZ  /\  M  <_  N ) ) )
4020, 39sylbi 188 . . . . . . . . . . . . 13  |-  ( N  e.  ( ( M  +  1 ) ... ( M  +  (
# `  B )
) )  ->  ( M  e.  ZZ  ->  ( M  e.  ZZ  /\  N  e.  ZZ  /\  M  <_  N ) ) )
411, 40mpan9 456 . . . . . . . . . . . 12  |-  ( ( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B ) ) ) )  -> 
( M  e.  ZZ  /\  N  e.  ZZ  /\  M  <_  N ) )
42 eluz2 10450 . . . . . . . . . . . 12  |-  ( N  e.  ( ZZ>= `  M
)  <->  ( M  e.  ZZ  /\  N  e.  ZZ  /\  M  <_  N ) )
4341, 42sylibr 204 . . . . . . . . . . 11  |-  ( ( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B ) ) ) )  ->  N  e.  ( ZZ>= `  M ) )
44 eluzfz1 11020 . . . . . . . . . . 11  |-  ( N  e.  ( ZZ>= `  M
)  ->  M  e.  ( M ... N ) )
4543, 44syl 16 . . . . . . . . . 10  |-  ( ( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B ) ) ) )  ->  M  e.  ( M ... N ) )
46 oveq1 6047 . . . . . . . . . . 11  |-  ( L  =  M  ->  ( L ... N )  =  ( M ... N
) )
4746eleq2d 2471 . . . . . . . . . 10  |-  ( L  =  M  ->  ( M  e.  ( L ... N )  <->  M  e.  ( M ... N ) ) )
4845, 47syl5ibr 213 . . . . . . . . 9  |-  ( L  =  M  ->  (
( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B
) ) ) )  ->  M  e.  ( L ... N ) ) )
4948adantr 452 . . . . . . . 8  |-  ( ( L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )
)  ->  ( ( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B ) ) ) )  ->  M  e.  ( L ... N ) ) )
5049imp 419 . . . . . . 7  |-  ( ( ( L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )  /\  ( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B ) ) ) ) )  ->  M  e.  ( L ... N ) )
51 oveq1 6047 . . . . . . . . . . . . . 14  |-  ( M  =  L  ->  ( M  +  1 )  =  ( L  + 
1 ) )
52 oveq1 6047 . . . . . . . . . . . . . 14  |-  ( M  =  L  ->  ( M  +  ( # `  B
) )  =  ( L  +  ( # `  B ) ) )
5351, 52oveq12d 6058 . . . . . . . . . . . . 13  |-  ( M  =  L  ->  (
( M  +  1 ) ... ( M  +  ( # `  B
) ) )  =  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) )
5453eqcoms 2407 . . . . . . . . . . . 12  |-  ( L  =  M  ->  (
( M  +  1 ) ... ( M  +  ( # `  B
) ) )  =  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) )
5554eleq2d 2471 . . . . . . . . . . 11  |-  ( L  =  M  ->  ( N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B ) ) )  <->  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )
5655biimpd 199 . . . . . . . . . 10  |-  ( L  =  M  ->  ( N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B ) ) )  ->  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )
5756adantld 454 . . . . . . . . 9  |-  ( L  =  M  ->  (
( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B
) ) ) )  ->  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )
5857adantr 452 . . . . . . . 8  |-  ( ( L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )
)  ->  ( ( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B ) ) ) )  ->  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) ) ) )
5958imp 419 . . . . . . 7  |-  ( ( ( L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )  /\  ( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B ) ) ) ) )  ->  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) )
6050, 59jca 519 . . . . . 6  |-  ( ( ( L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )  /\  ( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B ) ) ) ) )  ->  ( M  e.  ( L ... N
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) ) )
61 swrdccat3.l . . . . . . 7  |-  L  =  ( # `  A
)
6261swrdccatin2 28018 . . . . . 6  |-  ( ( 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 )
>. ) ) )
6319, 60, 62sylc 58 . . . . 5  |-  ( ( ( L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )  /\  ( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B ) ) ) ) )  ->  ( ( A concat  B ) substr  <. M ,  N >. )  =  ( B substr  <. ( M  -  L ) ,  ( N  -  L )
>. ) )
64 swrdcl 11721 . . . . . . . . 9  |-  ( B  e. Word  V  ->  ( B substr  <. 0 ,  ( N  -  M )
>. )  e. Word  V )
65643ad2ant3 980 . . . . . . . 8  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  ( B substr  <. 0 ,  ( N  -  M )
>. )  e. Word  V )
6665adantl 453 . . . . . . 7  |-  ( ( L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )
)  ->  ( B substr  <.
0 ,  ( N  -  M ) >.
)  e. Word  V )
6766adantr 452 . . . . . 6  |-  ( ( ( L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )  /\  ( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B ) ) ) ) )  ->  ( B substr  <. 0 ,  ( N  -  M ) >. )  e. Word  V )
68 ccatlid 11703 . . . . . 6  |-  ( ( B substr  <. 0 ,  ( N  -  M )
>. )  e. Word  V  -> 
( (/) concat  ( B substr  <. 0 ,  ( N  -  M ) >. )
)  =  ( B substr  <. 0 ,  ( N  -  M ) >.
) )
6967, 68syl 16 . . . . 5  |-  ( ( ( L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )  /\  ( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B ) ) ) ) )  ->  ( (/) concat  ( B substr  <. 0 ,  ( N  -  M ) >.
) )  =  ( B substr  <. 0 ,  ( N  -  M )
>. ) )
7018, 63, 693eqtr4d 2446 . . . 4  |-  ( ( ( L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )  /\  ( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B ) ) ) ) )  ->  ( ( A concat  B ) substr  <. M ,  N >. )  =  (
(/) concat  ( B substr  <. 0 ,  ( N  -  M ) >. )
) )
7170exp31 588 . . 3  |-  ( L  =  M  ->  (
( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  ( ( M  e.  ( 0 ... M
)  /\  N  e.  ( ( M  + 
1 ) ... ( M  +  ( # `  B
) ) ) )  ->  ( ( A concat  B ) substr  <. M ,  N >. )  =  (
(/) concat  ( B substr  <. 0 ,  ( N  -  M ) >. )
) ) ) )
72 oveq2 6048 . . . . . 6  |-  ( L  =  M  ->  (
0 ... L )  =  ( 0 ... M
) )
7372eleq2d 2471 . . . . 5  |-  ( L  =  M  ->  ( M  e.  ( 0 ... L )  <->  M  e.  ( 0 ... M
) ) )
74 oveq1 6047 . . . . . . 7  |-  ( L  =  M  ->  ( L  +  1 )  =  ( M  + 
1 ) )
75 oveq1 6047 . . . . . . 7  |-  ( L  =  M  ->  ( L  +  ( # `  B
) )  =  ( M  +  ( # `  B ) ) )
7674, 75oveq12d 6058 . . . . . 6  |-  ( L  =  M  ->  (
( L  +  1 ) ... ( L  +  ( # `  B
) ) )  =  ( ( M  + 
1 ) ... ( M  +  ( # `  B
) ) ) )
7776eleq2d 2471 . . . . 5  |-  ( L  =  M  ->  ( N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) )  <->  N  e.  ( ( M  + 
1 ) ... ( M  +  ( # `  B
) ) ) ) )
7873, 77anbi12d 692 . . . 4  |-  ( L  =  M  ->  (
( M  e.  ( 0 ... L )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) )  <-> 
( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B
) ) ) ) ) )
79 opeq2 3945 . . . . . . . 8  |-  ( L  =  M  ->  <. M ,  L >.  =  <. M ,  M >. )
8079oveq2d 6056 . . . . . . 7  |-  ( L  =  M  ->  ( A substr  <. M ,  L >. )  =  ( A substr  <. M ,  M >. ) )
81 swrd00 11720 . . . . . . 7  |-  ( A substr  <. M ,  M >. )  =  (/)
8280, 81syl6eq 2452 . . . . . 6  |-  ( L  =  M  ->  ( A substr  <. M ,  L >. )  =  (/) )
838opeq2d 3951 . . . . . . 7  |-  ( L  =  M  ->  <. 0 ,  ( N  -  L ) >.  =  <. 0 ,  ( N  -  M ) >. )
8483oveq2d 6056 . . . . . 6  |-  ( L  =  M  ->  ( B substr  <. 0 ,  ( N  -  L )
>. )  =  ( B substr  <. 0 ,  ( N  -  M )
>. ) )
8582, 84oveq12d 6058 . . . . 5  |-  ( L  =  M  ->  (
( A substr  <. M ,  L >. ) concat  ( B substr  <.
0 ,  ( N  -  L ) >.
) )  =  (
(/) concat  ( B substr  <. 0 ,  ( N  -  M ) >. )
) )
8685eqeq2d 2415 . . . 4  |-  ( L  =  M  ->  (
( ( A concat  B
) substr  <. M ,  N >. )  =  ( ( A substr  <. M ,  L >. ) concat  ( B substr  <. 0 ,  ( N  -  L ) >. )
)  <->  ( ( A concat  B ) substr  <. M ,  N >. )  =  (
(/) concat  ( B substr  <. 0 ,  ( N  -  M ) >. )
) ) )
8778, 86imbi12d 312 . . 3  |-  ( L  =  M  ->  (
( ( M  e.  ( 0 ... L
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( ( A concat  B ) substr  <. M ,  N >. )  =  ( ( A substr  <. M ,  L >. ) concat  ( B substr  <.
0 ,  ( N  -  L ) >.
) ) )  <->  ( ( M  e.  ( 0 ... M )  /\  N  e.  ( ( M  +  1 ) ... ( M  +  ( # `  B ) ) ) )  -> 
( ( A concat  B
) substr  <. M ,  N >. )  =  ( (/) concat  ( B substr  <. 0 ,  ( N  -  M )
>. ) ) ) ) )
8871, 87sylibrd 226 . 2  |-  ( L  =  M  ->  (
( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  ( ( M  e.  ( 0 ... L
)  /\  N  e.  ( ( L  + 
1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( ( A concat  B ) substr  <. M ,  N >. )  =  ( ( A substr  <. M ,  L >. ) concat  ( B substr  <.
0 ,  ( N  -  L ) >.
) ) ) ) )
89 simplr 732 . . . 4  |-  ( ( ( -.  L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V ) )  /\  ( M  e.  (
0 ... L )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) ) ) )  ->  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )
90 elfznn0 11039 . . . . . . . . . 10  |-  ( M  e.  ( 0 ... L )  ->  M  e.  NN0 )
9190adantr 452 . . . . . . . . 9  |-  ( ( M  e.  ( 0 ... L )  /\  ( -.  L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) ) )  ->  M  e.  NN0 )
92 elfz2nn0 11038 . . . . . . . . . . . 12  |-  ( M  e.  ( 0 ... L )  <->  ( M  e.  NN0  /\  L  e. 
NN0  /\  M  <_  L ) )
93 df-ne 2569 . . . . . . . . . . . . 13  |-  ( L  =/=  M  <->  -.  L  =  M )
94 nn0re 10186 . . . . . . . . . . . . . . . . . 18  |-  ( M  e.  NN0  ->  M  e.  RR )
95 nn0re 10186 . . . . . . . . . . . . . . . . . 18  |-  ( L  e.  NN0  ->  L  e.  RR )
96 ltlen 9131 . . . . . . . . . . . . . . . . . . 19  |-  ( ( M  e.  RR  /\  L  e.  RR )  ->  ( M  <  L  <->  ( M  <_  L  /\  L  =/=  M ) ) )
9796bicomd 193 . . . . . . . . . . . . . . . . . 18  |-  ( ( M  e.  RR  /\  L  e.  RR )  ->  ( ( M  <_  L  /\  L  =/=  M
)  <->  M  <  L ) )
9894, 95, 97syl2an 464 . . . . . . . . . . . . . . . . 17  |-  ( ( M  e.  NN0  /\  L  e.  NN0 )  -> 
( ( M  <_  L  /\  L  =/=  M
)  <->  M  <  L ) )
99 nn0ge0 10203 . . . . . . . . . . . . . . . . . . 19  |-  ( M  e.  NN0  ->  0  <_  M )
100 0re 9047 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  0  e.  RR
101100a1i 11 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( L  e.  NN0  /\  M  e.  NN0 )  -> 
0  e.  RR )
10294adantl 453 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( L  e.  NN0  /\  M  e.  NN0 )  ->  M  e.  RR )
10395adantr 452 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( L  e.  NN0  /\  M  e.  NN0 )  ->  L  e.  RR )
104 lelttr 9121 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( 0  e.  RR  /\  M  e.  RR  /\  L  e.  RR )  ->  (
( 0  <_  M  /\  M  <  L )  ->  0  <  L
) )
105101, 102, 103, 104syl3anc 1184 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( L  e.  NN0  /\  M  e.  NN0 )  -> 
( ( 0  <_  M  /\  M  <  L
)  ->  0  <  L ) )
106 elnnnn0b 10220 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  ( L  e.  NN  <->  ( L  e.  NN0  /\  0  < 
L ) )
107106simplbi2 609 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( L  e.  NN0  ->  ( 0  <  L  ->  L  e.  NN ) )
108107adantr 452 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( L  e.  NN0  /\  M  e.  NN0 )  -> 
( 0  <  L  ->  L  e.  NN ) )
109105, 108syld 42 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( L  e.  NN0  /\  M  e.  NN0 )  -> 
( ( 0  <_  M  /\  M  <  L
)  ->  L  e.  NN ) )
110109exp4b 591 . . . . . . . . . . . . . . . . . . . 20  |-  ( L  e.  NN0  ->  ( M  e.  NN0  ->  ( 0  <_  M  ->  ( M  <  L  ->  L  e.  NN ) ) ) )
111110com13 76 . . . . . . . . . . . . . . . . . . 19  |-  ( 0  <_  M  ->  ( M  e.  NN0  ->  ( L  e.  NN0  ->  ( M  <  L  ->  L  e.  NN ) ) ) )
11299, 111mpcom 34 . . . . . . . . . . . . . . . . . 18  |-  ( M  e.  NN0  ->  ( L  e.  NN0  ->  ( M  <  L  ->  L  e.  NN ) ) )
113112imp 419 . . . . . . . . . . . . . . . . 17  |-  ( ( M  e.  NN0  /\  L  e.  NN0 )  -> 
( M  <  L  ->  L  e.  NN ) )
11498, 113sylbid 207 . . . . . . . . . . . . . . . 16  |-  ( ( M  e.  NN0  /\  L  e.  NN0 )  -> 
( ( M  <_  L  /\  L  =/=  M
)  ->  L  e.  NN ) )
115114exp4b 591 . . . . . . . . . . . . . . 15  |-  ( M  e.  NN0  ->  ( L  e.  NN0  ->  ( M  <_  L  ->  ( L  =/=  M  ->  L  e.  NN ) ) ) )
1161153imp 1147 . . . . . . . . . . . . . 14  |-  ( ( M  e.  NN0  /\  L  e.  NN0  /\  M  <_  L )  ->  ( L  =/=  M  ->  L  e.  NN ) )
117116com12 29 . . . . . . . . . . . . 13  |-  ( L  =/=  M  ->  (
( M  e.  NN0  /\  L  e.  NN0  /\  M  <_  L )  ->  L  e.  NN )
)
11893, 117sylbir 205 . . . . . . . . . . . 12  |-  ( -.  L  =  M  -> 
( ( M  e. 
NN0  /\  L  e.  NN0 
/\  M  <_  L
)  ->  L  e.  NN ) )
11992, 118syl5bi 209 . . . . . . . . . . 11  |-  ( -.  L  =  M  -> 
( M  e.  ( 0 ... L )  ->  L  e.  NN ) )
120119adantr 452 . . . . . . . . . 10  |-  ( ( -.  L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )  ->  ( M  e.  ( 0 ... L )  ->  L  e.  NN )
)
121120impcom 420 . . . . . . . . 9  |-  ( ( M  e.  ( 0 ... L )  /\  ( -.  L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) ) )  ->  L  e.  NN )
12294, 95, 96syl2an 464 . . . . . . . . . . . . . . . . . 18  |-  ( ( M  e.  NN0  /\  L  e.  NN0 )  -> 
( M  <  L  <->  ( M  <_  L  /\  L  =/=  M ) ) )
123122bicomd 193 . . . . . . . . . . . . . . . . 17  |-  ( ( M  e.  NN0  /\  L  e.  NN0 )  -> 
( ( M  <_  L  /\  L  =/=  M
)  <->  M  <  L ) )
124123biimpd 199 . . . . . . . . . . . . . . . 16  |-  ( ( M  e.  NN0  /\  L  e.  NN0 )  -> 
( ( M  <_  L  /\  L  =/=  M
)  ->  M  <  L ) )
125124exp4b 591 . . . . . . . . . . . . . . 15  |-  ( M  e.  NN0  ->  ( L  e.  NN0  ->  ( M  <_  L  ->  ( L  =/=  M  ->  M  <  L ) ) ) )
1261253imp 1147 . . . . . . . . . . . . . 14  |-  ( ( M  e.  NN0  /\  L  e.  NN0  /\  M  <_  L )  ->  ( L  =/=  M  ->  M  <  L ) )
12793, 126syl5bir 210 . . . . . . . . . . . . 13  |-  ( ( M  e.  NN0  /\  L  e.  NN0  /\  M  <_  L )  ->  ( -.  L  =  M  ->  M  <  L ) )
12892, 127sylbi 188 . . . . . . . . . . . 12  |-  ( M  e.  ( 0 ... L )  ->  ( -.  L  =  M  ->  M  <  L ) )
129128com12 29 . . . . . . . . . . 11  |-  ( -.  L  =  M  -> 
( M  e.  ( 0 ... L )  ->  M  <  L
) )
130129adantr 452 . . . . . . . . . 10  |-  ( ( -.  L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) )  ->  ( M  e.  ( 0 ... L )  ->  M  <  L ) )
131130impcom 420 . . . . . . . . 9  |-  ( ( M  e.  ( 0 ... L )  /\  ( -.  L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) ) )  ->  M  <  L )
132 elfzo0 11126 . . . . . . . . 9  |-  ( M  e.  ( 0..^ L )  <->  ( M  e. 
NN0  /\  L  e.  NN  /\  M  <  L
) )
13391, 121, 131, 132syl3anbrc 1138 . . . . . . . 8  |-  ( ( M  e.  ( 0 ... L )  /\  ( -.  L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
) ) )  ->  M  e.  ( 0..^ L ) )
134133ex 424 . . . . . . 7  |-  ( M  e.  ( 0 ... L )  ->  (
( -.  L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V ) )  ->  M  e.  ( 0..^ L ) ) )
135134adantr 452 . . . . . 6  |-  ( ( M  e.  ( 0 ... L )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) ) )  -> 
( ( -.  L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V ) )  ->  M  e.  ( 0..^ L ) ) )
136135impcom 420 . . . . 5  |-  ( ( ( -.  L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V ) )  /\  ( M  e.  (
0 ... L )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) ) ) )  ->  M  e.  ( 0..^ L ) )
137 simprr 734 . . . . 5  |-  ( ( ( -.  L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V ) )  /\  ( M  e.  (
0 ... L )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) ) ) )  ->  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) )
138136, 137jca 519 . . . 4  |-  ( ( ( -.  L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V ) )  /\  ( M  e.  (
0 ... L )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) ) ) )  ->  ( M  e.  ( 0..^ L )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) ) )
13961swrdccatin12 28026 . . . 4  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  (
( M  e.  ( 0..^ L )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) ) )  -> 
( ( A concat  B
) substr  <. M ,  N >. )  =  ( ( A substr  <. M ,  L >. ) concat  ( B substr  <. 0 ,  ( N  -  L ) >. )
) ) )
14089, 138, 139sylc 58 . . 3  |-  ( ( ( -.  L  =  M  /\  ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V ) )  /\  ( M  e.  (
0 ... L )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) ) ) )  ->  ( ( A concat  B ) substr  <. M ,  N >. )  =  ( ( A substr  <. M ,  L >. ) concat  ( B substr  <.
0 ,  ( N  -  L ) >.
) ) )
141140exp31 588 . 2  |-  ( -.  L  =  M  -> 
( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V
)  ->  ( ( M  e.  ( 0 ... L )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B ) ) ) )  -> 
( ( A concat  B
) substr  <. M ,  N >. )  =  ( ( A substr  <. M ,  L >. ) concat  ( B substr  <. 0 ,  ( N  -  L ) >. )
) ) ) )
14288, 141pm2.61i 158 1  |-  ( ( V  e.  X  /\  A  e. Word  V  /\  B  e. Word  V )  ->  (
( M  e.  ( 0 ... L )  /\  N  e.  ( ( L  +  1 ) ... ( L  +  ( # `  B
) ) ) )  ->  ( ( A concat  B ) substr  <. M ,  N >. )  =  ( ( A substr  <. M ,  L >. ) concat  ( B substr  <.
0 ,  ( N  -  L ) >.
) ) ) )
Colors of variables: wff set class
Syntax hints:   -. wn 3    -> wi 4    <-> wb 177    /\ wa 359    /\ w3a 936    = wceq 1649    e. wcel 1721    =/= wne 2567   (/)c0 3588   <.cop 3777   class class class wbr 4172   ` cfv 5413  (class class class)co 6040   RRcr 8945   0cc0 8946   1c1 8947    + caddc 8949    < clt 9076    <_ cle 9077    - cmin 9247   NNcn 9956   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:  swrdccatin12c  28028
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