Step |
Hyp |
Ref |
Expression |
1 |
|
cshwcshid.1 |
|- ( ph -> y e. Word V ) |
2 |
|
cshwcshid.2 |
|- ( ph -> ( # ` x ) = ( # ` y ) ) |
3 |
|
fznn0sub2 |
|- ( m e. ( 0 ... ( # ` y ) ) -> ( ( # ` y ) - m ) e. ( 0 ... ( # ` y ) ) ) |
4 |
|
oveq2 |
|- ( ( # ` x ) = ( # ` y ) -> ( 0 ... ( # ` x ) ) = ( 0 ... ( # ` y ) ) ) |
5 |
4
|
eleq2d |
|- ( ( # ` x ) = ( # ` y ) -> ( ( ( # ` y ) - m ) e. ( 0 ... ( # ` x ) ) <-> ( ( # ` y ) - m ) e. ( 0 ... ( # ` y ) ) ) ) |
6 |
3 5
|
syl5ibr |
|- ( ( # ` x ) = ( # ` y ) -> ( m e. ( 0 ... ( # ` y ) ) -> ( ( # ` y ) - m ) e. ( 0 ... ( # ` x ) ) ) ) |
7 |
6 2
|
syl11 |
|- ( m e. ( 0 ... ( # ` y ) ) -> ( ph -> ( ( # ` y ) - m ) e. ( 0 ... ( # ` x ) ) ) ) |
8 |
7
|
adantr |
|- ( ( m e. ( 0 ... ( # ` y ) ) /\ x = ( y cyclShift m ) ) -> ( ph -> ( ( # ` y ) - m ) e. ( 0 ... ( # ` x ) ) ) ) |
9 |
8
|
impcom |
|- ( ( ph /\ ( m e. ( 0 ... ( # ` y ) ) /\ x = ( y cyclShift m ) ) ) -> ( ( # ` y ) - m ) e. ( 0 ... ( # ` x ) ) ) |
10 |
|
simpl |
|- ( ( y e. Word V /\ m e. ( 0 ... ( # ` y ) ) ) -> y e. Word V ) |
11 |
|
elfzelz |
|- ( m e. ( 0 ... ( # ` y ) ) -> m e. ZZ ) |
12 |
11
|
adantl |
|- ( ( y e. Word V /\ m e. ( 0 ... ( # ` y ) ) ) -> m e. ZZ ) |
13 |
|
elfz2nn0 |
|- ( m e. ( 0 ... ( # ` y ) ) <-> ( m e. NN0 /\ ( # ` y ) e. NN0 /\ m <_ ( # ` y ) ) ) |
14 |
|
nn0z |
|- ( ( # ` y ) e. NN0 -> ( # ` y ) e. ZZ ) |
15 |
|
nn0z |
|- ( m e. NN0 -> m e. ZZ ) |
16 |
|
zsubcl |
|- ( ( ( # ` y ) e. ZZ /\ m e. ZZ ) -> ( ( # ` y ) - m ) e. ZZ ) |
17 |
14 15 16
|
syl2anr |
|- ( ( m e. NN0 /\ ( # ` y ) e. NN0 ) -> ( ( # ` y ) - m ) e. ZZ ) |
18 |
17
|
3adant3 |
|- ( ( m e. NN0 /\ ( # ` y ) e. NN0 /\ m <_ ( # ` y ) ) -> ( ( # ` y ) - m ) e. ZZ ) |
19 |
13 18
|
sylbi |
|- ( m e. ( 0 ... ( # ` y ) ) -> ( ( # ` y ) - m ) e. ZZ ) |
20 |
19
|
adantl |
|- ( ( y e. Word V /\ m e. ( 0 ... ( # ` y ) ) ) -> ( ( # ` y ) - m ) e. ZZ ) |
21 |
10 12 20
|
3jca |
|- ( ( y e. Word V /\ m e. ( 0 ... ( # ` y ) ) ) -> ( y e. Word V /\ m e. ZZ /\ ( ( # ` y ) - m ) e. ZZ ) ) |
22 |
1 21
|
sylan |
|- ( ( ph /\ m e. ( 0 ... ( # ` y ) ) ) -> ( y e. Word V /\ m e. ZZ /\ ( ( # ` y ) - m ) e. ZZ ) ) |
23 |
|
2cshw |
|- ( ( y e. Word V /\ m e. ZZ /\ ( ( # ` y ) - m ) e. ZZ ) -> ( ( y cyclShift m ) cyclShift ( ( # ` y ) - m ) ) = ( y cyclShift ( m + ( ( # ` y ) - m ) ) ) ) |
24 |
22 23
|
syl |
|- ( ( ph /\ m e. ( 0 ... ( # ` y ) ) ) -> ( ( y cyclShift m ) cyclShift ( ( # ` y ) - m ) ) = ( y cyclShift ( m + ( ( # ` y ) - m ) ) ) ) |
25 |
|
nn0cn |
|- ( m e. NN0 -> m e. CC ) |
26 |
|
nn0cn |
|- ( ( # ` y ) e. NN0 -> ( # ` y ) e. CC ) |
27 |
25 26
|
anim12i |
|- ( ( m e. NN0 /\ ( # ` y ) e. NN0 ) -> ( m e. CC /\ ( # ` y ) e. CC ) ) |
28 |
27
|
3adant3 |
|- ( ( m e. NN0 /\ ( # ` y ) e. NN0 /\ m <_ ( # ` y ) ) -> ( m e. CC /\ ( # ` y ) e. CC ) ) |
29 |
13 28
|
sylbi |
|- ( m e. ( 0 ... ( # ` y ) ) -> ( m e. CC /\ ( # ` y ) e. CC ) ) |
30 |
|
pncan3 |
|- ( ( m e. CC /\ ( # ` y ) e. CC ) -> ( m + ( ( # ` y ) - m ) ) = ( # ` y ) ) |
31 |
29 30
|
syl |
|- ( m e. ( 0 ... ( # ` y ) ) -> ( m + ( ( # ` y ) - m ) ) = ( # ` y ) ) |
32 |
31
|
adantl |
|- ( ( ph /\ m e. ( 0 ... ( # ` y ) ) ) -> ( m + ( ( # ` y ) - m ) ) = ( # ` y ) ) |
33 |
32
|
oveq2d |
|- ( ( ph /\ m e. ( 0 ... ( # ` y ) ) ) -> ( y cyclShift ( m + ( ( # ` y ) - m ) ) ) = ( y cyclShift ( # ` y ) ) ) |
34 |
|
cshwn |
|- ( y e. Word V -> ( y cyclShift ( # ` y ) ) = y ) |
35 |
1 34
|
syl |
|- ( ph -> ( y cyclShift ( # ` y ) ) = y ) |
36 |
35
|
adantr |
|- ( ( ph /\ m e. ( 0 ... ( # ` y ) ) ) -> ( y cyclShift ( # ` y ) ) = y ) |
37 |
24 33 36
|
3eqtrrd |
|- ( ( ph /\ m e. ( 0 ... ( # ` y ) ) ) -> y = ( ( y cyclShift m ) cyclShift ( ( # ` y ) - m ) ) ) |
38 |
37
|
adantrr |
|- ( ( ph /\ ( m e. ( 0 ... ( # ` y ) ) /\ x = ( y cyclShift m ) ) ) -> y = ( ( y cyclShift m ) cyclShift ( ( # ` y ) - m ) ) ) |
39 |
|
oveq1 |
|- ( x = ( y cyclShift m ) -> ( x cyclShift ( ( # ` y ) - m ) ) = ( ( y cyclShift m ) cyclShift ( ( # ` y ) - m ) ) ) |
40 |
39
|
eqeq2d |
|- ( x = ( y cyclShift m ) -> ( y = ( x cyclShift ( ( # ` y ) - m ) ) <-> y = ( ( y cyclShift m ) cyclShift ( ( # ` y ) - m ) ) ) ) |
41 |
40
|
adantl |
|- ( ( m e. ( 0 ... ( # ` y ) ) /\ x = ( y cyclShift m ) ) -> ( y = ( x cyclShift ( ( # ` y ) - m ) ) <-> y = ( ( y cyclShift m ) cyclShift ( ( # ` y ) - m ) ) ) ) |
42 |
41
|
adantl |
|- ( ( ph /\ ( m e. ( 0 ... ( # ` y ) ) /\ x = ( y cyclShift m ) ) ) -> ( y = ( x cyclShift ( ( # ` y ) - m ) ) <-> y = ( ( y cyclShift m ) cyclShift ( ( # ` y ) - m ) ) ) ) |
43 |
38 42
|
mpbird |
|- ( ( ph /\ ( m e. ( 0 ... ( # ` y ) ) /\ x = ( y cyclShift m ) ) ) -> y = ( x cyclShift ( ( # ` y ) - m ) ) ) |
44 |
|
oveq2 |
|- ( n = ( ( # ` y ) - m ) -> ( x cyclShift n ) = ( x cyclShift ( ( # ` y ) - m ) ) ) |
45 |
44
|
rspceeqv |
|- ( ( ( ( # ` y ) - m ) e. ( 0 ... ( # ` x ) ) /\ y = ( x cyclShift ( ( # ` y ) - m ) ) ) -> E. n e. ( 0 ... ( # ` x ) ) y = ( x cyclShift n ) ) |
46 |
9 43 45
|
syl2anc |
|- ( ( ph /\ ( m e. ( 0 ... ( # ` y ) ) /\ x = ( y cyclShift m ) ) ) -> E. n e. ( 0 ... ( # ` x ) ) y = ( x cyclShift n ) ) |
47 |
46
|
ex |
|- ( ph -> ( ( m e. ( 0 ... ( # ` y ) ) /\ x = ( y cyclShift m ) ) -> E. n e. ( 0 ... ( # ` x ) ) y = ( x cyclShift n ) ) ) |