def p_ge
bend-collections-laws-math@1.0.0.0 · proofs/math/typed/f64sqf.bend:21
import bend-collections-laws-math@1.0.0.0/proofs/math/typed/f64sqf.bend as F64sqf
import Base
import bend-collections-laws-math@1.0.0.0/proofs/lib/nat.bend as N
import bend-collections-laws-math@1.0.0.0/proofs/lib/logic.bend as L
import bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/nat_algebra.bend as NA
import bend-collections-laws-math@1.0.0.0/proofs/math/typed/width.bend as WW
import bend-collections-laws-math@1.0.0.0/proofs/math/typed/f64round.bend as FR
21def p_ge(+p: Nat, +Ep: Nat, +hp: {Nat.add(Nat.add(p, p), 1075n) == Nat.add(Ep, 4096n) : Nat}, +c: Bool, +hc: {Nat.is_lt(p, 1132n) == c : Bool}) -> {c == False{} : Bool}:
22 match c:
23 case True{}:
24 +l1 = N.lt_trans(Nat.add(p, p), Nat.add(1132n, p), 2264n, Equal.trans(Bool, Nat.is_lt(Nat.add(p, p), Nat.add(1132n, p)), Nat.is_lt(p, 1132n), True{}, WW.lt_cancel_r(p, 1132n, p), hc), N.lt_le_trans(Nat.add(1132n, p), Nat.add(1132n, 1132n), 2264n, Equal.trans(Bool, Nat.is_lt(Nat.add(1132n, p), Nat.add(1132n, 1132n)), Nat.is_lt(p, 1132n), True{}, WW.lt_cancel_l(1132n, p, 1132n), hc), {==}))
25 +l2 = L.subst(Nat, z => {Nat.is_le(Nat.add(3021n, 1075n), z) == True{} : Bool}, Nat.add(Ep, 4096n), Nat.add(Nat.add(p, p), 1075n), Equal.sym(Nat, Nat.add(Nat.add(p, p), 1075n), Nat.add(Ep, 4096n), hp), N.le_trans(4096n, 4096n, Nat.add(Ep, 4096n), {==}, L.subst(Nat, z => {Nat.is_le(4096n, z) == True{} : Bool}, Nat.add(4096n, Ep), Nat.add(Ep, 4096n), NA.add_comm(4096n, Ep), N.le_add_right(4096n, Ep))))
26 +l3 = Equal.trans(Bool, Nat.is_le(3021n, Nat.add(p, p)), Nat.is_le(Nat.add(3021n, 1075n), Nat.add(Nat.add(p, p), 1075n)), True{}, Equal.sym(Bool, Nat.is_le(Nat.add(3021n, 1075n), Nat.add(Nat.add(p, p), 1075n)), Nat.is_le(3021n, Nat.add(p, p)), FR.le_cancel_r(3021n, Nat.add(p, p), 1075n)), l2)
27 Equal.trans(Bool, True{}, Nat.is_lt(Nat.add(p, p), 3021n), False{}, Equal.sym(Bool, Nat.is_lt(Nat.add(p, p), 3021n), True{}, N.lt_le_trans(Nat.add(p, p), 2264n, 3021n, l1, {==})), N.le_not_lt(Nat.add(p, p), 3021n, l3))
28 case False{}:
29 {==}