Module Program.VarExpr

type var = Var.t
include Std_extra.Types.TYPE with type t = var Expr.expr
val compare : t -> t -> int
val order : t -> t -> Std_extra.Types.order
val equal : t -> t -> bool
val hash : t -> int
val of_node : var Expr.expr_node -> var Expr.expr

Constructors: These build hashconsed expressions. They also immediatly evaluate constant expressions, so binop PlusA one one is turned into 2.

val var : var -> var Expr.expr
val of_int : int -> var Expr.expr
val of_const : Z.t -> var Expr.expr
val zero : var Expr.expr
val one : var Expr.expr
val two : var Expr.expr
val minus_one : var Expr.expr
val simplify_expr : (var Expr.expr -> Z.t option) -> var Expr.expr -> var Expr.expr

simplify_expr query_is_constant expr performs a number of small rewrites on the expression expr. query_is_constant is used to determine if some variables/expression are constant.