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 options.tex ACE documentation - options 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{Options for ACE}
16
17
{\ACE} offers a wide range of options to direct and guide a coset
18
enumeration, most of which are available from {\GAP} through the
19
interface provided by the {\ACE} Package. We describe most of the
20
options available via the interface in this chapter; other options,
21
termed strategies, are defined in Chapter~"Strategy Options for ACE".
22
(Strategies are merely special options of {\ACE} that set a number of
23
options described in this chapter, all at once.) Yet other options,
24
for which interactive function alternatives are provided in
25
Chapter~"Functions for Using ACE Interactively", or which most {\GAP}
26
users are unlikely to need, are described in Appendix~"Other ACE
27
Options". From within a {\GAP} session, one may see the complete list
28
of {\ACE} options, after loading the {\ACE} Package (see
29
Section~"Loading the ACE Package"), by typing
30
31
\beginexample
32
gap> RecNames(KnownACEOptions);
33
[ "default", "help", "check", "generators", "start", "path", "cycles",
34
"normal", "ds", "group", "subgroup", "relators", "order", "max", "rep",
35
"system", "silent", "time", "begin", "text", "options", "fill",
36
"aceinfile", "aceignore", "aceignoreunknown", "acenowarnings", "aceecho",
37
"aceincomment", "aceexampleoptions", "lenlex", "semilenlex", "incomplete",
38
"sg", "rl", "aep", "ai", "ao", "aceoutfile", "asis", "bye", "exit", "qui",
39
"cc", "cfactor", "ct", "redo", "compaction", "continu", "dmode", "dsize",
40
"dr", "dump", "easy", "echo", "enumeration", "felsch", "ffactor", "hard",
41
"hlt", "hole", "lookahead", "loop", "mendelsohn", "messages", "monitor",
42
"mode", "nc", "no", "oo", "pmode", "psize", "sr", "print", "purec",
43
"purer", "rc", "recover", "contiguous", "rfactor", "rt", "row", "sc",
44
"stabilising", "sims", "standard", "statistics", "stats", "style", "tw",
45
"trace", "workspace" ]
46
47
\endexample
48
49
(See Section~"The KnownACEOptions Record".) Also, from within a {\GAP}
50
session, you may use {\GAP}'s help browser (see Chapter~"ref:The Help
51
System" in the {\GAP} Reference Manual); to find out about any
52
particular {\ACE} option, simply type: ```?option <option>''', where
53
<option> is one of the options listed above without any quotes, e.g.
54
55
\begintt
56
gap> ?option echo
57
\endtt
58
59
will display the section in this manual that describes the `echo'
60
option.
61
62
We begin this chapter with several sections discussing the nature of
63
the options provided. Please spend some time reading these sections.
64
To continue onto the next section on-line using {\GAP}'s help browser,
65
type:
66
67
\begintt
68
gap> ?>
69
\endtt
70
71
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
72
\Section{Passing ACE Options}
73
74
Options are passed to the {\ACE} interface functions in either of the
75
two usual mechanisms provided by {\GAP}, namely:
76
77
\beginlist%unordered
78
79
\item{--} options may be set globally using the function `PushOptions'
80
(see Chapter~"ref:Options Stack" in the {\GAP} Reference Manual); or
81
82
\item{--} options may be appended to the argument list of any function
83
call, separated by a colon from the argument list (see "ref:Function
84
Calls" in the {\GAP} Reference Manual), in which case they are then
85
passed on recursively to any subsequent inner function call, which may
86
in turn have options of their own.
87
88
\endlist
89
90
In general, if {\ACE} is to be used interactively one should avoid
91
using the global method of passing options. In fact, it is recommended
92
that prior to calling `ACEStart' the `OptionsStack' be empty.
93
94
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
95
\Section{Warnings regarding Options}
96
97
As mentioned above, one can set options globally using the function
98
`PushOptions' (see Chapter~"ref:Options Stack" in the {\GAP} Reference
99
Manual); however, options pushed onto `OptionsStack', in this way,
100
remain there until an explicit `PopOptions()' call is made. In
101
contrast, options passed in the usual way behind a colon following a
102
function's arguments (see "ref:Function Calls" in the {\GAP} Reference
103
Manual) are local, and disappear from `OptionsStack' after the
104
function has executed successfully; nevertheless, a function, that is
105
passed options this way, will also see any global options or any
106
options passed down recursively from functions calling that function,
107
unless those options are over-ridden by options passed via the
108
function. Also note that duplication of option names for different
109
programs may lead to misinterpretations. Since a non-empty
110
`OptionsStack' is potentially a mine-field for the unwary user, the
111
function `ResetOptionsStack' (see~"ref:ResetOptionsStack" in the
112
Reference Manual) is now in the {\GAP} library and
113
114
\>FlushOptionsStack() F
115
116
introduced in version 3.001 of the {\ACE} Package to perform the same
117
function, is now a synonym for `ResetOptionsStack'; it simply executes
118
`PopOptions()' until `OptionsStack' is empty.
119
120
However, `ResetOptionsStack' (or `FlushOptionsStack') does not wipe
121
out the options already passed to an *interactive* {\ACE} process. We
122
have provided `GetACEOptions' (see~"GetACEOptions") to keep track of
123
options that the {\ACE} binary process still considers active, which
124
may or may not be still on the `OptionsStack'. There is the
125
interactive `SetACEOptions' (see~"SetACEOptions") to change such
126
options, or, of course, you can always elect to use `ACEQuit'
127
(see~"ACEQuit") and then start a new interactive {\ACE} process.
128
129
Finally, if `ACEIgnoreUnknownDefault := false'
130
(see~"ACEIgnoreUnknownDefault"), there will be situations where an
131
{\ACE} interface function needs to be told explicitly to ignore
132
options passed down recursively to it from calling functions. For this
133
purpose we have provided the options `aceignore' (see~"option
134
aceignore") and `aceignoreunknown' (see~"option aceignoreunknown").
135
136
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
137
\Section{Abbreviations and mixed case for ACE Options}
138
139
Except for limitations imposed by {\GAP} e.g.\ clashes with {\GAP}
140
keywords and blank spaces not allowed in keywords, the options of the
141
{\ACE} interface are the same as for the binary; so, for example, the
142
options can appear in upper or lower case (or indeed, mixed case) and
143
most may be abbreviated. Below we only list the options in all lower
144
case, and in their longest form; where abbreviation is possible we
145
give the shortest abbreviation in the option's description e.g.~for
146
the `mendelsohn' option we state that its shortest abbreviation is
147
`mend', which means `mende', `mendel' etc., and indeed, `Mend' and
148
`MeND', are all valid abbreviations of that option. Some options have
149
synonyms e.g.~`cfactor' is an alternative for `ct'.
150
151
The complete list of {\ACE} options known to the {\ACE} interface
152
functions, their abbreviations and the values that they are known to
153
take may be gleaned from the `KnownACEOptions' record (see
154
Section~"The KnownACEOptions Record").
155
156
Options for each of the {\ACE} interface functions
157
`ACECosetTableFromGensAndRels', `ACECosetTable', `ACEStats' and
158
`ACEStart' (see Chapter~"Functions for Using ACE Interactively"),
159
comprise the few non-{\ACE}-binary options (`silent', `aceinfile',
160
`aceoutfile', `aceignore', `aceignoreunknown', `acenowarnings',
161
`aceincomment', `aceecho' and `echo') discussed in
162
Section "Non-ACE-binary Options", (almost) all single-word {\ACE}
163
binary options and `purer' and `purec'. The options `purer' and
164
`purec' give the {\ACE} binary options `pure r' and `pure c',
165
respectively; (they are the only multiple-word {\ACE} binary options
166
that do not have a single word alternative). The *only* single-word
167
{\ACE} binary options that are *not* available via the {\ACE}
168
interface are abbreviations that clash with {\GAP} keywords (e.g.~`fi'
169
for `fill', `rec' for `recover' and `continu' for `continue'). The
170
detail of this paragraph is probably of little importance to the
171
{\GAP} user; these comments have been included for the user who wishes
172
to reconcile the respective functionalities of the {\ACE} interface
173
and the {\ACE} standalone, and are probably of most value to
174
standalone users.
175
176
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
177
\Section{Honouring of the order in which ACE Options are passed}
178
179
*Note:* Below we describe the intended behaviour, but unfortunately,
180
since {\GAP} 4.5 (approximately when {\ACE} 5.1 was released) the
181
order of options behind the colon is no longer honoured. Until this
182
is fixed, if the order of {\ACE} options needs to be respected, users
183
should use {\ACE} interactively (see~"ACEStart").
184
185
It is important to realize that {\ACE}'s options (even the
186
non-strategy options) are not orthogonal, i.e.\ the order in which
187
they are put to {\ACE} can be important. For this reason, except for a
188
few options that have no effect on the course of an enumeration, the
189
order in which options are passed to the {\ACE} interface is preserved
190
when those same options are passed to the {\ACE} binary. One of the
191
reasons for the non-orthogonality of options is to protect the user
192
from obtaining invalid enumerations from bad combinations of options;
193
another reason is that commonly one may specify a strategy option and
194
override some of that strategy's defaults; the general rule is that
195
the later option prevails. By the way, it's not illegal to select more
196
than one strategy, but it's not sensible; as just mentioned, the later
197
one prevails.
198
199
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
200
\Section{What happens if no ACE Strategy Option or if no ACE Option is passed}
201
202
If an {\ACE} interface function (`ACECosetTableFromGensAndRels',
203
`ACEStats', `ACECosetTable' or `ACEStart') is given no strategy
204
option, the `default' strategy (see Chapter~"Strategy Options for
205
ACE") is selected, and a number of options that {\ACE} needs to have a
206
value for are given default values, *prior* to the execution of any
207
user options, if any. This ensures that {\ACE} has a value for all its
208
``run parameters''; three of these are defined from the {\ACE}
209
interface function arguments; and the remaining ``run parameters'', we
210
denote by ``{\ACE} Parameter Options''. For user convenience, we have
211
provided the `ACEParameterOptions' record (see~"ACEParameterOptions"),
212
the fields of which are the ``{\ACE} Parameter Options''. The value of
213
each field (option) of the `ACEParameterOptions' record is either a
214
default value or (in the case of an option that is set by a strategy)
215
a record of default values that {\ACE} assumes when the user does not
216
define a value for the option (either indirectly by selecting a
217
strategy option or directly).
218
219
If the `default' strategy does not suffice, most usually a user will
220
select one of the other strategies from among the ones listed in
221
Chapter~"Strategy Options for ACE", and possibly modify some of the
222
options by selecting from the options in this chapter. It's not
223
illegal to select more than one strategy, but it's not sensible; as
224
mentioned above, the later one prevails.
225
226
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
227
\Section{Interpretation of ACE Options}
228
229
Options may be given a value by an assignment to the name (such as
230
`time := <val>'); or be passed without assigning a value, in which
231
case {\GAP} treats the option as *boolean* and sets the option to the
232
value `true', which is then interpreted by the {\ACE} interface
233
functions. Technically speaking the {\ACE} binary itself does not have
234
boolean options, though it does have some options which are declared
235
by passing without a value (e.g. the `hard' strategy option) and
236
others that are boolean in the C-sense (taking on just the values 0 or
237
1). The behaviour of the {\ACE} interface functions
238
(`ACECosetTableFromGensAndRels', `ACEStats', `ACECosetTable' or
239
`ACEStart') is essentially to restore as much as is possible a
240
behaviour that mimics the {\ACE} standalone; a `false' value is always
241
translated to 0 and `true' may be translated to any of no-value, 0 or
242
1. Any option passed with an assigned value <val> other than `false'
243
or `true' is passed with the value <val> to the {\ACE} binary. Since
244
this may appear confusing, let's consider some examples.
245
246
\beginlist%unordered
247
248
\item{--} The `hard' strategy option (see~"option hard") should be
249
passed without a value, which in turn is passed to the {\ACE} binary
250
without a value. However, the {\ACE} interface function cannot
251
distinguish the option `hard' being passed without a value, from it
252
being passed via `hard := true'. Passing `hard := false' or `hard :=
253
<val>' for any non-`true' <val> will however produce a warning message
254
(unless the option `acenowarnings' is passed) that the value 0 (for
255
`false') or <val> is unknown for that option. Nevertheless, despite
256
the warning, in this event, the {\ACE} interface function passes the
257
value to the {\ACE} binary. When the {\ACE} binary sees a line that it
258
doesn't understand it prints a warning and simply ignores it. (So
259
passing `hard := false' will produce warnings, but will have no ill
260
effects.) The reason we still pass *unknown* values to the {\ACE}
261
binary is that it's conceivable a future version of the {\ACE} binary
262
might have several `hard' strategies, in which case the {\ACE}
263
interface function will still complain (until it's made aware of the
264
new possible values) but it will perform in the correct manner if a
265
value expected by the {\ACE} binary is passed.
266
267
\item{--} The `felsch' strategy option (see~"option felsch") may be
268
passed without a value (which chooses the *felsch 0* strategy) or with
269
the values 0 or 1. Despite the fact that {\GAP} sees this option as
270
*boolean*; it is *not*. There are two Felsch strategies: *felsch 0*
271
and *felsch 1*. To get the *felsch 1* strategy, the user must pass
272
`felsch := 1'. If the user were to pass `felsch := false' the result
273
would be the *felsch 0* strategy (since `false' is always translated
274
to 0), i.e.~the same as how `felsch := true' would be interpreted. We
275
could protect the user more from such ideosyncrasies, but we have
276
erred on the side of simplicity in order to make the interface less
277
vulnerable to upgrades of the {\ACE} binary.
278
279
\endlist
280
281
The lesson from the two examples is: *check the documentation for an
282
option to see how it will be interpreted*. In general, options
283
documented (in this chapter) as *only* being no-value options can be
284
safely thought of as boolean (i.e.~you will get what you expect by
285
assigning `true' or `false'), whereas strategy (no-value) options
286
should *not* be thought of as boolean (a `false' assignment will *not*
287
give you what you might have expected).
288
289
Options that are unknown to the {\ACE} interface functions and not
290
ignored (see below), that are passed without a value, are *always*
291
passed to the {\ACE} binary as no-value options (except when the
292
options are ignored); the user can over-ride this behaviour simply by
293
assigning the intended value. Note that it is perfectly safe to allow
294
the {\ACE} binary to be passed unknown options, since {\ACE} simply
295
ignores options it doesn't understand, issues an error message (which
296
is just a warning and is output by {\GAP} unless `acenowarnings' (see
297
"option acenowarnings") is passed) and continues on with any other
298
options passed in exactly the way it would have if the ``unknown''
299
options had not been passed.
300
301
An option is ignored if it is unknown to the {\ACE} interface
302
functions and one of the following is true:
303
304
\beginlist%unordered
305
\item{--} the global variable `ACEIgnoreUnknownDefault' is set to
306
`false' (see~"ACEIgnoreUnknownDefault") or,
307
308
\item{--} the `aceignoreunknown' option (see~"option aceignoreunknown")
309
is passed, or
310
311
\item{--} the `aceignore' option is passed and the option is an
312
element of the list value of `aceignore' (see~"option aceignore").
313
314
\endlist
315
316
\index{debugging}
317
\indextt{ACEIgnoreUnknownDefault!use as debugging tool}
318
It is actually *recommended* that the user set
319
`ACEIgnoreUnknownDefault' to `false', since this will allow the user
320
to see when {\ACE} functions have been passed options that are
321
``unknown'' to the {\ACE} package. In this way the user will be
322
informed about misspelt options, for example. So it's a good debugging
323
tool. Also, if the {\ACE} binary is updated with a version with new
324
options then these will not be known by the package (the {\GAP} part)
325
and it will be necessary to set `ACEIgnoreUnknownDefault' to `false'
326
in order for the new options to be passed to the binary. When an
327
{\ACE} function is invoked indirectly by some function that was called
328
with non-{\ACE} options the warning messages may begin to be annoying,
329
and it's then a simple matter to set `ACEIgnoreUnknownDefault' back to
330
the {\ACE} 3.003 default value of `true'.
331
332
Warning messages regarding unknown options are printed unless the
333
`acenowarnings' (see "option acenowarnings") is passed or the option
334
is ignored.
335
336
To see how options are interpreted by an {\ACE} interface function,
337
pass the `echo' option.
338
339
As mentioned above, any option that the {\ACE} binary doesn't
340
understand is simply ignored and a warning appears in the output from
341
{\ACE}. If this occurs, you may wish to check the input fed to {\ACE}
342
and the output from {\ACE}, which when {\ACE} is run non-interactively
343
are stored in files whose full path names are recorded in the record
344
fields `ACEData.infile' and `ACEData.outfile', respectively.
345
Alternatively, both interactively and non-interactively one can set
346
the `InfoLevel' of `InfoACE' to 3 (see~"SetInfoACELevel"), to see the
347
output from {\ACE}, or to 4 to also see the commands directed to
348
{\ACE}.
349
350
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
351
\Section{An Example of passing Options}
352
353
Continuing with the example of Section~"Using ACE Directly to Generate
354
a Coset Table", one could set the `echo' option to be true, use the
355
`hard' strategy option, increase the workspace to $10^7$ words and
356
turn messaging on (but to be fairly infrequent) by setting `messages'
357
to a large positive value as follows:
358
359
\begintt
360
gap> ACECosetTable(fgens, rels, [c]
361
> : echo, hard, Wo := 10^7, mess := 10000);;
362
\endtt
363
364
As mentioned in the previous section, `echo' may be thought of as a
365
boolean option, whereas `hard' is a strategy option (and hence should
366
be thought of as a no-value option). Also, observe that two options
367
have been abbreviated: `Wo' is a mixed case abbreviation of
368
`workspace', and `mess' is an abbreviation of `messages'.
369
370
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
371
\Section{The KnownACEOptions Record}
372
373
\>`KnownACEOptions' V
374
375
is a {\GAP} record whose fields are the {\ACE} options known to the
376
{\ACE} interface; each field (known {\ACE} option) is assigned to a
377
list of the form `[<i>, <ListOrFunction>]', where `<i>' is an integer
378
representing the length of the shortest abbreviation of the option and
379
`<ListOrFunction>' is either a list of (known) allowed values or a
380
boolean function that may be used to determine if the given value is a
381
(known) valid value e.g.
382
383
\beginexample
384
gap> KnownACEOptions.compaction;
385
[ 3, [ 0 .. 100 ] ]
386
387
\endexample
388
389
indicates that the option `compaction' may be abbreviated to `com'
390
and the (known) valid values are in the (integer) range 0 to 100; and
391
392
\beginexample
393
gap> KnownACEOptions.ct;
394
[ 2, <Category "IsInt"> ]
395
396
\endexample
397
398
indicates that there is essentially no abbreviation of `ct' (since its
399
shortest abbreviation is of length 2), and a value of `ct' is known
400
to be valid if `IsInt' returns true for that value.
401
402
For user convenience, we provide the function
403
404
\>ACEOptionData( <optname> ) F
405
406
which for a string <optname> representing an {\ACE} option (or a guess
407
of one) returns a record with the following fields:
408
409
\beginitems
410
411
\quad`name' & <optname> (unchanged);
412
413
\quad`known' & `true' if <optname> is a valid mixed case abbreviation
414
of a known {\ACE} option, and false otherwise;
415
416
\quad`fullname'& the lower case unabbreviated form of <optname> if the
417
`known' field is set `true', or <optname> in all lower case,
418
otherwise;
419
420
\quad`synonyms'& a list of known {\ACE} options synonymous with
421
<optname>, in lowercase unabbreviated form, if the `known' field is
422
set `true', or a list containing just <optname> in all lower case,
423
otherwise;
424
425
\quad`abbrev' & the shortest lowercase abbreviation of <optname> if
426
the `known' field is set `true', or <optname> in all lower case,
427
otherwise.
428
429
\enditems
430
431
For more on synonyms of {\ACE} options, see~"ACEOptionSynonyms".
432
433
The function `ACEOptionData' provides the user with all the query
434
facility she should ever need; nevertheless, we provide the following
435
functions.
436
437
\>IsKnownACEOption( <optname> ) F
438
439
returns `true' if <optname> is a mixed case abbreviation of a field of
440
`KnownACEOptions', or `false' otherwise.
441
`IsKnownACEOption(<optname>);' is equivalent to
442
443
\)\kernttindent{ACEOptionData(<optname>).known;}
444
445
\>ACEPreferredOptionName( <optname> ) F
446
447
returns the lowercase unabbreviated first alternative of <optname> if
448
it is a known {\ACE} option, or <optname> in lowercase, otherwise.
449
`ACEPreferredOptionName(<optname>);' is equivalent to
450
451
\)\kernttindent{ACEOptionData(<optname>).synonyms[1];}
452
453
\>IsACEParameterOption( <optname> ) F
454
455
returns true if <optname> is an ``{\ACE} parameter option''. ({\ACE}
456
Parameter Options are described in Section~"ACEParameterOptions").
457
`IsACEParameterOption(<optname>);' is equivalent to
458
459
\)\kernttindent{ACEPreferredOptionName(<optname>) in RecNames(ACEParameterOptions);}
460
461
\>IsACEStrategyOption( <optname> ) F
462
463
returns true if <optname> is an ``{\ACE} strategy option'' (see
464
Section~"The ACEStrategyOptions list").
465
`IsACEStrategyOption(<optname>);' is equivalent to
466
467
\)\kernttindent{ACEPreferredOptionName(<optname>) in ACEStrategyOptions;}
468
469
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
470
\Section{The ACEStrategyOptions List}
471
472
\>`ACEStrategyOptions' V
473
474
is a {\GAP} list that contains the strategy options known to the
475
{\ACE} interface functions:
476
477
\beginexample
478
gap> ACEStrategyOptions;
479
[ "default", "easy", "felsch", "hard", "hlt", "purec", "purer", "sims" ]
480
481
\endexample
482
483
See Chapter~"Strategy Options for ACE" for details regarding the
484
{\ACE} strategy options.
485
486
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
487
\Section{ACE Option Synonyms}\nolabel
488
489
\>`ACEOptionSynonyms' V
490
491
is a {\GAP} record. A number of known {\ACE} options have synonyms.
492
The fields of the `ACEOptionSynonyms' record are the ``preferred''
493
option names and the values assigned to the fields are the lists of
494
synonyms of those option names. What makes an option name
495
``preferred'' is somewhat arbitrary (in most cases, it is simply the
496
shortest of a list of synonyms). For a ``preferred'' option name
497
<optname> that has synonyms, the complete list of synonyms may be
498
obtained by concatenating `[ <optname> ]' and
499
`ACEOptionSynonyms.(<optname>)', e.g.
500
501
\beginexample
502
gap> Concatenation( [ "messages" ], ACEOptionSynonyms.("messages") );
503
[ "messages", "monitor" ]
504
505
\endexample
506
507
More generally, for an arbitrary option name <optname> its list of
508
synonyms (which may be a list of one element) may be obtained as the
509
`synonyms' field of the record returned by `ACEOptionData(<optname>)'
510
(see~"ACEOptionData").
511
512
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
513
\Section{Non-ACE-binary Options}
514
515
\>`NonACEbinOptions' V
516
517
is a {\GAP} list of options that have meaning only for the {\ACE}
518
Package interface, i.e.~options in `KnownACEOptions' that are *not*
519
{\ACE} binary options; each such option is described in detail below.
520
*Except* for the options listed in `NonACEbinOptions' and those
521
options that are excluded via the `aceignore' and `aceignoreunknown'
522
options (described below), *all* options that are on the
523
`OptionsStack' when an {\ACE} interface function is called, are passed
524
to the {\ACE} binary. Even options that produce the warning message:
525
```unknown (maybe new) or bad''', by virtue of not being a field of
526
`KnownACEOptions', are passed to the {\ACE} binary (except that the
527
options `purer' and `purec' are first translated to `pure r' and `pure
528
c', respectively). When the {\ACE} binary encounters an option that it
529
doesn't understand it issues a warning and simply ignores it; so
530
options accidentally passed to {\ACE} are unlikely to pose problems.
531
532
We also mention here, since it is related to an option of this
533
section, the following.
534
535
\>`ACEIgnoreUnknownDefault' V
536
537
is a global variable (*not* an option) that is initially set by the
538
{\ACE} package to `true', and is the default action that {\ACE} takes
539
for options that are unknown to the {\ACE} package (but may be new
540
options provided in a new version of the {\ACE} binary). Despite the
541
fact that it is normally set `true', it is recommended (especially for
542
the novice user of the {\ACE} package) to set `ACEIgnoreUnknownDefault
543
:= false'; the worst that can happen is being annoyed by a profusion
544
of warnings of unknown options. For individual functions, the user may
545
use the option `aceignoreunknown' (see~"option aceignoreunknown") to
546
over-ride the setting of `ACEIgnoreUnknownDefault'.
547
548
Here now, are the few options that are available to the {\GAP}
549
interface to {\ACE} that have no counterpart in the {\ACE} standalone:
550
551
\beginitems
552
553
\>`silent'{option silent}@{option `silent'}&
554
Inhibits an `Error' return when generating a coset table.
555
556
If a coset enumeration that invokes `ACECosetTableFromGensAndRels'
557
does not finish within the preset limits, an error is raised by the
558
interface to {\GAP}, unless the option `silent' or `incomplete'
559
(see~"option incomplete") has been set; in the former case, `fail' is
560
returned. This option is included to make the behaviour of
561
`ACECosetTableFromGensAndRels' compatible with that of the function
562
`CosetTableFromGensAndRels' it replaces. If the option `incomplete' is
563
also set, it overrides option `silent'.
564
565
\>`lenlex'{option lenlex}@{option `lenlex'}&
566
Ensures that `ACECosetTable' and `ACECosetTableFromGensAndRels' output
567
a coset table that is `lenlex' standardised.
568
569
The `lenlex' scheme, numbers cosets in such a way that their
570
``preferred'' (coset) representatives, in an alphabet consisting of
571
the user-submitted generators and their inverses, are ordered first
572
according to `length' and then according to a `lexical' ordering. In
573
order to describe what the `lenlex' scheme's `lexical' ordering is,
574
let us consider an example. Suppose the generators submitted by the
575
user are, in user-supplied order, `[x, y, a, b]', and represent the
576
inverses of these generators by the corresponding uppercase letters:
577
`[X, Y, A, B]', then the `lexical' ordering of `lenlex' is that
578
derived from defining `x \< X \< y \< Y \< a \< A \< b \< B'.
579
580
*Notes:*
581
In some circumstances, {\ACE} prefers to swap the first two
582
generators; such cases are detected by the function
583
`IsACEGeneratorsInPreferredOrder' (see
584
"IsACEGeneratorsInPreferredOrder"). In such cases, special action is
585
taken to avoid {\ACE} swapping the first two generators; this action
586
is described in the notes for `ACEStandardCosetNumbering'
587
(see~"ACEStandardCosetNumbering"). When this special action is
588
invoked, a side-effect is that any setting of the `asis' (see~"option
589
asis") option by the user is ignored.
590
591
The `lenlex' standardisation scheme is the default coset table
592
standardisation scheme of {\GAP} (since version 4.3). However,
593
`semilenlex' was the standardisation scheme for versions of {\GAP} up
594
to {\GAP}~4.2. Both schemes are described in detail in Section~"Coset
595
Table Standardisation Schemes".
596
597
\>`semilenlex'{option semilenlex}@{option `semilenlex'}&
598
Ensures that `ACECosetTable' and `ACECosetTableFromGensAndRels' output
599
a coset table that is `semilenlex' standardised.
600
601
The `semilenlex' scheme, numbers cosets in such a way that their
602
``preferred'' (coset) representatives, in an alphabet consisting of
603
only the user-submitted generators, are ordered first according to
604
`length' and then according to a `lexical' ordering.
605
606
*Note:*
607
Up to {\GAP}~4.2, `semilenlex' was the default standardisation scheme
608
used by {\GAP} (see also~"option lenlex").
609
610
\>`incomplete'{option incomplete}@{option `incomplete'}&
611
Allows the return of an `incomplete' coset table, when a coset
612
enumeration does not finish within preset limits.
613
614
If a coset enumeration that invokes `ACECosetTableFromGensAndRels' or
615
`ACECosetTable' does not finish within the preset limits, an error is
616
raised by the interface to {\GAP}, unless the option `silent'
617
(see~"option silent") or `incomplete' has been set; in the latter
618
case, a partial coset table, that is a valid {\GAP} list of lists, is
619
returned. Each position of the table without a valid coset number
620
entry is filled with a zero. If the option `silent' is also set,
621
`incomplete' prevails. Since {\GAP}~4.3, an incomplete table is
622
returned reduced (i.e.~with insignificant coset numbers --- those
623
appearing only in their place of definition --- removed) and `lenlex'
624
standardised (regardless of whether the `semilenlex' option is in
625
force). (For GAP~4.2, an incomplete table was returned unstandardised
626
unless the `lenlex' option (see~"option lenlex") was also set, and the
627
table was also not reduced.) When an incomplete table is returned, a
628
warning is emitted at `InfoACE' or `InfoWarning' level 1.
629
630
\>`aceinfile:=<filename>'{option aceinfile}@{option `aceinfile'}&
631
Creates an {\ACE} input file <filename> for use with the standalone
632
only; <filename> should be a string. (Shortest abbreviation: `acein'.)
633
634
This option is only relevant to `ACECosetTableFromGensAndRels' and is
635
ignored if included as an option for invocations of `ACEStats' and
636
`ACEStart'. If this option is used, {\GAP} creates an input file with
637
filename <filename> only, and then exits (i.e.~the {\ACE} binary is
638
not called). This option is provided for users who wish to work
639
directly with the {\ACE} standalone. The full path to the input file
640
normally used by {\ACE} (i.e.~when option `aceinfile' is not used) is
641
stored in `ACEData.infile'.
642
643
644
\>`aceoutfile:=<filename>'{option aceoutfile}@{option `aceoutfile'}&
645
Redirects {\ACE} output to file <filename>; <filename> should be a
646
string. (Shortest abbreviation: `aceo'.)
647
648
This is actually a synonym for the `ao' option. Please refer
649
to~"option ao", for further discussion of this option.
650
651
\>`aceignore:=<optionList>'{option aceignore}@{option `aceignore'}&
652
Directs an {\ACE} function to ignore the options in <optionList>;
653
<optionList> should be a list of strings.
654
(Shortest abbreviation: `aceig'.)
655
656
If a function called with its own options, in turn calls an {\ACE}
657
function for which those options are not intended, the {\ACE} function
658
will pass those options to the {\ACE} binary. If those options are
659
unknown to the {\ACE} interface (and `ACEIgnoreUnknownDefault :=
660
false' and `aceignoreunknown' is not passed;
661
see~"ACEIgnoreUnknownDefault" and~"option aceignoreunknown") a warning
662
is issued. Options that are unknown to the {\ACE} binary are simply
663
ignored by {\ACE} (and a warning that the option was ignored appears
664
in the {\ACE} output, which the user will not see unless the
665
`InfoLevel' of `InfoACE' or `InfoWarning' is set to 1). This option
666
enables the user to avoid such options being passed at all, thus
667
avoiding the warning messages and also any options that coincidentally
668
are {\ACE} options but are not intended for the {\ACE} function being
669
called.
670
671
\>`aceignoreunknown'{option aceignoreunknown}@{option `aceignoreunknown'}&
672
Directs an {\ACE} function to ignore any options not known to the
673
{\ACE} interface.
674
(Shortest abbreviation: `aceignoreu'.)
675
676
This option is provided for similar reasons to `aceignore'. Normally,
677
it is safe to include it, to avoid aberrant warning messages from the
678
{\ACE} interface. However, fairly obviously, it should not be passed
679
without a value (or set to `true') in the situation where a new {\ACE}
680
binary has been installed with new options that are not listed among
681
the fields of `KnownACEOptions', which you intend to use. Omitting the
682
`aceignoreunknown' option is equivalent to setting it to the value of
683
`ACEIgnoreUnknownDefault' (see "ACEIgnoreUnknownDefault"); i.e.~it is
684
superfluous if `ACEIgnoreUnknownDefault := true' unless
685
`aceignoreunknown' is set to `false'.
686
687
\>`acenowarnings'{option acenowarnings}@{option `acenowarnings'}&
688
Inhibits the warning message ```unknown (maybe new) or bad option'''
689
for options not listed in `KnownACEOptions'.
690
(Shortest abbreviation: `acenow'.)
691
692
This option suppresses the warning messages for unknown options (to
693
the {\ACE} interface), but unlike `aceignore' and `aceignoreunknown'
694
still allows them to be passed to the {\ACE} binary.
695
696
\>`echo'{option echo}@{option `echo'}
697
\>`echo:=2'{option echo}@{option `echo'}&
698
Echoes arguments and options (and indicates how options were handled).
699
700
Unlike the previous options of this section, there *is* an {\ACE}
701
binary option `echo'. However, the `echo' option is handled by the
702
{\ACE} interface and is not passed to the {\ACE} binary. (If you wish
703
to put `echo' in a standalone script use the `aceecho' option
704
following.) If `echo' is passed with the value 2 then a list of the
705
options (together with their values) that are set via {\ACE} defaults
706
are also echoed to the screen.
707
708
\>`aceecho'{option aceecho}@{option `aceecho'}&
709
The {\ACE} binary's `echo' command.
710
711
This option is only included so that a user *can* put an `echo'
712
statement in an {\ACE} standalone script. Otherwise, use `echo'
713
(above).
714
715
\>`aceincomment:=<string>'{option aceincomment}@{option `aceincomment'}&
716
Print comment <string> in the {\ACE} input; <string> must be a string.
717
(Shortest abbreviation: `aceinc'.)
718
719
This option prints the comment <string> behind a sharp sign (`\#') in
720
the input to {\ACE}. Only useful for adding comments (that {\ACE}
721
ignores) to standalone input files.
722
723
\>`aceexampleoptions'{option aceexampleoptions}@{option `aceexampleoptions'}&
724
An *internal* option for `ACEExample'.
725
726
This option is passed *internally* by `ACEExample' to the {\ACE}
727
interface function it calls, when one invokes `ACEExample' with
728
options. Its purpose is to provide a mechanism for the over-riding of
729
an example's options by the user. The option name is deliberately long
730
and has no abbreviation to discourage user use.
731
732
\enditems
733
734
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
735
\Section{ACE Parameter Options}\nolabel
736
737
\>`ACEParameterOptions' V
738
739
is a {\GAP} record, whose fields are the ``{\ACE} Parameter Options''.
740
The ``{\ACE} Parameter Options'' are options which, if not supplied a
741
value by the user, are supplied a default value by {\ACE}. In fact,
742
the ``{\ACE} Parameter Options'' are those options that appear (along
743
with `Group Generators', `Group Relators' and `Subgroup Generators',
744
which are defined from {\ACE} interface function arguments) in the
745
``Run Parameters'' block of {\ACE} output, when, for example, the
746
`messages' option is non-zero.
747
748
For each field ({\ACE} parameter option) of the `ACEParameterOptions'
749
record, the value assigned is the default value (or a record of
750
default values) that are supplied by {\ACE} when the option is not
751
given a value by the user (either indirectly by selecting a strategy
752
option or directly).
753
754
In the cases where the value of a field of the `ACEParameterOptions'
755
record is itself a record, the fields of that record are `default' and
756
strategies for which the value assigned by that strategy differs from
757
the `default' strategy. A ``strategy'', here, is the strategy option
758
itself, if it is only a no-value option, or the strategy option
759
concatenated with any of its integer values (as strings), otherwise
760
(e.g.~`felsch0' and `sims9' are strategies, and `hlt' is both a
761
strategy and a strategy option). As an exercise, the reader might like
762
to try to reproduce the table at the beginning of Chapter~"Strategy
763
Options for ACE" using the `ACEParameterOptions' record. (Hint: you
764
first need to select those fields of the `ACEParameterOptions' record
765
whose values are records with at least two fields.)
766
767
*Note:*
768
Where an ``{\ACE} Parameter Option'' has synonyms, only the
769
``preferred'' option name (see~"ACEOptionSynonyms") appears as a field
770
of `ACEParameterOptions'. The complete list of ``{\ACE} Parameter
771
Options'' may be obtained by
772
773
\beginexample
774
gap> Concatenation( List(RecNames(ACEParameterOptions),
775
> optname -> ACEOptionData(optname).synonyms) );
776
[ "path", "subgroup", "max", "time", "fill", "ffactor", "asis", "ct",
777
"cfactor", "compaction", "dmode", "dsize", "enumeration", "hole",
778
"lookahead", "loop", "mendelsohn", "messages", "monitor", "no", "pmode",
779
"psize", "rt", "rfactor", "row", "workspace" ]
780
781
\endexample
782
783
We describe the ``{\ACE} Parameter Options'' in the Sections~"General
784
ACE Parameter Options that Modify the Enumeration Process", "ACE
785
Parameter Options Modifying C Style Definitions", "ACE Parameter
786
Options for R Style Definitions", "ACE Parameter Options for Deduction
787
Handling", "Technical ACE Parameter Options", "ACE Parameter Options
788
controlling ACE Output", and~"ACE Parameter Options that give Names to
789
the Group and Subgroup", following.
790
791
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
792
\Section{General ACE Parameter Options that Modify the Enumeration Process}
793
794
\beginitems
795
796
\>`asis'{option asis}@{option `asis'}&
797
Do not reduce relators. (Shortest abbreviation: `as'.)
798
799
By default, {\ACE} freely and cyclically reduces the relators, freely
800
reduces the subgroup generators, and sorts relators and subgroup
801
generators in length-increasing order. If you do not want this, you
802
can switch it off by setting the `asis' option.
803
804
*Notes:* As well as allowing you to use the presentation *as* it *is*
805
given, this is useful for forcing definitions to be made in a
806
prespecified order, by introducing dummy (i.e., freely trivial)
807
subgroup generators. (Note that the exact form of the presentation
808
can have a significant impact on the enumeration statistics.) For
809
some fine points of the influence of `asis' being set on the treatment
810
of involutory generators see the {\ACE} standalone manual.
811
812
\>`ct:=<val>'{option ct}@{option `ct'}
813
\>`cfactor:=<val>'{option cfactor}@{option `cfactor'}&
814
Number of C style definitions per pass; `<val>' should be an integer.
815
(Shortest abbreviation of `cfactor' is `c'.)
816
817
The absolute value of `<val>' sets the number of C style definitions
818
per pass through the enumerator's main loop. The sign of `<val>' sets
819
the style. The possible combinations of the values of `ct' and `rt'
820
(described below) are given in the table of enumeration styles in
821
Section~"Enumeration Style".
822
823
\>`rt:=<val>'{option rt}@{option `rt'}
824
\>`rfactor:=<val>'{option rfactor}@{option `rfactor'}&
825
Number of R style definitions per pass; `<val>' should be an integer.
826
(Shortest abbreviation of `rfactor' is `r'.)
827
828
The absolute value of `<val>' sets the number of R style definitions
829
per pass through the enumerator's main loop. The sign of `<val>' sets
830
the style. The possible combinations of the values of `ct' (described
831
above) and `rt' are given in the table of enumeration styles in
832
Section~"Enumeration Style".
833
834
\>`no:=<val>'{option no}@{option `no'}&
835
The number of group relators to include in the subgroup;
836
`<val>' should be an integer greater than or equal to $-1$.
837
838
It is sometimes helpful to include the group relators into the list of
839
the subgroup generators, in the sense that they are applied to coset
840
number 1 at the start of an enumeration. A value of 0 for this option
841
turns this feature off and the (default) argument of $-1$ includes all
842
the relators. A positive argument includes the specified number of
843
relators, in order. The `no' option affects only the C style
844
procedures.
845
846
\>`mendelsohn'{option mendelsohn}@{option `mendelsohn'}&
847
Turns on mendelsohn processing. (Shortest abbreviation: `mend'.)
848
849
Mendelsohn style processing during relator scanning/closing is turned
850
on by giving this option. Off is the default, and here relators are
851
scanned only from the start (and end) of a relator. Mendelsohn ``on''
852
means that all (different) cyclic permutations of a relator are
853
scanned.
854
855
The effect of Mendelsohn style processing is case-specific. It can
856
mean the difference between success or failure, or it can impact the
857
number of coset numbers required, or it can have no effect on an
858
enumeration's statistics.
859
860
*Note:* Processing all cyclic permutations of the relators can be very
861
time-consuming, especially if the presentation is large. So, all
862
other things being equal, the Mendelsohn flag should normally be left
863
off.
864
865
\enditems
866
867
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
868
\Section{ACE Parameter Options Modifying C Style Definitions}
869
870
\atindex{C style}{@C style!definition}
871
The next three options are relevant only for making *C style
872
definitions* (see Section~"Enumeration Style"). Making definitions in
873
C style, that is filling the coset table line by line, it can be very
874
advantageous to switch to making definitions from the preferred
875
definition stack. Possible definitions can be extracted from this
876
stack in various ways and the two options `pmode' and `psize'
877
(see~"option pmode" and~"option psize" respectively) regulate this.
878
However it should be clearly understood that making all definitions
879
from a preferred definition stack one may violate the condition of
880
Mendelsohn's theorem, and the option `fill' (see~"option fill") can be
881
used to avoid this.
882
883
\beginitems
884
885
\>`fill:=<val>'{option fill}@{option `fill'}
886
\>`ffactor:=<val>'{option ffactor}@{option `ffactor'}&
887
Controls the preferred definition strategy by setting the fill factor;
888
`<val>' must be a non-negative integer.
889
(Shortest abbreviation of `fill' is `fil', and shortest abbreviation
890
of `ffactor' is `f'.)
891
892
Unless prevented by the fill factor, gaps of length one found during
893
deduction testing are preferentially filled (see \cite{Hav91}).
894
However, this potentially violates the formal requirement that all
895
rows in the coset table are eventually filled (and tested against the
896
relators). The fill factor is used to ensure that some constant
897
proportion of the coset table is always kept filled. Before defining a
898
coset number to fill a gap of length one, the enumerator checks
899
whether `fill' times the completed part of the table is at least the
900
total size of the table and, if not, fills coset table rows in
901
standard order (i.e.~C style; see Section~"Enumeration Style") instead
902
of filling gaps.
903
904
An argument of 0 selects the default value of $\lfloor 5(n+2)/4
905
\rfloor$, where $n$ is the number of columns in the table. This
906
default fill factor allows a moderate amount of gap-filling. If
907
`fill' is 1, then there is no gap-filling. A large value of `fill'
908
can cause what is in effect infinite looping (resolved by the coset
909
enumeration failing). However, in general, a large value does work
910
well. The effects of the various gap-filling strategies vary widely.
911
It is not clear which values are good general defaults or, indeed,
912
whether any strategy is always ``not too bad''.
913
914
This option is identified as `Fi' in the ``Run Parameters'' block
915
(obtained when `messages' is non-zero) of the {\ACE} output, since for
916
the {\ACE} binary, `fi' is an allowed abbreviation of `fill'. However,
917
`fi' is a {\GAP} keyword and so the shortest abbreviation of `fill'
918
allowed by the interface functions is `fil'.
919
920
\>`pmode:=<val>'{option pmode}@{option `pmode'}&
921
Option for preferred definitions; `<val>' should be in the integer
922
range 0 to 3. (Shortest abbreviation: `pmod'.)
923
924
The value of the `pmode' option determines which definitions are
925
preferred. If the argument is 0, then Felsch style definitions are
926
made using the next empty table slot. If the argument is non-zero,
927
then gaps of length one found during relator scans in Felsch style are
928
preferentially filled (subject to the value of `fill'). If the
929
argument is 1, they are filled immediately, and if it is 2, the
930
consequent deduction is also made immediately (of course, these are
931
also put on the deduction stack). If the argument is 3, then the gaps
932
of length one are noted in the preferred definition queue.
933
934
Provided such a gap survives (and no coincidence occurs, which causes
935
the queue to be discarded) the next coset number will be defined to
936
fill the oldest gap of length one. The default value is either 0 or 3,
937
depending on the strategy selected (see Chapter~"Strategy Options for
938
ACE"). If you want to know more details, read the code.
939
940
941
\>`psize:=<val>'{option psize}@{option `psize'}&
942
Size of preferred definition queue; `<val>' *must* be 0 or $2^n$, for
943
some integer $n>0$. (Shortest abbreviation: `psiz'.)
944
945
The preferred definition queue is implemented as a ring, dropping
946
earliest entries. An argument of 0 selects the default size of $256$.
947
Each queue slot takes two words (i.e., 8 bytes), and the queue can
948
store up to $2^n-1$ entries.
949
950
\enditems
951
952
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
953
\Section{ACE Parameter Options for R Style Definitions}
954
955
\atindex{R style}{@R style!definition}
956
\beginitems
957
958
\>`row:=<val>'{option row}@{option `row'}&
959
Set the ``row filling'' option; `<val>' is either 0 or 1.
960
961
By default, ``row filling'' is on (i.e.~`true' or 1). To turn it off
962
set `row' to `false' or 0 (both are translated to 0 when passed to the
963
{\ACE} binary). When making HLT style (i.e.~R style; see
964
Section~"Enumeration Style") definitions, rows of the coset table are
965
scanned for holes after its coset number has been applied to all
966
relators, and definitions are made to fill any holes encountered. This
967
will, in particular, guarantee fulfilment of the condition of
968
Mendelsohn's Theorem. Failure to do so can cause even simple
969
enumerations to overflow.
970
971
\>`lookahead:=<val>'{option lookahead}@{option `lookahead'}&
972
Lookahead; `<val>' should be in the integer range 0 to 4.
973
(Shortest abbreviation: `look'.)
974
975
Although HLT style strategies are fast, they are local, in the sense
976
that the implications of any definitions/deductions made while
977
applying coset numbers may not become apparent until much later. One
978
way to alleviate this problem is to perform lookaheads occasionally;
979
that is, to test the information in the table, looking for deductions
980
or concidences. {\ACE} can perform a lookahead when the table
981
overflows, before the compaction routine is called. Lookahead can be
982
done using the entire table or only that part of the table above the
983
current coset number, and it can be done R style (scanning coset
984
numbers from the beginning of relators) or C style (testing all
985
definitions in all essentially different positions).
986
987
The following are the effects of the possible values of `lookahead':
988
989
\beginlist%unordered
990
991
\item{--} 0 disables lookahead;
992
\item{--} 1 does a partial table lookahead, R style;
993
\item{--} 2 does a whole table lookahead, C style;
994
\item{--} 3 does a whole table lookahead, R style; and
995
\item{--} 4 does a partial table lookahead, C style.
996
997
\endlist
998
999
The default is 1 if the `hlt' strategy is used and 0 otherwise; see
1000
Chapter~"Strategy Options for ACE".
1001
1002
Section~"Enumeration Style" describes the various enumeration styles,
1003
and, in particular, R style and C style.
1004
1005
\enditems
1006
1007
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1008
\Section{ACE Parameter Options for Deduction Handling}
1009
1010
\beginitems
1011
1012
\>`dmode:=<val>'{option dmode}@{option `dmode'}&
1013
Deduction mode; `<val>' should be in the integer range 0 to 4.
1014
(Shortest abbreviation: `dmod'.)
1015
1016
A completed table is only valid if every table entry has been tested
1017
in all essentially different positions in all relators. This testing
1018
can either be done directly (`felsch' strategy; see~"option felsch")
1019
or via relator scanning (`hlt' strategy; see~"option hlt"). If it is
1020
done directly, then more than one deduction (i.e., table entry) can be
1021
waiting to be processed at any one time. So the untested deductions
1022
are stored in a stack. Normally this stack is fairly small but, during
1023
a collapse, it can become very large.
1024
1025
This command allows the user to specify how deductions should be
1026
handled. The value <val> has the following interpretations:
1027
1028
\beginlist%unordered
1029
1030
\item{--} $0$:
1031
discard deductions if there is no stack space left;
1032
1033
\item{--} $1$:
1034
as for $0$, but purge any redundant coset numbers on the top of the
1035
stack at every coincidence;
1036
1037
\item{--} $2$:
1038
as for 0, but purge all redundant coset numbers from the stack at
1039
every coincidence;
1040
1041
\item{--} $3$:
1042
discard the entire stack if it overflows; and
1043
1044
\item{--} $4$:
1045
if the stack overflows, double the stack size and purge all redundant
1046
coset numbers from the stack.
1047
1048
\endlist
1049
1050
The default deduction mode is either $0$ or $4$, depending on the
1051
strategy selected (see Chapter~"Strategy Options for ACE"), and it is
1052
recommended that you stay with the default. If you want to know more
1053
details, read the well-commented C code.
1054
1055
*Notes:*
1056
If deductions are discarded for any reason, then a final relator check
1057
phase will be run automatically at the end of the enumeration, if
1058
necessary, to check the result.
1059
1060
\>`dsize:=<val>'{option dsize}@{option `dsize'}&
1061
Deduction stack size; `<val>' should be a non-negative integer.
1062
(Shortest abbreviation: `dsiz'.)
1063
1064
Sets the size of the (initial) allocation for the deduction stack.
1065
The size is in terms of the number of deductions, with one deduction
1066
taking two words (i.e., 8 bytes). The default size, of $1000$, can be
1067
selected by a value of 0. See the `dmode' entry for a (brief)
1068
discussion of deduction handling.
1069
1070
\enditems
1071
1072
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1073
\Section{Technical ACE Parameter Options}
1074
1075
The following options do not affect how the coset enumeration is done,
1076
but how it uses the computer's resources. They might thus affect the
1077
runtime as well as the range of problems that can be tackled on a
1078
given machine.
1079
1080
\beginitems
1081
1082
\>`workspace:=<val>'{option workspace}@{option `workspace'}&
1083
Workspace size in words (default $10^6$);
1084
`<val>' should be an expression that evaluates to a positive integer,
1085
or a string of digits ending in a `k', `M' or `G' representing a
1086
multiplication factor of $10^3$, $10^6$ or $10^9$, respectively
1087
e.g.~both `workspace := 2 * 10^6' and `workspace := "2M"' specify a
1088
workspace of $2\times10^6$ words. Actually, if the value of
1089
`workspace' is entered as a string, each of `k', `M' or `G' will be
1090
accepted in either upper or lower case. (Shortest abbreviation: `wo'.)
1091
1092
By default, {\ACE} has a physical table size of $10^6$ words (i.e., $4
1093
\times 10^6$ bytes in the default 32-bit environment). The number of
1094
coset numbers in the table is the table size divided by the number of
1095
columns. Although the number of coset numbers is limited to
1096
$2^{31}-1$ (if the C `int' type is 32 bits), the table size can exceed
1097
the $4$GByte 32-bit limit if a suitable machine is used.
1098
1099
\>`time:=<val>'{option time}@{option `time'}&
1100
Maximum execution time in seconds; `<val>' must be an integer greater
1101
than or equal to $-1$. (Shortest abbreviation: `ti'.)
1102
1103
The `time' command puts a time limit (in seconds) on the length of a
1104
run. The default is $-1$ which is no time limit. If the argument is
1105
$\ge0$ then the total elapsed time for this call is checked at the end
1106
of each pass through the enumerator's main loop, and if it's more than
1107
the limit the run is stopped and the current table returned.
1108
1109
Note that a limit of $0$ performs exactly one pass through the main
1110
loop, since $0 \ge 0$.
1111
1112
The time limit is approximate, in the sense that the enumerator may
1113
run for a longer, but never a shorter, time. So, if there is, e.g., a
1114
big collapse (so that the time round the loop becomes very long), then
1115
the run may run over the limit by a large amount.
1116
1117
*Notes:*
1118
The time limit is CPU-time, not wall-time. As in all timing under
1119
UNIX, the clock's granularity (usually $10$ milliseconds) and the
1120
system load can affect the timing; so the number of main loop
1121
iterations in a given time may vary.
1122
1123
\>`loop:=<val>'{option loop}@{option `loop'}&
1124
Loop limit; `<val>' should be a non-negative integer.
1125
1126
The core enumerator is organised as a state machine, with each step
1127
performing an ``action'' (i.e., lookahead, compaction) or a block of
1128
actions (i.e., $|`ct'|$ coset number definitions, $|`rt'|$ coset
1129
number applications). The number of passes through the main loop
1130
(i.e., steps) is counted, and the enumerator can make an early return
1131
when this count hits the value of `loop'. A value of $0$, the default,
1132
turns this feature off.
1133
1134
*Guru Notes:*
1135
You can do lots of really neat things using this feature, but you need
1136
some understanding of the internals of {\ACE} to get real benefit from
1137
it.
1138
1139
\>`path'{option path}@{option `path'}&
1140
Turns on path compression.
1141
1142
To correctly process multiple concidences, a union-find must be
1143
performed. If both path compression and weighted union are used, then
1144
this can be done in essentially linear time (see, e.g., \cite{CLR90}).
1145
Weighted union alone, in the worst-case, is worse than linear, but is
1146
subquadratic. In practice, path compression is expensive, since it
1147
involves many coset table accesses. So, by default, path compression
1148
is turned off; it can be turned on by `path'. It has no effect on the
1149
result, but may affect the running time and the internal statistics.
1150
1151
*Guru Notes:*
1152
The whole question of the best way to handle large coincidence forests
1153
is problematic. Formally, {\ACE} does not do a weighted union, since
1154
it is constrained to replace the higher-numbered of a coincident pair.
1155
In practice, this seems to amount to much the same thing! Turning
1156
path compression on cuts down the amount of data movement during
1157
coincidence processing at the expense of having to trace the paths and
1158
compress them. In general, it does not seem to be worthwhile.
1159
1160
\index{dead coset (number)}
1161
\>`compaction:=<val>'{option compaction}@{option `compaction'}&
1162
Percentage of dead coset numbers to trigger compaction;
1163
`<val>' should be an integer (percentage) in the integer range 0 to
1164
100. (Shortest abbreviation: `com'.)
1165
1166
\index{dead coset (number)}
1167
The option `compaction' sets the percentage of *dead* coset numbers
1168
needed to trigger compaction of the coset table, during an
1169
enumeration. A *dead* coset (number) is a coset number found to be
1170
coincident with a smaller coset number. The default is 10 or 100,
1171
depending on the strategy used (see Chapter~"Strategy Options for
1172
ACE").
1173
1174
Compaction recovers the space allocated to coset numbers which are
1175
flagged as dead. It results in a table where all the active coset
1176
numbers are numbered contiguously from 1, and with the remainder of
1177
the table available for new coset numbers.
1178
1179
The coset table is compacted when a definition of a coset number is
1180
required, there is no space for a new coset number available, and
1181
provided that the given percentage of the coset table contains dead
1182
coset numbers. For example, if `compaction' = $20$ then compaction
1183
will occur only if 20\% or more of the coset numbers in the table are
1184
dead. An argument of 100 means that compaction is never performed,
1185
while an argument of 0 means always compact, no matter how few dead
1186
coset numbers there are (provided there is at least one, of course).
1187
1188
Compaction may be performed multiple times during an enumeration, and
1189
the table that results from an enumeration may or may not be compact,
1190
depending on whether or not there have been any coincidences since the
1191
last compaction (or from the start of the enumeration, if there have
1192
been no compactions).
1193
1194
*Notes:*
1195
In some strategies (e.g., `hlt'; see~"option hlt") a lookahead phase
1196
may be run before compaction is attempted. In other strategies (e.g.,
1197
`sims := 3'; see~"option sims") compaction may be performed while
1198
there are outstanding deductions; since deductions are discarded
1199
during compaction, a final lookahead phase will (automatically) be
1200
performed.
1201
1202
\index{dead coset (number)}
1203
Compacting a table ``destroys'' information and history, in the sense
1204
that the coincidence list is deleted, and the table entries for any
1205
dead coset numbers are deleted.
1206
1207
\>`max:=<val>'{option max}@{option `max'}&
1208
Sets the maximum coset number that can be defined;
1209
`<val>' should be $0$ or an integer greater than or equal to 2.
1210
1211
By default (which is the case `max'${}=0$), all of the workspace is
1212
used, if necessary, in building the coset table. So the table size (in
1213
terms of the number of rows) is an upper bound on how many coset
1214
numbers can be alive at any one time. The `max' option allows a limit
1215
to be placed on how much physical table space is made available to the
1216
enumerator. Enough space for at least two coset numbers (i.e., the
1217
subgroup and one other) must be made available.
1218
1219
*Notes:*
1220
If the `easy' strategy (see~"option easy") is selected, so that
1221
`compaction' (see~"option compaction") is off (i.e.~set to 100) and
1222
`lookahead' (see~"option lookahead") is off (i.e.~set to 0), and `max'
1223
is set to a positive integer, then coset numbers are not reused, and
1224
hence `max' bounds the *total* number `totcosets' (see Section~"Coset
1225
Statistics Terminology") of coset numbers defined during an
1226
enumeration.
1227
1228
On the other hand, if one (or both) of `compaction' or `lookahead' is
1229
not off, then some reuse of coset numbers may occur, so that, for the
1230
case where `max' is a positive integer, the value of `totcosets' may
1231
be greater than `max'.
1232
1233
However, whenever `max' is set to a positive integer, both
1234
*activecosets* (the number of *alive* coset numbers at the end of an
1235
enumeration) and *maxcosets* (the maximum number of alive coset
1236
numbers at any point of an enumeration) are bounded by `max'. See
1237
Section~"Coset Statistics Terminology", for a discussion of the
1238
terminology: *activecosets* and *maxcosets*.
1239
1240
\>`hole:=<val>'{option hole}@{option `hole'}&
1241
Maximum percentage of holes allowed during an enumeration;
1242
`<val>' should be an integer in the range $-1$ to 100.
1243
(Shortest abbreviation: `ho'.)
1244
1245
This is an experimental feature which allows an enumeration to be
1246
terminated when the percentage of holes in the table exceeds a given
1247
value. In practice, calculating this is very expensive, and it tends
1248
to remain constant or decrease throughout an enumeration. So the
1249
feature doesn't seem very useful. The default value of $-1$ turns this
1250
feature off. If you want more details, read the source code.
1251
1252
\enditems
1253
1254
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1255
\Section{ACE Parameter Options controlling ACE Output}
1256
1257
\beginitems
1258
1259
\>`messages:=<val>'{option messages}@{option `messages'}
1260
\>`monitor:=<val>'{option monitor}@{option `monitor'}&
1261
Sets the verbosity of output from {\ACE}; <val> should be an integer.
1262
(Shortest abbreviation of `messages' is `mess', and shortest
1263
abbreviation of `monitor' is `mon'.)
1264
1265
By default, <val> = 0, for which {\ACE} prints out only a single line
1266
of information, giving the result of each enumeration. If <val> is
1267
non-zero then the presentation and the parameters are echoed at the
1268
start of the run, and messages on the enumeration's status as it
1269
progresses are also printed out. The absolute value of <val> sets the
1270
frequency of the progress messages, with a negative sign turning hole
1271
monitoring on. Note that, hole monitoring is expensive, so don't turn
1272
it on unless you really need it.
1273
1274
Note that, ordinarily, one will not see these messages:
1275
non-interactively, these messages are directed to file
1276
`ACEData.outfile' (or <filename>, if option `aceoutfile :=
1277
<filename>', or `ao := <filename>', is used), and interactively these
1278
messages are simply not displayed. However, one can change this
1279
situation both interactively and non-interactively by setting the
1280
`InfoLevel' of `InfoACE' to 3 via
1281
1282
\beginexample
1283
gap> SetInfoACELevel(3);
1284
1285
\endexample
1286
1287
Then {\ACE}'s messages are displayed prepended with ```\#I '''.
1288
Please refer to Appendix~"The Meanings of ACE's output messages",
1289
where the meanings of {\ACE}'s output messages are fully discussed.
1290
1291
\enditems
1292
1293
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1294
\Section{ACE Parameter Options that give Names to the Group and Subgroup}
1295
1296
These options may be safely ignored; they only give names to the group
1297
or subgroup within the {\ACE} output, and have no effect on the
1298
enumeration itself.
1299
1300
\beginitems
1301
1302
\>`enumeration:=<string>'{option enumeration}@{option `enumeration'}&
1303
Sets the `Group Name' to <string>; <string>, must of course be a
1304
string. (Shortest abbreviation: `enum'.)
1305
1306
The {\ACE} binary has a two-word synonym for this option: `Group Name'
1307
and this is how it is identified in the ``Run Parameters'' block of
1308
the {\ACE} output when `messages' has a non-zero value. The default
1309
`Group Name' is `"G"'.
1310
1311
\>`subgroup:=<string>'{option subgroup}@{option `subgroup'}&
1312
Sets the `Subgroup Name' to <string>; <string> must of course be a
1313
string. (Shortest abbreviation: `subg'.)
1314
1315
The default `Subgroup Name' is `"H"'.
1316
1317
\enditems
1318
1319
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1320
\Section{Options for redirection of ACE Output}
1321
1322
\beginitems
1323
1324
\>`ao:=<filename>'{option ao}@{option `ao'}
1325
\>`aceoutfile:=<filename>'{option aceoutfile!ao synonym}@{option `aceoutfile'}&
1326
Redirects (`a'lters) `o'utput to <filename>; <filename> should be a
1327
string.
1328
1329
Non-interactively, output from {\ACE} is normally directed to a temporary
1330
file whose full path is stored in `ACEData.outfile', which is parsed
1331
to produce a coset table or a list of statistics. This option causes
1332
{\ACE}'s output to be directed to <filename> instead, presumably
1333
because the user wishes to see (and keep) data output by the {\ACE}
1334
binary, other than the coset table output from
1335
`ACECosetTableFromGensAndRels' or the statistics output by `ACEStats'.
1336
Please refer to Appendix~"The Meanings of ACE's output messages",
1337
where we discuss the meaning of the additional data to be found in the
1338
{\ACE} binary's output. The option `aceoutfile' is a {\GAP}-introduced
1339
synonym for `ao', that is translated to `ao' before submission to the
1340
{\ACE} binary. Do not use option `aceoutfile' when running the
1341
standalone directly. Happily, `ao' can also be regarded as mnemonical
1342
for `aceoutfile'.
1343
1344
\enditems
1345
1346
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1347
\Section{Other Options}
1348
1349
{\ACE} has a number of other options, but the {\GAP} user will not
1350
ordinarily need them, since, in most cases, alternative interactive
1351
functions exist. These remaining options have been relegated to
1352
Appendix~"Other ACE Options". The options listed there may be used
1353
both interactively and non-interactively, but many are probably best
1354
used directly via the {\ACE} standalone.
1355
1356
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1357
%%
1358
%E
1359
1360