Module type Symbolic.LINEXPR

type factor
type linexpr
type var
type const
type 'a valuation
type const_values
exception NON_LINEAR of var NEL.t
exception NOT_SCALAR of [ `Vars of var NEL.t | `Consts of const NEL.t ]
val pp_factor : factor Pretty.printer
val pp_linexpr : linexpr Pretty.printer
val int : int -> factor
val var : var -> factor
val const : const -> linexpr
val factor : factor -> linexpr
val zero : linexpr
val add : linexpr -> linexpr -> linexpr
val sub : linexpr -> linexpr -> linexpr
val mult : linexpr -> by:factor -> linexpr
val as_int : ?const_values:const_values -> linexpr -> int
val subst_vars : linexpr -> int valuation -> linexpr
val subst_consts : linexpr -> const_values -> linexpr