Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
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
Project: cocalc-sagemath-dev-slelievre
Views: 418346%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1%%2%W options.tex ACE documentation - options Alexander Hulpke3%W Joachim Neub"user4%W Greg Gamble5%%6%H $Id$7%%8%Y Copyright (C) 2000 Centre for Discrete Mathematics and Computing9%Y Department of Information Tech. & Electrical Eng.10%Y University of Queensland, Australia.11%%1213%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14\Chapter{Options for ACE}1516{\ACE} offers a wide range of options to direct and guide a coset17enumeration, most of which are available from {\GAP} through the18interface provided by the {\ACE} Package. We describe most of the19options available via the interface in this chapter; other options,20termed strategies, are defined in Chapter~"Strategy Options for ACE".21(Strategies are merely special options of {\ACE} that set a number of22options described in this chapter, all at once.) Yet other options,23for which interactive function alternatives are provided in24Chapter~"Functions for Using ACE Interactively", or which most {\GAP}25users are unlikely to need, are described in Appendix~"Other ACE26Options". From within a {\GAP} session, one may see the complete list27of {\ACE} options, after loading the {\ACE} Package (see28Section~"Loading the ACE Package"), by typing2930\beginexample31gap> RecNames(KnownACEOptions);32[ "default", "help", "check", "generators", "start", "path", "cycles",33"normal", "ds", "group", "subgroup", "relators", "order", "max", "rep",34"system", "silent", "time", "begin", "text", "options", "fill",35"aceinfile", "aceignore", "aceignoreunknown", "acenowarnings", "aceecho",36"aceincomment", "aceexampleoptions", "lenlex", "semilenlex", "incomplete",37"sg", "rl", "aep", "ai", "ao", "aceoutfile", "asis", "bye", "exit", "qui",38"cc", "cfactor", "ct", "redo", "compaction", "continu", "dmode", "dsize",39"dr", "dump", "easy", "echo", "enumeration", "felsch", "ffactor", "hard",40"hlt", "hole", "lookahead", "loop", "mendelsohn", "messages", "monitor",41"mode", "nc", "no", "oo", "pmode", "psize", "sr", "print", "purec",42"purer", "rc", "recover", "contiguous", "rfactor", "rt", "row", "sc",43"stabilising", "sims", "standard", "statistics", "stats", "style", "tw",44"trace", "workspace" ]4546\endexample4748(See Section~"The KnownACEOptions Record".) Also, from within a {\GAP}49session, you may use {\GAP}'s help browser (see Chapter~"ref:The Help50System" in the {\GAP} Reference Manual); to find out about any51particular {\ACE} option, simply type: ```?option <option>''', where52<option> is one of the options listed above without any quotes, e.g.5354\begintt55gap> ?option echo56\endtt5758will display the section in this manual that describes the `echo'59option.6061We begin this chapter with several sections discussing the nature of62the options provided. Please spend some time reading these sections.63To continue onto the next section on-line using {\GAP}'s help browser,64type:6566\begintt67gap> ?>68\endtt6970%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%71\Section{Passing ACE Options}7273Options are passed to the {\ACE} interface functions in either of the74two usual mechanisms provided by {\GAP}, namely:7576\beginlist%unordered7778\item{--} options may be set globally using the function `PushOptions'79(see Chapter~"ref:Options Stack" in the {\GAP} Reference Manual); or8081\item{--} options may be appended to the argument list of any function82call, separated by a colon from the argument list (see "ref:Function83Calls" in the {\GAP} Reference Manual), in which case they are then84passed on recursively to any subsequent inner function call, which may85in turn have options of their own.8687\endlist8889In general, if {\ACE} is to be used interactively one should avoid90using the global method of passing options. In fact, it is recommended91that prior to calling `ACEStart' the `OptionsStack' be empty.9293%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%94\Section{Warnings regarding Options}9596As mentioned above, one can set options globally using the function97`PushOptions' (see Chapter~"ref:Options Stack" in the {\GAP} Reference98Manual); however, options pushed onto `OptionsStack', in this way,99remain there until an explicit `PopOptions()' call is made. In100contrast, options passed in the usual way behind a colon following a101function's arguments (see "ref:Function Calls" in the {\GAP} Reference102Manual) are local, and disappear from `OptionsStack' after the103function has executed successfully; nevertheless, a function, that is104passed options this way, will also see any global options or any105options passed down recursively from functions calling that function,106unless those options are over-ridden by options passed via the107function. Also note that duplication of option names for different108programs may lead to misinterpretations. Since a non-empty109`OptionsStack' is potentially a mine-field for the unwary user, the110function `ResetOptionsStack' (see~"ref:ResetOptionsStack" in the111Reference Manual) is now in the {\GAP} library and112113\>FlushOptionsStack() F114115introduced in version 3.001 of the {\ACE} Package to perform the same116function, is now a synonym for `ResetOptionsStack'; it simply executes117`PopOptions()' until `OptionsStack' is empty.118119However, `ResetOptionsStack' (or `FlushOptionsStack') does not wipe120out the options already passed to an *interactive* {\ACE} process. We121have provided `GetACEOptions' (see~"GetACEOptions") to keep track of122options that the {\ACE} binary process still considers active, which123may or may not be still on the `OptionsStack'. There is the124interactive `SetACEOptions' (see~"SetACEOptions") to change such125options, or, of course, you can always elect to use `ACEQuit'126(see~"ACEQuit") and then start a new interactive {\ACE} process.127128Finally, if `ACEIgnoreUnknownDefault := false'129(see~"ACEIgnoreUnknownDefault"), there will be situations where an130{\ACE} interface function needs to be told explicitly to ignore131options passed down recursively to it from calling functions. For this132purpose we have provided the options `aceignore' (see~"option133aceignore") and `aceignoreunknown' (see~"option aceignoreunknown").134135%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%136\Section{Abbreviations and mixed case for ACE Options}137138Except for limitations imposed by {\GAP} e.g.\ clashes with {\GAP}139keywords and blank spaces not allowed in keywords, the options of the140{\ACE} interface are the same as for the binary; so, for example, the141options can appear in upper or lower case (or indeed, mixed case) and142most may be abbreviated. Below we only list the options in all lower143case, and in their longest form; where abbreviation is possible we144give the shortest abbreviation in the option's description e.g.~for145the `mendelsohn' option we state that its shortest abbreviation is146`mend', which means `mende', `mendel' etc., and indeed, `Mend' and147`MeND', are all valid abbreviations of that option. Some options have148synonyms e.g.~`cfactor' is an alternative for `ct'.149150The complete list of {\ACE} options known to the {\ACE} interface151functions, their abbreviations and the values that they are known to152take may be gleaned from the `KnownACEOptions' record (see153Section~"The KnownACEOptions Record").154155Options for each of the {\ACE} interface functions156`ACECosetTableFromGensAndRels', `ACECosetTable', `ACEStats' and157`ACEStart' (see Chapter~"Functions for Using ACE Interactively"),158comprise the few non-{\ACE}-binary options (`silent', `aceinfile',159`aceoutfile', `aceignore', `aceignoreunknown', `acenowarnings',160`aceincomment', `aceecho' and `echo') discussed in161Section "Non-ACE-binary Options", (almost) all single-word {\ACE}162binary options and `purer' and `purec'. The options `purer' and163`purec' give the {\ACE} binary options `pure r' and `pure c',164respectively; (they are the only multiple-word {\ACE} binary options165that do not have a single word alternative). The *only* single-word166{\ACE} binary options that are *not* available via the {\ACE}167interface are abbreviations that clash with {\GAP} keywords (e.g.~`fi'168for `fill', `rec' for `recover' and `continu' for `continue'). The169detail of this paragraph is probably of little importance to the170{\GAP} user; these comments have been included for the user who wishes171to reconcile the respective functionalities of the {\ACE} interface172and the {\ACE} standalone, and are probably of most value to173standalone users.174175%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%176\Section{Honouring of the order in which ACE Options are passed}177178*Note:* Below we describe the intended behaviour, but unfortunately,179since {\GAP} 4.5 (approximately when {\ACE} 5.1 was released) the180order of options behind the colon is no longer honoured. Until this181is fixed, if the order of {\ACE} options needs to be respected, users182should use {\ACE} interactively (see~"ACEStart").183184It is important to realize that {\ACE}'s options (even the185non-strategy options) are not orthogonal, i.e.\ the order in which186they are put to {\ACE} can be important. For this reason, except for a187few options that have no effect on the course of an enumeration, the188order in which options are passed to the {\ACE} interface is preserved189when those same options are passed to the {\ACE} binary. One of the190reasons for the non-orthogonality of options is to protect the user191from obtaining invalid enumerations from bad combinations of options;192another reason is that commonly one may specify a strategy option and193override some of that strategy's defaults; the general rule is that194the later option prevails. By the way, it's not illegal to select more195than one strategy, but it's not sensible; as just mentioned, the later196one prevails.197198%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%199\Section{What happens if no ACE Strategy Option or if no ACE Option is passed}200201If an {\ACE} interface function (`ACECosetTableFromGensAndRels',202`ACEStats', `ACECosetTable' or `ACEStart') is given no strategy203option, the `default' strategy (see Chapter~"Strategy Options for204ACE") is selected, and a number of options that {\ACE} needs to have a205value for are given default values, *prior* to the execution of any206user options, if any. This ensures that {\ACE} has a value for all its207``run parameters''; three of these are defined from the {\ACE}208interface function arguments; and the remaining ``run parameters'', we209denote by ``{\ACE} Parameter Options''. For user convenience, we have210provided the `ACEParameterOptions' record (see~"ACEParameterOptions"),211the fields of which are the ``{\ACE} Parameter Options''. The value of212each field (option) of the `ACEParameterOptions' record is either a213default value or (in the case of an option that is set by a strategy)214a record of default values that {\ACE} assumes when the user does not215define a value for the option (either indirectly by selecting a216strategy option or directly).217218If the `default' strategy does not suffice, most usually a user will219select one of the other strategies from among the ones listed in220Chapter~"Strategy Options for ACE", and possibly modify some of the221options by selecting from the options in this chapter. It's not222illegal to select more than one strategy, but it's not sensible; as223mentioned above, the later one prevails.224225%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%226\Section{Interpretation of ACE Options}227228Options may be given a value by an assignment to the name (such as229`time := <val>'); or be passed without assigning a value, in which230case {\GAP} treats the option as *boolean* and sets the option to the231value `true', which is then interpreted by the {\ACE} interface232functions. Technically speaking the {\ACE} binary itself does not have233boolean options, though it does have some options which are declared234by passing without a value (e.g. the `hard' strategy option) and235others that are boolean in the C-sense (taking on just the values 0 or2361). The behaviour of the {\ACE} interface functions237(`ACECosetTableFromGensAndRels', `ACEStats', `ACECosetTable' or238`ACEStart') is essentially to restore as much as is possible a239behaviour that mimics the {\ACE} standalone; a `false' value is always240translated to 0 and `true' may be translated to any of no-value, 0 or2411. Any option passed with an assigned value <val> other than `false'242or `true' is passed with the value <val> to the {\ACE} binary. Since243this may appear confusing, let's consider some examples.244245\beginlist%unordered246247\item{--} The `hard' strategy option (see~"option hard") should be248passed without a value, which in turn is passed to the {\ACE} binary249without a value. However, the {\ACE} interface function cannot250distinguish the option `hard' being passed without a value, from it251being passed via `hard := true'. Passing `hard := false' or `hard :=252<val>' for any non-`true' <val> will however produce a warning message253(unless the option `acenowarnings' is passed) that the value 0 (for254`false') or <val> is unknown for that option. Nevertheless, despite255the warning, in this event, the {\ACE} interface function passes the256value to the {\ACE} binary. When the {\ACE} binary sees a line that it257doesn't understand it prints a warning and simply ignores it. (So258passing `hard := false' will produce warnings, but will have no ill259effects.) The reason we still pass *unknown* values to the {\ACE}260binary is that it's conceivable a future version of the {\ACE} binary261might have several `hard' strategies, in which case the {\ACE}262interface function will still complain (until it's made aware of the263new possible values) but it will perform in the correct manner if a264value expected by the {\ACE} binary is passed.265266\item{--} The `felsch' strategy option (see~"option felsch") may be267passed without a value (which chooses the *felsch 0* strategy) or with268the values 0 or 1. Despite the fact that {\GAP} sees this option as269*boolean*; it is *not*. There are two Felsch strategies: *felsch 0*270and *felsch 1*. To get the *felsch 1* strategy, the user must pass271`felsch := 1'. If the user were to pass `felsch := false' the result272would be the *felsch 0* strategy (since `false' is always translated273to 0), i.e.~the same as how `felsch := true' would be interpreted. We274could protect the user more from such ideosyncrasies, but we have275erred on the side of simplicity in order to make the interface less276vulnerable to upgrades of the {\ACE} binary.277278\endlist279280The lesson from the two examples is: *check the documentation for an281option to see how it will be interpreted*. In general, options282documented (in this chapter) as *only* being no-value options can be283safely thought of as boolean (i.e.~you will get what you expect by284assigning `true' or `false'), whereas strategy (no-value) options285should *not* be thought of as boolean (a `false' assignment will *not*286give you what you might have expected).287288Options that are unknown to the {\ACE} interface functions and not289ignored (see below), that are passed without a value, are *always*290passed to the {\ACE} binary as no-value options (except when the291options are ignored); the user can over-ride this behaviour simply by292assigning the intended value. Note that it is perfectly safe to allow293the {\ACE} binary to be passed unknown options, since {\ACE} simply294ignores options it doesn't understand, issues an error message (which295is just a warning and is output by {\GAP} unless `acenowarnings' (see296"option acenowarnings") is passed) and continues on with any other297options passed in exactly the way it would have if the ``unknown''298options had not been passed.299300An option is ignored if it is unknown to the {\ACE} interface301functions and one of the following is true:302303\beginlist%unordered304\item{--} the global variable `ACEIgnoreUnknownDefault' is set to305`false' (see~"ACEIgnoreUnknownDefault") or,306307\item{--} the `aceignoreunknown' option (see~"option aceignoreunknown")308is passed, or309310\item{--} the `aceignore' option is passed and the option is an311element of the list value of `aceignore' (see~"option aceignore").312313\endlist314315\index{debugging}316\indextt{ACEIgnoreUnknownDefault!use as debugging tool}317It is actually *recommended* that the user set318`ACEIgnoreUnknownDefault' to `false', since this will allow the user319to see when {\ACE} functions have been passed options that are320``unknown'' to the {\ACE} package. In this way the user will be321informed about misspelt options, for example. So it's a good debugging322tool. Also, if the {\ACE} binary is updated with a version with new323options then these will not be known by the package (the {\GAP} part)324and it will be necessary to set `ACEIgnoreUnknownDefault' to `false'325in order for the new options to be passed to the binary. When an326{\ACE} function is invoked indirectly by some function that was called327with non-{\ACE} options the warning messages may begin to be annoying,328and it's then a simple matter to set `ACEIgnoreUnknownDefault' back to329the {\ACE} 3.003 default value of `true'.330331Warning messages regarding unknown options are printed unless the332`acenowarnings' (see "option acenowarnings") is passed or the option333is ignored.334335To see how options are interpreted by an {\ACE} interface function,336pass the `echo' option.337338As mentioned above, any option that the {\ACE} binary doesn't339understand is simply ignored and a warning appears in the output from340{\ACE}. If this occurs, you may wish to check the input fed to {\ACE}341and the output from {\ACE}, which when {\ACE} is run non-interactively342are stored in files whose full path names are recorded in the record343fields `ACEData.infile' and `ACEData.outfile', respectively.344Alternatively, both interactively and non-interactively one can set345the `InfoLevel' of `InfoACE' to 3 (see~"SetInfoACELevel"), to see the346output from {\ACE}, or to 4 to also see the commands directed to347{\ACE}.348349%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%350\Section{An Example of passing Options}351352Continuing with the example of Section~"Using ACE Directly to Generate353a Coset Table", one could set the `echo' option to be true, use the354`hard' strategy option, increase the workspace to $10^7$ words and355turn messaging on (but to be fairly infrequent) by setting `messages'356to a large positive value as follows:357358\begintt359gap> ACECosetTable(fgens, rels, [c]360> : echo, hard, Wo := 10^7, mess := 10000);;361\endtt362363As mentioned in the previous section, `echo' may be thought of as a364boolean option, whereas `hard' is a strategy option (and hence should365be thought of as a no-value option). Also, observe that two options366have been abbreviated: `Wo' is a mixed case abbreviation of367`workspace', and `mess' is an abbreviation of `messages'.368369%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%370\Section{The KnownACEOptions Record}371372\>`KnownACEOptions' V373374is a {\GAP} record whose fields are the {\ACE} options known to the375{\ACE} interface; each field (known {\ACE} option) is assigned to a376list of the form `[<i>, <ListOrFunction>]', where `<i>' is an integer377representing the length of the shortest abbreviation of the option and378`<ListOrFunction>' is either a list of (known) allowed values or a379boolean function that may be used to determine if the given value is a380(known) valid value e.g.381382\beginexample383gap> KnownACEOptions.compaction;384[ 3, [ 0 .. 100 ] ]385386\endexample387388indicates that the option `compaction' may be abbreviated to `com'389and the (known) valid values are in the (integer) range 0 to 100; and390391\beginexample392gap> KnownACEOptions.ct;393[ 2, <Category "IsInt"> ]394395\endexample396397indicates that there is essentially no abbreviation of `ct' (since its398shortest abbreviation is of length 2), and a value of `ct' is known399to be valid if `IsInt' returns true for that value.400401For user convenience, we provide the function402403\>ACEOptionData( <optname> ) F404405which for a string <optname> representing an {\ACE} option (or a guess406of one) returns a record with the following fields:407408\beginitems409410\quad`name' & <optname> (unchanged);411412\quad`known' & `true' if <optname> is a valid mixed case abbreviation413of a known {\ACE} option, and false otherwise;414415\quad`fullname'& the lower case unabbreviated form of <optname> if the416`known' field is set `true', or <optname> in all lower case,417otherwise;418419\quad`synonyms'& a list of known {\ACE} options synonymous with420<optname>, in lowercase unabbreviated form, if the `known' field is421set `true', or a list containing just <optname> in all lower case,422otherwise;423424\quad`abbrev' & the shortest lowercase abbreviation of <optname> if425the `known' field is set `true', or <optname> in all lower case,426otherwise.427428\enditems429430For more on synonyms of {\ACE} options, see~"ACEOptionSynonyms".431432The function `ACEOptionData' provides the user with all the query433facility she should ever need; nevertheless, we provide the following434functions.435436\>IsKnownACEOption( <optname> ) F437438returns `true' if <optname> is a mixed case abbreviation of a field of439`KnownACEOptions', or `false' otherwise.440`IsKnownACEOption(<optname>);' is equivalent to441442\)\kernttindent{ACEOptionData(<optname>).known;}443444\>ACEPreferredOptionName( <optname> ) F445446returns the lowercase unabbreviated first alternative of <optname> if447it is a known {\ACE} option, or <optname> in lowercase, otherwise.448`ACEPreferredOptionName(<optname>);' is equivalent to449450\)\kernttindent{ACEOptionData(<optname>).synonyms[1];}451452\>IsACEParameterOption( <optname> ) F453454returns true if <optname> is an ``{\ACE} parameter option''. ({\ACE}455Parameter Options are described in Section~"ACEParameterOptions").456`IsACEParameterOption(<optname>);' is equivalent to457458\)\kernttindent{ACEPreferredOptionName(<optname>) in RecNames(ACEParameterOptions);}459460\>IsACEStrategyOption( <optname> ) F461462returns true if <optname> is an ``{\ACE} strategy option'' (see463Section~"The ACEStrategyOptions list").464`IsACEStrategyOption(<optname>);' is equivalent to465466\)\kernttindent{ACEPreferredOptionName(<optname>) in ACEStrategyOptions;}467468%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%469\Section{The ACEStrategyOptions List}470471\>`ACEStrategyOptions' V472473is a {\GAP} list that contains the strategy options known to the474{\ACE} interface functions:475476\beginexample477gap> ACEStrategyOptions;478[ "default", "easy", "felsch", "hard", "hlt", "purec", "purer", "sims" ]479480\endexample481482See Chapter~"Strategy Options for ACE" for details regarding the483{\ACE} strategy options.484485%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%486\Section{ACE Option Synonyms}\nolabel487488\>`ACEOptionSynonyms' V489490is a {\GAP} record. A number of known {\ACE} options have synonyms.491The fields of the `ACEOptionSynonyms' record are the ``preferred''492option names and the values assigned to the fields are the lists of493synonyms of those option names. What makes an option name494``preferred'' is somewhat arbitrary (in most cases, it is simply the495shortest of a list of synonyms). For a ``preferred'' option name496<optname> that has synonyms, the complete list of synonyms may be497obtained by concatenating `[ <optname> ]' and498`ACEOptionSynonyms.(<optname>)', e.g.499500\beginexample501gap> Concatenation( [ "messages" ], ACEOptionSynonyms.("messages") );502[ "messages", "monitor" ]503504\endexample505506More generally, for an arbitrary option name <optname> its list of507synonyms (which may be a list of one element) may be obtained as the508`synonyms' field of the record returned by `ACEOptionData(<optname>)'509(see~"ACEOptionData").510511%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%512\Section{Non-ACE-binary Options}513514\>`NonACEbinOptions' V515516is a {\GAP} list of options that have meaning only for the {\ACE}517Package interface, i.e.~options in `KnownACEOptions' that are *not*518{\ACE} binary options; each such option is described in detail below.519*Except* for the options listed in `NonACEbinOptions' and those520options that are excluded via the `aceignore' and `aceignoreunknown'521options (described below), *all* options that are on the522`OptionsStack' when an {\ACE} interface function is called, are passed523to the {\ACE} binary. Even options that produce the warning message:524```unknown (maybe new) or bad''', by virtue of not being a field of525`KnownACEOptions', are passed to the {\ACE} binary (except that the526options `purer' and `purec' are first translated to `pure r' and `pure527c', respectively). When the {\ACE} binary encounters an option that it528doesn't understand it issues a warning and simply ignores it; so529options accidentally passed to {\ACE} are unlikely to pose problems.530531We also mention here, since it is related to an option of this532section, the following.533534\>`ACEIgnoreUnknownDefault' V535536is a global variable (*not* an option) that is initially set by the537{\ACE} package to `true', and is the default action that {\ACE} takes538for options that are unknown to the {\ACE} package (but may be new539options provided in a new version of the {\ACE} binary). Despite the540fact that it is normally set `true', it is recommended (especially for541the novice user of the {\ACE} package) to set `ACEIgnoreUnknownDefault542:= false'; the worst that can happen is being annoyed by a profusion543of warnings of unknown options. For individual functions, the user may544use the option `aceignoreunknown' (see~"option aceignoreunknown") to545over-ride the setting of `ACEIgnoreUnknownDefault'.546547Here now, are the few options that are available to the {\GAP}548interface to {\ACE} that have no counterpart in the {\ACE} standalone:549550\beginitems551552\>`silent'{option silent}@{option `silent'}&553Inhibits an `Error' return when generating a coset table.554555If a coset enumeration that invokes `ACECosetTableFromGensAndRels'556does not finish within the preset limits, an error is raised by the557interface to {\GAP}, unless the option `silent' or `incomplete'558(see~"option incomplete") has been set; in the former case, `fail' is559returned. This option is included to make the behaviour of560`ACECosetTableFromGensAndRels' compatible with that of the function561`CosetTableFromGensAndRels' it replaces. If the option `incomplete' is562also set, it overrides option `silent'.563564\>`lenlex'{option lenlex}@{option `lenlex'}&565Ensures that `ACECosetTable' and `ACECosetTableFromGensAndRels' output566a coset table that is `lenlex' standardised.567568The `lenlex' scheme, numbers cosets in such a way that their569``preferred'' (coset) representatives, in an alphabet consisting of570the user-submitted generators and their inverses, are ordered first571according to `length' and then according to a `lexical' ordering. In572order to describe what the `lenlex' scheme's `lexical' ordering is,573let us consider an example. Suppose the generators submitted by the574user are, in user-supplied order, `[x, y, a, b]', and represent the575inverses of these generators by the corresponding uppercase letters:576`[X, Y, A, B]', then the `lexical' ordering of `lenlex' is that577derived from defining `x \< X \< y \< Y \< a \< A \< b \< B'.578579*Notes:*580In some circumstances, {\ACE} prefers to swap the first two581generators; such cases are detected by the function582`IsACEGeneratorsInPreferredOrder' (see583"IsACEGeneratorsInPreferredOrder"). In such cases, special action is584taken to avoid {\ACE} swapping the first two generators; this action585is described in the notes for `ACEStandardCosetNumbering'586(see~"ACEStandardCosetNumbering"). When this special action is587invoked, a side-effect is that any setting of the `asis' (see~"option588asis") option by the user is ignored.589590The `lenlex' standardisation scheme is the default coset table591standardisation scheme of {\GAP} (since version 4.3). However,592`semilenlex' was the standardisation scheme for versions of {\GAP} up593to {\GAP}~4.2. Both schemes are described in detail in Section~"Coset594Table Standardisation Schemes".595596\>`semilenlex'{option semilenlex}@{option `semilenlex'}&597Ensures that `ACECosetTable' and `ACECosetTableFromGensAndRels' output598a coset table that is `semilenlex' standardised.599600The `semilenlex' scheme, numbers cosets in such a way that their601``preferred'' (coset) representatives, in an alphabet consisting of602only the user-submitted generators, are ordered first according to603`length' and then according to a `lexical' ordering.604605*Note:*606Up to {\GAP}~4.2, `semilenlex' was the default standardisation scheme607used by {\GAP} (see also~"option lenlex").608609\>`incomplete'{option incomplete}@{option `incomplete'}&610Allows the return of an `incomplete' coset table, when a coset611enumeration does not finish within preset limits.612613If a coset enumeration that invokes `ACECosetTableFromGensAndRels' or614`ACECosetTable' does not finish within the preset limits, an error is615raised by the interface to {\GAP}, unless the option `silent'616(see~"option silent") or `incomplete' has been set; in the latter617case, a partial coset table, that is a valid {\GAP} list of lists, is618returned. Each position of the table without a valid coset number619entry is filled with a zero. If the option `silent' is also set,620`incomplete' prevails. Since {\GAP}~4.3, an incomplete table is621returned reduced (i.e.~with insignificant coset numbers --- those622appearing only in their place of definition --- removed) and `lenlex'623standardised (regardless of whether the `semilenlex' option is in624force). (For GAP~4.2, an incomplete table was returned unstandardised625unless the `lenlex' option (see~"option lenlex") was also set, and the626table was also not reduced.) When an incomplete table is returned, a627warning is emitted at `InfoACE' or `InfoWarning' level 1.628629\>`aceinfile:=<filename>'{option aceinfile}@{option `aceinfile'}&630Creates an {\ACE} input file <filename> for use with the standalone631only; <filename> should be a string. (Shortest abbreviation: `acein'.)632633This option is only relevant to `ACECosetTableFromGensAndRels' and is634ignored if included as an option for invocations of `ACEStats' and635`ACEStart'. If this option is used, {\GAP} creates an input file with636filename <filename> only, and then exits (i.e.~the {\ACE} binary is637not called). This option is provided for users who wish to work638directly with the {\ACE} standalone. The full path to the input file639normally used by {\ACE} (i.e.~when option `aceinfile' is not used) is640stored in `ACEData.infile'.641642643\>`aceoutfile:=<filename>'{option aceoutfile}@{option `aceoutfile'}&644Redirects {\ACE} output to file <filename>; <filename> should be a645string. (Shortest abbreviation: `aceo'.)646647This is actually a synonym for the `ao' option. Please refer648to~"option ao", for further discussion of this option.649650\>`aceignore:=<optionList>'{option aceignore}@{option `aceignore'}&651Directs an {\ACE} function to ignore the options in <optionList>;652<optionList> should be a list of strings.653(Shortest abbreviation: `aceig'.)654655If a function called with its own options, in turn calls an {\ACE}656function for which those options are not intended, the {\ACE} function657will pass those options to the {\ACE} binary. If those options are658unknown to the {\ACE} interface (and `ACEIgnoreUnknownDefault :=659false' and `aceignoreunknown' is not passed;660see~"ACEIgnoreUnknownDefault" and~"option aceignoreunknown") a warning661is issued. Options that are unknown to the {\ACE} binary are simply662ignored by {\ACE} (and a warning that the option was ignored appears663in the {\ACE} output, which the user will not see unless the664`InfoLevel' of `InfoACE' or `InfoWarning' is set to 1). This option665enables the user to avoid such options being passed at all, thus666avoiding the warning messages and also any options that coincidentally667are {\ACE} options but are not intended for the {\ACE} function being668called.669670\>`aceignoreunknown'{option aceignoreunknown}@{option `aceignoreunknown'}&671Directs an {\ACE} function to ignore any options not known to the672{\ACE} interface.673(Shortest abbreviation: `aceignoreu'.)674675This option is provided for similar reasons to `aceignore'. Normally,676it is safe to include it, to avoid aberrant warning messages from the677{\ACE} interface. However, fairly obviously, it should not be passed678without a value (or set to `true') in the situation where a new {\ACE}679binary has been installed with new options that are not listed among680the fields of `KnownACEOptions', which you intend to use. Omitting the681`aceignoreunknown' option is equivalent to setting it to the value of682`ACEIgnoreUnknownDefault' (see "ACEIgnoreUnknownDefault"); i.e.~it is683superfluous if `ACEIgnoreUnknownDefault := true' unless684`aceignoreunknown' is set to `false'.685686\>`acenowarnings'{option acenowarnings}@{option `acenowarnings'}&687Inhibits the warning message ```unknown (maybe new) or bad option'''688for options not listed in `KnownACEOptions'.689(Shortest abbreviation: `acenow'.)690691This option suppresses the warning messages for unknown options (to692the {\ACE} interface), but unlike `aceignore' and `aceignoreunknown'693still allows them to be passed to the {\ACE} binary.694695\>`echo'{option echo}@{option `echo'}696\>`echo:=2'{option echo}@{option `echo'}&697Echoes arguments and options (and indicates how options were handled).698699Unlike the previous options of this section, there *is* an {\ACE}700binary option `echo'. However, the `echo' option is handled by the701{\ACE} interface and is not passed to the {\ACE} binary. (If you wish702to put `echo' in a standalone script use the `aceecho' option703following.) If `echo' is passed with the value 2 then a list of the704options (together with their values) that are set via {\ACE} defaults705are also echoed to the screen.706707\>`aceecho'{option aceecho}@{option `aceecho'}&708The {\ACE} binary's `echo' command.709710This option is only included so that a user *can* put an `echo'711statement in an {\ACE} standalone script. Otherwise, use `echo'712(above).713714\>`aceincomment:=<string>'{option aceincomment}@{option `aceincomment'}&715Print comment <string> in the {\ACE} input; <string> must be a string.716(Shortest abbreviation: `aceinc'.)717718This option prints the comment <string> behind a sharp sign (`\#') in719the input to {\ACE}. Only useful for adding comments (that {\ACE}720ignores) to standalone input files.721722\>`aceexampleoptions'{option aceexampleoptions}@{option `aceexampleoptions'}&723An *internal* option for `ACEExample'.724725This option is passed *internally* by `ACEExample' to the {\ACE}726interface function it calls, when one invokes `ACEExample' with727options. Its purpose is to provide a mechanism for the over-riding of728an example's options by the user. The option name is deliberately long729and has no abbreviation to discourage user use.730731\enditems732733%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%734\Section{ACE Parameter Options}\nolabel735736\>`ACEParameterOptions' V737738is a {\GAP} record, whose fields are the ``{\ACE} Parameter Options''.739The ``{\ACE} Parameter Options'' are options which, if not supplied a740value by the user, are supplied a default value by {\ACE}. In fact,741the ``{\ACE} Parameter Options'' are those options that appear (along742with `Group Generators', `Group Relators' and `Subgroup Generators',743which are defined from {\ACE} interface function arguments) in the744``Run Parameters'' block of {\ACE} output, when, for example, the745`messages' option is non-zero.746747For each field ({\ACE} parameter option) of the `ACEParameterOptions'748record, the value assigned is the default value (or a record of749default values) that are supplied by {\ACE} when the option is not750given a value by the user (either indirectly by selecting a strategy751option or directly).752753In the cases where the value of a field of the `ACEParameterOptions'754record is itself a record, the fields of that record are `default' and755strategies for which the value assigned by that strategy differs from756the `default' strategy. A ``strategy'', here, is the strategy option757itself, if it is only a no-value option, or the strategy option758concatenated with any of its integer values (as strings), otherwise759(e.g.~`felsch0' and `sims9' are strategies, and `hlt' is both a760strategy and a strategy option). As an exercise, the reader might like761to try to reproduce the table at the beginning of Chapter~"Strategy762Options for ACE" using the `ACEParameterOptions' record. (Hint: you763first need to select those fields of the `ACEParameterOptions' record764whose values are records with at least two fields.)765766*Note:*767Where an ``{\ACE} Parameter Option'' has synonyms, only the768``preferred'' option name (see~"ACEOptionSynonyms") appears as a field769of `ACEParameterOptions'. The complete list of ``{\ACE} Parameter770Options'' may be obtained by771772\beginexample773gap> Concatenation( List(RecNames(ACEParameterOptions),774> optname -> ACEOptionData(optname).synonyms) );775[ "path", "subgroup", "max", "time", "fill", "ffactor", "asis", "ct",776"cfactor", "compaction", "dmode", "dsize", "enumeration", "hole",777"lookahead", "loop", "mendelsohn", "messages", "monitor", "no", "pmode",778"psize", "rt", "rfactor", "row", "workspace" ]779780\endexample781782We describe the ``{\ACE} Parameter Options'' in the Sections~"General783ACE Parameter Options that Modify the Enumeration Process", "ACE784Parameter Options Modifying C Style Definitions", "ACE Parameter785Options for R Style Definitions", "ACE Parameter Options for Deduction786Handling", "Technical ACE Parameter Options", "ACE Parameter Options787controlling ACE Output", and~"ACE Parameter Options that give Names to788the Group and Subgroup", following.789790%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%791\Section{General ACE Parameter Options that Modify the Enumeration Process}792793\beginitems794795\>`asis'{option asis}@{option `asis'}&796Do not reduce relators. (Shortest abbreviation: `as'.)797798By default, {\ACE} freely and cyclically reduces the relators, freely799reduces the subgroup generators, and sorts relators and subgroup800generators in length-increasing order. If you do not want this, you801can switch it off by setting the `asis' option.802803*Notes:* As well as allowing you to use the presentation *as* it *is*804given, this is useful for forcing definitions to be made in a805prespecified order, by introducing dummy (i.e., freely trivial)806subgroup generators. (Note that the exact form of the presentation807can have a significant impact on the enumeration statistics.) For808some fine points of the influence of `asis' being set on the treatment809of involutory generators see the {\ACE} standalone manual.810811\>`ct:=<val>'{option ct}@{option `ct'}812\>`cfactor:=<val>'{option cfactor}@{option `cfactor'}&813Number of C style definitions per pass; `<val>' should be an integer.814(Shortest abbreviation of `cfactor' is `c'.)815816The absolute value of `<val>' sets the number of C style definitions817per pass through the enumerator's main loop. The sign of `<val>' sets818the style. The possible combinations of the values of `ct' and `rt'819(described below) are given in the table of enumeration styles in820Section~"Enumeration Style".821822\>`rt:=<val>'{option rt}@{option `rt'}823\>`rfactor:=<val>'{option rfactor}@{option `rfactor'}&824Number of R style definitions per pass; `<val>' should be an integer.825(Shortest abbreviation of `rfactor' is `r'.)826827The absolute value of `<val>' sets the number of R style definitions828per pass through the enumerator's main loop. The sign of `<val>' sets829the style. The possible combinations of the values of `ct' (described830above) and `rt' are given in the table of enumeration styles in831Section~"Enumeration Style".832833\>`no:=<val>'{option no}@{option `no'}&834The number of group relators to include in the subgroup;835`<val>' should be an integer greater than or equal to $-1$.836837It is sometimes helpful to include the group relators into the list of838the subgroup generators, in the sense that they are applied to coset839number 1 at the start of an enumeration. A value of 0 for this option840turns this feature off and the (default) argument of $-1$ includes all841the relators. A positive argument includes the specified number of842relators, in order. The `no' option affects only the C style843procedures.844845\>`mendelsohn'{option mendelsohn}@{option `mendelsohn'}&846Turns on mendelsohn processing. (Shortest abbreviation: `mend'.)847848Mendelsohn style processing during relator scanning/closing is turned849on by giving this option. Off is the default, and here relators are850scanned only from the start (and end) of a relator. Mendelsohn ``on''851means that all (different) cyclic permutations of a relator are852scanned.853854The effect of Mendelsohn style processing is case-specific. It can855mean the difference between success or failure, or it can impact the856number of coset numbers required, or it can have no effect on an857enumeration's statistics.858859*Note:* Processing all cyclic permutations of the relators can be very860time-consuming, especially if the presentation is large. So, all861other things being equal, the Mendelsohn flag should normally be left862off.863864\enditems865866%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%867\Section{ACE Parameter Options Modifying C Style Definitions}868869\atindex{C style}{@C style!definition}870The next three options are relevant only for making *C style871definitions* (see Section~"Enumeration Style"). Making definitions in872C style, that is filling the coset table line by line, it can be very873advantageous to switch to making definitions from the preferred874definition stack. Possible definitions can be extracted from this875stack in various ways and the two options `pmode' and `psize'876(see~"option pmode" and~"option psize" respectively) regulate this.877However it should be clearly understood that making all definitions878from a preferred definition stack one may violate the condition of879Mendelsohn's theorem, and the option `fill' (see~"option fill") can be880used to avoid this.881882\beginitems883884\>`fill:=<val>'{option fill}@{option `fill'}885\>`ffactor:=<val>'{option ffactor}@{option `ffactor'}&886Controls the preferred definition strategy by setting the fill factor;887`<val>' must be a non-negative integer.888(Shortest abbreviation of `fill' is `fil', and shortest abbreviation889of `ffactor' is `f'.)890891Unless prevented by the fill factor, gaps of length one found during892deduction testing are preferentially filled (see \cite{Hav91}).893However, this potentially violates the formal requirement that all894rows in the coset table are eventually filled (and tested against the895relators). The fill factor is used to ensure that some constant896proportion of the coset table is always kept filled. Before defining a897coset number to fill a gap of length one, the enumerator checks898whether `fill' times the completed part of the table is at least the899total size of the table and, if not, fills coset table rows in900standard order (i.e.~C style; see Section~"Enumeration Style") instead901of filling gaps.902903An argument of 0 selects the default value of $\lfloor 5(n+2)/4904\rfloor$, where $n$ is the number of columns in the table. This905default fill factor allows a moderate amount of gap-filling. If906`fill' is 1, then there is no gap-filling. A large value of `fill'907can cause what is in effect infinite looping (resolved by the coset908enumeration failing). However, in general, a large value does work909well. The effects of the various gap-filling strategies vary widely.910It is not clear which values are good general defaults or, indeed,911whether any strategy is always ``not too bad''.912913This option is identified as `Fi' in the ``Run Parameters'' block914(obtained when `messages' is non-zero) of the {\ACE} output, since for915the {\ACE} binary, `fi' is an allowed abbreviation of `fill'. However,916`fi' is a {\GAP} keyword and so the shortest abbreviation of `fill'917allowed by the interface functions is `fil'.918919\>`pmode:=<val>'{option pmode}@{option `pmode'}&920Option for preferred definitions; `<val>' should be in the integer921range 0 to 3. (Shortest abbreviation: `pmod'.)922923The value of the `pmode' option determines which definitions are924preferred. If the argument is 0, then Felsch style definitions are925made using the next empty table slot. If the argument is non-zero,926then gaps of length one found during relator scans in Felsch style are927preferentially filled (subject to the value of `fill'). If the928argument is 1, they are filled immediately, and if it is 2, the929consequent deduction is also made immediately (of course, these are930also put on the deduction stack). If the argument is 3, then the gaps931of length one are noted in the preferred definition queue.932933Provided such a gap survives (and no coincidence occurs, which causes934the queue to be discarded) the next coset number will be defined to935fill the oldest gap of length one. The default value is either 0 or 3,936depending on the strategy selected (see Chapter~"Strategy Options for937ACE"). If you want to know more details, read the code.938939940\>`psize:=<val>'{option psize}@{option `psize'}&941Size of preferred definition queue; `<val>' *must* be 0 or $2^n$, for942some integer $n>0$. (Shortest abbreviation: `psiz'.)943944The preferred definition queue is implemented as a ring, dropping945earliest entries. An argument of 0 selects the default size of $256$.946Each queue slot takes two words (i.e., 8 bytes), and the queue can947store up to $2^n-1$ entries.948949\enditems950951%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%952\Section{ACE Parameter Options for R Style Definitions}953954\atindex{R style}{@R style!definition}955\beginitems956957\>`row:=<val>'{option row}@{option `row'}&958Set the ``row filling'' option; `<val>' is either 0 or 1.959960By default, ``row filling'' is on (i.e.~`true' or 1). To turn it off961set `row' to `false' or 0 (both are translated to 0 when passed to the962{\ACE} binary). When making HLT style (i.e.~R style; see963Section~"Enumeration Style") definitions, rows of the coset table are964scanned for holes after its coset number has been applied to all965relators, and definitions are made to fill any holes encountered. This966will, in particular, guarantee fulfilment of the condition of967Mendelsohn's Theorem. Failure to do so can cause even simple968enumerations to overflow.969970\>`lookahead:=<val>'{option lookahead}@{option `lookahead'}&971Lookahead; `<val>' should be in the integer range 0 to 4.972(Shortest abbreviation: `look'.)973974Although HLT style strategies are fast, they are local, in the sense975that the implications of any definitions/deductions made while976applying coset numbers may not become apparent until much later. One977way to alleviate this problem is to perform lookaheads occasionally;978that is, to test the information in the table, looking for deductions979or concidences. {\ACE} can perform a lookahead when the table980overflows, before the compaction routine is called. Lookahead can be981done using the entire table or only that part of the table above the982current coset number, and it can be done R style (scanning coset983numbers from the beginning of relators) or C style (testing all984definitions in all essentially different positions).985986The following are the effects of the possible values of `lookahead':987988\beginlist%unordered989990\item{--} 0 disables lookahead;991\item{--} 1 does a partial table lookahead, R style;992\item{--} 2 does a whole table lookahead, C style;993\item{--} 3 does a whole table lookahead, R style; and994\item{--} 4 does a partial table lookahead, C style.995996\endlist997998The default is 1 if the `hlt' strategy is used and 0 otherwise; see999Chapter~"Strategy Options for ACE".10001001Section~"Enumeration Style" describes the various enumeration styles,1002and, in particular, R style and C style.10031004\enditems10051006%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1007\Section{ACE Parameter Options for Deduction Handling}10081009\beginitems10101011\>`dmode:=<val>'{option dmode}@{option `dmode'}&1012Deduction mode; `<val>' should be in the integer range 0 to 4.1013(Shortest abbreviation: `dmod'.)10141015A completed table is only valid if every table entry has been tested1016in all essentially different positions in all relators. This testing1017can either be done directly (`felsch' strategy; see~"option felsch")1018or via relator scanning (`hlt' strategy; see~"option hlt"). If it is1019done directly, then more than one deduction (i.e., table entry) can be1020waiting to be processed at any one time. So the untested deductions1021are stored in a stack. Normally this stack is fairly small but, during1022a collapse, it can become very large.10231024This command allows the user to specify how deductions should be1025handled. The value <val> has the following interpretations:10261027\beginlist%unordered10281029\item{--} $0$:1030discard deductions if there is no stack space left;10311032\item{--} $1$:1033as for $0$, but purge any redundant coset numbers on the top of the1034stack at every coincidence;10351036\item{--} $2$:1037as for 0, but purge all redundant coset numbers from the stack at1038every coincidence;10391040\item{--} $3$:1041discard the entire stack if it overflows; and10421043\item{--} $4$:1044if the stack overflows, double the stack size and purge all redundant1045coset numbers from the stack.10461047\endlist10481049The default deduction mode is either $0$ or $4$, depending on the1050strategy selected (see Chapter~"Strategy Options for ACE"), and it is1051recommended that you stay with the default. If you want to know more1052details, read the well-commented C code.10531054*Notes:*1055If deductions are discarded for any reason, then a final relator check1056phase will be run automatically at the end of the enumeration, if1057necessary, to check the result.10581059\>`dsize:=<val>'{option dsize}@{option `dsize'}&1060Deduction stack size; `<val>' should be a non-negative integer.1061(Shortest abbreviation: `dsiz'.)10621063Sets the size of the (initial) allocation for the deduction stack.1064The size is in terms of the number of deductions, with one deduction1065taking two words (i.e., 8 bytes). The default size, of $1000$, can be1066selected by a value of 0. See the `dmode' entry for a (brief)1067discussion of deduction handling.10681069\enditems10701071%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1072\Section{Technical ACE Parameter Options}10731074The following options do not affect how the coset enumeration is done,1075but how it uses the computer's resources. They might thus affect the1076runtime as well as the range of problems that can be tackled on a1077given machine.10781079\beginitems10801081\>`workspace:=<val>'{option workspace}@{option `workspace'}&1082Workspace size in words (default $10^6$);1083`<val>' should be an expression that evaluates to a positive integer,1084or a string of digits ending in a `k', `M' or `G' representing a1085multiplication factor of $10^3$, $10^6$ or $10^9$, respectively1086e.g.~both `workspace := 2 * 10^6' and `workspace := "2M"' specify a1087workspace of $2\times10^6$ words. Actually, if the value of1088`workspace' is entered as a string, each of `k', `M' or `G' will be1089accepted in either upper or lower case. (Shortest abbreviation: `wo'.)10901091By default, {\ACE} has a physical table size of $10^6$ words (i.e., $41092\times 10^6$ bytes in the default 32-bit environment). The number of1093coset numbers in the table is the table size divided by the number of1094columns. Although the number of coset numbers is limited to1095$2^{31}-1$ (if the C `int' type is 32 bits), the table size can exceed1096the $4$GByte 32-bit limit if a suitable machine is used.10971098\>`time:=<val>'{option time}@{option `time'}&1099Maximum execution time in seconds; `<val>' must be an integer greater1100than or equal to $-1$. (Shortest abbreviation: `ti'.)11011102The `time' command puts a time limit (in seconds) on the length of a1103run. The default is $-1$ which is no time limit. If the argument is1104$\ge0$ then the total elapsed time for this call is checked at the end1105of each pass through the enumerator's main loop, and if it's more than1106the limit the run is stopped and the current table returned.11071108Note that a limit of $0$ performs exactly one pass through the main1109loop, since $0 \ge 0$.11101111The time limit is approximate, in the sense that the enumerator may1112run for a longer, but never a shorter, time. So, if there is, e.g., a1113big collapse (so that the time round the loop becomes very long), then1114the run may run over the limit by a large amount.11151116*Notes:*1117The time limit is CPU-time, not wall-time. As in all timing under1118UNIX, the clock's granularity (usually $10$ milliseconds) and the1119system load can affect the timing; so the number of main loop1120iterations in a given time may vary.11211122\>`loop:=<val>'{option loop}@{option `loop'}&1123Loop limit; `<val>' should be a non-negative integer.11241125The core enumerator is organised as a state machine, with each step1126performing an ``action'' (i.e., lookahead, compaction) or a block of1127actions (i.e., $|`ct'|$ coset number definitions, $|`rt'|$ coset1128number applications). The number of passes through the main loop1129(i.e., steps) is counted, and the enumerator can make an early return1130when this count hits the value of `loop'. A value of $0$, the default,1131turns this feature off.11321133*Guru Notes:*1134You can do lots of really neat things using this feature, but you need1135some understanding of the internals of {\ACE} to get real benefit from1136it.11371138\>`path'{option path}@{option `path'}&1139Turns on path compression.11401141To correctly process multiple concidences, a union-find must be1142performed. If both path compression and weighted union are used, then1143this can be done in essentially linear time (see, e.g., \cite{CLR90}).1144Weighted union alone, in the worst-case, is worse than linear, but is1145subquadratic. In practice, path compression is expensive, since it1146involves many coset table accesses. So, by default, path compression1147is turned off; it can be turned on by `path'. It has no effect on the1148result, but may affect the running time and the internal statistics.11491150*Guru Notes:*1151The whole question of the best way to handle large coincidence forests1152is problematic. Formally, {\ACE} does not do a weighted union, since1153it is constrained to replace the higher-numbered of a coincident pair.1154In practice, this seems to amount to much the same thing! Turning1155path compression on cuts down the amount of data movement during1156coincidence processing at the expense of having to trace the paths and1157compress them. In general, it does not seem to be worthwhile.11581159\index{dead coset (number)}1160\>`compaction:=<val>'{option compaction}@{option `compaction'}&1161Percentage of dead coset numbers to trigger compaction;1162`<val>' should be an integer (percentage) in the integer range 0 to1163100. (Shortest abbreviation: `com'.)11641165\index{dead coset (number)}1166The option `compaction' sets the percentage of *dead* coset numbers1167needed to trigger compaction of the coset table, during an1168enumeration. A *dead* coset (number) is a coset number found to be1169coincident with a smaller coset number. The default is 10 or 100,1170depending on the strategy used (see Chapter~"Strategy Options for1171ACE").11721173Compaction recovers the space allocated to coset numbers which are1174flagged as dead. It results in a table where all the active coset1175numbers are numbered contiguously from 1, and with the remainder of1176the table available for new coset numbers.11771178The coset table is compacted when a definition of a coset number is1179required, there is no space for a new coset number available, and1180provided that the given percentage of the coset table contains dead1181coset numbers. For example, if `compaction' = $20$ then compaction1182will occur only if 20\% or more of the coset numbers in the table are1183dead. An argument of 100 means that compaction is never performed,1184while an argument of 0 means always compact, no matter how few dead1185coset numbers there are (provided there is at least one, of course).11861187Compaction may be performed multiple times during an enumeration, and1188the table that results from an enumeration may or may not be compact,1189depending on whether or not there have been any coincidences since the1190last compaction (or from the start of the enumeration, if there have1191been no compactions).11921193*Notes:*1194In some strategies (e.g., `hlt'; see~"option hlt") a lookahead phase1195may be run before compaction is attempted. In other strategies (e.g.,1196`sims := 3'; see~"option sims") compaction may be performed while1197there are outstanding deductions; since deductions are discarded1198during compaction, a final lookahead phase will (automatically) be1199performed.12001201\index{dead coset (number)}1202Compacting a table ``destroys'' information and history, in the sense1203that the coincidence list is deleted, and the table entries for any1204dead coset numbers are deleted.12051206\>`max:=<val>'{option max}@{option `max'}&1207Sets the maximum coset number that can be defined;1208`<val>' should be $0$ or an integer greater than or equal to 2.12091210By default (which is the case `max'${}=0$), all of the workspace is1211used, if necessary, in building the coset table. So the table size (in1212terms of the number of rows) is an upper bound on how many coset1213numbers can be alive at any one time. The `max' option allows a limit1214to be placed on how much physical table space is made available to the1215enumerator. Enough space for at least two coset numbers (i.e., the1216subgroup and one other) must be made available.12171218*Notes:*1219If the `easy' strategy (see~"option easy") is selected, so that1220`compaction' (see~"option compaction") is off (i.e.~set to 100) and1221`lookahead' (see~"option lookahead") is off (i.e.~set to 0), and `max'1222is set to a positive integer, then coset numbers are not reused, and1223hence `max' bounds the *total* number `totcosets' (see Section~"Coset1224Statistics Terminology") of coset numbers defined during an1225enumeration.12261227On the other hand, if one (or both) of `compaction' or `lookahead' is1228not off, then some reuse of coset numbers may occur, so that, for the1229case where `max' is a positive integer, the value of `totcosets' may1230be greater than `max'.12311232However, whenever `max' is set to a positive integer, both1233*activecosets* (the number of *alive* coset numbers at the end of an1234enumeration) and *maxcosets* (the maximum number of alive coset1235numbers at any point of an enumeration) are bounded by `max'. See1236Section~"Coset Statistics Terminology", for a discussion of the1237terminology: *activecosets* and *maxcosets*.12381239\>`hole:=<val>'{option hole}@{option `hole'}&1240Maximum percentage of holes allowed during an enumeration;1241`<val>' should be an integer in the range $-1$ to 100.1242(Shortest abbreviation: `ho'.)12431244This is an experimental feature which allows an enumeration to be1245terminated when the percentage of holes in the table exceeds a given1246value. In practice, calculating this is very expensive, and it tends1247to remain constant or decrease throughout an enumeration. So the1248feature doesn't seem very useful. The default value of $-1$ turns this1249feature off. If you want more details, read the source code.12501251\enditems12521253%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1254\Section{ACE Parameter Options controlling ACE Output}12551256\beginitems12571258\>`messages:=<val>'{option messages}@{option `messages'}1259\>`monitor:=<val>'{option monitor}@{option `monitor'}&1260Sets the verbosity of output from {\ACE}; <val> should be an integer.1261(Shortest abbreviation of `messages' is `mess', and shortest1262abbreviation of `monitor' is `mon'.)12631264By default, <val> = 0, for which {\ACE} prints out only a single line1265of information, giving the result of each enumeration. If <val> is1266non-zero then the presentation and the parameters are echoed at the1267start of the run, and messages on the enumeration's status as it1268progresses are also printed out. The absolute value of <val> sets the1269frequency of the progress messages, with a negative sign turning hole1270monitoring on. Note that, hole monitoring is expensive, so don't turn1271it on unless you really need it.12721273Note that, ordinarily, one will not see these messages:1274non-interactively, these messages are directed to file1275`ACEData.outfile' (or <filename>, if option `aceoutfile :=1276<filename>', or `ao := <filename>', is used), and interactively these1277messages are simply not displayed. However, one can change this1278situation both interactively and non-interactively by setting the1279`InfoLevel' of `InfoACE' to 3 via12801281\beginexample1282gap> SetInfoACELevel(3);12831284\endexample12851286Then {\ACE}'s messages are displayed prepended with ```\#I '''.1287Please refer to Appendix~"The Meanings of ACE's output messages",1288where the meanings of {\ACE}'s output messages are fully discussed.12891290\enditems12911292%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1293\Section{ACE Parameter Options that give Names to the Group and Subgroup}12941295These options may be safely ignored; they only give names to the group1296or subgroup within the {\ACE} output, and have no effect on the1297enumeration itself.12981299\beginitems13001301\>`enumeration:=<string>'{option enumeration}@{option `enumeration'}&1302Sets the `Group Name' to <string>; <string>, must of course be a1303string. (Shortest abbreviation: `enum'.)13041305The {\ACE} binary has a two-word synonym for this option: `Group Name'1306and this is how it is identified in the ``Run Parameters'' block of1307the {\ACE} output when `messages' has a non-zero value. The default1308`Group Name' is `"G"'.13091310\>`subgroup:=<string>'{option subgroup}@{option `subgroup'}&1311Sets the `Subgroup Name' to <string>; <string> must of course be a1312string. (Shortest abbreviation: `subg'.)13131314The default `Subgroup Name' is `"H"'.13151316\enditems13171318%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1319\Section{Options for redirection of ACE Output}13201321\beginitems13221323\>`ao:=<filename>'{option ao}@{option `ao'}1324\>`aceoutfile:=<filename>'{option aceoutfile!ao synonym}@{option `aceoutfile'}&1325Redirects (`a'lters) `o'utput to <filename>; <filename> should be a1326string.13271328Non-interactively, output from {\ACE} is normally directed to a temporary1329file whose full path is stored in `ACEData.outfile', which is parsed1330to produce a coset table or a list of statistics. This option causes1331{\ACE}'s output to be directed to <filename> instead, presumably1332because the user wishes to see (and keep) data output by the {\ACE}1333binary, other than the coset table output from1334`ACECosetTableFromGensAndRels' or the statistics output by `ACEStats'.1335Please refer to Appendix~"The Meanings of ACE's output messages",1336where we discuss the meaning of the additional data to be found in the1337{\ACE} binary's output. The option `aceoutfile' is a {\GAP}-introduced1338synonym for `ao', that is translated to `ao' before submission to the1339{\ACE} binary. Do not use option `aceoutfile' when running the1340standalone directly. Happily, `ao' can also be regarded as mnemonical1341for `aceoutfile'.13421343\enditems13441345%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1346\Section{Other Options}13471348{\ACE} has a number of other options, but the {\GAP} user will not1349ordinarily need them, since, in most cases, alternative interactive1350functions exist. These remaining options have been relegated to1351Appendix~"Other ACE Options". The options listed there may be used1352both interactively and non-interactively, but many are probably best1353used directly via the {\ACE} standalone.13541355%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1356%%1357%E135813591360