| Step | Hyp | Ref | Expression |
| 1 |
|
eor |
(len l <= i + n -> nth i (drop l n) = nth (i + n) l) ->
(i + n < len l -> nth i (drop l n) = nth (i + n) l) ->
len l <= i + n \/ i + n < len l ->
nth i (drop l n) = nth (i + n) l |
| 2 |
|
ntheq0 |
nth i (drop l n) = 0 <-> len (drop l n) <= i |
| 3 |
|
leeq1 |
len (drop l n) = len l - n -> (len (drop l n) <= i <-> len l - n <= i) |
| 4 |
|
droplen |
len (drop l n) = len l - n |
| 5 |
3, 4 |
ax_mp |
len (drop l n) <= i <-> len l - n <= i |
| 6 |
|
lesubadd |
len l - n <= i <-> len l <= i + n |
| 7 |
6 |
bi2i |
len l <= i + n -> len l - n <= i |
| 8 |
5, 7 |
sylibr |
len l <= i + n -> len (drop l n) <= i |
| 9 |
2, 8 |
sylibr |
len l <= i + n -> nth i (drop l n) = 0 |
| 10 |
|
ntheq0 |
nth (i + n) l = 0 <-> len l <= i + n |
| 11 |
10 |
bi2i |
len l <= i + n -> nth (i + n) l = 0 |
| 12 |
9, 11 |
eqtr4d |
len l <= i + n -> nth i (drop l n) = nth (i + n) l |
| 13 |
1, 12 |
ax_mp |
(i + n < len l -> nth i (drop l n) = nth (i + n) l) -> len l <= i + n \/ i + n < len l -> nth i (drop l n) = nth (i + n) l |
| 14 |
|
ltaddsub |
i + n < len l <-> i < len l - n |
| 15 |
|
nthlfn |
i < len l - n -> nth i (lfn (\ x, nth (x + n) l - 1) (len l - n)) = suc ((\ x, nth (x + n) l - 1) @ i) |
| 16 |
15 |
conv drop |
i < len l - n -> nth i (drop l n) = suc ((\ x, nth (x + n) l - 1) @ i) |
| 17 |
14, 16 |
sylbi |
i + n < len l -> nth i (drop l n) = suc ((\ x, nth (x + n) l - 1) @ i) |
| 18 |
|
anr |
i + n < len l /\ x = i -> x = i |
| 19 |
18 |
addeq1d |
i + n < len l /\ x = i -> x + n = i + n |
| 20 |
19 |
ntheq1d |
i + n < len l /\ x = i -> nth (x + n) l = nth (i + n) l |
| 21 |
20 |
subeq1d |
i + n < len l /\ x = i -> nth (x + n) l - 1 = nth (i + n) l - 1 |
| 22 |
21 |
applamed |
i + n < len l -> (\ x, nth (x + n) l - 1) @ i = nth (i + n) l - 1 |
| 23 |
22 |
suceqd |
i + n < len l -> suc ((\ x, nth (x + n) l - 1) @ i) = suc (nth (i + n) l - 1) |
| 24 |
|
nthne0 |
nth (i + n) l != 0 <-> i + n < len l |
| 25 |
|
sub1can |
nth (i + n) l != 0 -> suc (nth (i + n) l - 1) = nth (i + n) l |
| 26 |
24, 25 |
sylbir |
i + n < len l -> suc (nth (i + n) l - 1) = nth (i + n) l |
| 27 |
23, 26 |
eqtrd |
i + n < len l -> suc ((\ x, nth (x + n) l - 1) @ i) = nth (i + n) l |
| 28 |
17, 27 |
eqtrd |
i + n < len l -> nth i (drop l n) = nth (i + n) l |
| 29 |
13, 28 |
ax_mp |
len l <= i + n \/ i + n < len l -> nth i (drop l n) = nth (i + n) l |
| 30 |
|
leorlt |
len l <= i + n \/ i + n < len l |
| 31 |
29, 30 |
ax_mp |
nth i (drop l n) = nth (i + n) l |