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