sig
  val print :
    ?print_external_idcondb:(Format.formatter -> int * bool -> unit) ->
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    Format.formatter -> 'Bdd.Domain0.t -> unit
  val bottom :
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    'Bdd.Domain0.t
  val top :
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    'Bdd.Domain0.t
  val is_bottom :
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    'Bdd.Domain0.t -> bool
  val is_top :
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    'Bdd.Domain0.t -> bool
  val is_leq :
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    'Bdd.Domain0.t -> 'Bdd.Domain0.t -> bool
  val is_eq :
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    'Bdd.Domain0.t -> 'Bdd.Domain0.t -> bool
  val is_variable_unconstrained :
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    'Bdd.Domain0.t -> '-> bool
  val meet :
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    'Bdd.Domain0.t -> 'Bdd.Domain0.t -> 'Bdd.Domain0.t
  val join :
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    'Bdd.Domain0.t -> 'Bdd.Domain0.t -> 'Bdd.Domain0.t
  val meet_condition :
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    'Bdd.Domain0.t -> 'Bdd.Expr0.Bool.t -> 'Bdd.Domain0.t
  val assign_lexpr :
    ?relational:bool ->
    ?nodependency:bool ->
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    'Bdd.Domain0.t -> 'a list -> 'Bdd.Expr0.expr list -> 'Bdd.Domain0.t
  val substitute_lexpr :
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    'Bdd.Domain0.t -> 'a list -> 'Bdd.Expr0.expr list -> 'Bdd.Domain0.t
  val forget_list :
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    'Bdd.Domain0.t -> 'a list -> 'Bdd.Domain0.t
  module Asssub :
    sig
      val sort :
        int array -> 'Cudd.Bdd.t array -> int array * 'Cudd.Bdd.t array
      val is_equal : 'Cudd.Bdd.t array -> 'Cudd.Bdd.t array -> bool
      val post :
        'Cudd.Bdd.t -> int array -> 'Cudd.Bdd.t array -> 'Cudd.Bdd.t
      val postcondition :
        'Cudd.Bdd.t -> 'Cudd.Bdd.t array -> 'Cudd.Bdd.t
    end
  val relation_supp_compose_of_lvarlexpr :
    ('a, [> 'Bdd.Env.typ ], [> 'Bdd.Env.typdef ], 'd, 'e) Bdd.Env.O.t ->
    'a list ->
    'Bdd.Expr0.expr list ->
    'Cudd.Bdd.t * 'Cudd.Bdd.t * 'Cudd.Bdd.t array
  val apply_change :
    'Bdd.Domain0.t -> 'Bdd.Env.change -> 'Bdd.Domain0.t
end