Step |
Hyp |
Ref |
Expression |
1 |
|
simpl |
|- ( ( W e. Word A /\ W =/= (/) ) -> W e. Word A ) |
2 |
|
wrdfin |
|- ( W e. Word A -> W e. Fin ) |
3 |
|
1elfz0hash |
|- ( ( W e. Fin /\ W =/= (/) ) -> 1 e. ( 0 ... ( # ` W ) ) ) |
4 |
2 3
|
sylan |
|- ( ( W e. Word A /\ W =/= (/) ) -> 1 e. ( 0 ... ( # ` W ) ) ) |
5 |
|
lennncl |
|- ( ( W e. Word A /\ W =/= (/) ) -> ( # ` W ) e. NN ) |
6 |
5
|
nnnn0d |
|- ( ( W e. Word A /\ W =/= (/) ) -> ( # ` W ) e. NN0 ) |
7 |
|
eluzfz2 |
|- ( ( # ` W ) e. ( ZZ>= ` 0 ) -> ( # ` W ) e. ( 0 ... ( # ` W ) ) ) |
8 |
|
nn0uz |
|- NN0 = ( ZZ>= ` 0 ) |
9 |
7 8
|
eleq2s |
|- ( ( # ` W ) e. NN0 -> ( # ` W ) e. ( 0 ... ( # ` W ) ) ) |
10 |
6 9
|
syl |
|- ( ( W e. Word A /\ W =/= (/) ) -> ( # ` W ) e. ( 0 ... ( # ` W ) ) ) |
11 |
|
ccatpfx |
|- ( ( W e. Word A /\ 1 e. ( 0 ... ( # ` W ) ) /\ ( # ` W ) e. ( 0 ... ( # ` W ) ) ) -> ( ( W prefix 1 ) ++ ( W substr <. 1 , ( # ` W ) >. ) ) = ( W prefix ( # ` W ) ) ) |
12 |
1 4 10 11
|
syl3anc |
|- ( ( W e. Word A /\ W =/= (/) ) -> ( ( W prefix 1 ) ++ ( W substr <. 1 , ( # ` W ) >. ) ) = ( W prefix ( # ` W ) ) ) |
13 |
|
pfx1 |
|- ( ( W e. Word A /\ W =/= (/) ) -> ( W prefix 1 ) = <" ( W ` 0 ) "> ) |
14 |
13
|
oveq1d |
|- ( ( W e. Word A /\ W =/= (/) ) -> ( ( W prefix 1 ) ++ ( W substr <. 1 , ( # ` W ) >. ) ) = ( <" ( W ` 0 ) "> ++ ( W substr <. 1 , ( # ` W ) >. ) ) ) |
15 |
|
pfxid |
|- ( W e. Word A -> ( W prefix ( # ` W ) ) = W ) |
16 |
15
|
adantr |
|- ( ( W e. Word A /\ W =/= (/) ) -> ( W prefix ( # ` W ) ) = W ) |
17 |
12 14 16
|
3eqtr3rd |
|- ( ( W e. Word A /\ W =/= (/) ) -> W = ( <" ( W ` 0 ) "> ++ ( W substr <. 1 , ( # ` W ) >. ) ) ) |