def pw_val

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

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

331def pw_val(+n: Nat, +k: Nat, +hk: {Nat.is_lt(k, n) == True{} : Bool}) -> {uw(n, pw(n, k)) == sc(k, 1n) : Nat}:
332  match n k:
333    case 0n _:
334      Empty.absurd({uw(0n, pw(0n, k)) == sc(k, 1n) : Nat}, N.lt_zero_absurd(k, hk))
335    case 1n+p 0n:
336      Equal.cong(Nat, Nat, z => Nat.add(1n, Nat.double(z)), uw(p, Word.zero(p)), 0n, A.uw_zero(p))
337    case 1n+p 1n+j:
338      Equal.cong(Nat, Nat, Nat.double, uw(p, pw(p, j)), sc(j, 1n), pw_val(p, j, hk))

Uses (13)

Used by (1)