module Bdddomain0: sig
.. end
type ('a, 'b)
man = {
|
apron :'b Apron.Manager.t ; |
|
mutable bdd_restrict :Cudd.Bdd.vt -> Cudd.Bdd.vt -> Cudd.Bdd.vt ; |
|
mutable expr_restrict :'a Bddapron.Expr0.t -> Cudd.Bdd.vt -> 'a Bddapron.Expr0.t ; |
|
mutable meet_disjoint :bool ; |
|
mutable join_disjoint :bool ; |
|
mutable meet_cond_unique :bool ; |
|
mutable meet_cond_disjoint :bool ; |
|
mutable meet_cond_depth :int ; |
|
mutable assign_unique :bool ; |
|
mutable assign_disjoint :bool ; |
|
mutable substitute_unique :bool ; |
|
mutable substitute_disjoint :bool ; |
|
mutable forget_unique :bool ; |
|
mutable forget_disjoint :bool ; |
|
mutable change_environment_unique :bool ; |
|
mutable change_environment_disjoint :bool ; |
}
BDDAPRON Manager. The type parameter 'b
indicates the
underlying APRON abstract domain, as in type 'b
Apron.Abstract1.t
, and 'a
is the type of symbols.
type 'b
elt = (Cudd.Man.v, 'b Apron.Abstract0.t) Bddapron.Bddleaf.elt
type 'b
t = {
|
mutable list :'b elt list ; |
|
bottom :'b elt ; |
|
mutable unique :bool ; |
|
mutable disjoint :bool ; |
}
Abstract value.
val make_man : 'b Apron.Manager.t -> ('a, 'b) man
Makes a BDDAPRON manager from an APRON manager, and fills
options with default values
val canonicalize : ?apron:bool ->
?unique:bool ->
?disjoint:bool ->
('a, 'b) man -> 'b t -> unit
Canonicalize an abstract value by ensuring uniqueness and
disjointness properties. If apron
is true, then also
normalize APRON abstract values. By default: apron=false,
unique=disjoint=true
.
val size : ('a, 'b) man -> 'b t -> int
Size of an abstract value in terms of number of nodes of the MTBDD.
val print : ?print_apron:((int -> string) ->
Format.formatter -> 'b Apron.Abstract0.t -> unit) ->
'a Bddapron.Env.t -> Format.formatter -> 'b t -> unit
Printing function
Constructors, accessors, tests and property extraction
Basic constructor
val bottom : ('a, 'b) man ->
'a Bddapron.Env.t -> 'b t
val top : ('a, 'b) man ->
'a Bddapron.Env.t -> 'b t
val of_apron : ('a, 'b) man ->
'a Bddapron.Env.t -> 'b Apron.Abstract0.t -> 'b t
val of_bddapron : ('a, 'b) man ->
'a Bddapron.Env.t ->
('a Bddapron.Expr0.Bool.t * 'b Apron.Abstract0.t) list ->
'b t
Tests
val is_bottom : ('a, 'b) man -> 'b t -> bool
val is_top : ('a, 'b) man -> 'b t -> bool
Emtpiness and Universality tests
val is_leq : ('a, 'b) man ->
'b t -> 'b t -> bool
val is_eq : ('a, 'b) man ->
'b t -> 'b t -> bool
Inclusion and equality tests
val to_bddapron : ('a, 'b) man ->
'b t ->
('a Bddapron.Expr0.Bool.t * 'b Apron.Abstract0.t) list
Conversion to a disjunction of a conjunction of pair of a
purely Boolean formula (without numerical constraints) and an
APRON abstract value
Operations
val meet : ('a, 'b) man ->
'b t ->
'b t -> 'b t
val join : ('a, 'b) man ->
'b t ->
'b t -> 'b t
Meet and join
val meet_condition : ('a, 'b) man ->
'a Bddapron.Env.t ->
'a Bddapron.Cond.t ->
'b t ->
'a Bddapron.Expr0.Bool.t -> 'b t
Intersection with a Boolean expression (that may involve
numerical constraints)
val assign_lexpr : ?relational:bool ->
?nodependency:bool ->
('a, 'b) man ->
'a Bddapron.Env.t ->
'a Bddapron.Cond.t ->
'b t ->
'a list ->
'a Bddapron.Expr0.t list ->
'b t option -> 'b t
val substitute_lexpr : ('a, 'b) man ->
'a Bddapron.Env.t ->
'a Bddapron.Cond.t ->
'b t ->
'a list ->
'a Bddapron.Expr0.t list ->
'b t option -> 'b t
Parallel assignement/substitution of a list of variables by
a list of expressions
val forget_list : ('a, 'b) man ->
'a Bddapron.Env.t ->
'b t -> 'a list -> 'b t
Forget (existential quantification) a list of variables
val widening : ('a, 'b) man ->
'b t ->
'b t -> 'b t
val widening_threshold : ('a, 'b) man ->
'b t ->
'b t ->
Apron.Lincons0.t array -> 'b t
Widening
val apply_change : bottom:'b t ->
('a, 'b) man ->
'b t -> Bddapron.Env.change -> 'b t
val apply_permutation : ('a, 'b) man ->
'b t ->
int array option * Apron.Dim.perm option -> 'b t
Opened signature and Internal functions
module O: sig
.. end