Language.ImProve.Core
- data E a where
- Ref :: AllE a => V a -> E a
- Const :: AllE a => a -> E a
- Add :: NumE a => E a -> E a -> E a
- Sub :: NumE a => E a -> E a -> E a
- Mul :: NumE a => E a -> a -> E a
- Div :: NumE a => E a -> a -> E a
- Mod :: E Int -> Int -> E Int
- Not :: E Bool -> E Bool
- And :: E Bool -> E Bool -> E Bool
- Or :: E Bool -> E Bool -> E Bool
- Eq :: AllE a => E a -> E a -> E Bool
- Lt :: NumE a => E a -> E a -> E Bool
- Gt :: NumE a => E a -> E a -> E Bool
- Le :: NumE a => E a -> E a -> E Bool
- Ge :: NumE a => E a -> E a -> E Bool
- Mux :: AllE a => E Bool -> E a -> E a -> E a
- data V a = V Bool [Name] a
- data UV
- type Name = String
- type Path = [Name]
- type UID = Int
- class PathName a where
- class Eq a => AllE a where
- class AllE a => NumE a
- data Const
- data Statement where
- type VarInfo = (Bool, Path, Const)
- varInfo :: VarInfo' a => a -> VarInfo
- stmtVars :: Statement -> [UV]
- exprVars :: E a -> [UV]
- theorems :: Statement -> [(Int, Int, [Int], E Bool)]
Documentation
A logical, arithmetic, comparative, or conditional expression.
Constructors
| Ref :: AllE a => V a -> E a | |
| Const :: AllE a => a -> E a | |
| Add :: NumE a => E a -> E a -> E a | |
| Sub :: NumE a => E a -> E a -> E a | |
| Mul :: NumE a => E a -> a -> E a | |
| Div :: NumE a => E a -> a -> E a | |
| Mod :: E Int -> Int -> E Int | |
| Not :: E Bool -> E Bool | |
| And :: E Bool -> E Bool -> E Bool | |
| Or :: E Bool -> E Bool -> E Bool | |
| Eq :: AllE a => E a -> E a -> E Bool | |
| Lt :: NumE a => E a -> E a -> E Bool | |
| Gt :: NumE a => E a -> E a -> E Bool | |
| Le :: NumE a => E a -> E a -> E Bool | |
| Ge :: NumE a => E a -> E a -> E Bool | |
| Mux :: AllE a => E Bool -> E a -> E a -> E a |
A mutable variable.
An untyped variable.
Constructors
| Assign :: AllE a => V a -> E a -> Statement | |
| Branch :: E Bool -> Statement -> Statement -> Statement | |
| Sequence :: Statement -> Statement -> Statement | |
| Theorem :: Int -> Int -> [Int] -> E Bool -> Statement | |
| Assume :: E Bool -> Statement | |
| Label :: Name -> Statement -> Statement | |
| Null :: Statement |