Proving termination with multiset orderings
Communications of the ACM
Automata, Languages, and Machines
Automata, Languages, and Machines
Interactive Theorem Proving and Program Development
Interactive Theorem Proving and Program Development
A functional toolkit for morphological and phonological processing, application to a Sanskrit tagger
Journal of Functional Programming
CIAA '08 Proceedings of the 13th international conference on Implementation and Applications of Automata
TYPES'06 Proceedings of the 2006 international conference on Types for proofs and programs
Hi-index | 0.00 |
Eilenberg machines have been introduced in 1974 in the field of formal language theory. They are finite automata for which the alphabet is interpreted by mathematical relations over an abstract set. They generalize many finite state machines. We consider in the present work the subclass of finite Eilenberg machines for which we provide an executable complete simulator. This program is specified using the Coq proof assistant. The correctness of the algorithm is also proved formally and mechanically verified using Coq. Using its extraction mechanism, the Coq proof assistant allows to translate the specification into an executable OCaml program. The algorithm and specification are inspired from the reactive engine of Gerard Huet. The finite Eilenberg machines model includes deterministic and non-deterministic automata (DFA and NFA) but also real-time transducers. As an example, we present a pushdown automaton (PDA) recognizing ambiguous @l-terms is shown to be a finite Eilenberg machine. Then the reactive engine simulating the pushdown automaton provides a complete recognizer for this particular context-free language.