Step | Hyp | Ref | Expression |
1 |
|
anim |
(L1 = x ++ L2 ++ y -> l ++ L1 = (l ++ x) ++ L2 ++ y) ->
(len x = n -> len (l ++ x) = len l + n) ->
L1 = x ++ L2 ++ y /\ len x = n ->
l ++ L1 = (l ++ x) ++ L2 ++ y /\ len (l ++ x) = len l + n |
2 |
|
appendass |
(l ++ x) ++ L2 ++ y = l ++ x ++ L2 ++ y |
3 |
|
appendeq2 |
L1 = x ++ L2 ++ y -> l ++ L1 = l ++ x ++ L2 ++ y |
4 |
2, 3 |
syl6eqr |
L1 = x ++ L2 ++ y -> l ++ L1 = (l ++ x) ++ L2 ++ y |
5 |
1, 4 |
ax_mp |
(len x = n -> len (l ++ x) = len l + n) -> L1 = x ++ L2 ++ y /\ len x = n -> l ++ L1 = (l ++ x) ++ L2 ++ y /\ len (l ++ x) = len l + n |
6 |
|
appendlen |
len (l ++ x) = len l + len x |
7 |
|
addeq2 |
len x = n -> len l + len x = len l + n |
8 |
6, 7 |
syl5eq |
len x = n -> len (l ++ x) = len l + n |
9 |
5, 8 |
ax_mp |
L1 = x ++ L2 ++ y /\ len x = n -> l ++ L1 = (l ++ x) ++ L2 ++ y /\ len (l ++ x) = len l + n |
10 |
|
biidd |
r = l ++ x -> (L1 = x ++ L2 ++ y /\ len x = n <-> L1 = x ++ L2 ++ y /\ len x = n) |
11 |
|
eqidd |
r = l ++ x -> l ++ L1 = l ++ L1 |
12 |
|
id |
r = l ++ x -> r = l ++ x |
13 |
|
eqidd |
r = l ++ x -> L2 ++ y = L2 ++ y |
14 |
12, 13 |
appendeqd |
r = l ++ x -> r ++ L2 ++ y = (l ++ x) ++ L2 ++ y |
15 |
11, 14 |
eqeqd |
r = l ++ x -> (l ++ L1 = r ++ L2 ++ y <-> l ++ L1 = (l ++ x) ++ L2 ++ y) |
16 |
12 |
leneqd |
r = l ++ x -> len r = len (l ++ x) |
17 |
|
eqidd |
r = l ++ x -> len l + n = len l + n |
18 |
16, 17 |
eqeqd |
r = l ++ x -> (len r = len l + n <-> len (l ++ x) = len l + n) |
19 |
15, 18 |
aneqd |
r = l ++ x -> (l ++ L1 = r ++ L2 ++ y /\ len r = len l + n <-> l ++ L1 = (l ++ x) ++ L2 ++ y /\ len (l ++ x) = len l + n) |
20 |
10, 19 |
imeqd |
r = l ++ x ->
(L1 = x ++ L2 ++ y /\ len x = n -> l ++ L1 = r ++ L2 ++ y /\ len r = len l + n <->
L1 = x ++ L2 ++ y /\ len x = n -> l ++ L1 = (l ++ x) ++ L2 ++ y /\ len (l ++ x) = len l + n) |
21 |
9, 20 |
mpbiri |
r = l ++ x -> L1 = x ++ L2 ++ y /\ len x = n -> l ++ L1 = r ++ L2 ++ y /\ len r = len l + n |
22 |
21 |
eximd |
r = l ++ x -> E. y (L1 = x ++ L2 ++ y /\ len x = n) -> E. y (l ++ L1 = r ++ L2 ++ y /\ len r = len l + n) |
23 |
22 |
impcom |
E. y (L1 = x ++ L2 ++ y /\ len x = n) /\ r = l ++ x -> E. y (l ++ L1 = r ++ L2 ++ y /\ len r = len l + n) |
24 |
23 |
iexde |
E. y (L1 = x ++ L2 ++ y /\ len x = n) -> E. r E. y (l ++ L1 = r ++ L2 ++ y /\ len r = len l + n) |
25 |
24 |
conv sublistAt |
E. y (L1 = x ++ L2 ++ y /\ len x = n) -> sublistAt (len l + n) (l ++ L1) L2 |
26 |
25 |
eex |
E. x E. y (L1 = x ++ L2 ++ y /\ len x = n) -> sublistAt (len l + n) (l ++ L1) L2 |
27 |
26 |
conv sublistAt |
sublistAt n L1 L2 -> sublistAt (len l + n) (l ++ L1) L2 |