| 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 ) ) ) |