| 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) |