def add_carry

bend-collections-laws-crypto@1.0.0.0 · proofs/math/u64/u64.bend:235

import bend-collections-laws-crypto@1.0.0.0/proofs/math/u64/u64.bend as U64
import Base
import bend-collections-laws-crypto@1.0.0.0/src/math/u64.bend as U
import bend-collections-laws-crypto@1.0.0.0/proofs/lib/u32alg.bend as A
import bend-collections-laws-crypto@1.0.0.0/proofs/lib/word.bend as WD

235def add_carry(+xw: Word(32n), +c: Bool) -> {U32.add(U32{xw}, U.carry(c)) == U32{WD.incif(32n, c, xw)} : U32}:
236  match c:
237    case True{}:
238      Equal.cong(Word(32n), U32, w => U32{w}, Word.add(32n, xw, WD.one_word(31n)), Word.inc(32n, xw), WD.add_one(31n, xw))
239    case False{}:
240      A.add_zero(U32{xw})

Uses (12)

Used by (1)