Module La


module La: sig  end
Linear arithmetic decision procedure
Author(s): Harald Ruess, N. Shankar


This module provides the building blocks for a decision procedure for real and integer linear arithmetic based on the Simplex algorithm.

module S: sig  end
States s consist of two solution sets (r, t) with r the regular solution set with equalities of the form x = a with x a nonslack variable (see Term.Var.is_slack) and a a linear arithmetic term., t a tableau with equalities k = b with k a slack variable, and all variables in the linear arithmetic term b are slack variables, too. A state s represents the conjunction of equalities in r and t.

type tag =
| R
| T

val pp : tag -> S.t Pretty.printer
Print a partitioned version of s.
Parameters:
tag : tag
fmt : Format.formatter
s : S.t
val can : Partition.t * S.t -> Jst.Eqtrans.t
replace s a substitutes dependent variables x in a with their right hand side b if x = b in s. The result is canonized using Arith.map.
Parameters:
cfg : Partition.t * S.t
val nl_merge : (Fact.Equal.t -> unit) Pervasives.ref
module Infsys: sig  end
Inference system for linear arithmetic.
exception Unbounded
Indicates unboundedness of a term in a state.
val upper : Partition.t * S.t -> Jst.Eqtrans.t
upper s a returns either
Parameters:
cfg : Partition.t * S.t
val lower : Partition.t * S.t -> Jst.Eqtrans.t
Parameters:
cfg : Partition.t * S.t
val is_equal : Partition.t * S.t -> Jst.Pred2.t
Parameters:
cfg : Partition.t * S.t
val model : S.t -> Term.t list -> Term.t Term.Map.t
model (p, s) xs returns an assignment rho for the variables in xs with bindings x |-> q. q is either a rational number or a rational number added to the multiple of a "small" constant eps. The assignment rho can be extended to a model of s.
Parameters:
s : S.t
xl : Term.t list