sig
  type ('a, 'b, 'c, 'd, 'e, 'f) man =
    ('a, 'b, 'c, 'd, 'e, 'f) Bddapron.Policy.PDomain0.man = {
    man : ('a, 'b, 'c, 'd) Bddapron.Domain0.man;
    pman : 'e;
    print :
      'e ->
      'a Bddapron.Env.t ->
      'a Bddapron.Cond.t -> Format.formatter -> 'f -> unit;
    meet_condition_apply :
      'e ->
      'a Bddapron.Env.t ->
      'a Bddapron.Cond.t -> 'f -> 'd -> 'a Bddapron.Expr0.Bool.t -> 'd;
    meet_condition_improve :
      'e ->
      'a Bddapron.Env.t ->
      'a Bddapron.Cond.t -> 'f option -> 'd -> 'a Bddapron.Expr0.Bool.t -> 'f;
  }
  type ('a, 'b) mtbdd =
      ('a, 'b, ('a, 'b) Bddapron.Mtbdddomain0.man,
       'b Bddapron.Mtbdddomain0.t,
       ('a, 'b) Bddapron.Policy.PMtbdddomain0.man,
       'b Bddapron.Policy.PMtbdddomain0.t)
      Bddapron.Policy.Domain0.man
  val manager_get_manager :
    ('a, 'b, 'c, 'd, 'e, 'f) Bddapron.Policy.Domain0.man ->
    ('a, 'b, 'c, 'd) Bddapron.Domain0.man
  val print :
    ('a, 'b, 'c, 'd, 'e, 'f) Bddapron.Policy.Domain0.man ->
    'a Bddapron.Env.t -> 'a Bddapron.Cond.t -> Format.formatter -> 'f -> unit
  val meet_condition_apply :
    ('a, 'b, 'c, 'd, 'e, 'f) Bddapron.Policy.Domain0.man ->
    'a Bddapron.Env.t ->
    'a Bddapron.Cond.t -> 'f -> 'd -> 'a Bddapron.Expr0.Bool.t -> 'd
  val meet_condition_improve :
    ('a, 'b, 'c, 'd, 'e, 'f) Bddapron.Policy.Domain0.man ->
    'a Bddapron.Env.t ->
    'a Bddapron.Cond.t -> 'f option -> 'd -> 'a Bddapron.Expr0.Bool.t -> 'f
  val make_mtbdd :
    ?global:bool ->
    symbol:'a Bddapron.Env.symbol ->
    'b Apron.Policy.man -> ('a, 'b) Bddapron.Policy.Domain0.mtbdd
end