Maintainer | bastiaan.heeren@ou.nl |
---|---|
Stability | provisional |
Portability | portable (depends on ghc) |
Safe Haskell | None |
Language | Haskell98 |
Basic machinery for fully executing a strategy expression, or only
partially. Partial execution results in a prefix that keeps the current
locations in the strategy (a list of Path
s) for continuing the execution
later on. A path can be used to reconstruct the sequence of steps already
performed (a so-called trace). Prefixes can be merged with the Monoid
operation.
- data Prefix a
- noPrefix :: Prefix a
- makePrefix :: Process (Rule a) -> a -> Prefix a
- firstsOrdered :: (Rule a -> Rule a -> Ordering) -> Prefix a -> [((Rule a, a, Environment), Prefix a)]
- replayProcess :: Path -> Process (Rule a) -> ([Rule a], a -> Prefix a)
- isEmptyPrefix :: Prefix a -> Bool
- majorPrefix :: Prefix a -> Prefix a
- searchModePrefix :: Prefix a -> Prefix a
- prefixPaths :: Prefix a -> [Path]
- data Path
- emptyPath :: Path
- readPath :: Monad m => String -> m Path
- readPaths :: Monad m => String -> m [Path]
Prefix
makePrefix :: Process (Rule a) -> a -> Prefix a Source
Make a prefix from a core strategy and a start term.
firstsOrdered :: (Rule a -> Rule a -> Ordering) -> Prefix a -> [((Rule a, a, Environment), Prefix a)] Source
replayProcess :: Path -> Process (Rule a) -> ([Rule a], a -> Prefix a) Source
Construct a prefix by replaying a path in a core strategy: the third argument is the current term.
isEmptyPrefix :: Prefix a -> Bool Source
majorPrefix :: Prefix a -> Prefix a Source
Transforms the prefix such that only major steps are kept in the remaining strategy.
searchModePrefix :: Prefix a -> Prefix a Source
The searchModePrefix transformation changes the process in such a way that all intermediate states can only be reached by one path. A prerequisite is that symbols are unique (or only used once).
prefixPaths :: Prefix a -> [Path] Source
Returns the current Path
.
Path
A path encodes a location in a strategy. Paths are represented as a list of integers.