| Step | Hyp | Ref | Expression |
| 1 |
|
eqtr |
lrec z S (a : b) = if (a : b = 0) z (S @ (fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1)))) ->
if (a : b = 0) z (S @ (fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1)))) = S @ (a, b, lrec z S b) ->
lrec z S (a : b) = S @ (a, b, lrec z S b) |
| 2 |
|
lrecval |
lrec z S (a : b) = if (a : b = 0) z (S @ (fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1)))) |
| 3 |
1, 2 |
ax_mp |
if (a : b = 0) z (S @ (fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1)))) = S @ (a, b, lrec z S b) -> lrec z S (a : b) = S @ (a, b, lrec z S b) |
| 4 |
|
eqtr |
if (a : b = 0) z (S @ (fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1)))) = S @ (fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1))) ->
S @ (fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1))) = S @ (a, b, lrec z S b) ->
if (a : b = 0) z (S @ (fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1)))) = S @ (a, b, lrec z S b) |
| 5 |
|
ifneg |
~a : b = 0 ->
if (a : b = 0) z (S @ (fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1)))) = S @ (fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1))) |
| 6 |
|
consne0 |
a : b != 0 |
| 7 |
6 |
conv ne |
~a : b = 0 |
| 8 |
5, 7 |
ax_mp |
if (a : b = 0) z (S @ (fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1)))) = S @ (fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1))) |
| 9 |
4, 8 |
ax_mp |
S @ (fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1))) = S @ (a, b, lrec z S b) ->
if (a : b = 0) z (S @ (fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1)))) = S @ (a, b, lrec z S b) |
| 10 |
|
appeq2 |
fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1)) = a, b, lrec z S b ->
S @ (fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1))) = S @ (a, b, lrec z S b) |
| 11 |
|
preq |
fst (a : b - 1) = a ->
snd (a : b - 1), lrec z S (snd (a : b - 1)) = b, lrec z S b ->
fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1)) = a, b, lrec z S b |
| 12 |
|
consfst |
fst (a : b - 1) = a |
| 13 |
11, 12 |
ax_mp |
snd (a : b - 1), lrec z S (snd (a : b - 1)) = b, lrec z S b -> fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1)) = a, b, lrec z S b |
| 14 |
|
preq |
snd (a : b - 1) = b -> lrec z S (snd (a : b - 1)) = lrec z S b -> snd (a : b - 1), lrec z S (snd (a : b - 1)) = b, lrec z S b |
| 15 |
|
conssnd |
snd (a : b - 1) = b |
| 16 |
14, 15 |
ax_mp |
lrec z S (snd (a : b - 1)) = lrec z S b -> snd (a : b - 1), lrec z S (snd (a : b - 1)) = b, lrec z S b |
| 17 |
|
lreceq3 |
snd (a : b - 1) = b -> lrec z S (snd (a : b - 1)) = lrec z S b |
| 18 |
17, 15 |
ax_mp |
lrec z S (snd (a : b - 1)) = lrec z S b |
| 19 |
16, 18 |
ax_mp |
snd (a : b - 1), lrec z S (snd (a : b - 1)) = b, lrec z S b |
| 20 |
13, 19 |
ax_mp |
fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1)) = a, b, lrec z S b |
| 21 |
10, 20 |
ax_mp |
S @ (fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1))) = S @ (a, b, lrec z S b) |
| 22 |
9, 21 |
ax_mp |
if (a : b = 0) z (S @ (fst (a : b - 1), snd (a : b - 1), lrec z S (snd (a : b - 1)))) = S @ (a, b, lrec z S b) |
| 23 |
3, 22 |
ax_mp |
lrec z S (a : b) = S @ (a, b, lrec z S b) |