def uq.inc_w

bend-osdev-algo@0.1.0.0 · proof_u32.bend:498

import bend-osdev-algo@0.1.0.0/proof_u32.bend as ProofU32
import Base

498def uq.inc_w(n: Nat, w: Word(n), h: {Nat.is_lt(1n+Word.to_nat(n, w), uq.pw(n)) == True{} : Bool}) -> {Word.to_nat(n, Word.inc(n, w)) == 1n+Word.to_nat(n, w) : Nat}:
499  match n:
500    case 0n:
501      Empty.absurd({Word.to_nat(0n, Word.inc(0n, w)) == 1n+Word.to_nat(0n, w) : Nat}, uq.ft(h))
502    case 1n+ +p:
503      match w:
504        case WCon{False{}, t}:
505          {==}
506        case WCon{True{}, +t}:
507          +x = Word.to_nat(p, t)
508          uq.double_cong(Word.to_nat(p, Word.inc(p, t)), 1n+x, uq.inc_w(p, t, Equal.trans(Bool, Nat.is_lt(1n+x, uq.pw(p)), Nat.is_lt(Nat.double(1n+x), Nat.double(uq.pw(p))), True{}, Equal.sym(Bool, Nat.is_lt(Nat.double(1n+x), Nat.double(uq.pw(p))), Nat.is_lt(1n+x, uq.pw(p)), uq.lt_dbl(1n+x, uq.pw(p))), h)))

Uses (15)

Used by (1)