def le_ba
bend-collections-laws-math@1.0.0.0 · proofs/math/typed/f64sqr.bend:240
import bend-collections-laws-math@1.0.0.0/proofs/math/typed/f64sqr.bend as F64sqr
import Base
import bend-collections-laws-math@1.0.0.0/spec/lib/common.bend as C
import bend-collections-laws-math@1.0.0.0/spec/math/w64.bend as SW
import bend-collections-laws-math@1.0.0.0/src/math/w64.bend as X
import bend-collections-laws-math@1.0.0.0/src/math/u64.bend as WU
import bend-collections-laws-math@1.0.0.0/proofs/math/typed/w64add.bend as WA
240def le_ba(+q: U32, +u: U32) -> {X.le(X.mul32(q, q), WU.U64{0, u}) == Nat.is_le(Nat.mul(v(q), v(q)), C.shift(32n, v(u))) : Bool}:
241 Equal.trans(Bool, X.le(X.mul32(q, q), WU.U64{0, u}), Nat.is_le(SW.value(X.mul32(q, q)), SW.value(WU.U64{0, u})), Nat.is_le(Nat.mul(v(q), v(q)), C.shift(32n, v(u))), WA.le_value(X.mul32(q, q), WU.U64{0, u}), Equal.cong(Nat, Bool, z => Nat.is_le(z, C.shift(32n, v(u))), SW.value(X.mul32(q, q)), Nat.mul(v(q), v(q)), bv_q(q)))