Copyright | (c) Kimiyuki Onaka 2021 |
---|---|
License | Apache License 2.0 |
Maintainer | hotman78@gmail.com |
Stability | experimental |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
\[ \newcommand\int{\mathbf{int}} \newcommand\bool{\mathbf{bool}} \newcommand\list{\mathbf{list}} \]
Synopsis
- run :: (MonadAlpha m, MonadError Error m) => Program -> m Program
- rule :: (MonadAlpha m, MonadError Error m) => RewriteRule m
- moveLiteralToRight :: (MonadAlpha m, MonadError Error m) => RewriteRule m
- convertGreaterToLess :: (MonadAlpha m, MonadError Error m) => RewriteRule m
- reduceReflexivity :: (MonadAlpha m, MonadError Error m) => RewriteRule m
- makeRightZero :: (MonadAlpha m, MonadError Error m) => RewriteRule m
- reduceIntInjective :: (MonadAlpha m, MonadError Error m) => RewriteRule m
- reduceNot :: (MonadAlpha m, MonadError Error m) => RewriteRule m
- reduceListCtor :: (MonadAlpha m, MonadError Error m) => RewriteRule m
- reduceListInjective :: (MonadAlpha m, MonadError Error m) => RewriteRule m
Documentation
run :: (MonadAlpha m, MonadError Error m) => Program -> m Program Source #
rule :: (MonadAlpha m, MonadError Error m) => RewriteRule m Source #
internal rules
moveLiteralToRight :: (MonadAlpha m, MonadError Error m) => RewriteRule m Source #
moveLiteralToRight
moves literals to lhs of (==)
or (/=)
, using symmetricity.
convertGreaterToLess :: (MonadAlpha m, MonadError Error m) => RewriteRule m Source #
convertGreaterToLess
erases (>)
and (>=)
.
reduceReflexivity :: (MonadAlpha m, MonadError Error m) => RewriteRule m Source #
reduceReflexivity
uses reflexivity.
makeRightZero :: (MonadAlpha m, MonadError Error m) => RewriteRule m Source #
makeRightZero
makes RHS of integer equality/inequality zero with subtracting RHS from both sides.
reduceIntInjective :: (MonadAlpha m, MonadError Error m) => RewriteRule m Source #
reduceIntInjective
removes injective functions from equalities of integers.
reduceNot :: (MonadAlpha m, MonadError Error m) => RewriteRule m Source #
reduceListCtor :: (MonadAlpha m, MonadError Error m) => RewriteRule m Source #
reduceListInjective :: (MonadAlpha m, MonadError Error m) => RewriteRule m Source #