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

Theorem cshwidxmod 12445
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 11592 . . . 4  |-  ( I  e.  ( 0..^ (
# `  W )
)  <->  ( I  e. 
NN0  /\  ( # `  W
)  e.  NN  /\  I  <  ( # `  W
) ) )
2 nnne0 10359 . . . . . 6  |-  ( (
# `  W )  e.  NN  ->  ( # `  W
)  =/=  0 )
3 eqneqall 2710 . . . . . . 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 1010 . . . 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 1011 . 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 12254 . . . . 5  |-  ( W  e. Word  V  ->  ( # `
 W )  e. 
NN0 )
10 elnnne0 10598 . . . . . . . 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 12433 . . . . . . . . . . . . 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 5698 . . . . . . . . . . 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 12320 . . . . . . . . . . . . . . . . 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 12320 . . . . . . . . . . . . . . . . 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 11736 . . . . . . . . . . . . . . . . . . . . . 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 11530 . . . . . . . . . . . . . . . . . . . . . 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 12324 . . . . . . . . . . . . . . . . . . . 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 1218 . . . . . . . . . . . . . . . . . . 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 2448 . . . . . . . . . . . . . . . . . 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 12323 . . . . . . . . . . . . . . . . . . . . 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 2448 . . . . . . . . . . . . . . . . . . 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 6114 . . . . . . . . . . . . . . . . . 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 6114 . . . . . . . . . . . . . . . . 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 2510 . . . . . . . . . . . . . . . 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 12282 . . . . . . . . . . . . . . 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 1218 . . . . . . . . . . . . . 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 1218 . . . . . . . . . . . . . . . 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 6112 . . . . . . . . . . . . . . 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 5700 . . . . . . . . . . . . . 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 11561 . . . . . . . . . . . . . . . . . . . . . . 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 10872 . . . . . . . . . . . . . . . . . . . . . . . . . 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 10673 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36  |-  ( (
# `  W )  e.  NN  ->  ( # `  W
)  e.  ZZ )
5352adantl 466 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( # `  W )  e.  ZZ )
54 zmodcl 11732 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( N  mod  ( # `
 W ) )  e.  NN0 )
5554nn0zd 10750 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( N  mod  ( # `
 W ) )  e.  ZZ )
5653, 55zsubcld 10757 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 10757 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 10655 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( I  e.  ZZ  ->  I  e.  RR )
61 nnre 10334 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37  |-  ( (
# `  W )  e.  NN  ->  ( # `  W
)  e.  RR )
6261adantl 466 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( # `  W )  e.  RR )
6354nn0red 10642 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( N  mod  ( # `
 W ) )  e.  RR )
6462, 63resubcld 9781 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  e.  RR )
65 subge0 9857 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 10903 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( ( I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) )  e. 
NN0 
<->  ( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ( ZZ>= `  0 )
)
71 elnn0z 10664 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 1168 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 9815 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 11561 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 1172 . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 1006 . . . . . . . . . . . . . . . . . . . . . . . . . 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 1007 . . . . . . . . . . . . . . . . . . . . . . 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 12340 . . . . . . . . . . . . . . . 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 1218 . . . . . . . . . . . . . . 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 11558 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  ( I  e.  ( 0..^ (
# `  W )
)  ->  I  e.  ZZ )
103102zcnd 10753 . . . . . . . . . . . . . . . . . . . . . . 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 10335 . . . . . . . . . . . . . . . . . . . . . 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 10643 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( N  mod  ( # `  W ) )  e.  CC )
110105, 107, 1093jca 1168 . . . . . . . . . . . . . . . . . . . 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 9646 . . . . . . . . . . . . . . . . . 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 9624 . . . . . . . . . . . . . . . . . . . . . 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 6112 . . . . . . . . . . . . . . . . . . . 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 2510 . . . . . . . . . . . . . . . . . . 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 11767 . . . . . . . . . . . . . . . . . 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 2475 . . . . . . . . . . . . . . . 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 5700 . . . . . . . . . . . . . . 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 2475 . . . . . . . . . . . . . 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 2479 . . . . . . . . . . . . 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 10643 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( N  mod  ( # `
 W ) )  e.  CC )
133131, 132npcand 9728 . . . . . . . . . . . . . . . . . . . . 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 6112 . . . . . . . . . . . . . . . 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 2510 . . . . . . . . . . . . . . 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 10750 . . . . . . . . . . . . . . . . . . . . 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 10655 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( N  e.  ZZ  ->  N  e.  RR )
146145adantr 465 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) )  ->  N  e.  RR )
147 nnrp 11005 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
# `  W )  e.  NN  ->  ( # `  W
)  e.  RR+ )
148 modlt 11723 . . . . . . . . . . . . . . . . . . . . . 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 11633 . . . . . . . . . . . . . . . . . . . 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 1218 . . . . . . . . . . . . . . . . . . 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 1218 . . . . . . . . . . . . . . . . . . 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 6112 . . . . . . . . . . . . . . . . . 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 2520 . . . . . . . . . . . . . . . . 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 12281 . . . . . . . . . . . . . . . . 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 1218 . . . . . . . . . . . . . . . 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 12325 . . . . . . . . . . . . . . . . 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 1221 . . . . . . . . . . . . . . . 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 10750 . . . . . . . . . . . . . . . . . . . . . 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 1218 . . . . . . . . . . . . . . . . . . 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 11768 . . . . . . . . . . . . . . . . . 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 5700 . . . . . . . . . . . . . . . 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 2479 . . . . . . . . . . . . . . 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 2475 . . . . . . . . . 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 1185 . 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 2693 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 965    = wceq 1369    e. wcel 1756    =/= wne 2611   <.cop 3888   class class class wbr 4297   ` cfv 5423  (class class class)co 6096   CCcc 9285   RRcr 9286   0cc0 9287    + caddc 9290    < clt 9423    <_ cle 9424    - cmin 9600   NNcn 10327   NN0cn0 10584   ZZcz 10651   ZZ>=cuz 10866   RR+crp 10996   ...cfz 11442  ..^cfzo 11553    mod cmo 11713   #chash 12108  Word cword 12226   concat cconcat 12228   substr csubstr 12230   cyclShift ccsh 12430
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1591  ax-4 1602  ax-5 1670  ax-6 1708  ax-7 1728  ax-8 1758  ax-9 1760  ax-10 1775  ax-11 1780  ax-12 1792  ax-13 1943  ax-ext 2423  ax-rep 4408  ax-sep 4418  ax-nul 4426  ax-pow 4475  ax-pr 4536  ax-un 6377  ax-cnex 9343  ax-resscn 9344  ax-1cn 9345  ax-icn 9346  ax-addcl 9347  ax-addrcl 9348  ax-mulcl 9349  ax-mulrcl 9350  ax-mulcom 9351  ax-addass 9352  ax-mulass 9353  ax-distr 9354  ax-i2m1 9355  ax-1ne0 9356  ax-1rid 9357  ax-rnegex 9358  ax-rrecex 9359  ax-cnre 9360  ax-pre-lttri 9361  ax-pre-lttrn 9362  ax-pre-ltadd 9363  ax-pre-mulgt0 9364  ax-pre-sup 9365
This theorem depends on definitions:  df-bi 185  df-or 370  df-an 371  df-3or 966  df-3an 967  df-tru 1372  df-ex 1587  df-nf 1590  df-sb 1701  df-eu 2257  df-mo 2258  df-clab 2430  df-cleq 2436  df-clel 2439  df-nfc 2573  df-ne 2613  df-nel 2614  df-ral 2725  df-rex 2726  df-reu 2727  df-rmo 2728  df-rab 2729  df-v 2979  df-sbc 3192  df-csb 3294  df-dif 3336  df-un 3338  df-in 3340  df-ss 3347  df-pss 3349  df-nul 3643  df-if 3797  df-pw 3867  df-sn 3883  df-pr 3885  df-tp 3887  df-op 3889  df-uni 4097  df-int 4134  df-iun 4178  df-br 4298  df-opab 4356  df-mpt 4357  df-tr 4391  df-eprel 4637  df-id 4641  df-po 4646  df-so 4647  df-fr 4684  df-we 4686  df-ord 4727  df-on 4728  df-lim 4729  df-suc 4730  df-xp 4851  df-rel 4852  df-cnv 4853  df-co 4854  df-dm 4855  df-rn 4856  df-res 4857  df-ima 4858  df-iota 5386  df-fun 5425  df-fn 5426  df-f 5427  df-f1 5428  df-fo 5429  df-f1o 5430  df-fv 5431  df-riota 6057  df-ov 6099  df-oprab 6100  df-mpt2 6101  df-om 6482  df-1st 6582  df-2nd 6583  df-recs 6837  df-rdg 6871  df-1o 6925  df-oadd 6929  df-er 7106  df-en 7316  df-dom 7317  df-sdom 7318  df-fin 7319  df-sup 7696  df-card 8114  df-pnf 9425  df-mnf 9426  df-xr 9427  df-ltxr 9428  df-le 9429  df-sub 9602  df-neg 9603  df-div 9999  df-nn 10328  df-2 10385  df-n0 10585  df-z 10652  df-uz 10867  df-rp 10997  df-fz 11443  df-fzo 11554  df-fl 11647  df-mod 11714  df-hash 12109  df-word 12234  df-concat 12236  df-substr 12238  df-csh 12431
This theorem is referenced by:  cshwidx0mod  12446  cshwidxm1  12448  cshwidxm  12449  cshwidxn  12450  2cshw  12452  cshweqrep  12460  cshco  12469  clwwisshclwwlem  30475
  Copyright terms: Public domain W3C validator