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
% This file was created automatically from intro.msk.
2
% DO NOT EDIT!
3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4
\Chapter{Introduction}
5
6
The `AutomGrp' package provides methods for computation with groups and
7
semigroups generated by finite automata or given by wreath recursions, as well
8
as with their finitely generated subgroups, subsemigroups and elements.
9
10
The project originally started in 2000 mostly for personal use.
11
It was gradually expanding during consequent years, including both
12
addition of new algorithms and simplification of user interface. It
13
was used in the process of classification of groups generated by
14
$3$-state automata over a 2-letter alphabet (see
15
\cite{BGK32}), as well as many subsequent papers.
16
17
First author thanks Sveta and Max Muntyan for their infinite patience and
18
understanding. Second author thanks Olga, Anna, Irina and Andrey Savchuk for their help
19
and understanding. This project would be impossible without them.
20
21
We would like to express our warm gratitude to Rostislav Grigorchuk, Zoran Sunic,
22
Volodymyr Nekrashevych, Ievgen Bondarenko, Rostyslav Kravchenko, Yaroslav and Maria
23
Vorobets and Ben Steinberg for their support, valuable comments, feature requests and constant interest
24
in the project.
25
26
We also appreciate the code provided by Andrey Russev that was used to optimize the minimization of autmata function. Last, but not the least, we want to thank the anonymous referee for a very detailed review and numeruous constructive comments that significantly increased the quality of the accepted version of the package.
27
28
Both authors were partially supported by NSF grants DMS-0600975, DMS-0456185 and DMS-0308985. The second author
29
appreciates the support from the New Researcher Grant from University of South Florida and the Simons
30
Collaboration Grant from Simons Foundation.
31
32
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
33
\Section{Short math background}
34
35
This package deals mostly with groups acting on rooted trees. In
36
this section we recall necessary definitions and notation that will
37
be used throughout the manual. For more detailed introduction to the
38
theory of groups generated by automata we refer the reader
39
to~\cite{GNS00}.
40
41
The infinite connected tree with selected vertex, called
42
the <root>, in which the degree of every vertex except the root is
43
$d+1$ and the degree of the root is $d$ is called the <regular
44
homogeneous rooted tree of degree $d$> (or <$d$-ary
45
tree>). The rooted tree of degree $2$ is called the <binary tree>.
46
47
The $n$-th <level> of the tree consists of all vertices located at
48
distance $n$ from the root (here we mean combinatorial distance in
49
the graph).
50
51
Similarly one defines <spherically homogeneous> (or <spherically-transitive>)
52
rooted trees as rooted trees, such that the degrees of all vertices at each level
53
coincide (but may depend on the level).
54
55
Given a finite alphabet $X=\{1,2,\ldots,d\}$ the set $X^{*}$ of all
56
finite words over $X$ may be endowed with the structure of a $d$-ary
57
tree in which the empty word $\emptyset$ is the <root>, the <level>
58
$n$ in $X^{*}$ consists of the words of length $n$ over $X$ and
59
every vertex $v$ has $d$ children, labeled by $vx$, for $x\in X$.
60
61
Any automorphism $f$ of a rooted tree $T$ fixes the root and the
62
levels. For any vertex $v$ of the tree $T$ each automorphism $f$ induces the
63
automorphism $f|_v$ of the subtree of $T$ hanging down from the vertex $v$ by
64
$f|_v(u)=w$ if $f(vu)=v'w$ for some $v'\in X^{|v|}$ from the same
65
level as $v$ (here $|v|$ denotes the combinatorial distance from $v$ to
66
the root of the tree). This automorphism is called the <section> of $f$ at
67
$v$.
68
69
If the tree $T$ is regular, then the subtrees hanging down from
70
vertices of $T$ are canonically isomorphic to $T$ and, thus, the
71
sections of any automorphism $f$ of $T$ can be considered as
72
automorphisms of $T$ again.
73
74
A group $G$ of automorphisms of a regular rooted tree $T$ is called
75
<self-similar> if all sections of every element of $G$ belong to
76
$G$.
77
78
A self-similar group $G$ is called <contracting>
79
if there is a finite set $N$ of elements of $G$, such that for any
80
$g$ in $G$ there is a level $n$ such that all sections of $g$ at
81
vertices of levels bigger than $n$ belong to $N$. The smallest set
82
with such a property is called the <nucleus> of $G$.
83
84
Any automorphism $f$ of a rooted tree can be decomposed as
85
$$f=(f_1,f_2,\ldots,f_d)\sigma,$$
86
87
where $f_1,\ldots,f_d$ are the sections of $f$ at the vertices of
88
the first level and $\sigma$ is the permutation which permutes the subtrees
89
hanging down from these vertices.
90
91
This notation is very convenient for performing multiplication of
92
elements. Throughout this manual and everywhere in the package we use the right
93
action of (semi)groups acting on trees and for automorphisms (homomorphisms) of
94
a tree $f$ and $g$, the composition $f.g$ means that $f$ acts first. This is
95
consistent with the order of multiplication of permutations in \GAP\ , even though
96
some authors in the field prefer to use the left action. With this convention
97
in mind, If $f=(f_1,f_2,\ldots,f_d)\sigma$ and
98
$g=(g_1,g_2,\ldots,g_d)\pi$, then
99
100
$$f.g=(f_1.g_{\sigma(1)},\ldots,f_d.g_{\sigma(d)})\sigma\pi,$$
101
102
$$f^{-1}=(f_{\sigma^{-1}(1)}^{-1},\ldots,f_{\sigma^{-1}(d)}^{-1})\sigma^{-1}\.$$
103
104
The group of automorphisms of a rooted tree is said to be
105
<level-transitive> if it acts transitively on each level of the
106
tree.
107
108
Everything above applies also for homomorphisms of rooted trees
109
(maps preserving the root and incidence relation of the vertices).
110
The only difference is that in this case we get semigroups and
111
monoids of tree homomorphisms.
112
113
A special class of self-similar groups is the class of groups
114
generated by finite automata. This class is especially nice from
115
the algorithmic point of view. Let us recall basic definitions.
116
117
A <Mealy automaton> (<transducer>, <synchronous automaton>, or,
118
simply, <automaton>) is a tuple $A=(Q,X,\rho,\tau)$, where $Q$ is
119
a set of <states>, $X$ is a finite <alphabet> of cardinality $d \geq
120
2$, $\rho:Q \times X \to X$ is a map, called the <output map>, $\tau:Q
121
\times X \to Q$ is a map, called the <transition map>.
122
123
If for each state $q$ in $Q$, the restriction $\rho_q: X \to X$
124
given by $\rho_q(x)=\rho(q,x)$ is a permutation, the automaton is
125
called <invertible>.
126
127
If the set $Q$ of states is finite, the automaton is called
128
<finite>.
129
130
If some state $q$ in $Q$ of the automaton $A$ is selected to be initial,
131
the automaton is called <initial> and denoted $A_q$. If an initial
132
state is not specified, the automaton is called <noninitial>.
133
134
An initial automaton naturally acts on $X^{*}$ by homomorphisms
135
(automorphisms in the case of an invertible automation) in the following way.
136
Given a word
137
$x_1x_2\ldots x_n$, the automaton starts at the initial state $q$,
138
reads the first input letter $x_1$, outputs the letter $\rho_q(x_1)$
139
and changes its state to $q_1=\tau(q,x_1)$. The rest of the input
140
word is handled by the new state $q_1$ in the same way. Formally
141
speaking, the functions $\rho$ and $\tau$ can be extended to $\rho\colon Q
142
\times X^{*} \to X^{*}$ and $\tau\colon Q \times X^{*} \to Q$.
143
144
Given an automaton $A$ the group $G(A)$ of automorphisms of $X^{*}$
145
generated by all the states of $A$ (as initial automata) is called the
146
<automaton group> defined by $A$.
147
148
Every automaton group is self-similar, because the section of $A_q$
149
at vertex $v$ is just $A_{\tau(q,v)}$.
150
151
A special case is the case of groups generated by finite automata
152
and their subgroups. In this class we can solve the word problem,
153
which makes it much nicer from the computational point of view.
154
155
Finite automata are often described by <recursive relations> (or <wreath recursion>) of
156
the form
157
158
$$q=(\tau(q,1),\ldots,\tau(q,d)) \rho_q$$
159
160
for every state $q$. For example, the line $a=(a,b)(1,2), b=(a,b)$
161
describes the automaton with 2 states $a$ and $b$, such that $a$
162
permutes the letters $1$ and $2$ of the alphabet $X=\{1,2\}$ and $b$
163
does not; and, independently
164
of the current state, the automaton changes its initial state to $a$ if
165
it reads $1$ and to $b$ if it reads $2$. This particular automaton
166
generates the, so-called, lamplighter group.
167
168
Semigroups generated by noninvertible automata are defined in a similar way.
169
170
171
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
172
\Section{Installation instructions}
173
174
175
`AutomGrp' package requires \GAP\ version at least 4.4.6 and `FGA' (Free
176
Group Algorithms) package available at \URL{http://www.gap-system.org/Packages/fga.html}
177
178
The installation of the `AutomGrp' package follows the standard \GAP\ rules, i.e.
179
to install it unpack the archive into the `pkg' directory of
180
your \GAP\ distribution. This will create `automgrp' subdirectory.
181
% Use `automgrp-1.3-win.zip' archive if you are installing on
182
% a Microsoft Windows system, and `automgrp-1.3.tar.bz2' or
183
% `automgrp-1.3.tar.gz' otherwise.
184
185
To load package issue the command
186
\beginexample
187
gap> LoadPackage("automgrp");
188
----------------------------------------------------------------
189
Loading AutomGrp 1.3 (Automata Groups and Semigroups)
190
by Yevgen Muntyan (muntyan@fastmail.fm)
191
Dmytro Savchuk (http://savchuk.myweb.usf.edu/)
192
Homepage: http://finautom.sourceforge.net/
193
----------------------------------------------------------------
194
true
195
\endexample
196
197
Note, that if the `FR' package by Laurent Bartholdi is installed as well, \GAP\
198
will automatically load it, together with the packages on which it depends. The `FR'
199
package functionality partially overlaps with the one of `AutomGrp'. For the
200
user's convenience and to expand the functionality of both packages, several converters (see operations `AutomGrp2FR' ("AutomGrp2FR")
201
and `FR2AutomGrp' ("FR2AutomGrp")) of the basic data types were implemented in `AutomGrp'.
202
203
To test the installation, issue the command
204
\beginexample
205
gap> Read( Filename( DirectoriesLibrary( "pkg/automgrp/tst"), "testall.g"));
206
\endexample
207
in the \GAP\ command line.
208
209
210
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
211
\Section{Quick example}
212
213
Here is how to define the Grigorchuk group and Basilica group.
214
215
\beginexample
216
gap> Grigorchuk_Group := AutomatonGroup("a=(1,1)(1,2),b=(a,c),c=(a,d),d=(1,b)");
217
< a, b, c, d >
218
gap> Basilica := AutomatonGroup( "u=(v,1)(1,2), v=(u,1)" );
219
< u, v >
220
\endexample
221
222
Similarly one can define a group (or semigroup) generated by
223
a noninvertible automaton. As an example we consider the semigroup of
224
intermediate growth generated by the two state automaton
225
(\cite{BRS06})
226
227
\beginexample
228
gap> SG := AutomatonSemigroup( "f0=(f0,f0)(1,2), f1=(f1,f0)[2,2]" );
229
< f0, f1 >
230
\endexample
231
232
Another type of groups (semigroups) implemented in the package is
233
the class of groups (semigroups) defined by wreath recursion
234
(finitely generated self-similar groups).
235
236
\beginexample
237
gap> WRG := SelfSimilarGroup("x=(1,y)(1,2),y=(z^-1,1)(1,2),z=(1,x*y)");
238
< x, y, z >
239
\endexample
240
241
242
Now we can compute several properties of `Grigorchuk_Group', `Basilica' and `SG'
243
244
\beginexample
245
gap> IsFinite(Grigorchuk_Group);
246
false
247
gap> IsSphericallyTransitive(Grigorchuk_Group);
248
true
249
gap> IsFractal(Grigorchuk_Group);
250
true
251
gap> IsAbelian(Grigorchuk_Group);
252
false
253
gap> IsTransitiveOnLevel(Grigorchuk_Group, 4);
254
true
255
\endexample
256
257
We can also check that `Basilica' and `WRG' are contracting and compute their nuclei
258
\beginexample
259
gap> IsContracting(Basilica);
260
true
261
gap> GroupNucleus(Basilica);
262
[ 1, u, v, u^-1, v^-1, u^-1*v, v^-1*u ]
263
gap> IsContracting( WRG );
264
true
265
gap> GroupNucleus( WRG );
266
[ 1, y*z^-1*x*y, z^-1*y^-1*x^-1*y*z^-1, z^-1*y^-1*x^-1, y^-1*x^-1*z*y^-1,
267
z*y^-1*x*y*z, x*y*z ]
268
\endexample
269
270
271
The group `Grigorchuk_Group' is generated by a bounded automaton and, thus, is
272
amenable (see \cite{BKNV05})
273
\beginexample
274
gap> IsGeneratedByBoundedAutomaton(Grigorchuk_Group);
275
true
276
gap> IsAmenable(Grigorchuk_Group);
277
true
278
\endexample
279
280
281
We can compute the stabilizers of levels and vertices
282
\beginexample
283
gap> StabilizerOfLevel(Grigorchuk_Group, 2);
284
< a*b*a*d*a^-1*b^-1*a^-1, d, b*a*d*a^-1*b^-1, a*b*c*a^-1, b*a*b*a*b^-1*a^-1*b^
285
-1*a^-1, a*b*a*b*a*b^-1*a^-1*b^-1 >
286
gap> StabilizerOfVertex(Grigorchuk_Group, [2, 1]);
287
< a*b*a*d*a^-1*b^-1*a^-1, d, a*c*b^-1*a^-1, c, b, a*b*a*c*a^-1*b^-1*a^
288
-1, a*b*a*b*a^-1*b^-1*a^-1 >
289
\endexample
290
291
In the case of a finite group we can produce an isomorphism into a permutation group
292
\beginexample
293
gap> f := IsomorphismPermGroup(Group(a,b));
294
[ a, b ] ->
295
[ (1,2)(3,5)(4,6)(7,9)(8,10)(11,13)(12,14)(15,17)(16,18)(19,21)(20,22)(23,
296
25)(24,26)(27,29)(28,30)(31,32), (1,3)(2,4)(5,7)(6,8)(9,11)(10,12)(13,
297
15)(14,16)(17,19)(18,20)(21,23)(22,24)(25,27)(26,28)(29,31)(30,32) ]
298
gap> Size(Image(f));
299
32
300
\endexample
301
302
Here is how to find relations in `Basilica' between elements of length not greater than 5.
303
\beginexample
304
gap> FindGroupRelations(Basilica, 6);
305
v*u*v*u^-1*v^-1*u*v^-1*u^-1
306
v*u^2*v^-1*u^2*v*u^-2*v^-1*u^-2
307
v^2*u*v^2*u^-1*v^-2*u*v^-2*u^-1
308
[ v*u*v*u^-1*v^-1*u*v^-1*u^-1, v*u^2*v^-1*u^2*v*u^-2*v^-1*u^-2,
309
v^2*u*v^2*u^-1*v^-2*u*v^-2*u^-1 ]
310
\endexample
311
312
Or relations in the subgroup $\langle p=uv^{-1}, q=vu\rangle$
313
\beginexample
314
gap> FindGroupRelations([u*v^-1,v*u], ["p", "q"], 5);
315
q*p^2*q*p^-1*q^-2*p^-1
316
[ q*p^2*q*p^-1*q^-2*p^-1 ]
317
\endexample
318
319
Or relations in the semigroup `SG'
320
321
\beginexample
322
gap> FindSemigroupRelations(SG, 4);
323
f0^3 = f0
324
f0^2*f1 = f1
325
f1*f0^2 = f1
326
f1^3 = f1
327
[ [ f0^3, f0 ], [ f0^2*f1, f1 ], [ f1*f0^2, f1 ], [ f1^3, f1 ] ]
328
\endexample
329
330
331
332
Some basic operations with elements are the following:
333
334
The function `IsOne' computes whether an element represents the
335
trivial automorphism of the tree
336
\beginexample
337
gap> IsOne( (a*b)^16 );
338
true
339
\endexample
340
341
Here is how to compute the order (this function might not stop in
342
some cases)
343
\beginexample
344
gap> Order(a*b);
345
16
346
gap> Order(u^22*v^-15*u^2*v*u^10);
347
infinity
348
\endexample
349
350
Note that the package contains many helpful notifications that can be enabled
351
by changing `InfoLevel' for `InfoAutomGrp'. In many situations level 3 provides
352
additional information about the computation that can be used either to track the
353
progress or to extract the proof from the result as it can be done in the example
354
below.
355
356
\beginexample
357
gap> SetInfoLevel(InfoAutomGrp,3);
358
gap> Order(u^22*v^-15*u^2*v*u^10);
359
#I v is obtained from (u^22*v^-15*u^2*v*u^10)^1
360
by taking sections and cyclic reductions at vertex [ 1, 1, 1, 1, 1, 1, 1, 1, 1 ]
361
#I v is obtained from (v)^2
362
by taking sections and cyclic reductions at vertex [ 1, 1 ]
363
infinity
364
\endexample
365
366
One can check if a particular element acts spherically transitively on the tree
367
(this function might not stop in some cases)
368
\beginexample
369
gap> IsSphericallyTransitive(a*b);
370
false
371
gap> IsSphericallyTransitive(u*v);
372
true
373
\endexample
374
375
376
The sections of an element can be obtained as follows
377
\beginexample
378
gap> Section(u*v^2*u, 2);
379
u^2*v
380
gap> Decompose(u*v^2*u);
381
(v, u^2*v)
382
gap> Decompose(u*v^2*u, 3);
383
(v, 1, 1, 1, u*v, 1, u, 1)(1,2)(5,6)
384
\endexample
385
386
387
One can try to compute whether the elements of group `WRG' defined
388
by wreath recursion are finite-state and calculate corresponding
389
automaton
390
391
\beginexample
392
gap> IsFiniteState(x*y^-1);
393
true
394
gap> AllSections(x*y^-1);
395
[ x*y^-1, z, 1, x*y, y*z^-1, z^-1*y^-1*x^-1, y^-1*x^-1*z*y^-1, z*y^-1*x*y*z,
396
y*z^-1*x*y, z^-1*y^-1*x^-1*y*z^-1, x*y*z, y, z^-1, y^-1*x^-1, z*y^-1 ]
397
gap> A := MealyAutomaton(x*y^-1);
398
<automaton>
399
gap> NumberOfStates(A);
400
15
401
\endexample
402
403
404
To get the action of an element on a vertex or on a particular level of the tree
405
use the following commands
406
\beginexample
407
gap> [1,2,1,1]^(a*b);
408
[ 2, 2, 1, 1 ]
409
gap> PermOnLevel(u*v^2*v, 3);
410
(1,6,4,8,2,5,3,7)
411
\endexample
412
413
The action of the whole group `Grigorchuk_Group' on some level can be computed via
414
`PermGroupOnLevel' (see "PermGroupOnLevel").
415
\beginexample
416
gap> PermGroupOnLevel(Grigorchuk_Group, 3);
417
Group([ (1,5)(2,6)(3,7)(4,8), (1,3)(2,4)(5,6), (1,3)(2,4), (5,6) ])
418
gap> Size(last);
419
128
420
\endexample
421
422
423
424
The next example shows how to find all elements of length at most 5 of order 16 in the Grigorchuk group.
425
\beginexample
426
gap> FindElements(Grigorchuk_Group, Order, 16, 5);
427
[ a*b, b*a, c*a*d, d*a*c, a*b*a*d, a*c*a*d, a*d*a*b, a*d*a*c, b*a*d*a,
428
c*a*d*a, d*a*b*a, d*a*c*a, a*c*a*d*a, a*d*a*c*a, b*a*b*a*c, b*a*c*a*c,
429
c*a*b*a*b, c*a*c*a*b ]
430
\endexample
431
432
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
433
434