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