def wv.gadd.sum
bend-osdev-word64@0.1.1.0 · proof_value.bend:472
import bend-osdev-word64@0.1.1.0/proof_value.bend as ProofValue
import Base
import bend-osdev-u32@0.1.0.0/u32.bend as U
472def wv.gadd.sum(+n: Nat, +ah: Word(n), +al: Word(n), +bh: Word(n), +bl: Word(n)) -> {Nat.add(Nat.add(Word.to_nat(n, Word.add(n, al, bl)), U.U32Nat.dbl(n, Word.to_nat(n, wv.addhi(n, ah, al, bh, bl)))), wv.Q(n, Nat.add(U.U32Nat.bit(Cmp.is_lt(Word.cmp(n, Word.add(n, ah, bh), ah))), U.U32Nat.bit(Cmp.is_lt(Word.cmp(n, wv.addhi(n, ah, al, bh, bl), Word.add(n, ah, bh))))))) == Nat.add(wv.V(n, ah, al), wv.V(n, bh, bl)) : Nat}:
473 match n:
474 case 0n:
475 match ah al bh bl:
476 case WNil{} WNil{} WNil{} WNil{}:
477 {==}
478 case 1n+ +p:
479 wv.gadd.go(1n+p, ah, al, bh, bl, wv.bitw_value(p, wv.c1add(1n+p, al, bl)))