The removeAncestors function in this module (actually an IO action) takes a graph G and a list of nodes N and computes N' = { n in N | there does not exist an m in N and a non-trivial path n -> m }. This is required for graph merging.

- removeAncestors :: Graph graph => graph nodeLabel nodeTypeLabel arcLabel arcTypeLabel -> [Node] -> IO [Node]
- removeAncestorsBy :: (Ord node, Monad m) => (node -> m [node]) -> [node] -> m [node]
- removeAncestorsByPure :: Ord node => (node -> [node]) -> [node] -> [node]

# Documentation

removeAncestors :: Graph graph => graph nodeLabel nodeTypeLabel arcLabel arcTypeLabel -> [Node] -> IO [Node]Source

Takes a graph G and a list of nodes N and computes N' = { n in N | there does not exist an m in N and a non-trivial path n -> m }.

removeAncestorsBy :: (Ord node, Monad m) => (node -> m [node]) -> [node] -> m [node]Source

General removeAncestors function, which takes as argument the action computing a Node's successors.

removeAncestorsByPure :: Ord node => (node -> [node]) -> [node] -> [node]Source

Pure version of `removeAncestorsBy`

.