def wm.pl
bend-osdev-word64@0.1.1.0 · PROOF_mul.bend:163
import bend-osdev-word64@0.1.1.0/PROOF_mul.bend as PROOFMul
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
163
164def wm.pl(+h: Nat, +n: Nat, +x: Nat, +y: Nat, +en: {Nat.add(h, h) == n : Nat}, +hx: {Nat.is_lt(x, U.U32Nat.dbl(h, 1n)) == True{} : Bool}, +hy: {Nat.is_lt(y, U.U32Nat.dbl(h, 1n)) == True{} : Bool}) -> {Nat.is_lt(Nat.mul(x, y), U.U32Nat.dbl(n, 1n)) == True{} : Bool}:
165 Equal.trans(Bool, Nat.is_lt(Nat.mul(x, y), U.U32Nat.dbl(n, 1n)), Nat.is_lt(Nat.mul(x, y), Nat.mul(U.U32Nat.dbl(h, 1n), U.U32Nat.dbl(h, 1n))), True{}, Equal.cong(Nat, Bool, zz => Nat.is_lt(Nat.mul(x, y), zz), U.U32Nat.dbl(n, 1n), Nat.mul(U.U32Nat.dbl(h, 1n), U.U32Nat.dbl(h, 1n)), Equal.sym(Nat, Nat.mul(U.U32Nat.dbl(h, 1n), U.U32Nat.dbl(h, 1n)), U.U32Nat.dbl(n, 1n), Equal.trans(Nat, Nat.mul(U.U32Nat.dbl(h, 1n), U.U32Nat.dbl(h, 1n)), U.U32Nat.dbl(h, U.U32Nat.dbl(h, 1n)), U.U32Nat.dbl(n, 1n), wr.m3(h), Equal.sym(Nat, U.U32Nat.dbl(n, 1n), U.U32Nat.dbl(h, U.U32Nat.dbl(h, 1n)), wm.fn(h, n, 1n, en))))), UL.nat_mul_lt(x, y, U.U32Nat.dbl(h, 1n), U.U32Nat.dbl(h, 1n), hx, hy))