- data Term
- type Name = Int
- split_term :: Name -> Term -> (Integer, Term)
- is_constant :: Term -> Maybe Integer
- (.*) :: Integer -> Term -> Term
- var :: Name -> Term
- num :: Integer -> Term
- data Env
- env_empty :: Env
- env_extend :: Name -> Integer -> Env -> Env
- eval_term :: Term -> Env -> Integer
- subst_term :: Name -> Integer -> Term -> Term
- var_name :: Name -> String
Documentation
Terms of Presburger arithmetic.
Term are created by using the Num
class.
WARNING: Presburger arithmetic only supports multiplication
by a constant, trying to create invalid terms will result
in a run-time error. A more type-safe alternative is to
use the '(.*)' operator.
split_term :: Name -> Term -> (Integer, Term)Source
split_term x (n * x + t1) = (n,t1)
x
does not occur in t1