We aim to design code with efficiency and genericity in mind, thus we add to the usual abstract type automaton two sets

Let be a 7-uple of finite sets defined as follow :

the alphabet | |

Q |
a set of states |

a set of initial states | |

a set of final states | |

a set of transitions | |

T |
a set of tags |

a relation between states and tags |

, that is the set of the letters on the outgoing edges of a state

We define

Let's view as two distinct transition functions and according to the most frequent operations needed on an automaton:

These two functions are the corner stone of the library. To put it formally, everything comes down to manipulate a set of triples in and two subsets of

Besides these definitions, we introduce the notion of