| Step | Hyp | Ref | Expression | 
						
							| 1 |  | hashneq0 |  |-  ( W e. Word V -> ( 0 < ( # ` W ) <-> W =/= (/) ) ) | 
						
							| 2 |  | lencl |  |-  ( W e. Word V -> ( # ` W ) e. NN0 ) | 
						
							| 3 |  | nn0z |  |-  ( ( # ` W ) e. NN0 -> ( # ` W ) e. ZZ ) | 
						
							| 4 |  | elnnz |  |-  ( ( # ` W ) e. NN <-> ( ( # ` W ) e. ZZ /\ 0 < ( # ` W ) ) ) | 
						
							| 5 |  | fzo0end |  |-  ( ( # ` W ) e. NN -> ( ( # ` W ) - 1 ) e. ( 0 ..^ ( # ` W ) ) ) | 
						
							| 6 | 4 5 | sylbir |  |-  ( ( ( # ` W ) e. ZZ /\ 0 < ( # ` W ) ) -> ( ( # ` W ) - 1 ) e. ( 0 ..^ ( # ` W ) ) ) | 
						
							| 7 | 6 | ex |  |-  ( ( # ` W ) e. ZZ -> ( 0 < ( # ` W ) -> ( ( # ` W ) - 1 ) e. ( 0 ..^ ( # ` W ) ) ) ) | 
						
							| 8 | 2 3 7 | 3syl |  |-  ( W e. Word V -> ( 0 < ( # ` W ) -> ( ( # ` W ) - 1 ) e. ( 0 ..^ ( # ` W ) ) ) ) | 
						
							| 9 | 1 8 | sylbird |  |-  ( W e. Word V -> ( W =/= (/) -> ( ( # ` W ) - 1 ) e. ( 0 ..^ ( # ` W ) ) ) ) | 
						
							| 10 | 9 | imp |  |-  ( ( W e. Word V /\ W =/= (/) ) -> ( ( # ` W ) - 1 ) e. ( 0 ..^ ( # ` W ) ) ) | 
						
							| 11 |  | swrds1 |  |-  ( ( W e. Word V /\ ( ( # ` W ) - 1 ) e. ( 0 ..^ ( # ` W ) ) ) -> ( W substr <. ( ( # ` W ) - 1 ) , ( ( ( # ` W ) - 1 ) + 1 ) >. ) = <" ( W ` ( ( # ` W ) - 1 ) ) "> ) | 
						
							| 12 | 10 11 | syldan |  |-  ( ( W e. Word V /\ W =/= (/) ) -> ( W substr <. ( ( # ` W ) - 1 ) , ( ( ( # ` W ) - 1 ) + 1 ) >. ) = <" ( W ` ( ( # ` W ) - 1 ) ) "> ) | 
						
							| 13 |  | nn0cn |  |-  ( ( # ` W ) e. NN0 -> ( # ` W ) e. CC ) | 
						
							| 14 |  | ax-1cn |  |-  1 e. CC | 
						
							| 15 | 13 14 | jctir |  |-  ( ( # ` W ) e. NN0 -> ( ( # ` W ) e. CC /\ 1 e. CC ) ) | 
						
							| 16 |  | npcan |  |-  ( ( ( # ` W ) e. CC /\ 1 e. CC ) -> ( ( ( # ` W ) - 1 ) + 1 ) = ( # ` W ) ) | 
						
							| 17 | 16 | eqcomd |  |-  ( ( ( # ` W ) e. CC /\ 1 e. CC ) -> ( # ` W ) = ( ( ( # ` W ) - 1 ) + 1 ) ) | 
						
							| 18 | 2 15 17 | 3syl |  |-  ( W e. Word V -> ( # ` W ) = ( ( ( # ` W ) - 1 ) + 1 ) ) | 
						
							| 19 | 18 | adantr |  |-  ( ( W e. Word V /\ W =/= (/) ) -> ( # ` W ) = ( ( ( # ` W ) - 1 ) + 1 ) ) | 
						
							| 20 | 19 | opeq2d |  |-  ( ( W e. Word V /\ W =/= (/) ) -> <. ( ( # ` W ) - 1 ) , ( # ` W ) >. = <. ( ( # ` W ) - 1 ) , ( ( ( # ` W ) - 1 ) + 1 ) >. ) | 
						
							| 21 | 20 | oveq2d |  |-  ( ( W e. Word V /\ W =/= (/) ) -> ( W substr <. ( ( # ` W ) - 1 ) , ( # ` W ) >. ) = ( W substr <. ( ( # ` W ) - 1 ) , ( ( ( # ` W ) - 1 ) + 1 ) >. ) ) | 
						
							| 22 |  | lsw |  |-  ( W e. Word V -> ( lastS ` W ) = ( W ` ( ( # ` W ) - 1 ) ) ) | 
						
							| 23 | 22 | adantr |  |-  ( ( W e. Word V /\ W =/= (/) ) -> ( lastS ` W ) = ( W ` ( ( # ` W ) - 1 ) ) ) | 
						
							| 24 | 23 | s1eqd |  |-  ( ( W e. Word V /\ W =/= (/) ) -> <" ( lastS ` W ) "> = <" ( W ` ( ( # ` W ) - 1 ) ) "> ) | 
						
							| 25 | 12 21 24 | 3eqtr4d |  |-  ( ( W e. Word V /\ W =/= (/) ) -> ( W substr <. ( ( # ` W ) - 1 ) , ( # ` W ) >. ) = <" ( lastS ` W ) "> ) |