Safe Haskell | None |
---|---|

Language | Haskell98 |

## Synopsis

- funs :: [Rule f v] -> [f]
- funsDL :: [Rule f v] -> [f] -> [f]
- vars :: [Rule f v] -> [v]
- varsDL :: [Rule f v] -> [v] -> [v]
- lhss :: [Rule f v] -> [Term f v]
- rhss :: [Rule f v] -> [Term f v]
- map :: (f -> f') -> (v -> v') -> [Rule f v] -> [Rule f' v']
- restrictFuns :: (f -> Bool) -> [Rule f v] -> [Rule f v]
- isLinear :: Ord v => [Rule f v] -> Bool
- isLeftLinear :: Ord v => [Rule f v] -> Bool
- isRightLinear :: Ord v => [Rule f v] -> Bool
- isGround :: [Rule f v] -> Bool
- isLeftGround :: [Rule f v] -> Bool
- isRightGround :: [Rule f v] -> Bool
- isErasing :: Ord v => [Rule f v] -> Bool
- isCreating :: Ord v => [Rule f v] -> Bool
- isExpanding :: [Rule f v] -> Bool
- isDuplicating :: Ord v => [Rule f v] -> Bool
- isCollapsing :: [Rule f v] -> Bool
- isValid :: Ord v => [Rule f v] -> Bool

# Operations on Rules

funsDL :: [Rule f v] -> [f] -> [f] Source #

Difference List version of `funs`

.
We have `funsDL r vs = funs r ++ vs`

.

varsDL :: [Rule f v] -> [v] -> [v] Source #

Difference List version of `vars`

.
We have `varsDL r vs = vars r ++ vs`

.

map :: (f -> f') -> (v -> v') -> [Rule f v] -> [Rule f' v'] Source #

Lifting of Rule.`map`

to list of rules.

restrictFuns :: (f -> Bool) -> [Rule f v] -> [Rule f v] Source #

Restrict the rules to those only using function symbols satisfying the given predicate.

# Predicates on Rules

isLeftLinear :: Ord v => [Rule f v] -> Bool Source #

Returns `True`

iff all given rules satisfy `isLeftLinear`

isRightLinear :: Ord v => [Rule f v] -> Bool Source #

Returns `True`

iff all given rules satisfy `isRightLinear`

isLeftGround :: [Rule f v] -> Bool Source #

Returns `True`

iff all given rules satisfy `isLeftGround`

isRightGround :: [Rule f v] -> Bool Source #

Returns `True`

iff all given rules satisfy `isRightGround`

isCreating :: Ord v => [Rule f v] -> Bool Source #

Returns `True`

iff any of the given rules satisfy `isCreating`

isExpanding :: [Rule f v] -> Bool Source #

Returns `True`

iff any of the given rules satisfy `isExpanding`

isDuplicating :: Ord v => [Rule f v] -> Bool Source #

Returns `True`

iff any of the given rules satisfy `isDuplicating`

isCollapsing :: [Rule f v] -> Bool Source #

Returns `True`

iff any of the given rules satisfy `isCollapsing`