Step |
Hyp |
Ref |
Expression |
1 |
|
2cshwid |
|- ( ( W e. Word V /\ M e. ZZ ) -> ( ( W cyclShift M ) cyclShift ( ( # ` W ) - M ) ) = W ) |
2 |
1
|
3adant2 |
|- ( ( W e. Word V /\ N e. ZZ /\ M e. ZZ ) -> ( ( W cyclShift M ) cyclShift ( ( # ` W ) - M ) ) = W ) |
3 |
2
|
eqcomd |
|- ( ( W e. Word V /\ N e. ZZ /\ M e. ZZ ) -> W = ( ( W cyclShift M ) cyclShift ( ( # ` W ) - M ) ) ) |
4 |
3
|
oveq1d |
|- ( ( W e. Word V /\ N e. ZZ /\ M e. ZZ ) -> ( W cyclShift N ) = ( ( ( W cyclShift M ) cyclShift ( ( # ` W ) - M ) ) cyclShift N ) ) |
5 |
|
cshwcl |
|- ( W e. Word V -> ( W cyclShift M ) e. Word V ) |
6 |
5
|
3ad2ant1 |
|- ( ( W e. Word V /\ N e. ZZ /\ M e. ZZ ) -> ( W cyclShift M ) e. Word V ) |
7 |
|
lencl |
|- ( W e. Word V -> ( # ` W ) e. NN0 ) |
8 |
7
|
nn0zd |
|- ( W e. Word V -> ( # ` W ) e. ZZ ) |
9 |
|
zsubcl |
|- ( ( ( # ` W ) e. ZZ /\ M e. ZZ ) -> ( ( # ` W ) - M ) e. ZZ ) |
10 |
8 9
|
sylan |
|- ( ( W e. Word V /\ M e. ZZ ) -> ( ( # ` W ) - M ) e. ZZ ) |
11 |
10
|
3adant2 |
|- ( ( W e. Word V /\ N e. ZZ /\ M e. ZZ ) -> ( ( # ` W ) - M ) e. ZZ ) |
12 |
|
simp2 |
|- ( ( W e. Word V /\ N e. ZZ /\ M e. ZZ ) -> N e. ZZ ) |
13 |
|
2cshwcom |
|- ( ( ( W cyclShift M ) e. Word V /\ ( ( # ` W ) - M ) e. ZZ /\ N e. ZZ ) -> ( ( ( W cyclShift M ) cyclShift ( ( # ` W ) - M ) ) cyclShift N ) = ( ( ( W cyclShift M ) cyclShift N ) cyclShift ( ( # ` W ) - M ) ) ) |
14 |
6 11 12 13
|
syl3anc |
|- ( ( W e. Word V /\ N e. ZZ /\ M e. ZZ ) -> ( ( ( W cyclShift M ) cyclShift ( ( # ` W ) - M ) ) cyclShift N ) = ( ( ( W cyclShift M ) cyclShift N ) cyclShift ( ( # ` W ) - M ) ) ) |
15 |
4 14
|
eqtrd |
|- ( ( W e. Word V /\ N e. ZZ /\ M e. ZZ ) -> ( W cyclShift N ) = ( ( ( W cyclShift M ) cyclShift N ) cyclShift ( ( # ` W ) - M ) ) ) |