Step |
Hyp |
Ref |
Expression |
1 |
|
cshwrnid |
|- ( ( W e. Word D /\ N e. ZZ ) -> ran ( W cyclShift N ) = ran W ) |
2 |
1
|
3adant2 |
|- ( ( W e. Word D /\ W : dom W -1-1-> D /\ N e. ZZ ) -> ran ( W cyclShift N ) = ran W ) |
3 |
|
wrddm |
|- ( W e. Word D -> dom W = ( 0 ..^ ( # ` W ) ) ) |
4 |
3
|
3ad2ant1 |
|- ( ( W e. Word D /\ W : dom W -1-1-> D /\ N e. ZZ ) -> dom W = ( 0 ..^ ( # ` W ) ) ) |
5 |
|
simp2 |
|- ( ( W e. Word D /\ W : dom W -1-1-> D /\ N e. ZZ ) -> W : dom W -1-1-> D ) |
6 |
|
f1eq2 |
|- ( dom W = ( 0 ..^ ( # ` W ) ) -> ( W : dom W -1-1-> D <-> W : ( 0 ..^ ( # ` W ) ) -1-1-> D ) ) |
7 |
6
|
biimpa |
|- ( ( dom W = ( 0 ..^ ( # ` W ) ) /\ W : dom W -1-1-> D ) -> W : ( 0 ..^ ( # ` W ) ) -1-1-> D ) |
8 |
4 5 7
|
syl2anc |
|- ( ( W e. Word D /\ W : dom W -1-1-> D /\ N e. ZZ ) -> W : ( 0 ..^ ( # ` W ) ) -1-1-> D ) |
9 |
|
simp3 |
|- ( ( W e. Word D /\ W : dom W -1-1-> D /\ N e. ZZ ) -> N e. ZZ ) |
10 |
|
eqid |
|- ( W cyclShift N ) = ( W cyclShift N ) |
11 |
|
cshf1 |
|- ( ( W : ( 0 ..^ ( # ` W ) ) -1-1-> D /\ N e. ZZ /\ ( W cyclShift N ) = ( W cyclShift N ) ) -> ( W cyclShift N ) : ( 0 ..^ ( # ` W ) ) -1-1-> D ) |
12 |
10 11
|
mp3an3 |
|- ( ( W : ( 0 ..^ ( # ` W ) ) -1-1-> D /\ N e. ZZ ) -> ( W cyclShift N ) : ( 0 ..^ ( # ` W ) ) -1-1-> D ) |
13 |
8 9 12
|
syl2anc |
|- ( ( W e. Word D /\ W : dom W -1-1-> D /\ N e. ZZ ) -> ( W cyclShift N ) : ( 0 ..^ ( # ` W ) ) -1-1-> D ) |
14 |
|
f1eq2 |
|- ( dom W = ( 0 ..^ ( # ` W ) ) -> ( ( W cyclShift N ) : dom W -1-1-> D <-> ( W cyclShift N ) : ( 0 ..^ ( # ` W ) ) -1-1-> D ) ) |
15 |
14
|
biimpar |
|- ( ( dom W = ( 0 ..^ ( # ` W ) ) /\ ( W cyclShift N ) : ( 0 ..^ ( # ` W ) ) -1-1-> D ) -> ( W cyclShift N ) : dom W -1-1-> D ) |
16 |
4 13 15
|
syl2anc |
|- ( ( W e. Word D /\ W : dom W -1-1-> D /\ N e. ZZ ) -> ( W cyclShift N ) : dom W -1-1-> D ) |
17 |
|
f1f1orn |
|- ( ( W cyclShift N ) : dom W -1-1-> D -> ( W cyclShift N ) : dom W -1-1-onto-> ran ( W cyclShift N ) ) |
18 |
16 17
|
syl |
|- ( ( W e. Word D /\ W : dom W -1-1-> D /\ N e. ZZ ) -> ( W cyclShift N ) : dom W -1-1-onto-> ran ( W cyclShift N ) ) |
19 |
|
f1oeq3 |
|- ( ran ( W cyclShift N ) = ran W -> ( ( W cyclShift N ) : dom W -1-1-onto-> ran ( W cyclShift N ) <-> ( W cyclShift N ) : dom W -1-1-onto-> ran W ) ) |
20 |
19
|
biimpa |
|- ( ( ran ( W cyclShift N ) = ran W /\ ( W cyclShift N ) : dom W -1-1-onto-> ran ( W cyclShift N ) ) -> ( W cyclShift N ) : dom W -1-1-onto-> ran W ) |
21 |
2 18 20
|
syl2anc |
|- ( ( W e. Word D /\ W : dom W -1-1-> D /\ N e. ZZ ) -> ( W cyclShift N ) : dom W -1-1-onto-> ran W ) |