def uq.u32_sub

bend-osdev-algo@0.1.0.0 · proof_u32.bend:379

import bend-osdev-algo@0.1.0.0/proof_u32.bend as ProofU32
import Base

379def uq.u32_sub(a: U32, b: U32, h: {Nat.is_le(U32.to_nat(b), U32.to_nat(a)) == True{} : Bool}) -> {U32.to_nat(U32.sub(a, b)) == Nat.sub(U32.to_nat(a), U32.to_nat(b)) : Nat}:
380  match a b:
381    case U32{+x} U32{+y}:
382      +xv = Word.to_nat(32n, x)
383      +yv = Word.to_nat(32n, y)
384      +r = Word.to_nat(32n, Word.adc(32n, x, y, True{}, True{}))
385      %Equal.sym(Nat, xv, Nat.add(r, yv), uq.sub_w(32n, x, y, True{}, h)) : {r == Nat.sub(_, yv) : Nat}
386      Equal.sym(Nat, Nat.sub(Nat.add(r, yv), yv), r, uq.sub_add(r, yv))

Uses (13)

Used by (1)