A package containing various binary and unary operations on automaton
objects.
Documentation
This package offers a lot of standard transformations on automata objects:
- concatenation:
- concatenate two automaton so that
L(A.B) = L(A).L(B)
,
- union:
- union of two automaton ,
L(A+B) = L(A) U L(B)
,
- star closure:
- the standard kleene-closure operator,
L(A*) = epsilon U L(A).L(A*)
- minimization:
- compute the minimal - canonical - DFA from a given DFA
- determinization:
- make an automaton deterministic: Each state has at most one transition labelled with
a given letter,
- epsilon transition removals:
- Removes transition labelled with
null
while keeping the same language
- complementation:
- complement the language over the alphabet of the automaton, for an alphabet
X
,
L(-A-)=X*\L(A)
- synchronization product:
- Compute the synchronization product of two automaton, also named mixed product
- parametric intersection:
- compute the intersection of two automaton with a synchronization object,
- normalization:
- normalize an automaton: One start state, one end state, no incoming transitions
on start state
- prefix closure:
- an automaton with all states made terminal
- pruning:
- remove all states that are neither accessible from a start state nor can
reach a terminal state
- projection over an alphabet:
- remove all transitions from an automaton that are not in an alphabet
- reversal:
- reverse the language of an automaton so that it recognizes mirrored words
from the original automaton.
- shuffle product:
- compute all possible interleavings of words from two automaton
These transformations are usually not very efficient so that applying any one of them
on large automaton may yield poor performances. Possible exceptions are the epsilon
transition removal, synchronization products and intersections which compute the
results using reachable states set only so that the cartesian product of the
involved automata is not computed.
Work is underway to improve ultimately performance of this library.