sig
  type 'a cond = [ `Apron of 'Apronexpr.Condition.t ]
  val print_cond :
    ('a, [> 'Env.typ ], [> 'Env.typdef ], 'b) Env.O.t ->
    Format.formatter -> [< 'Cond.cond ] -> unit
  val compare_cond :
    'Bdd.Env.symbol -> [< 'Cond.cond ] -> [< 'Cond.cond ] -> int
  val negate_cond :
    ('a, [> 'Env.typ ], [> 'Env.typdef ], 'b) Env.O.t ->
    'Cond.cond -> 'Cond.cond
  val support_cond :
    ('a, [> 'Env.typ ], [> 'Env.typdef ], 'b) Env.O.t ->
    [< 'Cond.cond ] -> 'PSette.t
  module O :
    sig
      type ('a, 'b) t = ('a, 'b, 'Cond.cond, Cudd.Man.v) Bdd.Cond.t
        constraint 'b =
          ('a, [> 'Env.typ ] as 'c, [> 'Env.typdef ] as 'd, 'e) Env.O.t
      val make :
        symbol:'Bdd.Env.symbol ->
        ?bddindex0:int ->
        ?bddsize:int ->
        Cudd.Man.vt ->
        ('a, ('a, [> 'Env.typ ], [> 'Env.typdef ], 'b) Env.O.t) Cond.O.t
    end
  type 'a t = ('a, 'Env.t) Cond.O.t
  val make :
    symbol:'Bdd.Env.symbol ->
    ?bddindex0:int -> ?bddsize:int -> Cudd.Man.vt -> 'Cond.t
  val copy : 'Cond.t -> 'Cond.t
  val print : 'Env.t -> Format.formatter -> 'Cond.t -> unit
  type ('a, 'b) value = ('a, 'b) Bdd.Cond.value = { cond : 'a; val1 : 'b; }
  val make_value : '-> '-> ('a, 'b) Cond.value
  val get_cond : ('a, 'b) Cond.value -> 'a
  val get_val1 : ('a, 'b) Cond.value -> 'b
  val get_env : ('a, ('b, 'c) Env.value) Cond.value -> 'b
  val get_val0 : ('a, ('b, 'c) Env.value) Cond.value -> 'c
end