sig
type 'a typdef = 'a Bdd.Env.typdef
type 'a typ = [ `Benum of 'a | `Bint of bool * int | `Bool | `Int | `Real ]
type 'a symbol =
'a Bdd.Env.symbol = {
compare : 'a -> 'a -> int;
marshal : 'a -> string;
unmarshal : string -> 'a;
mutable print : Format.formatter -> 'a -> unit;
}
type ('a, 'b) ext = {
mutable table : 'a Apronexpr.t Cudd.Mtbdd.table;
mutable eapron : Apron.Environment.t;
mutable aext : 'b;
}
type ('a, 'b, 'c, 'd) t0 =
('a, 'b, 'c, Cudd.Man.v, ('a, 'd) Env.ext) Bdd.Env.t0
module O :
sig
type ('a, 'b, 'c, 'd) t = ('a, 'b, 'c, 'd) Env.t0
constraint 'b = [> 'a Env.typ ] constraint 'c = [> 'a Env.typdef ]
val make :
symbol:'a Env.symbol ->
copy_aext:('b -> 'b) ->
?bddindex0:int ->
?bddsize:int ->
?relational:bool ->
Cudd.Man.vt ->
'b -> ('a, [> 'a Env.typ ], [> 'a Env.typdef ], 'b) Env.O.t
val print :
(Format.formatter -> ([> 'b Env.typ ] as 'a) -> unit) ->
(Format.formatter -> ([> 'b Env.typdef ] as 'c) -> unit) ->
(Format.formatter -> 'd -> unit) ->
Format.formatter -> ('b, 'a, 'c, 'd) Env.O.t -> unit
end
type 'a t = ('a, 'a Env.typ, 'a Env.typdef, unit) Env.O.t
val print_typ :
(Format.formatter -> 'a -> unit) ->
Format.formatter -> [> 'a Env.typ ] -> unit
val print_typdef :
(Format.formatter -> 'a -> unit) ->
Format.formatter -> [> 'a Env.typdef ] -> unit
val print_idcondb :
('a, [> 'a Env.typ ], [> 'a Env.typdef ], 'b) Env.O.t ->
Format.formatter -> int * bool -> unit
val print_order :
('a, [> 'a Env.typ ], [> 'a Env.typdef ], 'b) Env.O.t ->
Format.formatter -> unit
val print :
Format.formatter ->
('a, [> 'a Env.typ ], [> 'a Env.typdef ], 'b) Env.O.t -> unit
val marshal : 'a -> string
val unmarshal : string -> 'a
val make_symbol :
?compare:('a -> 'a -> int) ->
?marshal:('a -> string) ->
?unmarshal:(string -> 'a) ->
(Format.formatter -> 'a -> unit) -> 'a Env.symbol
val string_symbol : string Env.symbol
val make :
symbol:'a Env.symbol ->
?bddindex0:int ->
?bddsize:int -> ?relational:bool -> Cudd.Man.vt -> 'a Env.t
val make_string :
?bddindex0:int ->
?bddsize:int -> ?relational:bool -> Cudd.Man.vt -> string Env.t
val copy :
('a, [> 'a Env.typ ] as 'b, [> 'a Env.typdef ] as 'c, 'd) Env.O.t ->
('a, 'b, 'c, 'd) Env.O.t
val mem_typ :
('a, [> 'a Env.typ ], [> 'a Env.typdef ], 'b) Env.O.t -> 'a -> bool
val mem_var :
('a, [> 'a Env.typ ], [> 'a Env.typdef ], 'b) Env.O.t -> 'a -> bool
val mem_label :
('a, [> 'a Env.typ ], [> 'a Env.typdef ], 'b) Env.O.t -> 'a -> bool
val typdef_of_typ :
('a, [> 'a Env.typ ], [> 'a Env.typdef ] as 'b, 'c) Env.O.t -> 'a -> 'b
val typ_of_var :
('a, [> 'a Env.typ ] as 'b, [> 'a Env.typdef ], 'c) Env.O.t -> 'a -> 'b
val vars :
('a, [> 'a Env.typ ], [> 'a Env.typdef ], 'b) Env.O.t -> 'a PSette.t
val labels :
('a, [> 'a Env.typ ], [> 'a Env.typdef ], 'b) Env.O.t -> 'a PSette.t
val add_typ_with :
('a, [> 'a Env.typ ], [> 'a Env.typdef ] as 'b, 'c) Env.O.t ->
'a -> 'b -> unit
val add_vars_with :
('a, [> 'a Env.typ ] as 'b, [> 'a Env.typdef ], 'c) Env.O.t ->
('a * 'b) list -> int array option
val remove_vars_with :
('a, [> 'a Env.typ ], [> 'a Env.typdef ], 'b) Env.O.t ->
'a list -> int array option
val rename_vars_with :
('a, [> 'a Env.typ ], [> 'a Env.typdef ], 'b) Env.O.t ->
('a * 'a) list -> int array option * Apron.Dim.perm option
val add_typ :
('a, [> 'a Env.typ ] as 'b, [> 'a Env.typdef ] as 'c, 'd) Env.O.t ->
'a -> 'c -> ('a, 'b, 'c, 'd) Env.O.t
val add_vars :
('a, [> 'a Env.typ ] as 'b, [> 'a Env.typdef ] as 'c, 'd) Env.O.t ->
('a * 'b) list -> ('a, 'b, 'c, 'd) Env.O.t
val remove_vars :
('a, [> 'a Env.typ ] as 'b, [> 'a Env.typdef ] as 'c, 'd) Env.O.t ->
'a list -> ('a, 'b, 'c, 'd) Env.O.t
val rename_vars :
('a, [> 'a Env.typ ] as 'b, [> 'a Env.typdef ] as 'c, 'd) Env.O.t ->
('a * 'a) list -> ('a, 'b, 'c, 'd) Env.O.t
val is_leq :
('a, [> 'a Env.typ ] as 'b, [> 'a Env.typdef ] as 'c, 'd) Env.O.t ->
('a, 'b, 'c, 'd) Env.O.t -> bool
val is_eq :
('a, [> 'a Env.typ ] as 'b, [> 'a Env.typdef ] as 'c, 'd) Env.O.t ->
('a, 'b, 'c, 'd) Env.O.t -> bool
val lce :
('a, [> 'a Env.typ ] as 'b, [> 'a Env.typdef ] as 'c, 'd) Env.O.t ->
('a, 'b, 'c, 'd) Env.O.t -> ('a, 'b, 'c, 'd) Env.O.t
type change = {
cbdd : Cudd.Man.v Bdd.Env.change;
capron : Apron.Dim.change2;
}
val compute_change :
('a, [> 'a Env.typ ] as 'b, [> 'a Env.typdef ] as 'c, 'd) Env.O.t ->
('a, 'b, 'c, 'd) Env.O.t -> Env.change
type ('a, 'b) value = ('a, 'b) Bdd.Env.value = { env : 'a; val0 : 'b; }
val make_value :
('a, [> 'a Env.typ ] as 'b, [> 'a Env.typdef ] as 'c, 'd) Env.O.t ->
'e -> (('a, 'b, 'c, 'd) Env.O.t, 'e) Env.value
val get_env : ('a, 'b) Env.value -> 'a
val get_val0 : ('a, 'b) Env.value -> 'b
val check_var :
('a, [> 'a Env.typ ], [> 'a Env.typdef ], 'b) Env.O.t -> 'a -> unit
val check_lvar :
('a, [> 'a Env.typ ], [> 'a Env.typdef ], 'b) Env.O.t -> 'a list -> unit
val check_value :
('a, [> 'a Env.typ ] as 'b, [> 'a Env.typdef ] as 'c, 'd) Env.O.t ->
(('a, 'b, 'c, 'd) Env.O.t, 'e) Env.value -> unit
val check_value2 :
(('a, [> 'a Env.typ ] as 'b, [> 'a Env.typdef ] as 'c, 'd) Env.O.t, 'e)
Env.value -> (('a, 'b, 'c, 'd) Env.O.t, 'f) Env.value -> unit
val check_value3 :
(('a, [> 'a Env.typ ] as 'b, [> 'a Env.typdef ] as 'c, 'd) Env.O.t, 'e)
Env.value ->
(('a, 'b, 'c, 'd) Env.O.t, 'f) Env.value ->
(('a, 'b, 'c, 'd) Env.O.t, 'g) Env.value -> unit
val check_lvarvalue :
('a, [> 'a Env.typ ] as 'b, [> 'a Env.typdef ] as 'c, 'd) Env.O.t ->
('a * (('a, 'b, 'c, 'd) Env.O.t, 'e) Env.value) list -> ('a * 'e) list
val check_lvalue :
('a, [> 'a Env.typ ] as 'b, [> 'a Env.typdef ] as 'c, 'd) Env.O.t ->
(('a, 'b, 'c, 'd) Env.O.t, 'e) Env.value list -> 'e list
val check_ovalue :
('a, [> 'a Env.typ ] as 'b, [> 'a Env.typdef ] as 'c, 'd) Env.O.t ->
(('a, 'b, 'c, 'd) Env.O.t, 'e) Env.value option -> 'e option
val mapunop :
('a -> 'b) ->
(('c, [> 'c Env.typ ] as 'd, [> 'c Env.typdef ] as 'e, 'f) Env.O.t, 'a)
Env.value -> (('c, 'd, 'e, 'f) Env.O.t, 'b) Env.value
val mapbinop :
('a -> 'b -> 'c) ->
(('d, [> 'd Env.typ ] as 'e, [> 'd Env.typdef ] as 'f, 'g) Env.O.t, 'a)
Env.value ->
(('d, 'e, 'f, 'g) Env.O.t, 'b) Env.value ->
(('d, 'e, 'f, 'g) Env.O.t, 'c) Env.value
val mapbinope :
(('a, [> 'a Env.typ ] as 'b, [> 'a Env.typdef ] as 'c, 'd) Env.O.t ->
'e -> 'f -> 'g) ->
(('a, 'b, 'c, 'd) Env.O.t, 'e) Env.value ->
(('a, 'b, 'c, 'd) Env.O.t, 'f) Env.value ->
(('a, 'b, 'c, 'd) Env.O.t, 'g) Env.value
val mapterop :
('a -> 'b -> 'c -> 'd) ->
(('e, [> 'e Env.typ ] as 'f, [> 'e Env.typdef ] as 'g, 'h) Env.O.t, 'a)
Env.value ->
(('e, 'f, 'g, 'h) Env.O.t, 'b) Env.value ->
(('e, 'f, 'g, 'h) Env.O.t, 'c) Env.value ->
(('e, 'f, 'g, 'h) Env.O.t, 'd) Env.value
val var_of_aprondim :
('a, 'b, 'c, 'd, ('e, 'f) Env.ext) Bdd.Env.t0 -> Apron.Dim.t -> 'a
val aprondim_of_var :
('a, 'b, 'c, 'd, ('e, 'f) Env.ext) Bdd.Env.t0 -> 'a -> Apron.Dim.t
val string_of_aprondim :
('a, 'b, 'c, 'd, ('e, 'f) Env.ext) Bdd.Env.t0 -> Apron.Dim.t -> string
end