| Copyright | (C) 2017-18 Jakub Daniel |
|---|---|
| License | BSD-style (see the file LICENSE) |
| Maintainer | Jakub Daniel <jakub.daniel@protonmail.com> |
| Stability | experimental |
| Safe Haskell | None |
| Language | Haskell2010 |
Data.Expression.Arithmetic
Description
- data ArithmeticF a s where
- Const :: Int -> ArithmeticF a IntegralSort
- Add :: [a IntegralSort] -> ArithmeticF a IntegralSort
- Mul :: [a IntegralSort] -> ArithmeticF a IntegralSort
- Divides :: Int -> a IntegralSort -> ArithmeticF a BooleanSort
- LessThan :: a IntegralSort -> a IntegralSort -> ArithmeticF a BooleanSort
- cnst :: ArithmeticF :<: f => Int -> IFix f IntegralSort
- add :: ArithmeticF :<: f => [IFix f IntegralSort] -> IFix f IntegralSort
- mul :: ArithmeticF :<: f => [IFix f IntegralSort] -> IFix f IntegralSort
- (.+.) :: forall f. ArithmeticF :<: f => IFix f IntegralSort -> IFix f IntegralSort -> IFix f IntegralSort
- (.*.) :: forall f. ArithmeticF :<: f => IFix f IntegralSort -> IFix f IntegralSort -> IFix f IntegralSort
- (.\.) :: ArithmeticF :<: f => Int -> IFix f IntegralSort -> IFix f BooleanSort
- (.<.) :: forall f. ArithmeticF :<: f => IFix f IntegralSort -> IFix f IntegralSort -> IFix f BooleanSort
- (.>.) :: forall f. ArithmeticF :<: f => IFix f IntegralSort -> IFix f IntegralSort -> IFix f BooleanSort
- (.<=.) :: forall f. ArithmeticF :<: f => IFix f IntegralSort -> IFix f IntegralSort -> IFix f BooleanSort
- (.>=.) :: forall f. ArithmeticF :<: f => IFix f IntegralSort -> IFix f IntegralSort -> IFix f BooleanSort
Documentation
data ArithmeticF a s where Source #
A functor representing linear integer arithmetic: constants (cnst), addition (add or .+.), multiplication (mul or .*.), divisibility predicate (.\.) and ordering (.<., .>., .<=., .>=.).
Constructors
| Const :: Int -> ArithmeticF a IntegralSort | |
| Add :: [a IntegralSort] -> ArithmeticF a IntegralSort | |
| Mul :: [a IntegralSort] -> ArithmeticF a IntegralSort | |
| Divides :: Int -> a IntegralSort -> ArithmeticF a BooleanSort | |
| LessThan :: a IntegralSort -> a IntegralSort -> ArithmeticF a BooleanSort |
Instances
cnst :: ArithmeticF :<: f => Int -> IFix f IntegralSort Source #
A smart constructor for integer constants
add :: ArithmeticF :<: f => [IFix f IntegralSort] -> IFix f IntegralSort Source #
A smart constructor for a variadic addition
mul :: ArithmeticF :<: f => [IFix f IntegralSort] -> IFix f IntegralSort Source #
A smart constructor for a variadic multiplication
(.+.) :: forall f. ArithmeticF :<: f => IFix f IntegralSort -> IFix f IntegralSort -> IFix f IntegralSort infixl 8 Source #
A smart constructor for binary addition
(.*.) :: forall f. ArithmeticF :<: f => IFix f IntegralSort -> IFix f IntegralSort -> IFix f IntegralSort infixl 9 Source #
A smart constructor for a binary multiplication
(.\.) :: ArithmeticF :<: f => Int -> IFix f IntegralSort -> IFix f BooleanSort infix 7 Source #
A smart constructor for a divisibility predicate
(.<.) :: forall f. ArithmeticF :<: f => IFix f IntegralSort -> IFix f IntegralSort -> IFix f BooleanSort infix 7 Source #
A smart constructor for <
(.>.) :: forall f. ArithmeticF :<: f => IFix f IntegralSort -> IFix f IntegralSort -> IFix f BooleanSort infix 7 Source #
A smart constructor for >
(.<=.) :: forall f. ArithmeticF :<: f => IFix f IntegralSort -> IFix f IntegralSort -> IFix f BooleanSort infix 7 Source #
A smart constructor for <=
(.>=.) :: forall f. ArithmeticF :<: f => IFix f IntegralSort -> IFix f IntegralSort -> IFix f BooleanSort infix 7 Source #
A smart constructor for >=