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
%%
3
%W basics.tex ACE documentation - basics Alexander Hulpke
4
%W Joachim Neub"user
5
%W Greg Gamble
6
%%
7
%H $Id$
8
%%
9
%Y Copyright (C) 2000 Centre for Discrete Mathematics and Computing
10
%Y Department of Information Tech. & Electrical Eng.
11
%Y University of Queensland, Australia.
12
%%
13
14
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15
\Chapter{Some Basics}
16
17
\index{strategy}\atindex{Felsch strategy}{@Felsch strategy}
18
\atindex{HLT strategy}{@HLT strategy}
19
Throughout this manual for the use of {\ACE} as a {\GAP} package, we
20
shall assume that the reader already knows the basic ideas of coset
21
enumeration, as can be found for example in~\cite{Neu82}. There, a
22
simple proof is given for the fact that a coset enumeration for a
23
subgroup of finite index in a finitely presented group must eventually
24
terminate with the correct result, provided the enumeration process
25
obeys a simple condition (Mendelsohn's condition) formulated in
26
Lemma~1 and Theorem~2 of~\cite{Neu82}. This basic condition leaves
27
room for a great variety of *strategies* for coset enumeration; two
28
``classical'' ones have been known for a long time as the *Felsch
29
strategy* and the *HLT strategy* (for Haselgrove, Leech and Trotter).
30
Extensive experimental studies on many strategies can be found
31
in~\cite{CDHW73}, \cite{Hav91}, \cite{HR99ace}, and \cite{HR01}, in
32
particular.
33
34
A few basic points should be particularly understood:
35
36
\beginlist%unordered
37
38
\item{--} ``Subgroup (generator) and relator tables'' that are used in
39
the description of coset enumeration in \cite{Neu82}, and to which we
40
will also occasionally refer in this manual, do *not* physically exist
41
in the implementation of coset enumeration in {\ACE}. For a
42
terminology that is closer to the actual implementation and also to
43
the formulations in the manual for the {\ACE} standalone see
44
\cite{CDHW73} and \cite{Hav91}.
45
46
\index{cosets!coset numbers}\index{cosets!coset table}\index{holes}
47
\item{--} Coset enumeration proceeds by defining *coset numbers* that
48
really denote possible representatives for cosets written as words in
49
the generators of the group. At the time of their generation it is not
50
guaranteed that any two of these words do indeed represent different
51
cosets. The state of an enumeration at any time is stored in a
52
2-dimensional array known as a *coset table* whose rows are indexed by
53
coset numbers and whose columns are indexed by the group generators
54
and their inverses. Entries of the coset table that are not yet
55
defined are known as *holes* (typically they are filled with 0,
56
i.e.~an invalid coset number).
57
58
\index{cosets}\index{cosets!coset application}\index{cosets!coset numbers}
59
\item{--} It is customary in talking about coset enumeration to speak
60
of *cosets* when really coset numbers are meant. While we try to avoid
61
this in this interface manual, in certain word combinations such as
62
*coset application* we will follow this custom.
63
64
\index{deduction}\index{deduction!deduction stack}
65
\item{--} The definition of a coset number may lead to *deductions*
66
from the ``closing of rows in subgroup or relator tables''. These are
67
kept in a *deduction stack*.
68
69
\index{coincidence}\index{coincidence!coincidence queue}
70
\item{--} Also it may be found that (different) words in the
71
generators defining different coset numbers really lie in the same
72
coset of the given subgroup. This is called a *coincidence* and will
73
eventually lead to the elimination of the larger of the two coset
74
numbers. Until this elimination has been performed pending
75
coincidences are kept in a *queue of coincidences*.
76
77
\index{preferred definition}\index{definition!preferred}
78
\index{preferred definition!preferred definition stack}
79
\item{--} A definition that will actually close a row in a subgroup or
80
relator table will immediately yield twice as many entries in the
81
coset table as other definitions. Such definitions are called
82
*preferred definitions*, the places in rows of a subgroup or relator
83
table that they close are also referred to as ``gaps of length one''
84
or minimal gaps. Such gaps can be found at little extra cost when
85
``relators are traced from a given coset number''. {\ACE} keeps a
86
selection of them in a *preferred definition stack* for use in some
87
definition strategies (see~\cite{Hav91}).
88
89
\endlist
90
91
It will also be necessary to understand some further basic features of
92
the implementation and the corresponding terminology which we will
93
explain in the sequel.
94
95
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
96
\Section{Enumeration Style}
97
98
The first main decision for any coset enumeration is in which sequence
99
to make definitions. When a new coset number has to be defined, in
100
{\ACE} there are basically three possible methods to choose from:
101
102
\beginlist%unordered
103
104
\atindex{C style}{@C style!definition}
105
\item{--} One may fill the next empty entry in the coset table by
106
scanning from the left/top of the coset table towards the right/bottom
107
-- that is, in order row by row. This is called *C style definition*
108
(for *C*oset Table Based definition) of coset numbers. In fact a
109
procedure needs to follow a method like this to some extent for the
110
proofs that coset enumeration eventually terminates in the case of
111
finite index (see~\cite{Neu82}).
112
113
\atindex{R style}{@R style!definition}
114
\item{--} For an *R style definition* (for *R*elator Based
115
definition), the order in which coset numbers are defined is
116
explicitly prescribed by the order in which rows of (the subgroup
117
generator tables and) the relator tables are filled by making
118
definitions.
119
120
\index{preferred definition}
121
\index{preferred definition!preferred definition stack}
122
\index{strategy!minimal gaps}
123
\item{--} One may choose definitions from a *Preferred Definition
124
Stack*. In this stack possibilities for definition of coset numbers
125
are stored that will close a certain row of a relator table. Using
126
these *preferred definitions* is sometimes also referred to as a
127
*minimal gaps strategy*. The idea of using these is that by closing a
128
row in a relator table, thus, one will immediately get a consequence.
129
We will come back to the obvious question of where one obtains this
130
``preferred definition stack''.
131
132
\endlist
133
134
The *enumeration style* is mainly determined by the balance between
135
C style and R style definitions, which is controlled by the values of
136
the `ct' and `rt' options (see~"option ct" and~"option rt").
137
138
However this still leaves us with plenty of freedom for the design of
139
definition strategies, freedom which can, for example, be used to
140
great advantage in Felsch-type strategies. Though it is not strictly
141
necessary, before embarking on further enumeration, Felsch-type
142
programs generally start off by ensuring that each of the given
143
subgroup generators produces a cycle of coset numbers at coset 1. To
144
explain the idea, an example may help. Suppose $a,b$ are the group
145
generators and $w=Abab$ is a subgroup generator, where $A$ represents
146
the inverse of $a$; then to say that ``$(1,i,j,k)$ is a cycle of
147
coset numbers produced at coset 1 by $w$'' means that the successive
148
application of the ``letters'' $A,b,a,b$ of $w$ takes one
149
successively from coset 1, through cosets $i$, $j$ and $k$, and back
150
to coset 1, i.e.~$A$ applied to coset 1 results in coset $i$, $b$
151
applied to coset $i$ results in coset $j$, $a$ applied to coset $j$
152
results in coset $k$, and finally $b$ applied to coset $k$ takes us
153
back to coset $1$. In this way, a hypothetical subgroup table is
154
filled first. The use of this and other possibilities leads to the
155
following table of *enumeration styles*.
156
157
% \begin{table}
158
% \hrule
159
% \caption{The styles}
160
% \label{tab:sty}
161
% \smallskip
162
% \renewcommand{\arraystretch}{0.875}
163
% \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}crrlc}
164
% \hline\hline
165
% & \ttt{Rt} value & \ttt{Ct} value & style name & \\
166
% \hline
167
% & $<\!0$ & $<\!0$ & R/C & \\
168
% & $<\!0$ & $0$ & R* & \\
169
% & $<\!0$ & $>\!0$ & Cr & \\
170
% & $0$ & $<\!0$ & C & \\
171
% & $0$ & $0$ & R/C (defaulted) & \\
172
% & $0$ & $>\!0$ & C & \\
173
% & $>\!0$ & $<\!0$ & Rc & \\
174
% & $>\!0$ & $0$ & R & \\
175
% & $>\!0$ & $>\!0$ & CR & \\
176
% \hline\hline
177
% \end{tabular*}
178
% \end{table}
179
\begintt
180
Rt value Ct value style name
181
-----------------------------------------
182
183
0 >0 C
184
<0 >0 Cr
185
>0 >0 CR
186
187
>0 0 R
188
<0 0 R*
189
>0 <0 Rc
190
<0 <0 R/C
191
0 0 R/C (defaulted)
192
193
-----------------------------------------
194
\endtt
195
196
\beginitems
197
198
\atindex{C style}{@C style}
199
*C style* &
200
In this style, most definitions are made in the next empty coset table
201
slot and are (in principle) tested in all essentially different
202
positions in the relators; i.e.~this is a Felsch-like style.
203
204
However, in C style, some definitions may be made following a
205
preferred definition strategy, controlled by the `pmode' and `psize'
206
options (see~"option pmode" and~"option psize").
207
208
\atindex{Cr style}{@Cr style}
209
*Cr style* &
210
is like C style except that a single R style pass is done after the
211
initial C style pass.
212
213
\atindex{CR style}{@CR style}
214
*CR style* &
215
In this style, alternate passes of C style and R style are performed.
216
217
\atindex{R style}{@R style}
218
*R style* &
219
In this style, all the definitions are made via relator scans;
220
i.e.~this is an HLT-like style.
221
222
\atindex{R\* style}{@R\* style}
223
*R\* style* &
224
makes definitions the same as R style, but tests all definitions as
225
for C style.
226
227
\atindex{Rc style}{@Rc style}
228
*Rc style* &
229
is like R style, except that a single C style pass is done after the
230
initial R style pass.
231
232
\atindex{R/C style}{@R/C style}
233
*R/C style* &
234
In this style, we run in R style until an overflow, perform a
235
lookahead on the entire table, and then switch to CR style.
236
237
\atindex{Defaulted R/C style}{@Defaulted R/C style}
238
\atindex{R/C (defaulted) style}{@R/C (defaulted) style}
239
*Defaulted R/C* ($={}$*R/C (defaulted)* $\,$) *style* &
240
is the default style used if you call {\ACE} without specifying
241
options. In it, we use R/C style with `ct' set to 1000 and `rt' set to
242
approximately $2000$ divided by the total length of the relators in an
243
attempt to balance R style and C style definitions when we switch to
244
CR style.
245
246
\enditems
247
248
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
249
\Section{Finding Deductions, Coincidences, and Preferred Definitions}
250
251
\index{definition}
252
First, let us broadly discuss strategies and how they influence
253
``definitions''. By *definition* we mean the allocation of a coset
254
number. In a complete coset table each group relator produces a cycle
255
of cosets numbers at each coset number, in particular, at coset 1;
256
i.e.~for each relator $w$, and for each coset number $i$, successive
257
application of the letters of $w$ trace through a sequence of coset
258
numbers that begins and ends in $i$ (see Section~"Enumeration Style"
259
for an example). It has been found to be a good general rule to use
260
the given group relators as subgroup generators. This ensures the
261
early definition of some useful coset numbers, and is the basis of the
262
`default' strategy (see~"option default"). The number of group
263
relators included as subgroup generators is determined by the `no'
264
option (see~"option no"). Over a wide range of examples the use of
265
group relators in this way has been shown to produce generally
266
beneficial results in terms of the maximum number of cosets numbers
267
defined at any one time and the total number of coset numbers defined.
268
In~\cite{CDHW73}, it was reported that for some Macdonald group
269
$G(\alpha,\beta)$ examples, (pure) Felsch-type strategies (that don't
270
include the given group relators as subgroup generators) e.g.~the
271
`felsch := 0' strategy (see~"option felsch") defined significantly
272
more coset numbers than HLT-type (e.g.~the `hlt' strategy, see~"option
273
hlt") strategies. The comparison of these strategies in terms of total
274
number of coset numbers defined, in~\cite{Hav91}, for the enumeration
275
of the cosets of a certain index 40 subgroup of the $G(3,21)$
276
Macdonald group were 91 for HLT versus 16067 for a pure Felsch-type
277
strategy. For the Felsch strategy with the group relators included as
278
subgroup generators, as for the `felsch := 1' strategy (see~"option
279
felsch") the total number of coset numbers defined reduced markedly to
280
59.
281
282
\index{deduction}
283
A *deduction* occurs when the scanning of a relator results in the
284
assignment of a coset table body entry. A completed table is only
285
valid if every table entry has been tested in all essentially
286
different positions in all relators. This testing can either be done
287
directly (Felsch strategy) or via relator scanning (HLT strategy). If
288
it is done directly, then more than one deduction can be waiting to be
289
processed at any one time. The untested deductions are stored in a
290
stack. How this stack is managed is determined by the `dmode' option
291
(see~"option dmode"), and its size is controlled by the `dsize' option
292
(see~"option dsize").
293
294
\index{coincidence}\index{dead coset (number)}
295
As already mentioned a *coincidence* occurs when it is determined that
296
two coset numbers in fact represent the same coset. When this occurs
297
the larger coset number becomes a *dead coset number* and the
298
coincidence is placed in a queue. When and how these dead coset
299
numbers are eventually eliminated is controlled by the options
300
`dmode', `path' and `compaction' (see~"option dmode", "option path"
301
and~"option compaction"). The user may also force coincidences to
302
occur (see Section~"Finding Subgroups"), which, however, may change
303
the subgroup whose cosets are enumerated.
304
305
\index{preferred definition!preferred definition stack}
306
The key to performance of coset enumeration procedures is good
307
selection of the next coset number to be defined. Leech
308
in~\cite{Lee77} and~\cite{Lee84} showed how a number of coset
309
enumerations could be simplified by removing coset numbers needlessly
310
defined by computer implementations. Human enumerators intelligently
311
choose which coset number should be defined next, based on the value
312
of each potential definition. In particular, definitions which close
313
relator cycles (or at least shorten gaps in cycles) are favoured. A
314
definition which actually closes a relator cycle immediately yields
315
twice as many table entries (deductions) as other definitions. The
316
value of the `pmode' option (see~"option pmode") determines which
317
definitions are *preferred*; if the value of the `pmode' option is
318
non-zero, depending on the `pmode' value, gaps of length one found
319
during relator C style (i.e.~Felsch-like) scans are either filled
320
immediately (subject to the value of `fill') or noted in the
321
*preferred definition stack*. The preferred definition stack is
322
implemented as a ring of size determined by the `psize' option
323
(see~"option psize"). However, making preferred definitions carelessly
324
can violate the conditions required for guaranteed termination of the
325
coset enumeration procedure in the case of finite index. To avoid such
326
a violation {\ACE} ensures a fraction of the coset table is filled
327
before a preferred definition is made; the reciprocal of this
328
fraction, the `fill factor', is manipulated via the `fill' option
329
(see~"option fill"). In~\cite{Hav91}, the `felsch := 1' type
330
enumeration of the cosets of the certain index 40 subgroup of the
331
$G(3,21)$ Macdonald group was further improved to require a total
332
number of coset numbers of just 43 by incorporating the use of
333
preferred definitions.
334
335
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
336
\Section{Finding Subgroups}
337
338
\index{coincidence}
339
The {\ACE} package, via its interactive {\ACE} interface functions
340
(described in Chapter~"Functions for Using ACE Interactively"),
341
provides the possibility of searching for subgroups. To do this one
342
starts at a known subgroup (possibly the trivial subgroup). Then one
343
may augment it by adding new subgroup generators either explicitly via
344
`ACEAddSubgroupGenerators' (see~"ACEAddSubgroupGenerators") or
345
implicitly by introducing *coincidences* (see `ACECosetCoincidence':
346
"ACECosetCoincidence", or `ACERandomCoincidences':
347
"ACERandomCoincidences"). Also, one may descend to smaller subgroups
348
by deleting subgroup generators via `ACEDeleteSubgroupGenerators'
349
(see~"ACEDeleteSubgroupGenerators").
350
351
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
352
\Section{Coset Table Standardisation Schemes}
353
354
\atindex{lenlex standardisation scheme}{@\noexpand`lenlex' %
355
standardisation scheme}
356
The default standardisation scheme for {\GAP} from {\GAP}~4.3 and the
357
standardisation scheme provided by {\ACE} is the `lenlex' scheme, of
358
Charles Sims~\cite{Sim94}. This scheme numbers cosets first according
359
to word-length and then according to a lexical ordering of coset
360
representatives. Each coset representative is a word in an alphabet
361
consisting of the user-supplied generators and their inverses, and the
362
lexical ordering of `lenlex' is that implied by ordering that alphabet
363
so that each generator is followed by its inverse, and the generators
364
appear in user-supplied order. See below for an example which gives
365
the first 20 lines of the `lenlex' standard coset table of the
366
(infinite) group with presentation $\langle x, y, a, b \mid x^2, y^3,
367
a^4, b^2\rangle$.
368
369
In the table each inverse of a generator is represented by the
370
corresponding uppercase letter ($X$ represents the inverse of $x$
371
etc.), and the lexical ordering of the representatives is that implied
372
by defining an ordering of the alphabet of user-supplied generators
373
and their inverses to be $x\<X\<y\<Y\<a\<A\<b\<B$.
374
375
A `lenlex' standard coset table whose columns correspond, in order, to
376
the already-described alphabet, of generators and their inverses, has
377
an important property: a scan of the body of the table row by row from
378
left to right, encounters new coset numbers in numeric order. Observe
379
that the table below has this property: the definition of coset 1 is
380
implicit; the first coset number we encounter in the table body is 2,
381
then 2 again, 3, 4, 5, 6, 7, then 7 again, etc.
382
383
With the `lenlex' option (see~"option lenlex"), the coset table output
384
by `ACECosetTable' or `ACECosetTableFromGensAndRels' is standardised
385
according to the `lenlex' scheme.
386
387
\begintt
388
coset no. || x X y Y a A b B rep've
389
-----------+------------------------------------------------------------------
390
1 || 2 2 3 4 5 6 7 7
391
2 || 1 1 8 9 10 11 12 12 x
392
3 || 13 13 4 1 14 15 16 16 y
393
4 || 17 17 1 3 18 19 20 20 Y
394
5 || 21 21 22 23 24 1 25 25 a
395
6 || 26 26 27 28 1 24 29 29 A
396
7 || 30 30 31 32 33 34 1 1 b
397
8 || 35 35 9 2 36 37 38 38 xy
398
9 || 39 39 2 8 40 41 42 42 xY
399
10 || 43 43 44 45 46 2 47 47 xa
400
11 || 48 48 49 50 2 46 51 51 xA
401
12 || 52 52 53 54 55 56 2 2 xb
402
13 || 3 3 57 58 59 60 61 61 yx
403
14 || 62 62 63 64 65 3 66 66 ya
404
15 || 67 67 68 69 3 65 70 70 yA
405
16 || 71 71 72 73 74 75 3 3 yb
406
17 || 4 4 76 77 78 79 80 80 Yx
407
18 || 81 81 82 83 84 4 85 85 Ya
408
19 || 86 86 87 88 4 84 89 89 YA
409
20 || 90 90 91 92 93 94 4 4 Yb
410
\endtt
411
412
\atindex{semilenlex standardisation scheme}{@\noexpand`semilenlex' %
413
standardisation scheme}
414
Another standardisation scheme for coset tables (the default scheme of
415
versions of {\GAP} up to {\GAP}~4.2), numbers cosets according to
416
coset representative word-length in the group generators and lexical
417
ordering imposed by the user-supplied ordering of the group
418
generators; it is known as `semilenlex' since though like `lenlex',
419
generator inverses do not feature. Here again is 20 lines of the coset
420
table of the group with presentation $\langle x, y, a, b \mid x^2,
421
y^3, a^4, b^2\rangle$, this time `semilenlex' standardised.
422
423
\begintt
424
coset no. || x y a b rep've
425
-----------+--------------------------------------
426
1 || 2 3 4 5
427
2 || 1 6 7 8 x
428
3 || 9 10 11 12 y
429
4 || 13 14 15 16 a
430
5 || 17 18 19 1 b
431
6 || 20 21 22 23 xy
432
7 || 24 25 2 26 xa
433
8 || 27 28 29 2 xb
434
9 || 3 30 31 32 yx
435
10 || 33 1 34 35 yy
436
11 || 36 37 38 39 ya
437
12 || 40 41 42 3 yb
438
13 || 4 43 44 45 ax
439
14 || 46 47 48 49 ay
440
15 || 50 51 52 53 aa
441
16 || 54 55 56 4 ab
442
17 || 5 57 58 59 bx
443
18 || 60 61 62 63 by
444
19 || 64 65 66 67 ba
445
20 || 6 68 69 70 xyx
446
\endtt
447
448
The term `semilenlex' was coined by Edmund Robertson and Joachim
449
Neub{\accent127u}ser, for the scheme's applicability to semigroups
450
where generator inverses need not exist. This scheme ensures that as
451
one scans the columns corresponding to the group generators (in
452
user-supplied order) row by row, one encounters new coset numbers in
453
numeric order.
454
455
Observe that the representatives are ordered according to length and
456
then the lexical ordering implied by defining $x\<y\<a\<b$ (with some
457
words omitted due to their equivalence to words that precede them in
458
the ordering). Also observe that as one scans the body of the table
459
row by row from left to right new coset numbers appear in numeric
460
order without gaps (2, 3, 4, 5, then 1 which we have implicitly
461
already seen, 6, 7, etc.).
462
463
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
464
\Section{Coset Statistics Terminology}
465
466
\indextt{activecosets}\indextt{maxcosets}\indextt{totcosets}
467
\index{coincidence}\index{dead coset (number)}\index{alive coset number}
468
There are three statistics involved in the counting of coset number
469
definitions: `activecosets', `maxcosets' and `totcosets'; these are
470
three of the fields of the record returned by `ACEStats' (see
471
Section~"Using ACE Directly to Test whether a Coset Enumeration
472
Terminates"), and they correspond to the `a', `m' and `t' statistics
473
of an {\ACE} ``results message'' (see Appendix~"The Meanings of ACE's
474
Output Messages"). As already described, coset enumeration proceeds by
475
defining coset numbers; `totcosets' counts *all* such definitions made
476
during an enumeration. During the coset enumeration process,
477
*coincidences* usually occur, resulting in the larger of each
478
coincident pair becoming a *dead coset number*. The statistic
479
`activecosets' is the count of coset numbers left *alive* (i.e.~not
480
dead) at the end of an enumeration; and `maxcosets' is the maximum
481
number of *alive* cosets at any point of an enumeration.
482
483
In practice, the statistics `maxcosets' and `totcosets' tend to be of
484
a similar order, though, of course, `maxcosets' can never be more than
485
`totcosets'.
486
487
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
488
\Section{Other Terminology}
489
490
\index{loop}\index{pass}\index{state (machine)}
491
In various places in this manual, we will refer to a (main) *loop* or
492
a *pass* through such a loop. We don't intend to give a precise
493
meaning to these terms. The reader will need to forgive us for giving
494
somewhat circular definitions in our attempt to make these terms less
495
nebulous. It is sufficient to appreciate that the {\ACE} enumerator is
496
organised as a state machine, where each *state* is a value of the
497
coset table held internally by {\ACE} at the end of each ``main
498
loop''. Each step from one state to the next (i.e.~each passage
499
through the main loop) performs an ``action'' (i.e., `lookahead',
500
`compaction'; see~"option lookahead" and~"option compaction") or a
501
block of actions (i.e., `|ct|' coset number definitions, `|rt|' coset
502
number applications). {\ACE} counts the number of passes through the
503
main loop; if the option `loop' (see~"option loop") is set to a
504
positive integer, {\ACE} makes an early return when the loop count
505
hits the value of `loop'.
506
507
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
508
%%
509
%E
510
511