Step |
Hyp |
Ref |
Expression |
1 |
|
swrdccatin2.l |
|- L = ( # ` A ) |
2 |
1
|
pfxccat3 |
|- ( ( A e. Word V /\ B e. Word V ) -> ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( L + ( # ` B ) ) ) ) -> ( ( A ++ B ) substr <. M , N >. ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) ) |
3 |
2
|
imp |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( L + ( # ` B ) ) ) ) ) -> ( ( A ++ B ) substr <. M , N >. ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) |
4 |
|
lencl |
|- ( A e. Word V -> ( # ` A ) e. NN0 ) |
5 |
4
|
adantr |
|- ( ( A e. Word V /\ B e. Word V ) -> ( # ` A ) e. NN0 ) |
6 |
1
|
eqcomi |
|- ( # ` A ) = L |
7 |
6
|
eleq1i |
|- ( ( # ` A ) e. NN0 <-> L e. NN0 ) |
8 |
|
elfz2nn0 |
|- ( M e. ( 0 ... N ) <-> ( M e. NN0 /\ N e. NN0 /\ M <_ N ) ) |
9 |
|
iftrue |
|- ( N <_ L -> if ( N <_ L , N , L ) = N ) |
10 |
9
|
adantl |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> if ( N <_ L , N , L ) = N ) |
11 |
10
|
opeq2d |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> <. M , if ( N <_ L , N , L ) >. = <. M , N >. ) |
12 |
11
|
oveq2d |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( A substr <. M , if ( N <_ L , N , L ) >. ) = ( A substr <. M , N >. ) ) |
13 |
|
iftrue |
|- ( 0 <_ ( M - L ) -> if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) = ( M - L ) ) |
14 |
13
|
opeq1d |
|- ( 0 <_ ( M - L ) -> <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. = <. ( M - L ) , ( N - L ) >. ) |
15 |
14
|
oveq2d |
|- ( 0 <_ ( M - L ) -> ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) = ( B substr <. ( M - L ) , ( N - L ) >. ) ) |
16 |
15
|
adantr |
|- ( ( 0 <_ ( M - L ) /\ ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) ) -> ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) = ( B substr <. ( M - L ) , ( N - L ) >. ) ) |
17 |
|
simpr |
|- ( ( A e. Word V /\ B e. Word V ) -> B e. Word V ) |
18 |
|
nn0z |
|- ( L e. NN0 -> L e. ZZ ) |
19 |
|
nn0z |
|- ( M e. NN0 -> M e. ZZ ) |
20 |
19
|
adantr |
|- ( ( M e. NN0 /\ N e. NN0 ) -> M e. ZZ ) |
21 |
|
zsubcl |
|- ( ( M e. ZZ /\ L e. ZZ ) -> ( M - L ) e. ZZ ) |
22 |
20 21
|
sylan |
|- ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. ZZ ) -> ( M - L ) e. ZZ ) |
23 |
|
nn0z |
|- ( N e. NN0 -> N e. ZZ ) |
24 |
23
|
adantl |
|- ( ( M e. NN0 /\ N e. NN0 ) -> N e. ZZ ) |
25 |
|
zsubcl |
|- ( ( N e. ZZ /\ L e. ZZ ) -> ( N - L ) e. ZZ ) |
26 |
24 25
|
sylan |
|- ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. ZZ ) -> ( N - L ) e. ZZ ) |
27 |
22 26
|
jca |
|- ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. ZZ ) -> ( ( M - L ) e. ZZ /\ ( N - L ) e. ZZ ) ) |
28 |
18 27
|
sylan2 |
|- ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( ( M - L ) e. ZZ /\ ( N - L ) e. ZZ ) ) |
29 |
17 28
|
anim12i |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( B e. Word V /\ ( ( M - L ) e. ZZ /\ ( N - L ) e. ZZ ) ) ) |
30 |
|
3anass |
|- ( ( B e. Word V /\ ( M - L ) e. ZZ /\ ( N - L ) e. ZZ ) <-> ( B e. Word V /\ ( ( M - L ) e. ZZ /\ ( N - L ) e. ZZ ) ) ) |
31 |
29 30
|
sylibr |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( B e. Word V /\ ( M - L ) e. ZZ /\ ( N - L ) e. ZZ ) ) |
32 |
31
|
ad2antrl |
|- ( ( 0 <_ ( M - L ) /\ ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) ) -> ( B e. Word V /\ ( M - L ) e. ZZ /\ ( N - L ) e. ZZ ) ) |
33 |
|
nn0re |
|- ( M e. NN0 -> M e. RR ) |
34 |
|
nn0re |
|- ( N e. NN0 -> N e. RR ) |
35 |
33 34
|
anim12i |
|- ( ( M e. NN0 /\ N e. NN0 ) -> ( M e. RR /\ N e. RR ) ) |
36 |
|
nn0re |
|- ( L e. NN0 -> L e. RR ) |
37 |
|
subge0 |
|- ( ( M e. RR /\ L e. RR ) -> ( 0 <_ ( M - L ) <-> L <_ M ) ) |
38 |
37
|
adantlr |
|- ( ( ( M e. RR /\ N e. RR ) /\ L e. RR ) -> ( 0 <_ ( M - L ) <-> L <_ M ) ) |
39 |
|
simpr |
|- ( ( M e. RR /\ N e. RR ) -> N e. RR ) |
40 |
39
|
adantr |
|- ( ( ( M e. RR /\ N e. RR ) /\ L e. RR ) -> N e. RR ) |
41 |
|
simpr |
|- ( ( ( M e. RR /\ N e. RR ) /\ L e. RR ) -> L e. RR ) |
42 |
|
simpl |
|- ( ( M e. RR /\ N e. RR ) -> M e. RR ) |
43 |
42
|
adantr |
|- ( ( ( M e. RR /\ N e. RR ) /\ L e. RR ) -> M e. RR ) |
44 |
|
letr |
|- ( ( N e. RR /\ L e. RR /\ M e. RR ) -> ( ( N <_ L /\ L <_ M ) -> N <_ M ) ) |
45 |
40 41 43 44
|
syl3anc |
|- ( ( ( M e. RR /\ N e. RR ) /\ L e. RR ) -> ( ( N <_ L /\ L <_ M ) -> N <_ M ) ) |
46 |
45
|
expcomd |
|- ( ( ( M e. RR /\ N e. RR ) /\ L e. RR ) -> ( L <_ M -> ( N <_ L -> N <_ M ) ) ) |
47 |
38 46
|
sylbid |
|- ( ( ( M e. RR /\ N e. RR ) /\ L e. RR ) -> ( 0 <_ ( M - L ) -> ( N <_ L -> N <_ M ) ) ) |
48 |
47
|
com23 |
|- ( ( ( M e. RR /\ N e. RR ) /\ L e. RR ) -> ( N <_ L -> ( 0 <_ ( M - L ) -> N <_ M ) ) ) |
49 |
35 36 48
|
syl2an |
|- ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( N <_ L -> ( 0 <_ ( M - L ) -> N <_ M ) ) ) |
50 |
49
|
adantl |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( N <_ L -> ( 0 <_ ( M - L ) -> N <_ M ) ) ) |
51 |
50
|
imp |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( 0 <_ ( M - L ) -> N <_ M ) ) |
52 |
51
|
impcom |
|- ( ( 0 <_ ( M - L ) /\ ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) ) -> N <_ M ) |
53 |
34
|
adantl |
|- ( ( M e. NN0 /\ N e. NN0 ) -> N e. RR ) |
54 |
53
|
adantr |
|- ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> N e. RR ) |
55 |
33
|
adantr |
|- ( ( M e. NN0 /\ N e. NN0 ) -> M e. RR ) |
56 |
55
|
adantr |
|- ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> M e. RR ) |
57 |
36
|
adantl |
|- ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> L e. RR ) |
58 |
54 56 57
|
3jca |
|- ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( N e. RR /\ M e. RR /\ L e. RR ) ) |
59 |
58
|
adantl |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( N e. RR /\ M e. RR /\ L e. RR ) ) |
60 |
59
|
ad2antrl |
|- ( ( 0 <_ ( M - L ) /\ ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) ) -> ( N e. RR /\ M e. RR /\ L e. RR ) ) |
61 |
|
lesub1 |
|- ( ( N e. RR /\ M e. RR /\ L e. RR ) -> ( N <_ M <-> ( N - L ) <_ ( M - L ) ) ) |
62 |
60 61
|
syl |
|- ( ( 0 <_ ( M - L ) /\ ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) ) -> ( N <_ M <-> ( N - L ) <_ ( M - L ) ) ) |
63 |
52 62
|
mpbid |
|- ( ( 0 <_ ( M - L ) /\ ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) ) -> ( N - L ) <_ ( M - L ) ) |
64 |
|
swrdlend |
|- ( ( B e. Word V /\ ( M - L ) e. ZZ /\ ( N - L ) e. ZZ ) -> ( ( N - L ) <_ ( M - L ) -> ( B substr <. ( M - L ) , ( N - L ) >. ) = (/) ) ) |
65 |
32 63 64
|
sylc |
|- ( ( 0 <_ ( M - L ) /\ ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) ) -> ( B substr <. ( M - L ) , ( N - L ) >. ) = (/) ) |
66 |
16 65
|
eqtrd |
|- ( ( 0 <_ ( M - L ) /\ ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) ) -> ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) = (/) ) |
67 |
|
iffalse |
|- ( -. 0 <_ ( M - L ) -> if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) = 0 ) |
68 |
67
|
opeq1d |
|- ( -. 0 <_ ( M - L ) -> <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. = <. 0 , ( N - L ) >. ) |
69 |
68
|
oveq2d |
|- ( -. 0 <_ ( M - L ) -> ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) = ( B substr <. 0 , ( N - L ) >. ) ) |
70 |
17
|
adantr |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> B e. Word V ) |
71 |
70
|
adantr |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> B e. Word V ) |
72 |
|
0zd |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> 0 e. ZZ ) |
73 |
24 18 25
|
syl2an |
|- ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( N - L ) e. ZZ ) |
74 |
73
|
adantl |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( N - L ) e. ZZ ) |
75 |
74
|
adantr |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( N - L ) e. ZZ ) |
76 |
71 72 75
|
3jca |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( B e. Word V /\ 0 e. ZZ /\ ( N - L ) e. ZZ ) ) |
77 |
53 36
|
anim12i |
|- ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( N e. RR /\ L e. RR ) ) |
78 |
77
|
adantl |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( N e. RR /\ L e. RR ) ) |
79 |
|
suble0 |
|- ( ( N e. RR /\ L e. RR ) -> ( ( N - L ) <_ 0 <-> N <_ L ) ) |
80 |
78 79
|
syl |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( ( N - L ) <_ 0 <-> N <_ L ) ) |
81 |
80
|
biimpar |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( N - L ) <_ 0 ) |
82 |
|
swrdlend |
|- ( ( B e. Word V /\ 0 e. ZZ /\ ( N - L ) e. ZZ ) -> ( ( N - L ) <_ 0 -> ( B substr <. 0 , ( N - L ) >. ) = (/) ) ) |
83 |
76 81 82
|
sylc |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( B substr <. 0 , ( N - L ) >. ) = (/) ) |
84 |
69 83
|
sylan9eq |
|- ( ( -. 0 <_ ( M - L ) /\ ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) ) -> ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) = (/) ) |
85 |
66 84
|
pm2.61ian |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) = (/) ) |
86 |
12 85
|
oveq12d |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = ( ( A substr <. M , N >. ) ++ (/) ) ) |
87 |
|
swrdcl |
|- ( A e. Word V -> ( A substr <. M , N >. ) e. Word V ) |
88 |
|
ccatrid |
|- ( ( A substr <. M , N >. ) e. Word V -> ( ( A substr <. M , N >. ) ++ (/) ) = ( A substr <. M , N >. ) ) |
89 |
87 88
|
syl |
|- ( A e. Word V -> ( ( A substr <. M , N >. ) ++ (/) ) = ( A substr <. M , N >. ) ) |
90 |
89
|
adantr |
|- ( ( A e. Word V /\ B e. Word V ) -> ( ( A substr <. M , N >. ) ++ (/) ) = ( A substr <. M , N >. ) ) |
91 |
90
|
adantr |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( ( A substr <. M , N >. ) ++ (/) ) = ( A substr <. M , N >. ) ) |
92 |
91
|
adantr |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( ( A substr <. M , N >. ) ++ (/) ) = ( A substr <. M , N >. ) ) |
93 |
86 92
|
eqtrd |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ N <_ L ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = ( A substr <. M , N >. ) ) |
94 |
|
iffalse |
|- ( -. N <_ L -> if ( N <_ L , N , L ) = L ) |
95 |
94
|
3ad2ant2 |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> if ( N <_ L , N , L ) = L ) |
96 |
95
|
opeq2d |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> <. M , if ( N <_ L , N , L ) >. = <. M , L >. ) |
97 |
96
|
oveq2d |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> ( A substr <. M , if ( N <_ L , N , L ) >. ) = ( A substr <. M , L >. ) ) |
98 |
|
simpl |
|- ( ( A e. Word V /\ B e. Word V ) -> A e. Word V ) |
99 |
98 20 18
|
3anim123i |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( A e. Word V /\ M e. ZZ /\ L e. ZZ ) ) |
100 |
99
|
3expb |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( A e. Word V /\ M e. ZZ /\ L e. ZZ ) ) |
101 |
|
swrdlend |
|- ( ( A e. Word V /\ M e. ZZ /\ L e. ZZ ) -> ( L <_ M -> ( A substr <. M , L >. ) = (/) ) ) |
102 |
100 101
|
syl |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( L <_ M -> ( A substr <. M , L >. ) = (/) ) ) |
103 |
102
|
imp |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ L <_ M ) -> ( A substr <. M , L >. ) = (/) ) |
104 |
103
|
3adant2 |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> ( A substr <. M , L >. ) = (/) ) |
105 |
97 104
|
eqtrd |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> ( A substr <. M , if ( N <_ L , N , L ) >. ) = (/) ) |
106 |
55 36 37
|
syl2an |
|- ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( 0 <_ ( M - L ) <-> L <_ M ) ) |
107 |
106
|
biimprd |
|- ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( L <_ M -> 0 <_ ( M - L ) ) ) |
108 |
107
|
adantl |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( L <_ M -> 0 <_ ( M - L ) ) ) |
109 |
108
|
imp |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ L <_ M ) -> 0 <_ ( M - L ) ) |
110 |
109
|
3adant2 |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> 0 <_ ( M - L ) ) |
111 |
110 14
|
syl |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. = <. ( M - L ) , ( N - L ) >. ) |
112 |
111
|
oveq2d |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) = ( B substr <. ( M - L ) , ( N - L ) >. ) ) |
113 |
105 112
|
oveq12d |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = ( (/) ++ ( B substr <. ( M - L ) , ( N - L ) >. ) ) ) |
114 |
|
swrdcl |
|- ( B e. Word V -> ( B substr <. ( M - L ) , ( N - L ) >. ) e. Word V ) |
115 |
114
|
adantl |
|- ( ( A e. Word V /\ B e. Word V ) -> ( B substr <. ( M - L ) , ( N - L ) >. ) e. Word V ) |
116 |
|
ccatlid |
|- ( ( B substr <. ( M - L ) , ( N - L ) >. ) e. Word V -> ( (/) ++ ( B substr <. ( M - L ) , ( N - L ) >. ) ) = ( B substr <. ( M - L ) , ( N - L ) >. ) ) |
117 |
115 116
|
syl |
|- ( ( A e. Word V /\ B e. Word V ) -> ( (/) ++ ( B substr <. ( M - L ) , ( N - L ) >. ) ) = ( B substr <. ( M - L ) , ( N - L ) >. ) ) |
118 |
117
|
adantr |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( (/) ++ ( B substr <. ( M - L ) , ( N - L ) >. ) ) = ( B substr <. ( M - L ) , ( N - L ) >. ) ) |
119 |
118
|
3ad2ant1 |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> ( (/) ++ ( B substr <. ( M - L ) , ( N - L ) >. ) ) = ( B substr <. ( M - L ) , ( N - L ) >. ) ) |
120 |
113 119
|
eqtrd |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ L <_ M ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = ( B substr <. ( M - L ) , ( N - L ) >. ) ) |
121 |
94
|
3ad2ant2 |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> if ( N <_ L , N , L ) = L ) |
122 |
121
|
opeq2d |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> <. M , if ( N <_ L , N , L ) >. = <. M , L >. ) |
123 |
122
|
oveq2d |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> ( A substr <. M , if ( N <_ L , N , L ) >. ) = ( A substr <. M , L >. ) ) |
124 |
33 36 37
|
syl2an |
|- ( ( M e. NN0 /\ L e. NN0 ) -> ( 0 <_ ( M - L ) <-> L <_ M ) ) |
125 |
124
|
adantlr |
|- ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( 0 <_ ( M - L ) <-> L <_ M ) ) |
126 |
125
|
adantl |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( 0 <_ ( M - L ) <-> L <_ M ) ) |
127 |
126
|
biimpd |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( 0 <_ ( M - L ) -> L <_ M ) ) |
128 |
127
|
con3dimp |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. L <_ M ) -> -. 0 <_ ( M - L ) ) |
129 |
128
|
3adant2 |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> -. 0 <_ ( M - L ) ) |
130 |
129 67
|
syl |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) = 0 ) |
131 |
130
|
opeq1d |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. = <. 0 , ( N - L ) >. ) |
132 |
131
|
oveq2d |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) = ( B substr <. 0 , ( N - L ) >. ) ) |
133 |
70
|
3ad2ant1 |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> B e. Word V ) |
134 |
|
simplrr |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L ) -> L e. NN0 ) |
135 |
|
simprlr |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> N e. NN0 ) |
136 |
135
|
adantr |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L ) -> N e. NN0 ) |
137 |
|
ltnle |
|- ( ( L e. RR /\ N e. RR ) -> ( L < N <-> -. N <_ L ) ) |
138 |
|
ltle |
|- ( ( L e. RR /\ N e. RR ) -> ( L < N -> L <_ N ) ) |
139 |
137 138
|
sylbird |
|- ( ( L e. RR /\ N e. RR ) -> ( -. N <_ L -> L <_ N ) ) |
140 |
36 53 139
|
syl2anr |
|- ( ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) -> ( -. N <_ L -> L <_ N ) ) |
141 |
140
|
adantl |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( -. N <_ L -> L <_ N ) ) |
142 |
141
|
imp |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L ) -> L <_ N ) |
143 |
|
nn0sub2 |
|- ( ( L e. NN0 /\ N e. NN0 /\ L <_ N ) -> ( N - L ) e. NN0 ) |
144 |
134 136 142 143
|
syl3anc |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L ) -> ( N - L ) e. NN0 ) |
145 |
144
|
3adant3 |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> ( N - L ) e. NN0 ) |
146 |
133 145
|
jca |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> ( B e. Word V /\ ( N - L ) e. NN0 ) ) |
147 |
|
pfxval |
|- ( ( B e. Word V /\ ( N - L ) e. NN0 ) -> ( B prefix ( N - L ) ) = ( B substr <. 0 , ( N - L ) >. ) ) |
148 |
146 147
|
syl |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> ( B prefix ( N - L ) ) = ( B substr <. 0 , ( N - L ) >. ) ) |
149 |
132 148
|
eqtr4d |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) = ( B prefix ( N - L ) ) ) |
150 |
123 149
|
oveq12d |
|- ( ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) /\ -. N <_ L /\ -. L <_ M ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) |
151 |
93 120 150
|
2if2 |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( ( M e. NN0 /\ N e. NN0 ) /\ L e. NN0 ) ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) |
152 |
151
|
exp32 |
|- ( ( A e. Word V /\ B e. Word V ) -> ( ( M e. NN0 /\ N e. NN0 ) -> ( L e. NN0 -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) ) ) |
153 |
152
|
com12 |
|- ( ( M e. NN0 /\ N e. NN0 ) -> ( ( A e. Word V /\ B e. Word V ) -> ( L e. NN0 -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) ) ) |
154 |
153
|
3adant3 |
|- ( ( M e. NN0 /\ N e. NN0 /\ M <_ N ) -> ( ( A e. Word V /\ B e. Word V ) -> ( L e. NN0 -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) ) ) |
155 |
8 154
|
sylbi |
|- ( M e. ( 0 ... N ) -> ( ( A e. Word V /\ B e. Word V ) -> ( L e. NN0 -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) ) ) |
156 |
155
|
adantr |
|- ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( L + ( # ` B ) ) ) ) -> ( ( A e. Word V /\ B e. Word V ) -> ( L e. NN0 -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) ) ) |
157 |
156
|
com13 |
|- ( L e. NN0 -> ( ( A e. Word V /\ B e. Word V ) -> ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( L + ( # ` B ) ) ) ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) ) ) |
158 |
7 157
|
sylbi |
|- ( ( # ` A ) e. NN0 -> ( ( A e. Word V /\ B e. Word V ) -> ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( L + ( # ` B ) ) ) ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) ) ) |
159 |
5 158
|
mpcom |
|- ( ( A e. Word V /\ B e. Word V ) -> ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( L + ( # ` B ) ) ) ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) ) |
160 |
159
|
imp |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( L + ( # ` B ) ) ) ) ) -> ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) = if ( N <_ L , ( A substr <. M , N >. ) , if ( L <_ M , ( B substr <. ( M - L ) , ( N - L ) >. ) , ( ( A substr <. M , L >. ) ++ ( B prefix ( N - L ) ) ) ) ) ) |
161 |
3 160
|
eqtr4d |
|- ( ( ( A e. Word V /\ B e. Word V ) /\ ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( L + ( # ` B ) ) ) ) ) -> ( ( A ++ B ) substr <. M , N >. ) = ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) ) |
162 |
161
|
ex |
|- ( ( A e. Word V /\ B e. Word V ) -> ( ( M e. ( 0 ... N ) /\ N e. ( 0 ... ( L + ( # ` B ) ) ) ) -> ( ( A ++ B ) substr <. M , N >. ) = ( ( A substr <. M , if ( N <_ L , N , L ) >. ) ++ ( B substr <. if ( 0 <_ ( M - L ) , ( M - L ) , 0 ) , ( N - L ) >. ) ) ) ) |