| Step |
Hyp |
Ref |
Expression |
| 1 |
|
swrdval2 |
|- ( ( S e. Word A /\ M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) -> ( S substr <. M , N >. ) = ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) ) |
| 2 |
1
|
3expb |
|- ( ( S e. Word A /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) ) -> ( S substr <. M , N >. ) = ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) ) |
| 3 |
|
wrdf |
|- ( S e. Word A -> S : ( 0 ..^ ( # ` S ) ) --> A ) |
| 4 |
3
|
ffund |
|- ( S e. Word A -> Fun S ) |
| 5 |
4
|
adantr |
|- ( ( S e. Word A /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) ) -> Fun S ) |
| 6 |
5
|
adantr |
|- ( ( ( S e. Word A /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) ) /\ x e. ( 0 ..^ ( N - M ) ) ) -> Fun S ) |
| 7 |
|
wrddm |
|- ( S e. Word A -> dom S = ( 0 ..^ ( # ` S ) ) ) |
| 8 |
|
elfzodifsumelfzo |
|- ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) -> ( x e. ( 0 ..^ ( N - M ) ) -> ( x + M ) e. ( 0 ..^ ( # ` S ) ) ) ) |
| 9 |
8
|
imp |
|- ( ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) /\ x e. ( 0 ..^ ( N - M ) ) ) -> ( x + M ) e. ( 0 ..^ ( # ` S ) ) ) |
| 10 |
9
|
adantl |
|- ( ( dom S = ( 0 ..^ ( # ` S ) ) /\ ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) /\ x e. ( 0 ..^ ( N - M ) ) ) ) -> ( x + M ) e. ( 0 ..^ ( # ` S ) ) ) |
| 11 |
|
eleq2 |
|- ( dom S = ( 0 ..^ ( # ` S ) ) -> ( ( x + M ) e. dom S <-> ( x + M ) e. ( 0 ..^ ( # ` S ) ) ) ) |
| 12 |
11
|
adantr |
|- ( ( dom S = ( 0 ..^ ( # ` S ) ) /\ ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) /\ x e. ( 0 ..^ ( N - M ) ) ) ) -> ( ( x + M ) e. dom S <-> ( x + M ) e. ( 0 ..^ ( # ` S ) ) ) ) |
| 13 |
10 12
|
mpbird |
|- ( ( dom S = ( 0 ..^ ( # ` S ) ) /\ ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) /\ x e. ( 0 ..^ ( N - M ) ) ) ) -> ( x + M ) e. dom S ) |
| 14 |
13
|
exp32 |
|- ( dom S = ( 0 ..^ ( # ` S ) ) -> ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) -> ( x e. ( 0 ..^ ( N - M ) ) -> ( x + M ) e. dom S ) ) ) |
| 15 |
7 14
|
syl |
|- ( S e. Word A -> ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) -> ( x e. ( 0 ..^ ( N - M ) ) -> ( x + M ) e. dom S ) ) ) |
| 16 |
15
|
imp31 |
|- ( ( ( S e. Word A /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) ) /\ x e. ( 0 ..^ ( N - M ) ) ) -> ( x + M ) e. dom S ) |
| 17 |
|
simpr |
|- ( ( ( S e. Word A /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) ) /\ x e. ( 0 ..^ ( N - M ) ) ) -> x e. ( 0 ..^ ( N - M ) ) ) |
| 18 |
|
elfzelz |
|- ( N e. ( 0 ... ( # ` S ) ) -> N e. ZZ ) |
| 19 |
18
|
adantl |
|- ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) -> N e. ZZ ) |
| 20 |
19
|
adantl |
|- ( ( S e. Word A /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) ) -> N e. ZZ ) |
| 21 |
20
|
adantr |
|- ( ( ( S e. Word A /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) ) /\ x e. ( 0 ..^ ( N - M ) ) ) -> N e. ZZ ) |
| 22 |
|
elfzelz |
|- ( M e. ( 0 ... N ) -> M e. ZZ ) |
| 23 |
22
|
ad2antrl |
|- ( ( S e. Word A /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) ) -> M e. ZZ ) |
| 24 |
23
|
adantr |
|- ( ( ( S e. Word A /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) ) /\ x e. ( 0 ..^ ( N - M ) ) ) -> M e. ZZ ) |
| 25 |
|
fzoaddel2 |
|- ( ( x e. ( 0 ..^ ( N - M ) ) /\ N e. ZZ /\ M e. ZZ ) -> ( x + M ) e. ( M ..^ N ) ) |
| 26 |
17 21 24 25
|
syl3anc |
|- ( ( ( S e. Word A /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) ) /\ x e. ( 0 ..^ ( N - M ) ) ) -> ( x + M ) e. ( M ..^ N ) ) |
| 27 |
|
funfvima |
|- ( ( Fun S /\ ( x + M ) e. dom S ) -> ( ( x + M ) e. ( M ..^ N ) -> ( S ` ( x + M ) ) e. ( S " ( M ..^ N ) ) ) ) |
| 28 |
27
|
imp |
|- ( ( ( Fun S /\ ( x + M ) e. dom S ) /\ ( x + M ) e. ( M ..^ N ) ) -> ( S ` ( x + M ) ) e. ( S " ( M ..^ N ) ) ) |
| 29 |
6 16 26 28
|
syl21anc |
|- ( ( ( S e. Word A /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) ) /\ x e. ( 0 ..^ ( N - M ) ) ) -> ( S ` ( x + M ) ) e. ( S " ( M ..^ N ) ) ) |
| 30 |
29
|
fmpttd |
|- ( ( S e. Word A /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) ) -> ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) : ( 0 ..^ ( N - M ) ) --> ( S " ( M ..^ N ) ) ) |
| 31 |
|
fvex |
|- ( S ` ( x + M ) ) e. _V |
| 32 |
|
eqid |
|- ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) = ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) |
| 33 |
31 32
|
fnmpti |
|- ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) Fn ( 0 ..^ ( N - M ) ) |
| 34 |
|
hashfn |
|- ( ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) Fn ( 0 ..^ ( N - M ) ) -> ( # ` ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) ) = ( # ` ( 0 ..^ ( N - M ) ) ) ) |
| 35 |
33 34
|
mp1i |
|- ( M e. ( 0 ... N ) -> ( # ` ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) ) = ( # ` ( 0 ..^ ( N - M ) ) ) ) |
| 36 |
|
fznn0sub |
|- ( M e. ( 0 ... N ) -> ( N - M ) e. NN0 ) |
| 37 |
|
hashfzo0 |
|- ( ( N - M ) e. NN0 -> ( # ` ( 0 ..^ ( N - M ) ) ) = ( N - M ) ) |
| 38 |
36 37
|
syl |
|- ( M e. ( 0 ... N ) -> ( # ` ( 0 ..^ ( N - M ) ) ) = ( N - M ) ) |
| 39 |
35 38
|
eqtrd |
|- ( M e. ( 0 ... N ) -> ( # ` ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) ) = ( N - M ) ) |
| 40 |
39
|
oveq2d |
|- ( M e. ( 0 ... N ) -> ( 0 ..^ ( # ` ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) ) ) = ( 0 ..^ ( N - M ) ) ) |
| 41 |
40
|
feq2d |
|- ( M e. ( 0 ... N ) -> ( ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) : ( 0 ..^ ( # ` ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) ) ) --> ( S " ( M ..^ N ) ) <-> ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) : ( 0 ..^ ( N - M ) ) --> ( S " ( M ..^ N ) ) ) ) |
| 42 |
41
|
ad2antrl |
|- ( ( S e. Word A /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) ) -> ( ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) : ( 0 ..^ ( # ` ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) ) ) --> ( S " ( M ..^ N ) ) <-> ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) : ( 0 ..^ ( N - M ) ) --> ( S " ( M ..^ N ) ) ) ) |
| 43 |
30 42
|
mpbird |
|- ( ( S e. Word A /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) ) -> ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) : ( 0 ..^ ( # ` ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) ) ) --> ( S " ( M ..^ N ) ) ) |
| 44 |
|
iswrdb |
|- ( ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) e. Word ( S " ( M ..^ N ) ) <-> ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) : ( 0 ..^ ( # ` ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) ) ) --> ( S " ( M ..^ N ) ) ) |
| 45 |
43 44
|
sylibr |
|- ( ( S e. Word A /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) ) -> ( x e. ( 0 ..^ ( N - M ) ) |-> ( S ` ( x + M ) ) ) e. Word ( S " ( M ..^ N ) ) ) |
| 46 |
2 45
|
eqeltrd |
|- ( ( S e. Word A /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) ) -> ( S substr <. M , N >. ) e. Word ( S " ( M ..^ N ) ) ) |
| 47 |
46
|
expcom |
|- ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) -> ( S e. Word A -> ( S substr <. M , N >. ) e. Word ( S " ( M ..^ N ) ) ) ) |
| 48 |
|
swrdnd0 |
|- ( S e. Word A -> ( -. ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) -> ( S substr <. M , N >. ) = (/) ) ) |
| 49 |
|
wrd0 |
|- (/) e. Word ( S " ( M ..^ N ) ) |
| 50 |
|
eleq1 |
|- ( ( S substr <. M , N >. ) = (/) -> ( ( S substr <. M , N >. ) e. Word ( S " ( M ..^ N ) ) <-> (/) e. Word ( S " ( M ..^ N ) ) ) ) |
| 51 |
49 50
|
mpbiri |
|- ( ( S substr <. M , N >. ) = (/) -> ( S substr <. M , N >. ) e. Word ( S " ( M ..^ N ) ) ) |
| 52 |
48 51
|
syl6com |
|- ( -. ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( # ` S ) ) ) -> ( S e. Word A -> ( S substr <. M , N >. ) e. Word ( S " ( M ..^ N ) ) ) ) |
| 53 |
47 52
|
pm2.61i |
|- ( S e. Word A -> ( S substr <. M , N >. ) e. Word ( S " ( M ..^ N ) ) ) |