def pw_val
bend-collections-laws-crypto@1.0.0.0 · proofs/lib/word.bend:331
import bend-collections-laws-crypto@1.0.0.0/proofs/lib/word.bend as Word
import Base
import bend-collections-laws-crypto@1.0.0.0/proofs/lib/nat.bend as N
import bend-collections-laws-crypto@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))