ProofShift.ns.dnj: def of bend-osdev-word64@0.1.1.0 Import: import bend-osdev-word64@0.1.1.0/proof_shift.bend as ProofShift Lines 205-207 of bend-osdev-word64@0.1.1.0/proof_shift.bend: https://jend.leeeet.dev/read.txt?path=bend-osdev-word64@0.1.1.0/proof_shift.bend&start_line=205&end_line=207 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 # n <= k: x * 2^k = (x * 2^(k - n)) * 2^n def 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}: 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): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Equal.cong https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Equal.sym https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Equal.trans https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.add https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.is_le https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.sub https://jend.leeeet.dev/definition.txt?path=bend-osdev-u32@0.1.0.0/LAWS.bend&name=dbl_dbl https://jend.leeeet.dev/definition.txt?path=bend-osdev-u32@0.1.0.0/u32.bend&name=U32Nat.dbl https://jend.leeeet.dev/definition.txt?path=bend-osdev-word64@0.1.1.0/proof_shift.bend&name=ns.add_sub_le