Generating, interpreting, and drawing graphs of FSMs.
- data SelfLoops
- fsmToFGL :: FSM sy -> SelfLoops -> Gr () sy
- fglDot :: (Ord b, CleanShow b, Graph gr) => gr a b -> DotGraph Int
- strongCCs :: Eq sy => FSM sy -> [[State]]
- weakCCs :: Eq sy => FSM sy -> [[State]]
- class Show a => CleanShow a where
- fsmToDot :: (Ord sy, CleanShow sy) => FSM sy -> DotGraph Int
- fsmToGML :: CleanShow sy => FSM sy -> Doc
- fglToFsm :: (Graph gr, Ord sy, Show sy) => gr a sy -> ReadFsmMonad (FSM sy, [LNode a])
FGL graph operations.
When converting an
FSM into a graph, do we keep
all self-loops, or only those which are sources of nondeterminism?
Dot and GML format output.
Turn an FSM into a
DotGraph, trimming any
self-loops which aren't sources of nondeterminism.
Turn an FSM into a GML-formatted graph', trimming any self-loops which aren't sources of nondeterminism.
Turn an FGL graph (interpreted as being a directed graph) into an FSM. Self-loops are inserted as required. Also returns a list of the graph's labelled nodes, since the labels are discarded by the FSM construction. FSM states are numbered [0..] and thus may be used as an index into that list of labelled nodes, in order to relate FSM states back to the original graph nodes and their labels.