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