Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data ArithmeticExpr
- parseArithmeticExpr :: Expr -> ArithmeticExpr
- formatArithmeticExpr :: ArithmeticExpr -> Expr
- integerArithmeticExpr :: Integer -> ArithmeticExpr
- negateArithmeticExpr :: ArithmeticExpr -> ArithmeticExpr
- plusArithmeticExpr :: ArithmeticExpr -> ArithmeticExpr -> ArithmeticExpr
- minusArithmeticExpr :: ArithmeticExpr -> ArithmeticExpr -> ArithmeticExpr
- multArithmeticExpr :: ArithmeticExpr -> ArithmeticExpr -> ArithmeticExpr
- incrArithmeticExpr :: ArithmeticExpr -> ArithmeticExpr
- decrArithmeticExpr :: ArithmeticExpr -> ArithmeticExpr
- sumArithmeticExpr :: [ArithmeticExpr] -> ArithmeticExpr
- isZeroArithmeticExpr :: ArithmeticExpr -> Bool
- isOneArithmeticExpr :: ArithmeticExpr -> Bool
- isIntegerArithmeticExpr :: ArithmeticExpr -> Bool
- integerFromArithmeticExpr :: ArithmeticExpr -> Maybe Integer
- unNPlusKPattern :: ArithmeticExpr -> Maybe (VarName, Integer)
- makeVectorFromArithmeticExpr :: Vector VarName -> ArithmeticExpr -> Maybe (Vector ArithmeticExpr, ArithmeticExpr)
- makeAffineFunctionFromArithmeticExpr :: VarName -> ArithmeticExpr -> Maybe (ArithmeticExpr, ArithmeticExpr)
- splitConstantFactorArithmeticExpr :: ArithmeticExpr -> (Integer, ArithmeticExpr)
- splitToSumArithmeticExpr :: ArithmeticExpr -> [ArithmeticExpr]
Basic functions
data ArithmeticExpr Source #
Instances
Eq ArithmeticExpr Source # | |
Defined in Jikka.Core.Language.ArithmeticExpr (==) :: ArithmeticExpr -> ArithmeticExpr -> Bool # (/=) :: ArithmeticExpr -> ArithmeticExpr -> Bool # | |
Ord ArithmeticExpr Source # | |
Defined in Jikka.Core.Language.ArithmeticExpr compare :: ArithmeticExpr -> ArithmeticExpr -> Ordering # (<) :: ArithmeticExpr -> ArithmeticExpr -> Bool # (<=) :: ArithmeticExpr -> ArithmeticExpr -> Bool # (>) :: ArithmeticExpr -> ArithmeticExpr -> Bool # (>=) :: ArithmeticExpr -> ArithmeticExpr -> Bool # max :: ArithmeticExpr -> ArithmeticExpr -> ArithmeticExpr # min :: ArithmeticExpr -> ArithmeticExpr -> ArithmeticExpr # | |
Show ArithmeticExpr Source # | |
Defined in Jikka.Core.Language.ArithmeticExpr showsPrec :: Int -> ArithmeticExpr -> ShowS # show :: ArithmeticExpr -> String # showList :: [ArithmeticExpr] -> ShowS # |
parseArithmeticExpr :: Expr -> ArithmeticExpr Source #
parseArithmeticExpr
converts a given expr to a normal form \(\sum_i \prod_j e _ {i,j})\).
This assumes given exprs have the type \(\mathbf{int}\).
Advanced functions
unNPlusKPattern :: ArithmeticExpr -> Maybe (VarName, Integer) Source #
unNPlusKPattern
recognizes a pattern of \(x + k\) for a variable \(x\) and an integer constant \(k \in \mathbb{Z}\).
makeVectorFromArithmeticExpr :: Vector VarName -> ArithmeticExpr -> Maybe (Vector ArithmeticExpr, ArithmeticExpr) Source #
makeVectorFromArithmeticExpr
makes a vector \(f\) and a expr \(c\) from a given vector of variables \(x_0, x_1, \dots, x _ {n - 1}\) and a given expr \(e\) s.t. \(f\) and \(c\) don't have \(x_0, x_1, \dots, x _ {n - 1}\) as free variables and \(e = c + f \cdot (x_0, x_1, \dots, x _ {n - 1})\) holds.
This assumes given variables and exprs have the type \(\mathbf{int}\).
- The returned exprs are normalized with
normalizeArithmeticExpr
.
makeAffineFunctionFromArithmeticExpr :: VarName -> ArithmeticExpr -> Maybe (ArithmeticExpr, ArithmeticExpr) Source #
makeAffineFunctionFromArithmeticExpr
is a specialized version of makeVectorFromArithmeticExpr
.
This function returns \(a, b\) for a given variable \(x\) and a given expr \(e = a x + b\) where \(a, b\) which doesn't use \(x\) free.
splitConstantFactorArithmeticExpr :: ArithmeticExpr -> (Integer, ArithmeticExpr) Source #
splitConstantFactorArithmeticExpr
finds \(k\) and \(e'\) for given \(e\) s.t. \(e = k e'\).