def nat.add_sub_le
bend-osdev-algo@0.1.0.0 · PROOF.bend:146
import bend-osdev-algo@0.1.0.0/PROOF.bend as PROOF
import Base
146
147def nat.add_sub_le(k: Nat, l: Nat, n: Nat, e: {Nat.is_le(k, l) == True{} : Bool}, f: {Nat.is_le(l, n) == True{} : Bool}) -> {Nat.is_le(Nat.add(k, Nat.sub(n, l)), n) == True{} : Bool}:
148 match k l n:
149 case 0n _ _:
150 nat.sub_le(n, l)
151 case 1n+kp 0n _:
152 Empty.absurd({Nat.is_le(Nat.add(1n+kp, Nat.sub(n, 0n)), n) == True{} : Bool}, absurd.ft(e))
153 case 1n+kp 1n+lp 0n:
154 Empty.absurd({Nat.is_le(Nat.add(1n+kp, 0n), 0n) == True{} : Bool}, absurd.ft(f))
155 case 1n+kp 1n+lp 1n+np:
156 nat.add_sub_le(kp, lp, np, e, f)