CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.

| Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

Views: 418346
1
2
1 Introduction
3
4
In many situations an automaton is conveniently described through a diagram
5
like the following
6
7
This diagram describes a (deterministic) automaton with 3 states (the
8
elements of the set {1,2,3}). The arrow pointing to the state 1 indicates
9
that 1 is the initial state and the two circles around state 3 indicate that
10
3 is a final or accepting state. The set {a,b} is the alphabet of the
11
automaton; its elements are called letters and are the labels of the edges
12
of the diagram. The words a , ab^2 , b^5a^3b are examples of words
13
recognized by the automaton since they are labels of paths from the initial
14
to the final state.
15
16
The set of words recognized by an automaton is called the language of the
17
automaton. It is a rational language and may be represented through a
18
rational expression. For instance,
19
20
 Example 
21
(aUb)(a(aUb)Ub(aUb))*
22

23
24
is a rational expression representing the language of the above automaton.
25
26
Kleene's Theorem states that a language is rational if and only if it is the
27
language of a finite automaton. Both directions of Kleene's Theorem can be
28
proved constructively, and these algorithms, to go from an automaton to a
29
rational expression and vice-versa, are implemented in this package.
30
31
Of course, one has to pay attention to the size of the output produced. When
32
producing a deterministic automaton equivalent to a given rational
33
expression one can obtain an optimal solution (the minimal automaton) using
34
standard algorithms [AHU74].
35
36
When producing a rational expression for the language of an automaton, and
37
taking into account some reasonable measure for the size of a rational
38
expression, to determine a minimal one is apparently computationally
39
difficult. We use here some heuristic methods (to be published elsewhere)
40
which in practice lead to very reasonable results.
41
42
The development of this work has benefited from the existence of AMoRE
43
[MMPTV95], a package written in C to handle Automata, Monoids and Regular
44
Expressions. In fact, its manual has been very useful and some of the
45
algorithms implemented here are those implemented in AMoRE. In this package,
46
unlike what happened with AMoRE, we do not have to worry about the monoid
47
part in order to make it useful to semigroup theorists, since monoids are
48
already implemented in GAP and we may take advantage of this fact. We just
49
need a function to compute the transition semigroup of an automaton.
50
51
The parts of this package that have not so directly to do with automata or
52
rational expressions are put into appendices in this manual. Some words
53
about these appendices follow.
54
55
Using the external program Graphviz [DEGKNW02] to graph visualization, one
56
can visualize automata. This very convenient tool presently works easily
57
under LINUX.
58
59
Given a finitely generated subgroup of the free group it is possible to
60
compute a flower automaton and perform Stallings foldings over it in order
61
to obtain an inverse automaton corresponding to the given subgroup.
62
63
64