def inc_zero

bend-collections-laws-math@1.0.0.0 · proofs/lib/word.bend:224

import bend-collections-laws-math@1.0.0.0/proofs/lib/word.bend as Word
import Base

224# an increment is zero iff it wrapped from all ones
225def inc_zero(+n: Nat, +x: Word(n)) -> {Cmp.is_eq(Word.cmp(n, Word.inc(n, x), Word.zero(n))) == ones(n, x) : Bool}:
226  match n x:
227    case 0n WNil{}:
228      {==}
229    case 1n+p WCon{False{}, t}:
230      eq_fin_tf(Word.cmp(p, t, Word.zero(p)))
231    case 1n+p WCon{True{}, t}:
232      Equal.trans(Bool, Cmp.is_eq(Word.cmp.fin(False{}, False{}, Word.cmp(p, Word.inc(p, t), Word.zero(p)))), Cmp.is_eq(Word.cmp(p, Word.inc(p, t), Word.zero(p))), ones(p, t), eq_fin_ff(Word.cmp(p, Word.inc(p, t), Word.zero(p))), inc_zero(p, t))

Uses (14)

Used by (1)