Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data ModuloExpr
- parseModuloExpr :: Expr -> Maybe ModuloExpr
- formatTopModuloExpr :: ModuloExpr -> Expr
- formatBottomModuloExpr :: ModuloExpr -> Expr
- integerModuloExpr :: Modulo -> Integer -> ModuloExpr
- negateModuloExpr :: ModuloExpr -> ModuloExpr
- plusModuloExpr :: ModuloExpr -> ModuloExpr -> Maybe ModuloExpr
- minusModuloExpr :: ModuloExpr -> ModuloExpr -> Maybe ModuloExpr
- multModuloExpr :: ModuloExpr -> ModuloExpr -> Maybe ModuloExpr
- isZeroModuloExpr :: ModuloExpr -> Bool
- isOneModuloExpr :: ModuloExpr -> Bool
- moduloOfModuloExpr :: ModuloExpr -> Expr
- arithmeticExprFromModuloExpr :: ModuloExpr -> ArithmeticExpr
- newtype Modulo = Modulo {}
- formatModulo :: Modulo -> String
- isModulo :: Expr -> Modulo -> Bool
Basic functions
data ModuloExpr Source #
Instances
Eq ModuloExpr Source # | |
Defined in Jikka.Core.Language.ModuloExpr (==) :: ModuloExpr -> ModuloExpr -> Bool # (/=) :: ModuloExpr -> ModuloExpr -> Bool # | |
Ord ModuloExpr Source # | |
Defined in Jikka.Core.Language.ModuloExpr compare :: ModuloExpr -> ModuloExpr -> Ordering # (<) :: ModuloExpr -> ModuloExpr -> Bool # (<=) :: ModuloExpr -> ModuloExpr -> Bool # (>) :: ModuloExpr -> ModuloExpr -> Bool # (>=) :: ModuloExpr -> ModuloExpr -> Bool # max :: ModuloExpr -> ModuloExpr -> ModuloExpr # min :: ModuloExpr -> ModuloExpr -> ModuloExpr # | |
Show ModuloExpr Source # | |
Defined in Jikka.Core.Language.ModuloExpr showsPrec :: Int -> ModuloExpr -> ShowS # show :: ModuloExpr -> String # showList :: [ModuloExpr] -> ShowS # |
parseModuloExpr :: Expr -> Maybe ModuloExpr Source #
parseModuloExpr
converts a given expr to a normal form \(\sum_i \prod_j e _ {i,j}) \bmod m\).
This assumes given exprs have the type \(\mathbf{int}\).
formatTopModuloExpr :: ModuloExpr -> Expr Source #
formatTopModuloExpr
convert ModuloExpr
to Expr
with adding FloorMod
at only the root.
formatBottomModuloExpr :: ModuloExpr -> Expr Source #
formatBottomModuloExpr
convert ModuloExpr
to Expr
with adding FloorMod
at every nodes.
integerModuloExpr :: Modulo -> Integer -> ModuloExpr Source #
plusModuloExpr :: ModuloExpr -> ModuloExpr -> Maybe ModuloExpr Source #
minusModuloExpr :: ModuloExpr -> ModuloExpr -> Maybe ModuloExpr Source #
multModuloExpr :: ModuloExpr -> ModuloExpr -> Maybe ModuloExpr Source #
isZeroModuloExpr :: ModuloExpr -> Bool Source #
isOneModuloExpr :: ModuloExpr -> Bool Source #
moduloOfModuloExpr :: ModuloExpr -> Expr Source #
Utilities
Modulo
is just a newtype to avoid mistakes that swapping left and right of mod-op.
formatModulo :: Modulo -> String Source #