def um.k

bend-osdev-u32@0.1.0.0 · PROOF.bend:1373

import bend-osdev-u32@0.1.0.0/PROOF.bend as PROOF
import Base
import bend-osdev-u32@0.1.0.0/u32.bend as U

1373def um.k(+n: Nat, m: Nat, a: Word(m), +b: Word(n), +acc: Word(n)) -> Nat:
1374  match m:
1375    case 0n:
1376      0n
1377    case 1n+ +mp:
1378      match a:
1379        case WCon{False{}, +at}:
1380          Nat.add(um.k(n, mp, at, Word.shl(n, b), acc), Nat.mul(Word.to_nat(mp, at), U.U32Nat.bit(un.top(n, b))))
1381        case WCon{True{}, +at}:
1382          Nat.add(um.k(n, mp, at, Word.shl(n, b), Word.add(n, acc, b)), Nat.add(U.U32Nat.bit(Cmp.is_lt(Word.cmp(n, Word.add(n, acc, b), acc))), Nat.mul(Word.to_nat(mp, at), U.U32Nat.bit(un.top(n, b)))))

Uses (13)

Used by (4)