propTrue :: p a |
Literal true
|
|
propFalse :: p a |
Literal false
|
|
propIsTrue :: PropLit a => p a -> Bool |
Returns True if the formula is equal to True
|
|
propIsFalse :: PropLit a => p a -> Bool |
Returns True if the formula is equal to False
|
|
propLit :: PropLit a => a -> p a |
Make a proposition out of a literal
|
|
propAnd :: PropLit a => p a -> p a -> p a |
(&&) equivalent
|
|
propOr :: PropLit a => p a -> p a -> p a |
(||) equivalent
|
|
propNot :: PropLit a => p a -> p a |
not equivalent
|
|
propMapM :: (Monad m, PropLit a) => (a -> m (p a)) -> p a -> m (p a) |
a monadic map over a proposition, replacing each item
with a whole proposition
|
|
propFold :: PropLit a => PropFold a res -> p a -> res |
a complete fold over a proposition
|
|
propAnds :: PropLit a => [p a] -> p a |
and equivalent, a fold on propAnd
|
|
propOrs :: PropLit a => [p a] -> p a |
or equivalent, a fold on propOr
|
|
propRebuild :: (PropLit a, Prop q) => p a -> q a |
Convert a proposition from one type to another, typically
use propRebuildType instead - otherwise defaulting is an issue
|
|
propMap :: PropLit a => (a -> p a) -> p a -> p a |
Non monadic map, can be defined in terms of propMapM
|
|
propAll :: PropLit a => p a -> [a] |
All literals out of the proposition, can be defined
in terms of propMapM
|
|
propSimplify :: PropLit a => p a -> p a |
Simplify a proposition, defaults to id
|
|
propBool :: Bool -> p a |
Convert a boolean to a proposition, not essential
|
|
propChange :: (PropLit a, PropLit b) => (a -> p b) -> p a -> p b |
Change from on one literal type to another
|