| Step | Hyp | Ref | Expression | 
						
							| 1 |  | lencl |  |-  ( X e. Word V -> ( # ` X ) e. NN0 ) | 
						
							| 2 |  | elnn0uz |  |-  ( ( # ` X ) e. NN0 <-> ( # ` X ) e. ( ZZ>= ` 0 ) ) | 
						
							| 3 | 1 2 | sylib |  |-  ( X e. Word V -> ( # ` X ) e. ( ZZ>= ` 0 ) ) | 
						
							| 4 | 3 | adantr |  |-  ( ( X e. Word V /\ N = ( # ` X ) ) -> ( # ` X ) e. ( ZZ>= ` 0 ) ) | 
						
							| 5 |  | eleq1 |  |-  ( N = ( # ` X ) -> ( N e. ( ZZ>= ` 0 ) <-> ( # ` X ) e. ( ZZ>= ` 0 ) ) ) | 
						
							| 6 | 5 | adantl |  |-  ( ( X e. Word V /\ N = ( # ` X ) ) -> ( N e. ( ZZ>= ` 0 ) <-> ( # ` X ) e. ( ZZ>= ` 0 ) ) ) | 
						
							| 7 | 4 6 | mpbird |  |-  ( ( X e. Word V /\ N = ( # ` X ) ) -> N e. ( ZZ>= ` 0 ) ) | 
						
							| 8 | 7 | 3adant2 |  |-  ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) -> N e. ( ZZ>= ` 0 ) ) | 
						
							| 9 | 8 | adantr |  |-  ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) -> N e. ( ZZ>= ` 0 ) ) | 
						
							| 10 |  | fzisfzounsn |  |-  ( N e. ( ZZ>= ` 0 ) -> ( 0 ... N ) = ( ( 0 ..^ N ) u. { N } ) ) | 
						
							| 11 | 9 10 | syl |  |-  ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) -> ( 0 ... N ) = ( ( 0 ..^ N ) u. { N } ) ) | 
						
							| 12 | 11 | rexeqdv |  |-  ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) -> ( E. n e. ( 0 ... N ) y = ( X cyclShift n ) <-> E. n e. ( ( 0 ..^ N ) u. { N } ) y = ( X cyclShift n ) ) ) | 
						
							| 13 |  | rexun |  |-  ( E. n e. ( ( 0 ..^ N ) u. { N } ) y = ( X cyclShift n ) <-> ( E. n e. ( 0 ..^ N ) y = ( X cyclShift n ) \/ E. n e. { N } y = ( X cyclShift n ) ) ) | 
						
							| 14 | 12 13 | bitrdi |  |-  ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) -> ( E. n e. ( 0 ... N ) y = ( X cyclShift n ) <-> ( E. n e. ( 0 ..^ N ) y = ( X cyclShift n ) \/ E. n e. { N } y = ( X cyclShift n ) ) ) ) | 
						
							| 15 |  | fvex |  |-  ( # ` X ) e. _V | 
						
							| 16 |  | eleq1 |  |-  ( N = ( # ` X ) -> ( N e. _V <-> ( # ` X ) e. _V ) ) | 
						
							| 17 | 15 16 | mpbiri |  |-  ( N = ( # ` X ) -> N e. _V ) | 
						
							| 18 |  | oveq2 |  |-  ( n = N -> ( X cyclShift n ) = ( X cyclShift N ) ) | 
						
							| 19 | 18 | eqeq2d |  |-  ( n = N -> ( y = ( X cyclShift n ) <-> y = ( X cyclShift N ) ) ) | 
						
							| 20 | 19 | rexsng |  |-  ( N e. _V -> ( E. n e. { N } y = ( X cyclShift n ) <-> y = ( X cyclShift N ) ) ) | 
						
							| 21 | 17 20 | syl |  |-  ( N = ( # ` X ) -> ( E. n e. { N } y = ( X cyclShift n ) <-> y = ( X cyclShift N ) ) ) | 
						
							| 22 | 21 | 3ad2ant3 |  |-  ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) -> ( E. n e. { N } y = ( X cyclShift n ) <-> y = ( X cyclShift N ) ) ) | 
						
							| 23 | 22 | adantr |  |-  ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) -> ( E. n e. { N } y = ( X cyclShift n ) <-> y = ( X cyclShift N ) ) ) | 
						
							| 24 |  | oveq2 |  |-  ( N = ( # ` X ) -> ( X cyclShift N ) = ( X cyclShift ( # ` X ) ) ) | 
						
							| 25 | 24 | 3ad2ant3 |  |-  ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) -> ( X cyclShift N ) = ( X cyclShift ( # ` X ) ) ) | 
						
							| 26 |  | cshwn |  |-  ( X e. Word V -> ( X cyclShift ( # ` X ) ) = X ) | 
						
							| 27 | 26 | 3ad2ant1 |  |-  ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) -> ( X cyclShift ( # ` X ) ) = X ) | 
						
							| 28 | 25 27 | eqtrd |  |-  ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) -> ( X cyclShift N ) = X ) | 
						
							| 29 | 28 | eqeq2d |  |-  ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) -> ( y = ( X cyclShift N ) <-> y = X ) ) | 
						
							| 30 | 29 | adantr |  |-  ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) -> ( y = ( X cyclShift N ) <-> y = X ) ) | 
						
							| 31 |  | cshw0 |  |-  ( X e. Word V -> ( X cyclShift 0 ) = X ) | 
						
							| 32 | 31 | 3ad2ant1 |  |-  ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) -> ( X cyclShift 0 ) = X ) | 
						
							| 33 |  | lennncl |  |-  ( ( X e. Word V /\ X =/= (/) ) -> ( # ` X ) e. NN ) | 
						
							| 34 | 33 | 3adant3 |  |-  ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) -> ( # ` X ) e. NN ) | 
						
							| 35 |  | eleq1 |  |-  ( N = ( # ` X ) -> ( N e. NN <-> ( # ` X ) e. NN ) ) | 
						
							| 36 | 35 | 3ad2ant3 |  |-  ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) -> ( N e. NN <-> ( # ` X ) e. NN ) ) | 
						
							| 37 | 34 36 | mpbird |  |-  ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) -> N e. NN ) | 
						
							| 38 |  | lbfzo0 |  |-  ( 0 e. ( 0 ..^ N ) <-> N e. NN ) | 
						
							| 39 | 37 38 | sylibr |  |-  ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) -> 0 e. ( 0 ..^ N ) ) | 
						
							| 40 |  | oveq2 |  |-  ( 0 = n -> ( X cyclShift 0 ) = ( X cyclShift n ) ) | 
						
							| 41 | 40 | eqeq1d |  |-  ( 0 = n -> ( ( X cyclShift 0 ) = X <-> ( X cyclShift n ) = X ) ) | 
						
							| 42 | 41 | eqcoms |  |-  ( n = 0 -> ( ( X cyclShift 0 ) = X <-> ( X cyclShift n ) = X ) ) | 
						
							| 43 |  | eqcom |  |-  ( ( X cyclShift n ) = X <-> X = ( X cyclShift n ) ) | 
						
							| 44 | 42 43 | bitrdi |  |-  ( n = 0 -> ( ( X cyclShift 0 ) = X <-> X = ( X cyclShift n ) ) ) | 
						
							| 45 | 44 | adantl |  |-  ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ n = 0 ) -> ( ( X cyclShift 0 ) = X <-> X = ( X cyclShift n ) ) ) | 
						
							| 46 | 45 | biimpd |  |-  ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ n = 0 ) -> ( ( X cyclShift 0 ) = X -> X = ( X cyclShift n ) ) ) | 
						
							| 47 | 39 46 | rspcimedv |  |-  ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) -> ( ( X cyclShift 0 ) = X -> E. n e. ( 0 ..^ N ) X = ( X cyclShift n ) ) ) | 
						
							| 48 | 32 47 | mpd |  |-  ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) -> E. n e. ( 0 ..^ N ) X = ( X cyclShift n ) ) | 
						
							| 49 | 48 | adantr |  |-  ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) -> E. n e. ( 0 ..^ N ) X = ( X cyclShift n ) ) | 
						
							| 50 | 49 | adantr |  |-  ( ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) /\ y = X ) -> E. n e. ( 0 ..^ N ) X = ( X cyclShift n ) ) | 
						
							| 51 |  | eqeq1 |  |-  ( y = X -> ( y = ( X cyclShift n ) <-> X = ( X cyclShift n ) ) ) | 
						
							| 52 | 51 | adantl |  |-  ( ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) /\ y = X ) -> ( y = ( X cyclShift n ) <-> X = ( X cyclShift n ) ) ) | 
						
							| 53 | 52 | rexbidv |  |-  ( ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) /\ y = X ) -> ( E. n e. ( 0 ..^ N ) y = ( X cyclShift n ) <-> E. n e. ( 0 ..^ N ) X = ( X cyclShift n ) ) ) | 
						
							| 54 | 50 53 | mpbird |  |-  ( ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) /\ y = X ) -> E. n e. ( 0 ..^ N ) y = ( X cyclShift n ) ) | 
						
							| 55 | 54 | ex |  |-  ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) -> ( y = X -> E. n e. ( 0 ..^ N ) y = ( X cyclShift n ) ) ) | 
						
							| 56 | 30 55 | sylbid |  |-  ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) -> ( y = ( X cyclShift N ) -> E. n e. ( 0 ..^ N ) y = ( X cyclShift n ) ) ) | 
						
							| 57 | 23 56 | sylbid |  |-  ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) -> ( E. n e. { N } y = ( X cyclShift n ) -> E. n e. ( 0 ..^ N ) y = ( X cyclShift n ) ) ) | 
						
							| 58 | 57 | com12 |  |-  ( E. n e. { N } y = ( X cyclShift n ) -> ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) -> E. n e. ( 0 ..^ N ) y = ( X cyclShift n ) ) ) | 
						
							| 59 | 58 | jao1i |  |-  ( ( E. n e. ( 0 ..^ N ) y = ( X cyclShift n ) \/ E. n e. { N } y = ( X cyclShift n ) ) -> ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) -> E. n e. ( 0 ..^ N ) y = ( X cyclShift n ) ) ) | 
						
							| 60 | 59 | com12 |  |-  ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) -> ( ( E. n e. ( 0 ..^ N ) y = ( X cyclShift n ) \/ E. n e. { N } y = ( X cyclShift n ) ) -> E. n e. ( 0 ..^ N ) y = ( X cyclShift n ) ) ) | 
						
							| 61 | 14 60 | sylbid |  |-  ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) -> ( E. n e. ( 0 ... N ) y = ( X cyclShift n ) -> E. n e. ( 0 ..^ N ) y = ( X cyclShift n ) ) ) | 
						
							| 62 |  | fzossfz |  |-  ( 0 ..^ N ) C_ ( 0 ... N ) | 
						
							| 63 |  | ssrexv |  |-  ( ( 0 ..^ N ) C_ ( 0 ... N ) -> ( E. n e. ( 0 ..^ N ) y = ( X cyclShift n ) -> E. n e. ( 0 ... N ) y = ( X cyclShift n ) ) ) | 
						
							| 64 | 62 63 | mp1i |  |-  ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) -> ( E. n e. ( 0 ..^ N ) y = ( X cyclShift n ) -> E. n e. ( 0 ... N ) y = ( X cyclShift n ) ) ) | 
						
							| 65 | 61 64 | impbid |  |-  ( ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) /\ y e. Word V ) -> ( E. n e. ( 0 ... N ) y = ( X cyclShift n ) <-> E. n e. ( 0 ..^ N ) y = ( X cyclShift n ) ) ) | 
						
							| 66 | 65 | rabbidva |  |-  ( ( X e. Word V /\ X =/= (/) /\ N = ( # ` X ) ) -> { y e. Word V | E. n e. ( 0 ... N ) y = ( X cyclShift n ) } = { y e. Word V | E. n e. ( 0 ..^ N ) y = ( X cyclShift n ) } ) |