- 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.
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.