def branch_bound
stelliferous@0.0.2.0 · proofs/binary_division.bend:102
import stelliferous@0.0.2.0/proofs/binary_division.bend as BinaryDivision
import Base
import stelliferous@0.0.2.0/proofs/nat_order.bend as Order
102def branch_bound(+g: Bool,+q: Nat,+s: Nat,+b: Nat,guard: {Nat.is_ge(s,b) == g : Bool},bound: {Nat.is_lt(s,
103 Nat.double(b)) == True{} : Bool}) -> {Nat.is_lt(remainder(branch(g,q,s,b)),b) == True{} : Bool}:
104 match g:
105 case False{}:
106 Order.ge_false(s,b,guard)
107 case True{}:
108 Order.sub_lt(s,b,b,Order.ge_true(s,b,guard),sum_bound(s,b,bound))