module Fcl_arith:sig..end
type t
Var.Fd.t and
integers.val i2e : int -> ti2e n returns an expression which evaluates to n.val fd2e : Fcl_var.Fd.t -> tfd2e v returns an expression which evaluates to n if the
variable v is instantiated to n.val e2fd : t -> Fcl_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 -> t
val (-~) : t -> t -> t
val ( *~ ) : t -> t -> tval ( **~ ) : t -> int -> tval (/~) : t -> t -> t
val (%~) : t -> t -> tDivision_by_zero
is raised whenever the second argument evaluates to 0.val abs : t -> tval sum : t array -> t
val sum_fd : Fcl_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 -> t
val scalprod_fd : int array -> Fcl_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 -> t
val prod_fd : Fcl_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 -> int
val 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 -> Fcl_cstr.t
val (<=~) : t -> t -> Fcl_cstr.t
val (=~) : t -> t -> Fcl_cstr.t
val (>=~) : t -> t -> Fcl_cstr.t
val (>~) : t -> t -> Fcl_cstr.t
val (<>~) : t -> t -> Fcl_cstr.tval shift : Fcl_var.Fd.t -> int -> Fcl_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 -> t
val (=~~) : t -> t -> t
val (>=~~) : t -> t -> t
val (>~~) : t -> t -> t
val (<>~~) : 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.