module Arith:sig..end
type t
Var.Fd.t and
integers.val i2e : int -> ti2e n returns an expression which evaluates to n.val fd2e : Var.Fd.t -> tfd2e v returns an expression which evaluates to n if the
variable v is instantiated to n.val e2fd : t -> Var.Fd.te2fd e creates and returns a new variable v and posts the constraint
fd2e v =~ e.facile.cma),
the arithmetic operators check whether any integer overflow
(i.e. the result of an arithmetic operation on integers is
less than min_int or greater than max_int) occurs during
constraints internal computations and raise an assert failure.
Arithmetic operations are taken modulo otherwise
(or on 64-bit processors, see the OCaml reference
manual), thus incomplete failures may happen
with native code compiled programs.val (+~) : t -> t -> tval (-~) : t -> t -> tval (*~) : t -> t -> tval (**~) : t -> int -> tval (/~) : t -> t -> tval (%~) : t -> t -> tDivision_by_zero
is raised whenever the second argument evaluates to 0.val abs : t -> tval sum : t array -> tval sum_fd : Var.Fd.t array -> tsum exps (resp. sum_fd vars) returns the sum of all the elements of an
array of expressions (resp. variables). Returns an expression that evaluates
to 0 if the array is empty.val scalprod : int array -> t array -> tval scalprod_fd : int array -> Var.Fd.t array -> tscalprod coeffs exps (resp. scalprod_fd coeffs vars) returns the
scalar product of an array of integers and an array of expressions
(resp. variables).
Returns an expression that evaluates to 0 if both arrays are empty.
Raises Invalid_argument if the arrays don't have the same length.val prod : t array -> tval prod_fd : Var.Fd.t array -> tprod exps (resp. prod_fd vars) returns the product of all the
elements of an array of expressions (resp. variables).
Returns an expression that evaluates to 1 if the array is empty.val fprint : Pervasives.out_channel -> t -> unitfprint chan e prints expression e on channel chan.val eval : t -> inteval e returns the integer numerical value of a fully instantiated
expression e. Raises Invalid_argument if e is not instantiated.val min_of_expr : t -> intval max_of_expr : t -> intmin_of_expr e (resp. max_of_expr e) returns the minimal (resp. maximal)
possible value of expression e.val min_max_of_expr : t -> int * intmin_max_of_expr e is equivalent to (min_of_expr e, max_of_expr e).val (<~) : t -> t -> Cstr.tval (<=~) : t -> t -> Cstr.tval (=~) : t -> t -> Cstr.tval (>=~) : t -> t -> Cstr.tval (>~) : t -> t -> Cstr.tval (<>~) : t -> t -> Cstr.tval shift : Var.Fd.t -> int -> Var.Fd.tshift x d returns a finite domain variable constrained to be
equal to x+d.1 when the constraint is
satisfied and to 0 if it is violated.
See module Reify .val (<~~) : t -> t -> te1 op~~ e2 is equivalent to fd2e (Reify.boolean (e1 op~ e2)).val (<=~~) : t -> t -> tval (=~~) : t -> t -> tval (>=~~) : t -> t -> tval (>~~) : t -> t -> tval (<>~~) : t -> t -> t
FaCiLe tries to automatically optimize the processing of
boolean (0-1 variables) sums whenever their sizes are large enough.
val get_boolsum_threshold : unit -> intval set_boolsum_threshold : int -> unitboolsum_threshold max_int disables it.