sig
  type 'a t = 'Bdd.Expr0.Bool.t
  type dt = Cudd.Man.d Bdd.Domain0.t
  type vt = Cudd.Man.v Bdd.Domain0.t
  val size : 'Bdd.Domain0.t -> int
  val print :
    ?print_external_idcondb:(Format.formatter -> int * bool -> unit) ->
    ('a, 'b) Bdd.Env.t -> Format.formatter -> 'Bdd.Domain0.t -> unit
  val bottom : ('a, 'b) Bdd.Env.t -> 'Bdd.Domain0.t
  val top : ('a, 'b) Bdd.Env.t -> 'Bdd.Domain0.t
  val is_bottom : ('a, 'b) Bdd.Env.t -> 'Bdd.Domain0.t -> bool
  val is_top : ('a, 'b) Bdd.Env.t -> 'Bdd.Domain0.t -> bool
  val is_leq :
    ('a, 'b) Bdd.Env.t -> 'Bdd.Domain0.t -> 'Bdd.Domain0.t -> bool
  val is_eq :
    ('a, 'b) Bdd.Env.t -> 'Bdd.Domain0.t -> 'Bdd.Domain0.t -> bool
  val is_variable_unconstrained :
    ('a, 'b) Bdd.Env.t -> 'Bdd.Domain0.t -> '-> bool
  val meet :
    ('a, 'b) Bdd.Env.t ->
    'Bdd.Domain0.t -> 'Bdd.Domain0.t -> 'Bdd.Domain0.t
  val join :
    ('a, 'b) Bdd.Env.t ->
    'Bdd.Domain0.t -> 'Bdd.Domain0.t -> 'Bdd.Domain0.t
  val meet_condition :
    ('a, 'b) Bdd.Env.t ->
    'Bdd.Domain0.t -> 'Bdd.Expr0.Bool.t -> 'Bdd.Domain0.t
  val assign_lexpr :
    ?relational:bool ->
    ?nodependency:bool ->
    ('a, 'b) Bdd.Env.t ->
    'Bdd.Domain0.t -> 'a list -> 'Bdd.Expr0.expr list -> 'Bdd.Domain0.t
  val substitute_lexpr :
    ('a, 'b) Bdd.Env.t ->
    'Bdd.Domain0.t -> 'a list -> 'Bdd.Expr0.expr list -> 'Bdd.Domain0.t
  val forget_list :
    ('a, 'b) Bdd.Env.t -> 'Bdd.Domain0.t -> 'a list -> 'Bdd.Domain0.t
  module O :
    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
end