sig
  type typ = EQ | SUPEQ | SUP | NEQ
  type t = Arith.Condition.typ * Arith.expr
  val make :
    < typ_of_var : Var.t -> [> `Int | `Real ]; .. > ->
    Arith.Condition.typ ->
    Arith.expr -> [ `Arith of Arith.Condition.t | `Bool of bool ]
  val negate :
    < typ_of_var : Var.t -> [> `Int | `Real ]; .. > ->
    Arith.Condition.t -> Arith.Condition.t
  val support : Arith.Condition.t -> Var.Set.t
  val print : Format.formatter -> Arith.Condition.t -> unit
  val compare : Arith.Condition.t -> Arith.Condition.t -> int
end