sig
type t
val i2e : int -> Facile.Arith.t
val fd2e : Facile.Var.Fd.t -> Facile.Arith.t
val ( +~ ) : Facile.Arith.t -> Facile.Arith.t -> Facile.Arith.t
val ( *~ ) : Facile.Arith.t -> Facile.Arith.t -> Facile.Arith.t
val ( -~ ) : Facile.Arith.t -> Facile.Arith.t -> Facile.Arith.t
val ( /~ ) : Facile.Arith.t -> Facile.Arith.t -> Facile.Arith.t
val ( **~ ) : Facile.Arith.t -> int -> Facile.Arith.t
val ( %~ ) : Facile.Arith.t -> Facile.Arith.t -> Facile.Arith.t
val abs : Facile.Arith.t -> Facile.Arith.t
val sum : Facile.Arith.t array -> Facile.Arith.t
val sum_fd : Facile.Var.Fd.t array -> Facile.Arith.t
val scalprod : int array -> Facile.Arith.t array -> Facile.Arith.t
val scalprod_fd : int array -> Facile.Var.Fd.t array -> Facile.Arith.t
val prod : Facile.Arith.t array -> Facile.Arith.t
val prod_fd : Facile.Var.Fd.t array -> Facile.Arith.t
val fprint : Pervasives.out_channel -> Facile.Arith.t -> unit
val eval : Facile.Arith.t -> int
val min_of_expr : Facile.Arith.t -> int
val max_of_expr : Facile.Arith.t -> int
val min_max_of_expr : Facile.Arith.t -> int * int
val ( <=~ ) : Facile.Arith.t -> Facile.Arith.t -> Facile.Cstr.t
val ( <~ ) : Facile.Arith.t -> Facile.Arith.t -> Facile.Cstr.t
val ( >~ ) : Facile.Arith.t -> Facile.Arith.t -> Facile.Cstr.t
val ( =~ ) : Facile.Arith.t -> Facile.Arith.t -> Facile.Cstr.t
val ( <>~ ) : Facile.Arith.t -> Facile.Arith.t -> Facile.Cstr.t
val ( >=~ ) : Facile.Arith.t -> Facile.Arith.t -> Facile.Cstr.t
val e2fd : Facile.Arith.t -> Facile.Var.Fd.t
val ( <=~~ ) : Facile.Arith.t -> Facile.Arith.t -> Facile.Arith.t
val ( <~~ ) : Facile.Arith.t -> Facile.Arith.t -> Facile.Arith.t
val ( >~~ ) : Facile.Arith.t -> Facile.Arith.t -> Facile.Arith.t
val ( =~~ ) : Facile.Arith.t -> Facile.Arith.t -> Facile.Arith.t
val ( <>~~ ) : Facile.Arith.t -> Facile.Arith.t -> Facile.Arith.t
val ( >=~~ ) : Facile.Arith.t -> Facile.Arith.t -> Facile.Arith.t
val shift : Facile.Var.Fd.t -> int -> Facile.Var.Fd.t
val get_boolsum_threshold : unit -> int
val set_boolsum_threshold : int -> unit
end