Automata (Old) is a hybrid Mathematica/C++ package that manipulates finites state machines and their syntactic semigroups. A number of operations on one-dimensional cellular automata are also available. All the algorithms are implemented in Mathematica, and the system can be used as a standard Mathematica package. Many of the computationally critical algorithms are also implemented externally in a C++ library: examples include the power automaton construction, minimization using Hopcroft's algorithm, generation of syntactic semigroups with D-class decomposition. The C++ code can be used directly or, via MathLink, from within Mathematica. On a standard PC, the external code allows one to generate machines and/or semigroups with several 10000 elements.

Note: The package is currently being updated to Mathematica version 10 and will make use of the graph algorithms available in the new version. This is a major rewrite, so it is probably best to wait for the new release. I think it is unlikely that the C++ part will be updated.


Examples is the postscript version of a sample notebook which shows some typical computations in the package, albeit in static form.


Here is a README file with detailed installation and loading instructions.


automata-6-0.tgz Partial port to version 6, use with caution. Requires Mathematica 6.0.
automata.5.2.tgz Add-on package, contains dot-m files, sample notebooks, help browser, external code. Requires Mathematica 5.2.
automata.5.1.tgz Add-on package, contains dot-m files, sample notebooks, help browser, external code. Requires Mathematica 5.1.
automata.4.6.tgz Add-on package, contains dot-m files, sample notebooks, help browser.

If you require access to a version earlier than 4.6 feel free to contact me. Be aware, though, that the only supported version is 5.0. An exceedingly old version of the package is also available at MathSource.

Copyright © 2010  K. Sutner

Permission to use, copy, modify, and distribute this software and its documentation for any non-commercial purpose is hereby granted without fee, provided that the above copyright notice appears in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The author makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. Some parts of the C/C++ libraries used have their own copyright (or left) policies attached (GNU gmp, STL, MathLink), see the corresponding documentation.