def wsd.mle
bend-osdev-word64@0.1.1.0 · PROOF_text.bend:121
import bend-osdev-word64@0.1.1.0/PROOF_text.bend as PROOFText
import Base
import bend-osdev-u32@0.1.0.0/LAWS.bend as UL
121
122def wsd.mle(+x: Nat, +y: Nat, +c: Nat, +h: {Nat.is_le(x, y) == True{} : Bool}) -> {Nat.is_le(Nat.mul(x, c), Nat.mul(y, c)) == True{} : Bool}:
123 Equal.trans(Bool, Nat.is_le(Nat.mul(x, c), Nat.mul(y, c)), Nat.is_le(Nat.mul(x, c), Nat.add(Nat.mul(Nat.sub(y, x), c), Nat.mul(x, c))), True{}, Equal.sym(Bool, Nat.is_le(Nat.mul(x, c), Nat.add(Nat.mul(Nat.sub(y, x), c), Nat.mul(x, c))), Nat.is_le(Nat.mul(x, c), Nat.mul(y, c)), Equal.cong(Nat, Bool, zz => Nat.is_le(Nat.mul(x, c), zz), Nat.add(Nat.mul(Nat.sub(y, x), c), Nat.mul(x, c)), Nat.mul(y, c), Equal.trans(Nat, Nat.add(Nat.mul(Nat.sub(y, x), c), Nat.mul(x, c)), Nat.mul(Nat.add(Nat.sub(y, x), x), c), Nat.mul(y, c), wr.t1(Nat.sub(y, x), c, x), Equal.cong(Nat, Nat, zz => Nat.mul(zz, c), Nat.add(Nat.sub(y, x), x), y, UL.nat_le_witness(x, y, h))))), UL.nat_le_add(Nat.mul(x, c), Nat.mul(Nat.sub(y, x), c)))