def wv.pre

bend-osdev-word64@0.1.1.0 · proof_value.bend:436

import bend-osdev-word64@0.1.1.0/proof_value.bend as ProofValue
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

436# (l + 2^n h) + 2^n z = l + 2^n (h + z)
437def wv.pre(+n: Nat, +l: Nat, +h: Nat, +z: Nat) -> {Nat.add(Nat.add(l, U.U32Nat.dbl(n, h)), U.U32Nat.dbl(n, z)) == Nat.add(l, U.U32Nat.dbl(n, Nat.add(h, z))) : Nat}:
438  Equal.trans(Nat, Nat.add(Nat.add(l, U.U32Nat.dbl(n, h)), U.U32Nat.dbl(n, z)), Nat.add(l, Nat.add(U.U32Nat.dbl(n, h), U.U32Nat.dbl(n, z))), Nat.add(l, U.U32Nat.dbl(n, Nat.add(h, z))), UL.nat_add_assoc(l, U.U32Nat.dbl(n, h), U.U32Nat.dbl(n, z)), Equal.cong(Nat, Nat, v => Nat.add(l, v), Nat.add(U.U32Nat.dbl(n, h), U.U32Nat.dbl(n, z)), U.U32Nat.dbl(n, Nat.add(h, z)), Equal.sym(Nat, U.U32Nat.dbl(n, Nat.add(h, z)), Nat.add(U.U32Nat.dbl(n, h), U.U32Nat.dbl(n, z)), UL.dbl_add(n, h, z))))

Uses (8)

Used by (1)