law word_adc_wrap

bend-mathlib@0.8.1.0 · u32.bend:332

import bend-mathlib@0.8.1.0/u32.bend as U32
import Base

332# The adder wraps modulo 2^n: to_nat (adc a b False c) = (a + b + carry-in) % 2^n.
333law word_adc_wrap:
334  for n: Nat
335  for a: Word(n)
336  for b: Word(n)
337  for c: Bool
338  {Word.to_nat(n, Word.adc(n, a, b, False{}, c)) == Nat.mod(Nat.add(Nat.add(Word.to_nat(n, a), Word.to_nat(n, b)), Bool.pick(Nat, c, 1n, 0n)), Nat.pow(2n, n)) : Nat}

Uses (13)

Used by (3)