Step |
Hyp |
Ref |
Expression |
1 |
|
iswrd |
|- ( W e. Word V <-> E. l e. NN0 W : ( 0 ..^ l ) --> V ) |
2 |
|
ffn |
|- ( W : ( 0 ..^ l ) --> V -> W Fn ( 0 ..^ l ) ) |
3 |
2
|
reximi |
|- ( E. l e. NN0 W : ( 0 ..^ l ) --> V -> E. l e. NN0 W Fn ( 0 ..^ l ) ) |
4 |
1 3
|
sylbi |
|- ( W e. Word V -> E. l e. NN0 W Fn ( 0 ..^ l ) ) |
5 |
|
fneq1 |
|- ( w = W -> ( w Fn ( 0 ..^ l ) <-> W Fn ( 0 ..^ l ) ) ) |
6 |
5
|
rexbidv |
|- ( w = W -> ( E. l e. NN0 w Fn ( 0 ..^ l ) <-> E. l e. NN0 W Fn ( 0 ..^ l ) ) ) |
7 |
6
|
elabg |
|- ( W e. Word V -> ( W e. { w | E. l e. NN0 w Fn ( 0 ..^ l ) } <-> E. l e. NN0 W Fn ( 0 ..^ l ) ) ) |
8 |
4 7
|
mpbird |
|- ( W e. Word V -> W e. { w | E. l e. NN0 w Fn ( 0 ..^ l ) } ) |
9 |
|
cshfn |
|- ( ( W e. { w | E. l e. NN0 w Fn ( 0 ..^ l ) } /\ N e. ZZ ) -> ( W cyclShift N ) = if ( W = (/) , (/) , ( ( W substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) ++ ( W prefix ( N mod ( # ` W ) ) ) ) ) ) |
10 |
8 9
|
sylan |
|- ( ( W e. Word V /\ N e. ZZ ) -> ( W cyclShift N ) = if ( W = (/) , (/) , ( ( W substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) ++ ( W prefix ( N mod ( # ` W ) ) ) ) ) ) |
11 |
|
iftrue |
|- ( W = (/) -> if ( W = (/) , (/) , ( ( W substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) ++ ( W prefix ( N mod ( # ` W ) ) ) ) ) = (/) ) |
12 |
11
|
adantr |
|- ( ( W = (/) /\ ( W e. Word V /\ N e. ZZ ) ) -> if ( W = (/) , (/) , ( ( W substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) ++ ( W prefix ( N mod ( # ` W ) ) ) ) ) = (/) ) |
13 |
|
oveq1 |
|- ( W = (/) -> ( W substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) = ( (/) substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) ) |
14 |
|
swrd0 |
|- ( (/) substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) = (/) |
15 |
13 14
|
eqtrdi |
|- ( W = (/) -> ( W substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) = (/) ) |
16 |
|
oveq1 |
|- ( W = (/) -> ( W prefix ( N mod ( # ` W ) ) ) = ( (/) prefix ( N mod ( # ` W ) ) ) ) |
17 |
|
pfx0 |
|- ( (/) prefix ( N mod ( # ` W ) ) ) = (/) |
18 |
16 17
|
eqtrdi |
|- ( W = (/) -> ( W prefix ( N mod ( # ` W ) ) ) = (/) ) |
19 |
15 18
|
oveq12d |
|- ( W = (/) -> ( ( W substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) ++ ( W prefix ( N mod ( # ` W ) ) ) ) = ( (/) ++ (/) ) ) |
20 |
19
|
adantr |
|- ( ( W = (/) /\ ( W e. Word V /\ N e. ZZ ) ) -> ( ( W substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) ++ ( W prefix ( N mod ( # ` W ) ) ) ) = ( (/) ++ (/) ) ) |
21 |
|
ccatidid |
|- ( (/) ++ (/) ) = (/) |
22 |
20 21
|
eqtr2di |
|- ( ( W = (/) /\ ( W e. Word V /\ N e. ZZ ) ) -> (/) = ( ( W substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) ++ ( W prefix ( N mod ( # ` W ) ) ) ) ) |
23 |
12 22
|
eqtrd |
|- ( ( W = (/) /\ ( W e. Word V /\ N e. ZZ ) ) -> if ( W = (/) , (/) , ( ( W substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) ++ ( W prefix ( N mod ( # ` W ) ) ) ) ) = ( ( W substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) ++ ( W prefix ( N mod ( # ` W ) ) ) ) ) |
24 |
|
iffalse |
|- ( -. W = (/) -> if ( W = (/) , (/) , ( ( W substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) ++ ( W prefix ( N mod ( # ` W ) ) ) ) ) = ( ( W substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) ++ ( W prefix ( N mod ( # ` W ) ) ) ) ) |
25 |
24
|
adantr |
|- ( ( -. W = (/) /\ ( W e. Word V /\ N e. ZZ ) ) -> if ( W = (/) , (/) , ( ( W substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) ++ ( W prefix ( N mod ( # ` W ) ) ) ) ) = ( ( W substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) ++ ( W prefix ( N mod ( # ` W ) ) ) ) ) |
26 |
23 25
|
pm2.61ian |
|- ( ( W e. Word V /\ N e. ZZ ) -> if ( W = (/) , (/) , ( ( W substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) ++ ( W prefix ( N mod ( # ` W ) ) ) ) ) = ( ( W substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) ++ ( W prefix ( N mod ( # ` W ) ) ) ) ) |
27 |
10 26
|
eqtrd |
|- ( ( W e. Word V /\ N e. ZZ ) -> ( W cyclShift N ) = ( ( W substr <. ( N mod ( # ` W ) ) , ( # ` W ) >. ) ++ ( W prefix ( N mod ( # ` W ) ) ) ) ) |