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# k <= l <= n gives k + (n - l) <= n
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)

Uses (8)

Used by (1)