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