Signature.DomainAbstract domain with full handling of boolean expressions instead of only numeric comparisons
include Numericval empty : treturns an empty element
returns the variables annoted by their type and their definition domain
val volume : t -> floatcomputes the volume of an abstract element
Joins two abstract elements. The boolean flag indicates if the join was exact. It is always sound to return false
Joins a list of n abstract elements. May be faster than joining pairwise. The boolean flag indicates if the join was exact. It is always sound to return false
substracts the second abstract element from the first (difference operator) if an exact operator can not be defined (None), the solver doesn't use the pruning features. precondition: the two abstract elements must be defined onto the same set of variables.
splits an abstract element along the specified variable
computes the range of value of a given expression within an abstract element
val to_constraint : t -> Constraint.ttransforms an abstract element into constraints
val spawn : t -> Csp.instanceRandom concretization function. useful to do tests, and to reuse the results. values are generated uniformly when possible
val is_abstraction : t -> Csp.instance -> boolcheck if an abstract element is an abstraction of an instance
val print : Stdlib.Format.formatter -> t -> unitprinting
val render : t -> Picasso.Drawable.ttransforms an abstract element into a Picasso.Drawable.t for drawing
val internalize : ?elem:t -> Constraint.t -> internal_constrconstraint conversion
val externalize : internal_constr -> Constraint.tval sat : Instance.t -> internal_constr -> boolsatisfaction test on the internal constraint representation
val filter : t -> internal_constr -> (t * internal_constr) Consistency.tredefinition of filter using boolean expression, it also computes a potentially simplified equivalent constraint e.g:
val filter_diff : 
  t ->
  internal_constr ->
  (t * internal_constr * Tools.VarSet.t) Consistency.tsame as filter but also returns the set of variables that have been effectively filtered
val is_representable : internal_constr -> Kleene.tchecks if a constraint can be encoded without loss of precision; i.e \forall x, \gamma(\rho(x,c)) = \{v \in \gamma(x) |
      c(v)\}