sig
  type ('a, 'b) man
  type 'b t0
  type ('a, 'b) t =
      ('Bddapron.Env.t, 'Bddapron.Domainlevel1.Level1.t0)
      Bddapron.Env.value
  val get_env : ('a, 'b) Bddapron.Domainlevel1.Level1.t -> 'Bddapron.Env.t
  val to_level0 :
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    'Bddapron.Domainlevel1.Level1.t0
  val of_level0 :
    'Bddapron.Env.t ->
    'Bddapron.Domainlevel1.Level1.t0 ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t
  val size :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t -> int
  val print :
    ?print_apron:((int -> string) ->
                  Format.formatter -> 'Apron.Abstract0.t -> unit) ->
    Format.formatter -> ('a, 'b) Bddapron.Domainlevel1.Level1.t -> unit
  val bottom :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    'Bddapron.Env.t -> ('a, 'b) Bddapron.Domainlevel1.Level1.t
  val top :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    'Bddapron.Env.t -> ('a, 'b) Bddapron.Domainlevel1.Level1.t
  val of_apron :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    'Bddapron.Env.t ->
    'Apron.Abstract1.t -> ('a, 'b) Bddapron.Domainlevel1.Level1.t
  val of_bddapron :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    'Bddapron.Env.t ->
    ('Bddapron.Expr1.Bool.t * 'Apron.Abstract1.t) list ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t
  val is_bottom :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t -> bool
  val is_top :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t -> bool
  val is_leq :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t -> bool
  val is_eq :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t -> bool
  val to_bddapron :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    ('Bddapron.Expr1.Bool.t * 'Apron.Abstract1.t) list
  val meet :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t
  val join :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t
  val meet_condition :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    'Bddapron.Cond.t ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    'Bddapron.Expr1.Bool.t -> ('a, 'b) Bddapron.Domainlevel1.Level1.t
  val meet_condition2 :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    'Bddapron.Expr2.Bool.t -> ('a, 'b) Bddapron.Domainlevel1.Level1.t
  val assign_lexpr :
    ?relational:bool ->
    ?nodependency:bool ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    'Bddapron.Cond.t ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    'a list ->
    'Bddapron.Expr1.t list ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t option ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t
  val assign_listexpr2 :
    ?relational:bool ->
    ?nodependency:bool ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    'a list ->
    'Bddapron.Expr2.List.t ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t option ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t
  val substitute_lexpr :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    'Bddapron.Cond.t ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    'a list ->
    'Bddapron.Expr1.t list ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t option ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t
  val substitute_listexpr2 :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    'a list ->
    'Bddapron.Expr2.List.t ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t option ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t
  val forget_list :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    'a list -> ('a, 'b) Bddapron.Domainlevel1.Level1.t
  val widening :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t
  val widening_threshold :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    Apron.Lincons1.earray -> ('a, 'b) Bddapron.Domainlevel1.Level1.t
  val change_environment :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    'Bddapron.Env.t -> ('a, 'b) Bddapron.Domainlevel1.Level1.t
  val rename :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    ('a * 'a) list -> ('a, 'b) Bddapron.Domainlevel1.Level1.t
  val unify :
    ('a, 'b) Bddapron.Domainlevel1.Level1.man ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t ->
    ('a, 'b) Bddapron.Domainlevel1.Level1.t
end