let negate mk_neg (a, _) =
match a with
| TT -> mk_false
| FF -> mk_true
| Equal(a, b) -> mk_diseq (a, b)
| Diseq(a, b) -> mk_equal (a, b)
| Nonneg(a) -> mk_pos (mk_neg a) (* [not(a >= 0)] iff [-a > 0] *)
| Pos(a) -> mk_nonneg (mk_neg a)