MPE Home Metamath Proof Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >  cshwidxmod Structured version   Unicode version

Theorem cshwidxmod 12737
Description: The symbol at a given index of a cyclically shifted nonempty word is the symbol at the shifted index of the original word. (Contributed by AV, 13-May-2018.) (Revised by AV, 21-May-2018.) (Revised by AV, 30-Oct-2018.)
Assertion
Ref Expression
cshwidxmod  |-  ( ( W  e. Word  V  /\  N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) )  ->  ( ( W cyclShift  N ) `  I
)  =  ( W `
 ( ( I  +  N )  mod  ( # `  W
) ) ) )

Proof of Theorem cshwidxmod
StepHypRef Expression
1 elfzo0 11831 . . . 4  |-  ( I  e.  ( 0..^ (
# `  W )
)  <->  ( I  e. 
NN0  /\  ( # `  W
)  e.  NN  /\  I  <  ( # `  W
) ) )
2 nnne0 10568 . . . . . 6  |-  ( (
# `  W )  e.  NN  ->  ( # `  W
)  =/=  0 )
3 eqneqall 2674 . . . . . . 7  |-  ( (
# `  W )  =  0  ->  (
( # `  W )  =/=  0  ->  (
( W cyclShift  N ) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `  W
) ) ) ) )
43com12 31 . . . . . 6  |-  ( (
# `  W )  =/=  0  ->  ( (
# `  W )  =  0  ->  (
( W cyclShift  N ) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `  W
) ) ) ) )
52, 4syl 16 . . . . 5  |-  ( (
# `  W )  e.  NN  ->  ( ( # `
 W )  =  0  ->  ( ( W cyclShift  N ) `  I
)  =  ( W `
 ( ( I  +  N )  mod  ( # `  W
) ) ) ) )
653ad2ant2 1018 . . . 4  |-  ( ( I  e.  NN0  /\  ( # `  W )  e.  NN  /\  I  <  ( # `  W
) )  ->  (
( # `  W )  =  0  ->  (
( W cyclShift  N ) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `  W
) ) ) ) )
71, 6sylbi 195 . . 3  |-  ( I  e.  ( 0..^ (
# `  W )
)  ->  ( ( # `
 W )  =  0  ->  ( ( W cyclShift  N ) `  I
)  =  ( W `
 ( ( I  +  N )  mod  ( # `  W
) ) ) ) )
873ad2ant3 1019 . 2  |-  ( ( W  e. Word  V  /\  N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) )  ->  ( ( # `  W )  =  0  ->  ( ( W cyclShift  N ) `  I
)  =  ( W `
 ( ( I  +  N )  mod  ( # `  W
) ) ) ) )
9 lencl 12528 . . . . 5  |-  ( W  e. Word  V  ->  ( # `
 W )  e. 
NN0 )
10 elnnne0 10809 . . . . . . . 8  |-  ( (
# `  W )  e.  NN  <->  ( ( # `  W )  e.  NN0  /\  ( # `  W
)  =/=  0 ) )
11 simpl 457 . . . . . . . . . . . . . 14  |-  ( ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) )  ->  N  e.  ZZ )
1211adantl 466 . . . . . . . . . . . . 13  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  N  e.  ZZ )
13 cshword 12725 . . . . . . . . . . . . 13  |-  ( ( W  e. Word  V  /\  N  e.  ZZ )  ->  ( W cyclShift  N )  =  ( ( W substr  <. ( N  mod  ( # `
 W ) ) ,  ( # `  W
) >. ) concat  ( W substr  <.
0 ,  ( N  mod  ( # `  W
) ) >. )
) )
1412, 13sylan2 474 . . . . . . . . . . . 12  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( W cyclShift  N )  =  ( ( W substr  <. ( N  mod  ( # `  W ) ) ,  ( # `  W ) >. ) concat  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >.
) ) )
1514fveq1d 5868 . . . . . . . . . . 11  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( ( W cyclShift  N ) `  I
)  =  ( ( ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) concat  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) ) `  I ) )
16 swrdcl 12609 . . . . . . . . . . . . . . . . 17  |-  ( W  e. Word  V  ->  ( W substr  <. ( N  mod  ( # `  W ) ) ,  ( # `  W ) >. )  e. Word  V )
1716adantr 465 . . . . . . . . . . . . . . . 16  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( W substr  <.
( N  mod  ( # `
 W ) ) ,  ( # `  W
) >. )  e. Word  V
)
1817adantl 466 . . . . . . . . . . . . . . 15  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  -> 
( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. )  e. Word  V )
19 swrdcl 12609 . . . . . . . . . . . . . . . . 17  |-  ( W  e. Word  V  ->  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >.
)  e. Word  V )
2019adantr 465 . . . . . . . . . . . . . . . 16  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( W substr  <.
0 ,  ( N  mod  ( # `  W
) ) >. )  e. Word  V )
2120adantl 466 . . . . . . . . . . . . . . 15  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  -> 
( W substr  <. 0 ,  ( N  mod  ( # `
 W ) )
>. )  e. Word  V )
22 simpl 457 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  W  e. Word  V )
2311anim2i 569 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( ( # `  W )  e.  NN  /\  N  e.  ZZ ) )
2423ancomd 451 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( N  e.  ZZ  /\  ( # `  W )  e.  NN ) )
25 zmodfzp1 11987 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( N  mod  ( # `
 W ) )  e.  ( 0 ... ( # `  W
) ) )
2624, 25syl 16 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( N  mod  ( # `  W ) )  e.  ( 0 ... ( # `  W
) ) )
2726adantl 466 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( N  mod  ( # `  W
) )  e.  ( 0 ... ( # `  W ) ) )
28 nn0fz0 11773 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
# `  W )  e.  NN0  <->  ( # `  W
)  e.  ( 0 ... ( # `  W
) ) )
299, 28sylib 196 . . . . . . . . . . . . . . . . . . . . 21  |-  ( W  e. Word  V  ->  ( # `
 W )  e.  ( 0 ... ( # `
 W ) ) )
3029adantr 465 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( # `  W
)  e.  ( 0 ... ( # `  W
) ) )
31 swrdlen 12613 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( W  e. Word  V  /\  ( N  mod  ( # `  W ) )  e.  ( 0 ... ( # `
 W ) )  /\  ( # `  W
)  e.  ( 0 ... ( # `  W
) ) )  -> 
( # `  ( W substr  <. ( N  mod  ( # `
 W ) ) ,  ( # `  W
) >. ) )  =  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) ) )
3222, 27, 30, 31syl3anc 1228 . . . . . . . . . . . . . . . . . . 19  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( # `  ( W substr  <. ( N  mod  ( # `  W ) ) ,  ( # `  W ) >. )
)  =  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) )
3332eqcomd 2475 . . . . . . . . . . . . . . . . . 18  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( ( # `
 W )  -  ( N  mod  ( # `  W ) ) )  =  ( # `  ( W substr  <. ( N  mod  ( # `  W ) ) ,  ( # `  W ) >. )
) )
34 swrd0len 12612 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( W  e. Word  V  /\  ( N  mod  ( # `  W ) )  e.  ( 0 ... ( # `
 W ) ) )  ->  ( # `  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >.
) )  =  ( N  mod  ( # `  W ) ) )
3526, 34sylan2 474 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( # `  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >.
) )  =  ( N  mod  ( # `  W ) ) )
3635eqcomd 2475 . . . . . . . . . . . . . . . . . . 19  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( N  mod  ( # `  W
) )  =  (
# `  ( W substr  <.
0 ,  ( N  mod  ( # `  W
) ) >. )
) )
3733, 36oveq12d 6302 . . . . . . . . . . . . . . . . . 18  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( (
( # `  W )  -  ( N  mod  ( # `  W ) ) )  +  ( N  mod  ( # `  W ) ) )  =  ( ( # `  ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) )  +  (
# `  ( W substr  <.
0 ,  ( N  mod  ( # `  W
) ) >. )
) ) )
3833, 37oveq12d 6302 . . . . . . . . . . . . . . . . 17  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( (
( # `  W )  -  ( N  mod  ( # `  W ) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  =  ( ( # `  ( W substr  <. ( N  mod  ( # `  W ) ) ,  ( # `  W ) >. )
)..^ ( ( # `  ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) )  +  (
# `  ( W substr  <.
0 ,  ( N  mod  ( # `  W
) ) >. )
) ) ) )
3938eleq2d 2537 . . . . . . . . . . . . . . . 16  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  <->  I  e.  ( ( # `  ( W substr  <. ( N  mod  ( # `  W ) ) ,  ( # `  W ) >. )
)..^ ( ( # `  ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) )  +  (
# `  ( W substr  <.
0 ,  ( N  mod  ( # `  W
) ) >. )
) ) ) ) )
4039biimpac 486 . . . . . . . . . . . . . . 15  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  ->  I  e.  ( ( # `
 ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) )..^ ( (
# `  ( W substr  <.
( N  mod  ( # `
 W ) ) ,  ( # `  W
) >. ) )  +  ( # `  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >.
) ) ) ) )
41 ccatval2 12561 . . . . . . . . . . . . . . 15  |-  ( ( ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. )  e. Word  V  /\  ( W substr  <. 0 ,  ( N  mod  ( # `
 W ) )
>. )  e. Word  V  /\  I  e.  ( ( # `
 ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) )..^ ( (
# `  ( W substr  <.
( N  mod  ( # `
 W ) ) ,  ( # `  W
) >. ) )  +  ( # `  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >.
) ) ) ) )  ->  ( (
( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) concat  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) ) `  I )  =  ( ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) `  (
I  -  ( # `  ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) ) ) ) )
4218, 21, 40, 41syl3anc 1228 . . . . . . . . . . . . . 14  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  -> 
( ( ( W substr  <. ( N  mod  ( # `
 W ) ) ,  ( # `  W
) >. ) concat  ( W substr  <.
0 ,  ( N  mod  ( # `  W
) ) >. )
) `  I )  =  ( ( W substr  <. 0 ,  ( N  mod  ( # `  W
) ) >. ) `  ( I  -  ( # `
 ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) ) ) ) )
4322adantl 466 . . . . . . . . . . . . . . . . 17  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  ->  W  e. Word  V )
4427adantl 466 . . . . . . . . . . . . . . . . 17  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  -> 
( N  mod  ( # `
 W ) )  e.  ( 0 ... ( # `  W
) ) )
4530adantl 466 . . . . . . . . . . . . . . . . 17  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  -> 
( # `  W )  e.  ( 0 ... ( # `  W
) ) )
4643, 44, 45, 31syl3anc 1228 . . . . . . . . . . . . . . . 16  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  -> 
( # `  ( W substr  <. ( N  mod  ( # `
 W ) ) ,  ( # `  W
) >. ) )  =  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) ) )
4746oveq2d 6300 . . . . . . . . . . . . . . 15  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  -> 
( I  -  ( # `
 ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) ) )  =  ( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) ) )
4847fveq2d 5870 . . . . . . . . . . . . . 14  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  -> 
( ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) `  (
I  -  ( # `  ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) ) ) )  =  ( ( W substr  <. 0 ,  ( N  mod  ( # `  W
) ) >. ) `  ( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) ) ) )
49 elfzo2 11800 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( I  e.  ( ( (
# `  W )  -  ( N  mod  ( # `  W ) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  <->  ( I  e.  ( ZZ>= `  ( ( # `
 W )  -  ( N  mod  ( # `  W ) ) ) )  /\  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) )  e.  ZZ  /\  I  <  ( ( (
# `  W )  -  ( N  mod  ( # `  W ) ) )  +  ( N  mod  ( # `  W ) ) ) ) )
50 eluz2 11088 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( I  e.  ( ZZ>= `  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) )  <->  ( (
( # `  W )  -  ( N  mod  ( # `  W ) ) )  e.  ZZ  /\  I  e.  ZZ  /\  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  <_  I ) )
51 simpl 457 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  |-  ( ( I  e.  ZZ  /\  ( N  e.  ZZ  /\  ( # `  W
)  e.  NN ) )  ->  I  e.  ZZ )
52 nnz 10886 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36  |-  ( (
# `  W )  e.  NN  ->  ( # `  W
)  e.  ZZ )
5352adantl 466 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( # `  W )  e.  ZZ )
54 zmodcl 11983 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( N  mod  ( # `
 W ) )  e.  NN0 )
5554nn0zd 10964 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( N  mod  ( # `
 W ) )  e.  ZZ )
5653, 55zsubcld 10971 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  e.  ZZ )
5756adantl 466 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  |-  ( ( I  e.  ZZ  /\  ( N  e.  ZZ  /\  ( # `  W
)  e.  NN ) )  ->  ( ( # `
 W )  -  ( N  mod  ( # `  W ) ) )  e.  ZZ )
5851, 57zsubcld 10971 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( ( I  e.  ZZ  /\  ( N  e.  ZZ  /\  ( # `  W
)  e.  NN ) )  ->  ( I  -  ( ( # `  W )  -  ( N  mod  ( # `  W
) ) ) )  e.  ZZ )
5958adantlr 714 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( ( ( I  e.  ZZ  /\  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  <_  I )  /\  ( N  e.  ZZ  /\  ( # `
 W )  e.  NN ) )  -> 
( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ZZ )
60 zre 10868 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( I  e.  ZZ  ->  I  e.  RR )
61 nnre 10543 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37  |-  ( (
# `  W )  e.  NN  ->  ( # `  W
)  e.  RR )
6261adantl 466 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( # `  W )  e.  RR )
6354nn0red 10853 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( N  mod  ( # `
 W ) )  e.  RR )
6462, 63resubcld 9987 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  e.  RR )
65 subge0 10065 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( ( I  e.  RR  /\  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  e.  RR )  ->  (
0  <_  ( I  -  ( ( # `  W )  -  ( N  mod  ( # `  W
) ) ) )  <-> 
( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  <_  I ) )
6660, 64, 65syl2an 477 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34  |-  ( ( I  e.  ZZ  /\  ( N  e.  ZZ  /\  ( # `  W
)  e.  NN ) )  ->  ( 0  <_  ( I  -  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) ) )  <-> 
( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  <_  I ) )
6766exbiri 622 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  |-  ( I  e.  ZZ  ->  (
( N  e.  ZZ  /\  ( # `  W
)  e.  NN )  ->  ( ( (
# `  W )  -  ( N  mod  ( # `  W ) ) )  <_  I  ->  0  <_  ( I  -  ( ( # `  W )  -  ( N  mod  ( # `  W
) ) ) ) ) ) )
6867com23 78 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( I  e.  ZZ  ->  (
( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  <_  I  ->  ( ( N  e.  ZZ  /\  ( # `
 W )  e.  NN )  ->  0  <_  ( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) ) ) ) )
6968imp31 432 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( ( ( I  e.  ZZ  /\  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  <_  I )  /\  ( N  e.  ZZ  /\  ( # `
 W )  e.  NN ) )  -> 
0  <_  ( I  -  ( ( # `  W )  -  ( N  mod  ( # `  W
) ) ) ) )
70 elnn0uz 11119 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( ( I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) )  e. 
NN0 
<->  ( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ( ZZ>= `  0 )
)
71 elnn0z 10877 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( ( I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) )  e. 
NN0 
<->  ( ( I  -  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) ) )  e.  ZZ  /\  0  <_  ( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) ) ) )
7270, 71bitr3i 251 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( ( I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ( ZZ>= `  0 )  <->  ( ( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ZZ  /\  0  <_ 
( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) ) ) )
7359, 69, 72sylanbrc 664 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( ( ( I  e.  ZZ  /\  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  <_  I )  /\  ( N  e.  ZZ  /\  ( # `
 W )  e.  NN ) )  -> 
( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ( ZZ>= `  0 )
)
7473adantlr 714 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ( ( ( I  e.  ZZ  /\  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) )  <_  I
)  /\  I  <  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( N  e.  ZZ  /\  ( # `
 W )  e.  NN ) )  -> 
( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ( ZZ>= `  0 )
)
7555adantl 466 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ( ( ( I  e.  ZZ  /\  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) )  <_  I
)  /\  I  <  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( N  e.  ZZ  /\  ( # `
 W )  e.  NN ) )  -> 
( N  mod  ( # `
 W ) )  e.  ZZ )
7660adantr 465 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( ( I  e.  ZZ  /\  ( N  e.  ZZ  /\  ( # `  W
)  e.  NN ) )  ->  I  e.  RR )
7764adantl 466 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( ( I  e.  ZZ  /\  ( N  e.  ZZ  /\  ( # `  W
)  e.  NN ) )  ->  ( ( # `
 W )  -  ( N  mod  ( # `  W ) ) )  e.  RR )
7863adantl 466 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( ( I  e.  ZZ  /\  ( N  e.  ZZ  /\  ( # `  W
)  e.  NN ) )  ->  ( N  mod  ( # `  W
) )  e.  RR )
7976, 77, 783jca 1176 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34  |-  ( ( I  e.  ZZ  /\  ( N  e.  ZZ  /\  ( # `  W
)  e.  NN ) )  ->  ( I  e.  RR  /\  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) )  e.  RR  /\  ( N  mod  ( # `
 W ) )  e.  RR ) )
8079adantlr 714 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  |-  ( ( ( I  e.  ZZ  /\  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  <_  I )  /\  ( N  e.  ZZ  /\  ( # `
 W )  e.  NN ) )  -> 
( I  e.  RR  /\  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  e.  RR  /\  ( N  mod  ( # `  W
) )  e.  RR ) )
81 ltsubadd2 10023 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  |-  ( ( I  e.  RR  /\  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  e.  RR  /\  ( N  mod  ( # `  W
) )  e.  RR )  ->  ( ( I  -  ( ( # `  W )  -  ( N  mod  ( # `  W
) ) ) )  <  ( N  mod  ( # `  W ) )  <->  I  <  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) ) )
8280, 81syl 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( ( ( I  e.  ZZ  /\  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  <_  I )  /\  ( N  e.  ZZ  /\  ( # `
 W )  e.  NN ) )  -> 
( ( I  -  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) ) )  <  ( N  mod  ( # `  W ) )  <->  I  <  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) ) )
8382exbiri 622 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( ( I  e.  ZZ  /\  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  <_  I )  ->  (
( N  e.  ZZ  /\  ( # `  W
)  e.  NN )  ->  ( I  < 
( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) )  ->  ( I  -  ( ( # `  W )  -  ( N  mod  ( # `  W
) ) ) )  <  ( N  mod  ( # `  W ) ) ) ) )
8483com23 78 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( ( I  e.  ZZ  /\  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  <_  I )  ->  (
I  <  ( (
( # `  W )  -  ( N  mod  ( # `  W ) ) )  +  ( N  mod  ( # `  W ) ) )  ->  ( ( N  e.  ZZ  /\  ( # `
 W )  e.  NN )  ->  (
I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) )  < 
( N  mod  ( # `
 W ) ) ) ) )
8584imp31 432 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ( ( ( I  e.  ZZ  /\  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) )  <_  I
)  /\  I  <  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( N  e.  ZZ  /\  ( # `
 W )  e.  NN ) )  -> 
( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) )  < 
( N  mod  ( # `
 W ) ) )
86 elfzo2 11800 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  |-  ( ( I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ( 0..^ ( N  mod  ( # `  W
) ) )  <->  ( (
I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ( ZZ>= `  0 )  /\  ( N  mod  ( # `
 W ) )  e.  ZZ  /\  (
I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) )  < 
( N  mod  ( # `
 W ) ) ) )
8774, 75, 85, 86syl3anbrc 1180 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  |-  ( ( ( ( I  e.  ZZ  /\  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) )  <_  I
)  /\  I  <  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( N  e.  ZZ  /\  ( # `
 W )  e.  NN ) )  -> 
( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ( 0..^ ( N  mod  ( # `  W
) ) ) )
8887exp31 604 . . . . . . . . . . . . . . . . . . . . . . . . . . 27  |-  ( ( I  e.  ZZ  /\  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  <_  I )  ->  (
I  <  ( (
( # `  W )  -  ( N  mod  ( # `  W ) ) )  +  ( N  mod  ( # `  W ) ) )  ->  ( ( N  e.  ZZ  /\  ( # `
 W )  e.  NN )  ->  (
I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ( 0..^ ( N  mod  ( # `  W
) ) ) ) ) )
89883adant1 1014 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  e.  ZZ  /\  I  e.  ZZ  /\  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) )  <_  I
)  ->  ( I  <  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) )  ->  ( ( N  e.  ZZ  /\  ( # `
 W )  e.  NN )  ->  (
I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ( 0..^ ( N  mod  ( # `  W
) ) ) ) ) )
9050, 89sylbi 195 . . . . . . . . . . . . . . . . . . . . . . . . 25  |-  ( I  e.  ( ZZ>= `  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) )  -> 
( I  <  (
( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) )  ->  ( ( N  e.  ZZ  /\  ( # `
 W )  e.  NN )  ->  (
I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ( 0..^ ( N  mod  ( # `  W
) ) ) ) ) )
9190imp 429 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  ( ( I  e.  ( ZZ>= `  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) ) )  /\  I  <  (
( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  ->  (
( N  e.  ZZ  /\  ( # `  W
)  e.  NN )  ->  ( I  -  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) ) )  e.  ( 0..^ ( N  mod  ( # `  W ) ) ) ) )
92913adant2 1015 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( I  e.  ( ZZ>= `  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) ) )  /\  ( ( (
# `  W )  -  ( N  mod  ( # `  W ) ) )  +  ( N  mod  ( # `  W ) ) )  e.  ZZ  /\  I  <  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  ->  (
( N  e.  ZZ  /\  ( # `  W
)  e.  NN )  ->  ( I  -  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) ) )  e.  ( 0..^ ( N  mod  ( # `  W ) ) ) ) )
9349, 92sylbi 195 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( I  e.  ( ( (
# `  W )  -  ( N  mod  ( # `  W ) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  ->  (
( N  e.  ZZ  /\  ( # `  W
)  e.  NN )  ->  ( I  -  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) ) )  e.  ( 0..^ ( N  mod  ( # `  W ) ) ) ) )
9493com12 31 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  ->  (
I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ( 0..^ ( N  mod  ( # `  W
) ) ) ) )
9594ex 434 . . . . . . . . . . . . . . . . . . . 20  |-  ( N  e.  ZZ  ->  (
( # `  W )  e.  NN  ->  (
I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  ->  (
I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ( 0..^ ( N  mod  ( # `  W
) ) ) ) ) )
9695adantr 465 . . . . . . . . . . . . . . . . . . 19  |-  ( ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) )  -> 
( ( # `  W
)  e.  NN  ->  ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  ->  (
I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ( 0..^ ( N  mod  ( # `  W
) ) ) ) ) )
9796impcom 430 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  ->  (
I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ( 0..^ ( N  mod  ( # `  W
) ) ) ) )
9897adantl 466 . . . . . . . . . . . . . . . . 17  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  ->  (
I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ( 0..^ ( N  mod  ( # `  W
) ) ) ) )
9998impcom 430 . . . . . . . . . . . . . . . 16  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  -> 
( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ( 0..^ ( N  mod  ( # `  W
) ) ) )
100 swrd0fv 12629 . . . . . . . . . . . . . . . 16  |-  ( ( W  e. Word  V  /\  ( N  mod  ( # `  W ) )  e.  ( 0 ... ( # `
 W ) )  /\  ( I  -  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) ) )  e.  ( 0..^ ( N  mod  ( # `  W ) ) ) )  ->  ( ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >.
) `  ( I  -  ( ( # `  W )  -  ( N  mod  ( # `  W
) ) ) ) )  =  ( W `
 ( I  -  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) ) ) ) )
10143, 44, 99, 100syl3anc 1228 . . . . . . . . . . . . . . 15  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  -> 
( ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) `  (
I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) ) )  =  ( W `  ( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) ) ) )
102 elfzoelz 11797 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  ( I  e.  ( 0..^ (
# `  W )
)  ->  I  e.  ZZ )
103102zcnd 10967 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( I  e.  ( 0..^ (
# `  W )
)  ->  I  e.  CC )
104103adantl 466 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) )  ->  I  e.  CC )
105104adantl 466 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  I  e.  CC )
106 nncn 10544 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
# `  W )  e.  NN  ->  ( # `  W
)  e.  CC )
107106adantr 465 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( # `  W
)  e.  CC )
10824, 54syl 16 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( N  mod  ( # `  W ) )  e.  NN0 )
109108nn0cnd 10854 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( N  mod  ( # `  W ) )  e.  CC )
110105, 107, 1093jca 1176 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( I  e.  CC  /\  ( # `  W )  e.  CC  /\  ( N  mod  ( # `
 W ) )  e.  CC ) )
111110adantl 466 . . . . . . . . . . . . . . . . . . 19  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( I  e.  CC  /\  ( # `  W )  e.  CC  /\  ( N  mod  ( # `
 W ) )  e.  CC ) )
112111adantl 466 . . . . . . . . . . . . . . . . . 18  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  -> 
( I  e.  CC  /\  ( # `  W
)  e.  CC  /\  ( N  mod  ( # `  W ) )  e.  CC ) )
113 subsub3 9851 . . . . . . . . . . . . . . . . . 18  |-  ( ( I  e.  CC  /\  ( # `  W )  e.  CC  /\  ( N  mod  ( # `  W
) )  e.  CC )  ->  ( I  -  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) ) )  =  ( ( I  +  ( N  mod  ( # `  W ) ) )  -  ( # `
 W ) ) )
114112, 113syl 16 . . . . . . . . . . . . . . . . 17  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  -> 
( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) )  =  ( ( I  +  ( N  mod  ( # `  W ) ) )  -  ( # `  W
) ) )
11524adantl 466 . . . . . . . . . . . . . . . . . . 19  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( N  e.  ZZ  /\  ( # `  W )  e.  NN ) )
116115adantl 466 . . . . . . . . . . . . . . . . . 18  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  -> 
( N  e.  ZZ  /\  ( # `  W
)  e.  NN ) )
117107, 109jca 532 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( ( # `  W )  e.  CC  /\  ( N  mod  ( # `
 W ) )  e.  CC ) )
118117adantl 466 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( ( # `
 W )  e.  CC  /\  ( N  mod  ( # `  W
) )  e.  CC ) )
119 npcan 9829 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( ( # `  W
)  e.  CC  /\  ( N  mod  ( # `  W ) )  e.  CC )  ->  (
( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) )  =  ( # `  W ) )
120118, 119syl 16 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( (
( # `  W )  -  ( N  mod  ( # `  W ) ) )  +  ( N  mod  ( # `  W ) ) )  =  ( # `  W
) )
121120oveq2d 6300 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( (
( # `  W )  -  ( N  mod  ( # `  W ) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  =  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) )
122121eleq2d 2537 . . . . . . . . . . . . . . . . . . 19  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  <->  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) ) )
123122biimpac 486 . . . . . . . . . . . . . . . . . 18  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  ->  I  e.  ( (
( # `  W )  -  ( N  mod  ( # `  W ) ) )..^ ( # `  W ) ) )
124 modaddmodup 12018 . . . . . . . . . . . . . . . . . 18  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
)  ->  ( (
I  +  ( N  mod  ( # `  W
) ) )  -  ( # `  W ) )  =  ( ( I  +  N )  mod  ( # `  W
) ) ) )
125116, 123, 124sylc 60 . . . . . . . . . . . . . . . . 17  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  -> 
( ( I  +  ( N  mod  ( # `  W ) ) )  -  ( # `  W
) )  =  ( ( I  +  N
)  mod  ( # `  W
) ) )
126114, 125eqtrd 2508 . . . . . . . . . . . . . . . 16  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  -> 
( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) )  =  ( ( I  +  N )  mod  ( # `
 W ) ) )
127126fveq2d 5870 . . . . . . . . . . . . . . 15  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  -> 
( W `  (
I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) ) )  =  ( W `  ( ( I  +  N )  mod  ( # `
 W ) ) ) )
128101, 127eqtrd 2508 . . . . . . . . . . . . . 14  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  -> 
( ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) `  (
I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) ) )  =  ( W `  ( ( I  +  N )  mod  ( # `
 W ) ) ) )
12942, 48, 1283eqtrd 2512 . . . . . . . . . . . . 13  |-  ( ( I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  /\  ( W  e. Word  V  /\  (
( # `  W )  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) ) ) ) )  -> 
( ( ( W substr  <. ( N  mod  ( # `
 W ) ) ,  ( # `  W
) >. ) concat  ( W substr  <.
0 ,  ( N  mod  ( # `  W
) ) >. )
) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `
 W ) ) ) )
130129ex 434 . . . . . . . . . . . 12  |-  ( I  e.  ( ( (
# `  W )  -  ( N  mod  ( # `  W ) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  ->  (
( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( (
( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) concat  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) ) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `  W
) ) ) ) )
131106adantl 466 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( # `  W )  e.  CC )
13254nn0cnd 10854 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( N  mod  ( # `
 W ) )  e.  CC )
133131, 132npcand 9934 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) )  =  ( # `  W ) )
134133ex 434 . . . . . . . . . . . . . . . . . . . 20  |-  ( N  e.  ZZ  ->  (
( # `  W )  e.  NN  ->  (
( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) )  =  ( # `  W ) ) )
135134adantr 465 . . . . . . . . . . . . . . . . . . 19  |-  ( ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) )  -> 
( ( # `  W
)  e.  NN  ->  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) )  =  ( # `  W ) ) )
136135impcom 430 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( ( (
# `  W )  -  ( N  mod  ( # `  W ) ) )  +  ( N  mod  ( # `  W ) ) )  =  ( # `  W
) )
137136adantl 466 . . . . . . . . . . . . . . . . 17  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( (
( # `  W )  -  ( N  mod  ( # `  W ) ) )  +  ( N  mod  ( # `  W ) ) )  =  ( # `  W
) )
138137oveq2d 6300 . . . . . . . . . . . . . . . 16  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( (
( # `  W )  -  ( N  mod  ( # `  W ) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  =  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) )
139138eleq2d 2537 . . . . . . . . . . . . . . 15  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  <->  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) ) )
140139notbid 294 . . . . . . . . . . . . . 14  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( -.  I  e.  ( (
( # `  W )  -  ( N  mod  ( # `  W ) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  <->  -.  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) ) )
14117adantr 465 . . . . . . . . . . . . . . . . 17  |-  ( ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  /\  -.  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) )  ->  ( W substr  <. ( N  mod  ( # `  W ) ) ,  ( # `  W ) >. )  e. Word  V )
14220adantr 465 . . . . . . . . . . . . . . . . 17  |-  ( ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  /\  -.  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) )  ->  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >.
)  e. Word  V )
143108nn0zd 10964 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( N  mod  ( # `  W ) )  e.  ZZ )
144143adantl 466 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( N  mod  ( # `  W
) )  e.  ZZ )
145 zre 10868 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( N  e.  ZZ  ->  N  e.  RR )
146145adantr 465 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) )  ->  N  e.  RR )
147 nnrp 11229 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
# `  W )  e.  NN  ->  ( # `  W
)  e.  RR+ )
148 modlt 11974 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( N  e.  RR  /\  ( # `  W )  e.  RR+ )  ->  ( N  mod  ( # `  W
) )  <  ( # `
 W ) )
149146, 147, 148syl2anr 478 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( N  mod  ( # `  W ) )  <  ( # `  W ) )
150149adantl 466 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( N  mod  ( # `  W
) )  <  ( # `
 W ) )
151 simprrr 764 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  I  e.  ( 0..^ ( # `  W
) ) )
152 fzonfzoufzol 11881 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( ( N  mod  ( # `
 W ) )  e.  ZZ  /\  ( N  mod  ( # `  W
) )  <  ( # `
 W )  /\  I  e.  ( 0..^ ( # `  W
) ) )  -> 
( -.  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
)  ->  I  e.  ( 0..^ ( ( # `  W )  -  ( N  mod  ( # `  W
) ) ) ) ) )
153144, 150, 151, 152syl3anc 1228 . . . . . . . . . . . . . . . . . . 19  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( -.  I  e.  ( (
( # `  W )  -  ( N  mod  ( # `  W ) ) )..^ ( # `  W ) )  ->  I  e.  ( 0..^ ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) ) ) ) )
154153imp 429 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  /\  -.  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) )  ->  I  e.  ( 0..^ ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) ) )
15522adantr 465 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  /\  -.  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) )  ->  W  e. Word  V )
15627adantr 465 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  /\  -.  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) )  ->  ( N  mod  ( # `  W
) )  e.  ( 0 ... ( # `  W ) ) )
15730adantr 465 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  /\  -.  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) )  ->  ( # `
 W )  e.  ( 0 ... ( # `
 W ) ) )
158155, 156, 157, 31syl3anc 1228 . . . . . . . . . . . . . . . . . . 19  |-  ( ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  /\  -.  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) )  ->  ( # `
 ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) )  =  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) ) )
159158oveq2d 6300 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  /\  -.  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) )  ->  (
0..^ ( # `  ( W substr  <. ( N  mod  ( # `  W ) ) ,  ( # `  W ) >. )
) )  =  ( 0..^ ( ( # `  W )  -  ( N  mod  ( # `  W
) ) ) ) )
160154, 159eleqtrrd 2558 . . . . . . . . . . . . . . . . 17  |-  ( ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  /\  -.  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) )  ->  I  e.  ( 0..^ ( # `  ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) ) ) )
161 ccatval1 12560 . . . . . . . . . . . . . . . . 17  |-  ( ( ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. )  e. Word  V  /\  ( W substr  <. 0 ,  ( N  mod  ( # `
 W ) )
>. )  e. Word  V  /\  I  e.  ( 0..^ ( # `  ( W substr  <. ( N  mod  ( # `  W ) ) ,  ( # `  W ) >. )
) ) )  -> 
( ( ( W substr  <. ( N  mod  ( # `
 W ) ) ,  ( # `  W
) >. ) concat  ( W substr  <.
0 ,  ( N  mod  ( # `  W
) ) >. )
) `  I )  =  ( ( W substr  <. ( N  mod  ( # `
 W ) ) ,  ( # `  W
) >. ) `  I
) )
162141, 142, 160, 161syl3anc 1228 . . . . . . . . . . . . . . . 16  |-  ( ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  /\  -.  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) )  ->  (
( ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) concat  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) ) `  I )  =  ( ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) `  I ) )
16323adantl 466 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( ( # `
 W )  e.  NN  /\  N  e.  ZZ ) )
164163ancomd 451 . . . . . . . . . . . . . . . . . . 19  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( N  e.  ZZ  /\  ( # `  W )  e.  NN ) )
165164, 25syl 16 . . . . . . . . . . . . . . . . . 18  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( N  mod  ( # `  W
) )  e.  ( 0 ... ( # `  W ) ) )
166165adantr 465 . . . . . . . . . . . . . . . . 17  |-  ( ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  /\  -.  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) )  ->  ( N  mod  ( # `  W
) )  e.  ( 0 ... ( # `  W ) ) )
167 swrdfv 12614 . . . . . . . . . . . . . . . . 17  |-  ( ( ( W  e. Word  V  /\  ( N  mod  ( # `
 W ) )  e.  ( 0 ... ( # `  W
) )  /\  ( # `
 W )  e.  ( 0 ... ( # `
 W ) ) )  /\  I  e.  ( 0..^ ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) ) )  ->  ( ( W substr  <. ( N  mod  ( # `
 W ) ) ,  ( # `  W
) >. ) `  I
)  =  ( W `
 ( I  +  ( N  mod  ( # `  W ) ) ) ) )
168155, 166, 157, 154, 167syl31anc 1231 . . . . . . . . . . . . . . . 16  |-  ( ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  /\  -.  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) )  ->  (
( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) `  I )  =  ( W `  ( I  +  ( N  mod  ( # `  W
) ) ) ) )
169115adantr 465 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  /\  -.  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) )  ->  ( N  e.  ZZ  /\  ( # `
 W )  e.  NN ) )
17054ancoms 453 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( ( # `  W
)  e.  NN  /\  N  e.  ZZ )  ->  ( N  mod  ( # `
 W ) )  e.  NN0 )
171170nn0zd 10964 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( ( # `  W
)  e.  NN  /\  N  e.  ZZ )  ->  ( N  mod  ( # `
 W ) )  e.  ZZ )
172171adantrr 716 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( N  mod  ( # `  W ) )  e.  ZZ )
173172adantl 466 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( N  mod  ( # `  W
) )  e.  ZZ )
174173, 150, 151, 152syl3anc 1228 . . . . . . . . . . . . . . . . . . 19  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( -.  I  e.  ( (
( # `  W )  -  ( N  mod  ( # `  W ) ) )..^ ( # `  W ) )  ->  I  e.  ( 0..^ ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) ) ) ) )
175174imp 429 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  /\  -.  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) )  ->  I  e.  ( 0..^ ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) ) )
176 modaddmodlo 12019 . . . . . . . . . . . . . . . . . 18  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( I  e.  ( 0..^ ( ( # `  W )  -  ( N  mod  ( # `  W
) ) ) )  ->  ( I  +  ( N  mod  ( # `  W ) ) )  =  ( ( I  +  N )  mod  ( # `  W
) ) ) )
177169, 175, 176sylc 60 . . . . . . . . . . . . . . . . 17  |-  ( ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  /\  -.  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) )  ->  (
I  +  ( N  mod  ( # `  W
) ) )  =  ( ( I  +  N )  mod  ( # `
 W ) ) )
178177fveq2d 5870 . . . . . . . . . . . . . . . 16  |-  ( ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  /\  -.  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) )  ->  ( W `  ( I  +  ( N  mod  ( # `  W ) ) ) )  =  ( W `  (
( I  +  N
)  mod  ( # `  W
) ) ) )
179162, 168, 1783eqtrd 2512 . . . . . . . . . . . . . . 15  |-  ( ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  /\  -.  I  e.  ( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )..^ (
# `  W )
) )  ->  (
( ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) concat  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) ) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `  W
) ) ) )
180179ex 434 . . . . . . . . . . . . . 14  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( -.  I  e.  ( (
( # `  W )  -  ( N  mod  ( # `  W ) ) )..^ ( # `  W ) )  -> 
( ( ( W substr  <. ( N  mod  ( # `
 W ) ) ,  ( # `  W
) >. ) concat  ( W substr  <.
0 ,  ( N  mod  ( # `  W
) ) >. )
) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `
 W ) ) ) ) )
181140, 180sylbid 215 . . . . . . . . . . . . 13  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( -.  I  e.  ( (
( # `  W )  -  ( N  mod  ( # `  W ) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  ->  (
( ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) concat  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) ) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `  W
) ) ) ) )
182181com12 31 . . . . . . . . . . . 12  |-  ( -.  I  e.  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )..^ ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) ) )  ->  (
( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( (
( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) concat  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) ) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `  W
) ) ) ) )
183130, 182pm2.61i 164 . . . . . . . . . . 11  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( (
( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) concat  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) ) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `  W
) ) ) )
18415, 183eqtrd 2508 . . . . . . . . . 10  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( ( W cyclShift  N ) `  I
)  =  ( W `
 ( ( I  +  N )  mod  ( # `  W
) ) ) )
185184exp32 605 . . . . . . . . 9  |-  ( W  e. Word  V  ->  (
( # `  W )  e.  NN  ->  (
( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) )  -> 
( ( W cyclShift  N ) `
 I )  =  ( W `  (
( I  +  N
)  mod  ( # `  W
) ) ) ) ) )
186185com12 31 . . . . . . . 8  |-  ( (
# `  W )  e.  NN  ->  ( W  e. Word  V  ->  ( ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) )  ->  ( ( W cyclShift  N ) `  I
)  =  ( W `
 ( ( I  +  N )  mod  ( # `  W
) ) ) ) ) )
18710, 186sylbir 213 . . . . . . 7  |-  ( ( ( # `  W
)  e.  NN0  /\  ( # `  W )  =/=  0 )  -> 
( W  e. Word  V  ->  ( ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) )  ->  ( ( W cyclShift  N ) `  I
)  =  ( W `
 ( ( I  +  N )  mod  ( # `  W
) ) ) ) ) )
188187ex 434 . . . . . 6  |-  ( (
# `  W )  e.  NN0  ->  ( ( # `
 W )  =/=  0  ->  ( W  e. Word  V  ->  ( ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) )  ->  ( ( W cyclShift  N ) `  I
)  =  ( W `
 ( ( I  +  N )  mod  ( # `  W
) ) ) ) ) ) )
189188com23 78 . . . . 5  |-  ( (
# `  W )  e.  NN0  ->  ( W  e. Word  V  ->  ( ( # `
 W )  =/=  0  ->  ( ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) )  ->  ( ( W cyclShift  N ) `  I
)  =  ( W `
 ( ( I  +  N )  mod  ( # `  W
) ) ) ) ) ) )
1909, 189mpcom 36 . . . 4  |-  ( W  e. Word  V  ->  (
( # `  W )  =/=  0  ->  (
( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) )  -> 
( ( W cyclShift  N ) `
 I )  =  ( W `  (
( I  +  N
)  mod  ( # `  W
) ) ) ) ) )
191190com23 78 . . 3  |-  ( W  e. Word  V  ->  (
( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) )  -> 
( ( # `  W
)  =/=  0  -> 
( ( W cyclShift  N ) `
 I )  =  ( W `  (
( I  +  N
)  mod  ( # `  W
) ) ) ) ) )
1921913impib 1194 . 2  |-  ( ( W  e. Word  V  /\  N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) )  ->  ( ( # `  W )  =/=  0  ->  ( ( W cyclShift  N ) `
 I )  =  ( W `  (
( I  +  N
)  mod  ( # `  W
) ) ) ) )
1938, 192pm2.61dne 2784 1  |-  ( ( W  e. Word  V  /\  N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W ) ) )  ->  ( ( W cyclShift  N ) `  I
)  =  ( W `
 ( ( I  +  N )  mod  ( # `  W
) ) ) )
Colors of variables: wff setvar class
Syntax hints:   -. wn 3    -> wi 4    <-> wb 184    /\ wa 369    /\ w3a 973    = wceq 1379    e. wcel 1767    =/= wne 2662   <.cop 4033   class class class wbr 4447   ` cfv 5588  (class class class)co 6284   CCcc 9490   RRcr 9491   0cc0 9492    + caddc 9495    < clt 9628    <_ cle 9629    - cmin 9805   NNcn 10536   NN0cn0 10795   ZZcz 10864   ZZ>=cuz 11082   RR+crp 11220   ...cfz 11672  ..^cfzo 11792    mod cmo 11964   #chash 12373  Word cword 12500   concat cconcat 12502   substr csubstr 12504   cyclShift ccsh 12722
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1601  ax-4 1612  ax-5 1680  ax-6 1719  ax-7 1739  ax-8 1769  ax-9 1771  ax-10 1786  ax-11 1791  ax-12 1803  ax-13 1968  ax-ext 2445  ax-rep 4558  ax-sep 4568  ax-nul 4576  ax-pow 4625  ax-pr 4686  ax-un 6576  ax-cnex 9548  ax-resscn 9549  ax-1cn 9550  ax-icn 9551  ax-addcl 9552  ax-addrcl 9553  ax-mulcl 9554  ax-mulrcl 9555  ax-mulcom 9556  ax-addass 9557  ax-mulass 9558  ax-distr 9559  ax-i2m1 9560  ax-1ne0 9561  ax-1rid 9562  ax-rnegex 9563  ax-rrecex 9564  ax-cnre 9565  ax-pre-lttri 9566  ax-pre-lttrn 9567  ax-pre-ltadd 9568  ax-pre-mulgt0 9569  ax-pre-sup 9570
This theorem depends on definitions:  df-bi 185  df-or 370  df-an 371  df-3or 974  df-3an 975  df-tru 1382  df-ex 1597  df-nf 1600  df-sb 1712  df-eu 2279  df-mo 2280  df-clab 2453  df-cleq 2459  df-clel 2462  df-nfc 2617  df-ne 2664  df-nel 2665  df-ral 2819  df-rex 2820  df-reu 2821  df-rmo 2822  df-rab 2823  df-v 3115  df-sbc 3332  df-csb 3436  df-dif 3479  df-un 3481  df-in 3483  df-ss 3490  df-pss 3492  df-nul 3786  df-if 3940  df-pw 4012  df-sn 4028  df-pr 4030  df-tp 4032  df-op 4034  df-uni 4246  df-int 4283  df-iun 4327  df-br 4448  df-opab 4506  df-mpt 4507  df-tr 4541  df-eprel 4791  df-id 4795  df-po 4800  df-so 4801  df-fr 4838  df-we 4840  df-ord 4881  df-on 4882  df-lim 4883  df-suc 4884  df-xp 5005  df-rel 5006  df-cnv 5007  df-co 5008  df-dm 5009  df-rn 5010  df-res 5011  df-ima 5012  df-iota 5551  df-fun 5590  df-fn 5591  df-f 5592  df-f1 5593  df-fo 5594  df-f1o 5595  df-fv 5596  df-riota 6245  df-ov 6287  df-oprab 6288  df-mpt2 6289  df-om 6685  df-1st 6784  df-2nd 6785  df-recs 7042  df-rdg 7076  df-1o 7130  df-oadd 7134  df-er 7311  df-en 7517  df-dom 7518  df-sdom 7519  df-fin 7520  df-sup 7901  df-card 8320  df-pnf 9630  df-mnf 9631  df-xr 9632  df-ltxr 9633  df-le 9634  df-sub 9807  df-neg 9808  df-div 10207  df-nn 10537  df-2 10594  df-n0 10796  df-z 10865  df-uz 11083  df-rp 11221  df-fz 11673  df-fzo 11793  df-fl 11897  df-mod 11965  df-hash 12374  df-word 12508  df-concat 12510  df-substr 12512  df-csh 12723
This theorem is referenced by:  cshwidx0mod  12738  cshwidxm1  12740  cshwidxm  12741  cshwidxn  12742  2cshw  12744  cshweqrep  12752  cshco  12765  clwwisshclwwlem  24510
  Copyright terms: Public domain W3C validator