def wsd.k2
bend-osdev-word64@0.1.1.0 · PROOF_text.bend:171
import bend-osdev-word64@0.1.1.0/PROOF_text.bend as PROOFText
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
import bend-osdev-u32@0.1.0.0/LAWS_order.bend as UO
171
172def wsd.k2(+h: Nat, +V: Nat, +Dd: Nat, +M: Nat, +edm: {Nat.add(Nat.mul(Dd, 10n), M) == V : Nat}, +hv: {Nat.is_lt(V, U.U32Nat.dbl(h, 10n)) == True{} : Bool}) -> {Nat.is_lt(Dd, U.U32Nat.dbl(h, 1n)) == True{} : Bool}:
173 wsd.mlc(Dd, U.U32Nat.dbl(h, 1n), 10n, UO.nat_le_lt_trans(Nat.mul(Dd, 10n), V, Nat.mul(U.U32Nat.dbl(h, 1n), 10n), Equal.trans(Bool, Nat.is_le(Nat.mul(Dd, 10n), V), Nat.is_le(Nat.mul(Dd, 10n), Nat.add(M, Nat.mul(Dd, 10n))), True{}, Equal.sym(Bool, Nat.is_le(Nat.mul(Dd, 10n), Nat.add(M, Nat.mul(Dd, 10n))), Nat.is_le(Nat.mul(Dd, 10n), V), Equal.cong(Nat, Bool, zz => Nat.is_le(Nat.mul(Dd, 10n), zz), Nat.add(M, Nat.mul(Dd, 10n)), V, Equal.trans(Nat, Nat.add(M, Nat.mul(Dd, 10n)), Nat.add(Nat.mul(Dd, 10n), M), V, wr.t4(M, Dd), edm))), UL.nat_le_add(Nat.mul(Dd, 10n), M)), Equal.trans(Bool, Nat.is_lt(V, Nat.mul(U.U32Nat.dbl(h, 1n), 10n)), Nat.is_lt(V, U.U32Nat.dbl(h, 10n)), True{}, Equal.cong(Nat, Bool, zz => Nat.is_lt(V, zz), Nat.mul(U.U32Nat.dbl(h, 1n), 10n), U.U32Nat.dbl(h, 10n), Equal.sym(Nat, U.U32Nat.dbl(h, 10n), Nat.mul(U.U32Nat.dbl(h, 1n), 10n), wr.t5(h))), hv)))