def ns.dnj

bend-osdev-word64@0.1.1.0 · proof_shift.bend:205

import bend-osdev-word64@0.1.1.0/proof_shift.bend as ProofShift
import Base
import bend-osdev-u32@0.1.0.0/u32.bend as U
import bend-osdev-u32@0.1.0.0/LAWS.bend as UL

205# n <= k: x * 2^k = (x * 2^(k - n)) * 2^n
206def ns.dnj(+n: Nat, +k: Nat, +x: Nat, h: {Nat.is_le(n, k) == True{} : Bool}) -> {U.U32Nat.dbl(k, x) == U.U32Nat.dbl(n, U.U32Nat.dbl(Nat.sub(k, n), x)) : Nat}:
207  Equal.trans(Nat, U.U32Nat.dbl(k, x), U.U32Nat.dbl(Nat.add(n, Nat.sub(k, n)), x), U.U32Nat.dbl(n, U.U32Nat.dbl(Nat.sub(k, n), x)), Equal.cong(Nat, Nat, v => U.U32Nat.dbl(v, x), k, Nat.add(n, Nat.sub(k, n)), Equal.sym(Nat, Nat.add(n, Nat.sub(k, n)), k, ns.add_sub_le(n, k, h))), Equal.sym(Nat, U.U32Nat.dbl(n, U.U32Nat.dbl(Nat.sub(k, n), x)), U.U32Nat.dbl(Nat.add(n, Nat.sub(k, n)), x), UL.dbl_dbl(n, Nat.sub(k, n), x)))

Uses (11)

Used by (3)