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

Theorem cshwidxmod 13549
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 12508 . . . 4  |-  ( I  e.  ( 0..^ (
# `  W )
)  <->  ( I  e. 
NN0  /\  ( # `  W
)  e.  NN  /\  I  <  ( # `  W
) ) )
2 nnne0 11053 . . . . . 6  |-  ( (
# `  W )  e.  NN  ->  ( # `  W
)  =/=  0 )
3 eqneqall 2805 . . . . . . 7  |-  ( (
# `  W )  =  0  ->  (
( # `  W )  =/=  0  ->  (
( W cyclShift  N ) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `  W
) ) ) ) )
43com12 32 . . . . . 6  |-  ( (
# `  W )  =/=  0  ->  ( (
# `  W )  =  0  ->  (
( W cyclShift  N ) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `  W
) ) ) ) )
52, 4syl 17 . . . . 5  |-  ( (
# `  W )  e.  NN  ->  ( ( # `
 W )  =  0  ->  ( ( W cyclShift  N ) `  I
)  =  ( W `
 ( ( I  +  N )  mod  ( # `  W
) ) ) ) )
653ad2ant2 1083 . . . 4  |-  ( ( I  e.  NN0  /\  ( # `  W )  e.  NN  /\  I  <  ( # `  W
) )  ->  (
( # `  W )  =  0  ->  (
( W cyclShift  N ) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `  W
) ) ) ) )
71, 6sylbi 207 . . 3  |-  ( I  e.  ( 0..^ (
# `  W )
)  ->  ( ( # `
 W )  =  0  ->  ( ( W cyclShift  N ) `  I
)  =  ( W `
 ( ( I  +  N )  mod  ( # `  W
) ) ) ) )
873ad2ant3 1084 . 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 13324 . . . . 5  |-  ( W  e. Word  V  ->  ( # `
 W )  e. 
NN0 )
10 elnnne0 11306 . . . . . . . 8  |-  ( (
# `  W )  e.  NN  <->  ( ( # `  W )  e.  NN0  /\  ( # `  W
)  =/=  0 ) )
11 simpl 473 . . . . . . . . . . . . . 14  |-  ( ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) )  ->  N  e.  ZZ )
1211adantl 482 . . . . . . . . . . . . 13  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  N  e.  ZZ )
13 cshword 13537 . . . . . . . . . . . . 13  |-  ( ( W  e. Word  V  /\  N  e.  ZZ )  ->  ( W cyclShift  N )  =  ( ( W substr  <. ( N  mod  ( # `
 W ) ) ,  ( # `  W
) >. ) ++  ( W substr  <. 0 ,  ( N  mod  ( # `  W
) ) >. )
) )
1412, 13sylan2 491 . . . . . . . . . . . 12  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( W cyclShift  N )  =  ( ( W substr  <. ( N  mod  ( # `  W ) ) ,  ( # `  W ) >. ) ++  ( W substr  <. 0 ,  ( N  mod  ( # `
 W ) )
>. ) ) )
1514fveq1d 6193 . . . . . . . . . . 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 ) >. ) ++  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) ) `  I ) )
16 swrdcl 13419 . . . . . . . . . . . . . . . . 17  |-  ( W  e. Word  V  ->  ( W substr  <. ( N  mod  ( # `  W ) ) ,  ( # `  W ) >. )  e. Word  V )
1716adantr 481 . . . . . . . . . . . . . . . 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 482 . . . . . . . . . . . . . . 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 13419 . . . . . . . . . . . . . . . . 17  |-  ( W  e. Word  V  ->  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >.
)  e. Word  V )
2019adantr 481 . . . . . . . . . . . . . . . 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 482 . . . . . . . . . . . . . . 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 473 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  W  e. Word  V )
2311anim2i 593 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( ( # `  W )  e.  NN  /\  N  e.  ZZ ) )
2423ancomd 467 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( N  e.  ZZ  /\  ( # `  W )  e.  NN ) )
25 zmodfzp1 12694 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( N  mod  ( # `
 W ) )  e.  ( 0 ... ( # `  W
) ) )
2624, 25syl 17 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( N  mod  ( # `  W ) )  e.  ( 0 ... ( # `  W
) ) )
2726adantl 482 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( N  mod  ( # `  W
) )  e.  ( 0 ... ( # `  W ) ) )
28 nn0fz0 12437 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
# `  W )  e.  NN0  <->  ( # `  W
)  e.  ( 0 ... ( # `  W
) ) )
299, 28sylib 208 . . . . . . . . . . . . . . . . . . . . 21  |-  ( W  e. Word  V  ->  ( # `
 W )  e.  ( 0 ... ( # `
 W ) ) )
3029adantr 481 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( # `  W
)  e.  ( 0 ... ( # `  W
) ) )
31 swrdlen 13423 . . . . . . . . . . . . . . . . . . . 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 1326 . . . . . . . . . . . . . . . . . . 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 2628 . . . . . . . . . . . . . . . . . 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 13422 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( W  e. Word  V  /\  ( N  mod  ( # `  W ) )  e.  ( 0 ... ( # `
 W ) ) )  ->  ( # `  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >.
) )  =  ( N  mod  ( # `  W ) ) )
3526, 34sylan2 491 . . . . . . . . . . . . . . . . . . . 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 2628 . . . . . . . . . . . . . . . . . . 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 6668 . . . . . . . . . . . . . . . . . 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 6668 . . . . . . . . . . . . . . . . 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 2687 . . . . . . . . . . . . . . . 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 503 . . . . . . . . . . . . . . 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 13362 . . . . . . . . . . . . . . 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 ) >. ) ++  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) ) `  I )  =  ( ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) `  (
I  -  ( # `  ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) ) ) ) )
4218, 21, 40, 41syl3anc 1326 . . . . . . . . . . . . . 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
) >. ) ++  ( W substr  <. 0 ,  ( N  mod  ( # `  W
) ) >. )
) `  I )  =  ( ( W substr  <. 0 ,  ( N  mod  ( # `  W
) ) >. ) `  ( I  -  ( # `
 ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) ) ) ) )
4322adantl 482 . . . . . . . . . . . . . . . . 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 482 . . . . . . . . . . . . . . . . 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 482 . . . . . . . . . . . . . . . . 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 1326 . . . . . . . . . . . . . . . 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 6666 . . . . . . . . . . . . . . 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 6195 . . . . . . . . . . . . . 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 12473 . . . . . . . . . . . . . . . . . . . . . . 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 11693 . . . . . . . . . . . . . . . . . . . . . . . . . 26  |-  ( I  e.  ( ZZ>= `  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) )  <->  ( (
( # `  W )  -  ( N  mod  ( # `  W ) ) )  e.  ZZ  /\  I  e.  ZZ  /\  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  <_  I ) )
51 simpl 473 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  |-  ( ( I  e.  ZZ  /\  ( N  e.  ZZ  /\  ( # `  W
)  e.  NN ) )  ->  I  e.  ZZ )
52 nnz 11399 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36  |-  ( (
# `  W )  e.  NN  ->  ( # `  W
)  e.  ZZ )
5352adantl 482 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( # `  W )  e.  ZZ )
54 zmodcl 12690 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( N  mod  ( # `
 W ) )  e.  NN0 )
5554nn0zd 11480 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( N  mod  ( # `
 W ) )  e.  ZZ )
5653, 55zsubcld 11487 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  e.  ZZ )
5756adantl 482 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  |-  ( ( I  e.  ZZ  /\  ( N  e.  ZZ  /\  ( # `  W
)  e.  NN ) )  ->  ( ( # `
 W )  -  ( N  mod  ( # `  W ) ) )  e.  ZZ )
5851, 57zsubcld 11487 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( ( I  e.  ZZ  /\  ( N  e.  ZZ  /\  ( # `  W
)  e.  NN ) )  ->  ( I  -  ( ( # `  W )  -  ( N  mod  ( # `  W
) ) ) )  e.  ZZ )
5958adantlr 751 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( ( ( I  e.  ZZ  /\  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  <_  I )  /\  ( N  e.  ZZ  /\  ( # `
 W )  e.  NN ) )  -> 
( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ZZ )
60 zre 11381 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( I  e.  ZZ  ->  I  e.  RR )
61 nnre 11027 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37  |-  ( (
# `  W )  e.  NN  ->  ( # `  W
)  e.  RR )
6261adantl 482 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( # `  W )  e.  RR )
6354nn0red 11352 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( N  mod  ( # `
 W ) )  e.  RR )
6462, 63resubcld 10458 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  e.  RR )
65 subge0 10541 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( ( I  e.  RR  /\  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  e.  RR )  ->  (
0  <_  ( I  -  ( ( # `  W )  -  ( N  mod  ( # `  W
) ) ) )  <-> 
( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  <_  I ) )
6660, 64, 65syl2an 494 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34  |-  ( ( I  e.  ZZ  /\  ( N  e.  ZZ  /\  ( # `  W
)  e.  NN ) )  ->  ( 0  <_  ( I  -  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) ) )  <-> 
( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  <_  I ) )
6766exbiri 652 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  |-  ( I  e.  ZZ  ->  (
( N  e.  ZZ  /\  ( # `  W
)  e.  NN )  ->  ( ( (
# `  W )  -  ( N  mod  ( # `  W ) ) )  <_  I  ->  0  <_  ( I  -  ( ( # `  W )  -  ( N  mod  ( # `  W
) ) ) ) ) ) )
6867com23 86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( I  e.  ZZ  ->  (
( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  <_  I  ->  ( ( N  e.  ZZ  /\  ( # `
 W )  e.  NN )  ->  0  <_  ( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) ) ) ) )
6968imp31 448 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  |-  ( ( ( I  e.  ZZ  /\  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  <_  I )  /\  ( N  e.  ZZ  /\  ( # `
 W )  e.  NN ) )  -> 
0  <_  ( I  -  ( ( # `  W )  -  ( N  mod  ( # `  W
) ) ) ) )
70 elnn0uz 11725 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( ( I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) )  e. 
NN0 
<->  ( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ( ZZ>= `  0 )
)
71 elnn0z 11390 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  |-  ( ( I  -  ( (
# `  W )  -  ( N  mod  ( # `  W ) ) ) )  e. 
NN0 
<->  ( ( I  -  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) ) )  e.  ZZ  /\  0  <_  ( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) ) ) )
7270, 71bitr3i 266 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 698 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  |-  ( ( ( I  e.  ZZ  /\  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  <_  I )  /\  ( N  e.  ZZ  /\  ( # `
 W )  e.  NN ) )  -> 
( I  -  (
( # `  W )  -  ( N  mod  ( # `  W ) ) ) )  e.  ( ZZ>= `  0 )
)
7473adantlr 751 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 482 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 481 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( ( I  e.  ZZ  /\  ( N  e.  ZZ  /\  ( # `  W
)  e.  NN ) )  ->  I  e.  RR )
7764adantl 482 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( ( I  e.  ZZ  /\  ( N  e.  ZZ  /\  ( # `  W
)  e.  NN ) )  ->  ( ( # `
 W )  -  ( N  mod  ( # `  W ) ) )  e.  RR )
7863adantl 482 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  |-  ( ( I  e.  ZZ  /\  ( N  e.  ZZ  /\  ( # `  W
)  e.  NN ) )  ->  ( N  mod  ( # `  W
) )  e.  RR )
7976, 77, 783jca 1242 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 751 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 10499 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 652 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 448 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 12473 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 1246 . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 630 . . . . . . . . . . . . . . . . . . . . . . . . . . 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 1079 . . . . . . . . . . . . . . . . . . . . . . . . . 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 207 . . . . . . . . . . . . . . . . . . . . . . . . 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 445 . . . . . . . . . . . . . . . . . . . . . . . 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 1080 . . . . . . . . . . . . . . . . . . . . . . 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 207 . . . . . . . . . . . . . . . . . . . . . 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 32 . . . . . . . . . . . . . . . . . . . . 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 450 . . . . . . . . . . . . . . . . . . . 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 481 . . . . . . . . . . . . . . . . . . 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 446 . . . . . . . . . . . . . . . . . 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 482 . . . . . . . . . . . . . . . . 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 446 . . . . . . . . . . . . . . . 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 13439 . . . . . . . . . . . . . . . 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 1326 . . . . . . . . . . . . . . 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 12470 . . . . . . . . . . . . . . . . . . . . . . . 24  |-  ( I  e.  ( 0..^ (
# `  W )
)  ->  I  e.  ZZ )
103102zcnd 11483 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( I  e.  ( 0..^ (
# `  W )
)  ->  I  e.  CC )
104103adantl 482 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) )  ->  I  e.  CC )
105104adantl 482 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  I  e.  CC )
106 nncn 11028 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
# `  W )  e.  NN  ->  ( # `  W
)  e.  CC )
107106adantr 481 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( # `  W
)  e.  CC )
10824, 54syl 17 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( N  mod  ( # `  W ) )  e.  NN0 )
109108nn0cnd 11353 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( N  mod  ( # `  W ) )  e.  CC )
110105, 107, 1093jca 1242 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( I  e.  CC  /\  ( # `  W )  e.  CC  /\  ( N  mod  ( # `
 W ) )  e.  CC ) )
111110adantl 482 . . . . . . . . . . . . . . . . . . 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 482 . . . . . . . . . . . . . . . . . 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 10313 . . . . . . . . . . . . . . . . . 18  |-  ( ( I  e.  CC  /\  ( # `  W )  e.  CC  /\  ( N  mod  ( # `  W
) )  e.  CC )  ->  ( I  -  ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) ) )  =  ( ( I  +  ( N  mod  ( # `  W ) ) )  -  ( # `
 W ) ) )
114112, 113syl 17 . . . . . . . . . . . . . . . . 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 482 . . . . . . . . . . . . . . . . . . 19  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( N  e.  ZZ  /\  ( # `  W )  e.  NN ) )
116115adantl 482 . . . . . . . . . . . . . . . . . 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 554 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( ( # `  W )  e.  CC  /\  ( N  mod  ( # `
 W ) )  e.  CC ) )
118117adantl 482 . . . . . . . . . . . . . . . . . . . . . 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 10290 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( ( # `  W
)  e.  CC  /\  ( N  mod  ( # `  W ) )  e.  CC )  ->  (
( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) )  =  ( # `  W ) )
120118, 119syl 17 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( (
( # `  W )  -  ( N  mod  ( # `  W ) ) )  +  ( N  mod  ( # `  W ) ) )  =  ( # `  W
) )
121120oveq2d 6666 . . . . . . . . . . . . . . . . . . . 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 2687 . . . . . . . . . . . . . . . . . . 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 503 . . . . . . . . . . . . . . . . . 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 12733 . . . . . . . . . . . . . . . . . 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 65 . . . . . . . . . . . . . . . . 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 2656 . . . . . . . . . . . . . . . 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 6195 . . . . . . . . . . . . . . 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 2656 . . . . . . . . . . . . . 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 2660 . . . . . . . . . . . . 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
) >. ) ++  ( W substr  <. 0 ,  ( N  mod  ( # `  W
) ) >. )
) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `
 W ) ) ) )
130129ex 450 . . . . . . . . . . . 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 ) >. ) ++  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) ) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `  W
) ) ) ) )
131106adantl 482 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( # `  W )  e.  CC )
13254nn0cnd 11353 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( N  mod  ( # `
 W ) )  e.  CC )
133131, 132npcand 10396 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( N  e.  ZZ  /\  ( # `  W )  e.  NN )  -> 
( ( ( # `  W )  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) )  =  ( # `  W ) )
134133ex 450 . . . . . . . . . . . . . . . . . . . 20  |-  ( N  e.  ZZ  ->  (
( # `  W )  e.  NN  ->  (
( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) )  =  ( # `  W ) ) )
135134adantr 481 . . . . . . . . . . . . . . . . . . 19  |-  ( ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) )  -> 
( ( # `  W
)  e.  NN  ->  ( ( ( # `  W
)  -  ( N  mod  ( # `  W
) ) )  +  ( N  mod  ( # `
 W ) ) )  =  ( # `  W ) ) )
136135impcom 446 . . . . . . . . . . . . . . . . . 18  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( ( (
# `  W )  -  ( N  mod  ( # `  W ) ) )  +  ( N  mod  ( # `  W ) ) )  =  ( # `  W
) )
137136adantl 482 . . . . . . . . . . . . . . . . 17  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( (
( # `  W )  -  ( N  mod  ( # `  W ) ) )  +  ( N  mod  ( # `  W ) ) )  =  ( # `  W
) )
138137oveq2d 6666 . . . . . . . . . . . . . . . 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 2687 . . . . . . . . . . . . . . 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 308 . . . . . . . . . . . . . 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 481 . . . . . . . . . . . . . . . . 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 481 . . . . . . . . . . . . . . . . 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 11480 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( N  mod  ( # `  W ) )  e.  ZZ )
144143adantl 482 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( N  mod  ( # `  W
) )  e.  ZZ )
145 zre 11381 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( N  e.  ZZ  ->  N  e.  RR )
146145adantr 481 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) )  ->  N  e.  RR )
147 nnrp 11842 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( (
# `  W )  e.  NN  ->  ( # `  W
)  e.  RR+ )
148 modlt 12679 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( N  e.  RR  /\  ( # `  W )  e.  RR+ )  ->  ( N  mod  ( # `  W
) )  <  ( # `
 W ) )
149146, 147, 148syl2anr 495 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( N  mod  ( # `  W ) )  <  ( # `  W ) )
150149adantl 482 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( N  mod  ( # `  W
) )  <  ( # `
 W ) )
151 simprrr 805 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  I  e.  ( 0..^ ( # `  W
) ) )
152 fzonfzoufzol 12571 . . . . . . . . . . . . . . . . . . . 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 1326 . . . . . . . . . . . . . . . . . . 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 445 . . . . . . . . . . . . . . . . . 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 481 . . . . . . . . . . . . . . . . . . . 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 481 . . . . . . . . . . . . . . . . . . . 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 481 . . . . . . . . . . . . . . . . . . . 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 1326 . . . . . . . . . . . . . . . . . . 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 6666 . . . . . . . . . . . . . . . . . 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 2704 . . . . . . . . . . . . . . . . 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 13361 . . . . . . . . . . . . . . . . 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
) >. ) ++  ( W substr  <. 0 ,  ( N  mod  ( # `  W
) ) >. )
) `  I )  =  ( ( W substr  <. ( N  mod  ( # `
 W ) ) ,  ( # `  W
) >. ) `  I
) )
162141, 142, 160, 161syl3anc 1326 . . . . . . . . . . . . . . . 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 ) >. ) ++  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) ) `  I )  =  ( ( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) `  I ) )
16323adantl 482 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( ( # `
 W )  e.  NN  /\  N  e.  ZZ ) )
164163ancomd 467 . . . . . . . . . . . . . . . . . . 19  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( N  e.  ZZ  /\  ( # `  W )  e.  NN ) )
165164, 25syl 17 . . . . . . . . . . . . . . . . . 18  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( N  mod  ( # `  W
) )  e.  ( 0 ... ( # `  W ) ) )
166165adantr 481 . . . . . . . . . . . . . . . . 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 13424 . . . . . . . . . . . . . . . . 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 1329 . . . . . . . . . . . . . . . 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 481 . . . . . . . . . . . . . . . . . 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 469 . . . . . . . . . . . . . . . . . . . . . . 23  |-  ( ( ( # `  W
)  e.  NN  /\  N  e.  ZZ )  ->  ( N  mod  ( # `
 W ) )  e.  NN0 )
171170nn0zd 11480 . . . . . . . . . . . . . . . . . . . . . 22  |-  ( ( ( # `  W
)  e.  NN  /\  N  e.  ZZ )  ->  ( N  mod  ( # `
 W ) )  e.  ZZ )
172171adantrr 753 . . . . . . . . . . . . . . . . . . . . 21  |-  ( ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) )  ->  ( N  mod  ( # `  W ) )  e.  ZZ )
173172adantl 482 . . . . . . . . . . . . . . . . . . . 20  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( N  mod  ( # `  W
) )  e.  ZZ )
174173, 150, 151, 152syl3anc 1326 . . . . . . . . . . . . . . . . . . 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 445 . . . . . . . . . . . . . . . . . 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 12734 . . . . . . . . . . . . . . . . . 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 65 . . . . . . . . . . . . . . . . 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 6195 . . . . . . . . . . . . . . . 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 2660 . . . . . . . . . . . . . . 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 ) >. ) ++  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) ) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `  W
) ) ) )
180179ex 450 . . . . . . . . . . . . . 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
) >. ) ++  ( W substr  <. 0 ,  ( N  mod  ( # `  W
) ) >. )
) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `
 W ) ) ) ) )
181140, 180sylbid 230 . . . . . . . . . . . . 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 ) >. ) ++  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) ) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `  W
) ) ) ) )
182181com12 32 . . . . . . . . . . . 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 ) >. ) ++  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) ) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `  W
) ) ) ) )
183130, 182pm2.61i 176 . . . . . . . . . . 11  |-  ( ( W  e. Word  V  /\  ( ( # `  W
)  e.  NN  /\  ( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) ) ) )  ->  ( (
( W substr  <. ( N  mod  ( # `  W
) ) ,  (
# `  W ) >. ) ++  ( W substr  <. 0 ,  ( N  mod  ( # `  W ) ) >. ) ) `  I )  =  ( W `  ( ( I  +  N )  mod  ( # `  W
) ) ) )
18415, 183eqtrd 2656 . . . . . . . . . 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 631 . . . . . . . . 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 32 . . . . . . . 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 225 . . . . . . 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 450 . . . . . 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 86 . . . . 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 38 . . . 4  |-  ( W  e. Word  V  ->  (
( # `  W )  =/=  0  ->  (
( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) )  -> 
( ( W cyclShift  N ) `
 I )  =  ( W `  (
( I  +  N
)  mod  ( # `  W
) ) ) ) ) )
191190com23 86 . . 3  |-  ( W  e. Word  V  ->  (
( N  e.  ZZ  /\  I  e.  ( 0..^ ( # `  W
) ) )  -> 
( ( # `  W
)  =/=  0  -> 
( ( W cyclShift  N ) `
 I )  =  ( W `  (
( I  +  N
)  mod  ( # `  W
) ) ) ) ) )
1921913impib 1262 . 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 2880 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 196    /\ wa 384    /\ w3a 1037    = wceq 1483    e. wcel 1990    =/= wne 2794   <.cop 4183   class class class wbr 4653   ` cfv 5888  (class class class)co 6650   CCcc 9934   RRcr 9935   0cc0 9936    + caddc 9939    < clt 10074    <_ cle 10075    - cmin 10266   NNcn 11020   NN0cn0 11292   ZZcz 11377   ZZ>=cuz 11687   RR+crp 11832   ...cfz 12326  ..^cfzo 12465    mod cmo 12668   #chash 13117  Word cword 13291   ++ cconcat 13293   substr csubstr 13295   cyclShift ccsh 13534
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1722  ax-4 1737  ax-5 1839  ax-6 1888  ax-7 1935  ax-8 1992  ax-9 1999  ax-10 2019  ax-11 2034  ax-12 2047  ax-13 2246  ax-ext 2602  ax-rep 4771  ax-sep 4781  ax-nul 4789  ax-pow 4843  ax-pr 4906  ax-un 6949  ax-cnex 9992  ax-resscn 9993  ax-1cn 9994  ax-icn 9995  ax-addcl 9996  ax-addrcl 9997  ax-mulcl 9998  ax-mulrcl 9999  ax-mulcom 10000  ax-addass 10001  ax-mulass 10002  ax-distr 10003  ax-i2m1 10004  ax-1ne0 10005  ax-1rid 10006  ax-rnegex 10007  ax-rrecex 10008  ax-cnre 10009  ax-pre-lttri 10010  ax-pre-lttrn 10011  ax-pre-ltadd 10012  ax-pre-mulgt0 10013  ax-pre-sup 10014
This theorem depends on definitions:  df-bi 197  df-or 385  df-an 386  df-3or 1038  df-3an 1039  df-tru 1486  df-ex 1705  df-nf 1710  df-sb 1881  df-eu 2474  df-mo 2475  df-clab 2609  df-cleq 2615  df-clel 2618  df-nfc 2753  df-ne 2795  df-nel 2898  df-ral 2917  df-rex 2918  df-reu 2919  df-rmo 2920  df-rab 2921  df-v 3202  df-sbc 3436  df-csb 3534  df-dif 3577  df-un 3579  df-in 3581  df-ss 3588  df-pss 3590  df-nul 3916  df-if 4087  df-pw 4160  df-sn 4178  df-pr 4180  df-tp 4182  df-op 4184  df-uni 4437  df-int 4476  df-iun 4522  df-br 4654  df-opab 4713  df-mpt 4730  df-tr 4753  df-id 5024  df-eprel 5029  df-po 5035  df-so 5036  df-fr 5073  df-we 5075  df-xp 5120  df-rel 5121  df-cnv 5122  df-co 5123  df-dm 5124  df-rn 5125  df-res 5126  df-ima 5127  df-pred 5680  df-ord 5726  df-on 5727  df-lim 5728  df-suc 5729  df-iota 5851  df-fun 5890  df-fn 5891  df-f 5892  df-f1 5893  df-fo 5894  df-f1o 5895  df-fv 5896  df-riota 6611  df-ov 6653  df-oprab 6654  df-mpt2 6655  df-om 7066  df-1st 7168  df-2nd 7169  df-wrecs 7407  df-recs 7468  df-rdg 7506  df-1o 7560  df-oadd 7564  df-er 7742  df-en 7956  df-dom 7957  df-sdom 7958  df-fin 7959  df-sup 8348  df-inf 8349  df-card 8765  df-pnf 10076  df-mnf 10077  df-xr 10078  df-ltxr 10079  df-le 10080  df-sub 10268  df-neg 10269  df-div 10685  df-nn 11021  df-2 11079  df-n0 11293  df-z 11378  df-uz 11688  df-rp 11833  df-fz 12327  df-fzo 12466  df-fl 12593  df-mod 12669  df-hash 13118  df-word 13299  df-concat 13301  df-substr 13303  df-csh 13535
This theorem is referenced by:  cshwidxmodr  13550  cshwidx0mod  13551  cshwidxm1  13553  cshwidxm  13554  cshwidxn  13555  cshf1  13556  2cshw  13559  cshweqrep  13567  cshimadifsn  13575  cshimadifsn0  13576  cshco  13582  crctcshwlkn0lem4  26705  crctcshwlkn0lem5  26706  crctcshwlkn0lem6  26707  clwwisshclwwslem  26927  eucrctshift  27103
  Copyright terms: Public domain W3C validator