| Step |
Hyp |
Ref |
Expression |
| 1 |
|
wrdpmtrlast.1 |
|- J = ( 0 ..^ ( # ` W ) ) |
| 2 |
|
wrdpmtrlast.2 |
|- ( ph -> I e. J ) |
| 3 |
|
wrdpmtrlast.3 |
|- ( ph -> W e. Word S ) |
| 4 |
|
wrdpmtrlast.4 |
|- U = ( ( W o. s ) prefix ( ( # ` W ) - 1 ) ) |
| 5 |
1 2
|
fzo0pmtrlast |
|- ( ph -> E. s ( s : J -1-1-onto-> J /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) ) |
| 6 |
|
simplr |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> s : J -1-1-onto-> J ) |
| 7 |
|
f1of |
|- ( s : J -1-1-onto-> J -> s : J --> J ) |
| 8 |
1
|
feq2i |
|- ( s : J --> J <-> s : ( 0 ..^ ( # ` W ) ) --> J ) |
| 9 |
7 8
|
sylib |
|- ( s : J -1-1-onto-> J -> s : ( 0 ..^ ( # ` W ) ) --> J ) |
| 10 |
6 9
|
syl |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> s : ( 0 ..^ ( # ` W ) ) --> J ) |
| 11 |
|
iswrdi |
|- ( s : ( 0 ..^ ( # ` W ) ) --> J -> s e. Word J ) |
| 12 |
10 11
|
syl |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> s e. Word J ) |
| 13 |
|
eqidd |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( # ` W ) = ( # ` W ) ) |
| 14 |
3
|
ad2antrr |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> W e. Word S ) |
| 15 |
13 14
|
wrdfd |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> W : ( 0 ..^ ( # ` W ) ) --> S ) |
| 16 |
1
|
feq2i |
|- ( W : J --> S <-> W : ( 0 ..^ ( # ` W ) ) --> S ) |
| 17 |
15 16
|
sylibr |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> W : J --> S ) |
| 18 |
|
lenco |
|- ( ( s e. Word J /\ W : J --> S ) -> ( # ` ( W o. s ) ) = ( # ` s ) ) |
| 19 |
12 17 18
|
syl2anc |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( # ` ( W o. s ) ) = ( # ` s ) ) |
| 20 |
10
|
ffund |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> Fun s ) |
| 21 |
|
hashfundm |
|- ( ( s e. Word J /\ Fun s ) -> ( # ` s ) = ( # ` dom s ) ) |
| 22 |
12 20 21
|
syl2anc |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( # ` s ) = ( # ` dom s ) ) |
| 23 |
10
|
fdmd |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> dom s = ( 0 ..^ ( # ` W ) ) ) |
| 24 |
23
|
fveq2d |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( # ` dom s ) = ( # ` ( 0 ..^ ( # ` W ) ) ) ) |
| 25 |
2 1
|
eleqtrdi |
|- ( ph -> I e. ( 0 ..^ ( # ` W ) ) ) |
| 26 |
25
|
ad2antrr |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> I e. ( 0 ..^ ( # ` W ) ) ) |
| 27 |
|
elfzo0 |
|- ( I e. ( 0 ..^ ( # ` W ) ) <-> ( I e. NN0 /\ ( # ` W ) e. NN /\ I < ( # ` W ) ) ) |
| 28 |
27
|
simp2bi |
|- ( I e. ( 0 ..^ ( # ` W ) ) -> ( # ` W ) e. NN ) |
| 29 |
26 28
|
syl |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( # ` W ) e. NN ) |
| 30 |
29
|
nnnn0d |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( # ` W ) e. NN0 ) |
| 31 |
|
hashfzo0 |
|- ( ( # ` W ) e. NN0 -> ( # ` ( 0 ..^ ( # ` W ) ) ) = ( # ` W ) ) |
| 32 |
30 31
|
syl |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( # ` ( 0 ..^ ( # ` W ) ) ) = ( # ` W ) ) |
| 33 |
22 24 32
|
3eqtrd |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( # ` s ) = ( # ` W ) ) |
| 34 |
19 33
|
eqtr2d |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( # ` W ) = ( # ` ( W o. s ) ) ) |
| 35 |
34
|
oveq1d |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( ( # ` W ) - 1 ) = ( ( # ` ( W o. s ) ) - 1 ) ) |
| 36 |
35
|
oveq2d |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( ( W o. s ) prefix ( ( # ` W ) - 1 ) ) = ( ( W o. s ) prefix ( ( # ` ( W o. s ) ) - 1 ) ) ) |
| 37 |
4 36
|
eqtrid |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> U = ( ( W o. s ) prefix ( ( # ` ( W o. s ) ) - 1 ) ) ) |
| 38 |
26
|
ne0d |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( 0 ..^ ( # ` W ) ) =/= (/) ) |
| 39 |
|
f0dom0 |
|- ( s : ( 0 ..^ ( # ` W ) ) --> J -> ( ( 0 ..^ ( # ` W ) ) = (/) <-> s = (/) ) ) |
| 40 |
39
|
necon3bid |
|- ( s : ( 0 ..^ ( # ` W ) ) --> J -> ( ( 0 ..^ ( # ` W ) ) =/= (/) <-> s =/= (/) ) ) |
| 41 |
40
|
biimpa |
|- ( ( s : ( 0 ..^ ( # ` W ) ) --> J /\ ( 0 ..^ ( # ` W ) ) =/= (/) ) -> s =/= (/) ) |
| 42 |
10 38 41
|
syl2anc |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> s =/= (/) ) |
| 43 |
|
lswco |
|- ( ( s e. Word J /\ s =/= (/) /\ W : J --> S ) -> ( lastS ` ( W o. s ) ) = ( W ` ( lastS ` s ) ) ) |
| 44 |
12 42 17 43
|
syl3anc |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( lastS ` ( W o. s ) ) = ( W ` ( lastS ` s ) ) ) |
| 45 |
|
lsw |
|- ( s e. Word J -> ( lastS ` s ) = ( s ` ( ( # ` s ) - 1 ) ) ) |
| 46 |
12 45
|
syl |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( lastS ` s ) = ( s ` ( ( # ` s ) - 1 ) ) ) |
| 47 |
33
|
oveq1d |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( ( # ` s ) - 1 ) = ( ( # ` W ) - 1 ) ) |
| 48 |
47
|
fveq2d |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( s ` ( ( # ` s ) - 1 ) ) = ( s ` ( ( # ` W ) - 1 ) ) ) |
| 49 |
|
simpr |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( s ` ( ( # ` W ) - 1 ) ) = I ) |
| 50 |
46 48 49
|
3eqtrd |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( lastS ` s ) = I ) |
| 51 |
50
|
fveq2d |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( W ` ( lastS ` s ) ) = ( W ` I ) ) |
| 52 |
44 51
|
eqtr2d |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( W ` I ) = ( lastS ` ( W o. s ) ) ) |
| 53 |
52
|
s1eqd |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> <" ( W ` I ) "> = <" ( lastS ` ( W o. s ) ) "> ) |
| 54 |
37 53
|
oveq12d |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( U ++ <" ( W ` I ) "> ) = ( ( ( W o. s ) prefix ( ( # ` ( W o. s ) ) - 1 ) ) ++ <" ( lastS ` ( W o. s ) ) "> ) ) |
| 55 |
1 6 14
|
wrdpmcl |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( W o. s ) e. Word S ) |
| 56 |
|
fzo0end |
|- ( ( # ` W ) e. NN -> ( ( # ` W ) - 1 ) e. ( 0 ..^ ( # ` W ) ) ) |
| 57 |
29 56
|
syl |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( ( # ` W ) - 1 ) e. ( 0 ..^ ( # ` W ) ) ) |
| 58 |
57 1
|
eleqtrrdi |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( ( # ` W ) - 1 ) e. J ) |
| 59 |
17
|
fdmd |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> dom W = J ) |
| 60 |
58 59
|
eleqtrrd |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( ( # ` W ) - 1 ) e. dom W ) |
| 61 |
|
dff1o5 |
|- ( s : J -1-1-onto-> J <-> ( s : J -1-1-> J /\ ran s = J ) ) |
| 62 |
61
|
simprbi |
|- ( s : J -1-1-onto-> J -> ran s = J ) |
| 63 |
6 62
|
syl |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ran s = J ) |
| 64 |
58 63
|
eleqtrrd |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( ( # ` W ) - 1 ) e. ran s ) |
| 65 |
60 64
|
elind |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( ( # ` W ) - 1 ) e. ( dom W i^i ran s ) ) |
| 66 |
65
|
ne0d |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( dom W i^i ran s ) =/= (/) ) |
| 67 |
|
coeq0 |
|- ( ( W o. s ) = (/) <-> ( dom W i^i ran s ) = (/) ) |
| 68 |
67
|
necon3bii |
|- ( ( W o. s ) =/= (/) <-> ( dom W i^i ran s ) =/= (/) ) |
| 69 |
66 68
|
sylibr |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( W o. s ) =/= (/) ) |
| 70 |
|
pfxlswccat |
|- ( ( ( W o. s ) e. Word S /\ ( W o. s ) =/= (/) ) -> ( ( ( W o. s ) prefix ( ( # ` ( W o. s ) ) - 1 ) ) ++ <" ( lastS ` ( W o. s ) ) "> ) = ( W o. s ) ) |
| 71 |
55 69 70
|
syl2anc |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( ( ( W o. s ) prefix ( ( # ` ( W o. s ) ) - 1 ) ) ++ <" ( lastS ` ( W o. s ) ) "> ) = ( W o. s ) ) |
| 72 |
54 71
|
eqtr2d |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( W o. s ) = ( U ++ <" ( W ` I ) "> ) ) |
| 73 |
6 72
|
jca |
|- ( ( ( ph /\ s : J -1-1-onto-> J ) /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( s : J -1-1-onto-> J /\ ( W o. s ) = ( U ++ <" ( W ` I ) "> ) ) ) |
| 74 |
73
|
expl |
|- ( ph -> ( ( s : J -1-1-onto-> J /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> ( s : J -1-1-onto-> J /\ ( W o. s ) = ( U ++ <" ( W ` I ) "> ) ) ) ) |
| 75 |
74
|
eximdv |
|- ( ph -> ( E. s ( s : J -1-1-onto-> J /\ ( s ` ( ( # ` W ) - 1 ) ) = I ) -> E. s ( s : J -1-1-onto-> J /\ ( W o. s ) = ( U ++ <" ( W ` I ) "> ) ) ) ) |
| 76 |
5 75
|
mpd |
|- ( ph -> E. s ( s : J -1-1-onto-> J /\ ( W o. s ) = ( U ++ <" ( W ` I ) "> ) ) ) |