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 basics.tex ACE documentation - basics 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{Some Basics}1516\index{strategy}\atindex{Felsch strategy}{@Felsch strategy}17\atindex{HLT strategy}{@HLT strategy}18Throughout this manual for the use of {\ACE} as a {\GAP} package, we19shall assume that the reader already knows the basic ideas of coset20enumeration, as can be found for example in~\cite{Neu82}. There, a21simple proof is given for the fact that a coset enumeration for a22subgroup of finite index in a finitely presented group must eventually23terminate with the correct result, provided the enumeration process24obeys a simple condition (Mendelsohn's condition) formulated in25Lemma~1 and Theorem~2 of~\cite{Neu82}. This basic condition leaves26room for a great variety of *strategies* for coset enumeration; two27``classical'' ones have been known for a long time as the *Felsch28strategy* and the *HLT strategy* (for Haselgrove, Leech and Trotter).29Extensive experimental studies on many strategies can be found30in~\cite{CDHW73}, \cite{Hav91}, \cite{HR99ace}, and \cite{HR01}, in31particular.3233A few basic points should be particularly understood:3435\beginlist%unordered3637\item{--} ``Subgroup (generator) and relator tables'' that are used in38the description of coset enumeration in \cite{Neu82}, and to which we39will also occasionally refer in this manual, do *not* physically exist40in the implementation of coset enumeration in {\ACE}. For a41terminology that is closer to the actual implementation and also to42the formulations in the manual for the {\ACE} standalone see43\cite{CDHW73} and \cite{Hav91}.4445\index{cosets!coset numbers}\index{cosets!coset table}\index{holes}46\item{--} Coset enumeration proceeds by defining *coset numbers* that47really denote possible representatives for cosets written as words in48the generators of the group. At the time of their generation it is not49guaranteed that any two of these words do indeed represent different50cosets. The state of an enumeration at any time is stored in a512-dimensional array known as a *coset table* whose rows are indexed by52coset numbers and whose columns are indexed by the group generators53and their inverses. Entries of the coset table that are not yet54defined are known as *holes* (typically they are filled with 0,55i.e.~an invalid coset number).5657\index{cosets}\index{cosets!coset application}\index{cosets!coset numbers}58\item{--} It is customary in talking about coset enumeration to speak59of *cosets* when really coset numbers are meant. While we try to avoid60this in this interface manual, in certain word combinations such as61*coset application* we will follow this custom.6263\index{deduction}\index{deduction!deduction stack}64\item{--} The definition of a coset number may lead to *deductions*65from the ``closing of rows in subgroup or relator tables''. These are66kept in a *deduction stack*.6768\index{coincidence}\index{coincidence!coincidence queue}69\item{--} Also it may be found that (different) words in the70generators defining different coset numbers really lie in the same71coset of the given subgroup. This is called a *coincidence* and will72eventually lead to the elimination of the larger of the two coset73numbers. Until this elimination has been performed pending74coincidences are kept in a *queue of coincidences*.7576\index{preferred definition}\index{definition!preferred}77\index{preferred definition!preferred definition stack}78\item{--} A definition that will actually close a row in a subgroup or79relator table will immediately yield twice as many entries in the80coset table as other definitions. Such definitions are called81*preferred definitions*, the places in rows of a subgroup or relator82table that they close are also referred to as ``gaps of length one''83or minimal gaps. Such gaps can be found at little extra cost when84``relators are traced from a given coset number''. {\ACE} keeps a85selection of them in a *preferred definition stack* for use in some86definition strategies (see~\cite{Hav91}).8788\endlist8990It will also be necessary to understand some further basic features of91the implementation and the corresponding terminology which we will92explain in the sequel.9394%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%95\Section{Enumeration Style}9697The first main decision for any coset enumeration is in which sequence98to make definitions. When a new coset number has to be defined, in99{\ACE} there are basically three possible methods to choose from:100101\beginlist%unordered102103\atindex{C style}{@C style!definition}104\item{--} One may fill the next empty entry in the coset table by105scanning from the left/top of the coset table towards the right/bottom106-- that is, in order row by row. This is called *C style definition*107(for *C*oset Table Based definition) of coset numbers. In fact a108procedure needs to follow a method like this to some extent for the109proofs that coset enumeration eventually terminates in the case of110finite index (see~\cite{Neu82}).111112\atindex{R style}{@R style!definition}113\item{--} For an *R style definition* (for *R*elator Based114definition), the order in which coset numbers are defined is115explicitly prescribed by the order in which rows of (the subgroup116generator tables and) the relator tables are filled by making117definitions.118119\index{preferred definition}120\index{preferred definition!preferred definition stack}121\index{strategy!minimal gaps}122\item{--} One may choose definitions from a *Preferred Definition123Stack*. In this stack possibilities for definition of coset numbers124are stored that will close a certain row of a relator table. Using125these *preferred definitions* is sometimes also referred to as a126*minimal gaps strategy*. The idea of using these is that by closing a127row in a relator table, thus, one will immediately get a consequence.128We will come back to the obvious question of where one obtains this129``preferred definition stack''.130131\endlist132133The *enumeration style* is mainly determined by the balance between134C style and R style definitions, which is controlled by the values of135the `ct' and `rt' options (see~"option ct" and~"option rt").136137However this still leaves us with plenty of freedom for the design of138definition strategies, freedom which can, for example, be used to139great advantage in Felsch-type strategies. Though it is not strictly140necessary, before embarking on further enumeration, Felsch-type141programs generally start off by ensuring that each of the given142subgroup generators produces a cycle of coset numbers at coset 1. To143explain the idea, an example may help. Suppose $a,b$ are the group144generators and $w=Abab$ is a subgroup generator, where $A$ represents145the inverse of $a$; then to say that ``$(1,i,j,k)$ is a cycle of146coset numbers produced at coset 1 by $w$'' means that the successive147application of the ``letters'' $A,b,a,b$ of $w$ takes one148successively from coset 1, through cosets $i$, $j$ and $k$, and back149to coset 1, i.e.~$A$ applied to coset 1 results in coset $i$, $b$150applied to coset $i$ results in coset $j$, $a$ applied to coset $j$151results in coset $k$, and finally $b$ applied to coset $k$ takes us152back to coset $1$. In this way, a hypothetical subgroup table is153filled first. The use of this and other possibilities leads to the154following table of *enumeration styles*.155156% \begin{table}157% \hrule158% \caption{The styles}159% \label{tab:sty}160% \smallskip161% \renewcommand{\arraystretch}{0.875}162% \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}crrlc}163% \hline\hline164% & \ttt{Rt} value & \ttt{Ct} value & style name & \\165% \hline166% & $<\!0$ & $<\!0$ & R/C & \\167% & $<\!0$ & $0$ & R* & \\168% & $<\!0$ & $>\!0$ & Cr & \\169% & $0$ & $<\!0$ & C & \\170% & $0$ & $0$ & R/C (defaulted) & \\171% & $0$ & $>\!0$ & C & \\172% & $>\!0$ & $<\!0$ & Rc & \\173% & $>\!0$ & $0$ & R & \\174% & $>\!0$ & $>\!0$ & CR & \\175% \hline\hline176% \end{tabular*}177% \end{table}178\begintt179Rt value Ct value style name180-----------------------------------------1811820 >0 C183<0 >0 Cr184>0 >0 CR185186>0 0 R187<0 0 R*188>0 <0 Rc189<0 <0 R/C1900 0 R/C (defaulted)191192-----------------------------------------193\endtt194195\beginitems196197\atindex{C style}{@C style}198*C style* &199In this style, most definitions are made in the next empty coset table200slot and are (in principle) tested in all essentially different201positions in the relators; i.e.~this is a Felsch-like style.202203However, in C style, some definitions may be made following a204preferred definition strategy, controlled by the `pmode' and `psize'205options (see~"option pmode" and~"option psize").206207\atindex{Cr style}{@Cr style}208*Cr style* &209is like C style except that a single R style pass is done after the210initial C style pass.211212\atindex{CR style}{@CR style}213*CR style* &214In this style, alternate passes of C style and R style are performed.215216\atindex{R style}{@R style}217*R style* &218In this style, all the definitions are made via relator scans;219i.e.~this is an HLT-like style.220221\atindex{R\* style}{@R\* style}222*R\* style* &223makes definitions the same as R style, but tests all definitions as224for C style.225226\atindex{Rc style}{@Rc style}227*Rc style* &228is like R style, except that a single C style pass is done after the229initial R style pass.230231\atindex{R/C style}{@R/C style}232*R/C style* &233In this style, we run in R style until an overflow, perform a234lookahead on the entire table, and then switch to CR style.235236\atindex{Defaulted R/C style}{@Defaulted R/C style}237\atindex{R/C (defaulted) style}{@R/C (defaulted) style}238*Defaulted R/C* ($={}$*R/C (defaulted)* $\,$) *style* &239is the default style used if you call {\ACE} without specifying240options. In it, we use R/C style with `ct' set to 1000 and `rt' set to241approximately $2000$ divided by the total length of the relators in an242attempt to balance R style and C style definitions when we switch to243CR style.244245\enditems246247%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%248\Section{Finding Deductions, Coincidences, and Preferred Definitions}249250\index{definition}251First, let us broadly discuss strategies and how they influence252``definitions''. By *definition* we mean the allocation of a coset253number. In a complete coset table each group relator produces a cycle254of cosets numbers at each coset number, in particular, at coset 1;255i.e.~for each relator $w$, and for each coset number $i$, successive256application of the letters of $w$ trace through a sequence of coset257numbers that begins and ends in $i$ (see Section~"Enumeration Style"258for an example). It has been found to be a good general rule to use259the given group relators as subgroup generators. This ensures the260early definition of some useful coset numbers, and is the basis of the261`default' strategy (see~"option default"). The number of group262relators included as subgroup generators is determined by the `no'263option (see~"option no"). Over a wide range of examples the use of264group relators in this way has been shown to produce generally265beneficial results in terms of the maximum number of cosets numbers266defined at any one time and the total number of coset numbers defined.267In~\cite{CDHW73}, it was reported that for some Macdonald group268$G(\alpha,\beta)$ examples, (pure) Felsch-type strategies (that don't269include the given group relators as subgroup generators) e.g.~the270`felsch := 0' strategy (see~"option felsch") defined significantly271more coset numbers than HLT-type (e.g.~the `hlt' strategy, see~"option272hlt") strategies. The comparison of these strategies in terms of total273number of coset numbers defined, in~\cite{Hav91}, for the enumeration274of the cosets of a certain index 40 subgroup of the $G(3,21)$275Macdonald group were 91 for HLT versus 16067 for a pure Felsch-type276strategy. For the Felsch strategy with the group relators included as277subgroup generators, as for the `felsch := 1' strategy (see~"option278felsch") the total number of coset numbers defined reduced markedly to27959.280281\index{deduction}282A *deduction* occurs when the scanning of a relator results in the283assignment of a coset table body entry. A completed table is only284valid if every table entry has been tested in all essentially285different positions in all relators. This testing can either be done286directly (Felsch strategy) or via relator scanning (HLT strategy). If287it is done directly, then more than one deduction can be waiting to be288processed at any one time. The untested deductions are stored in a289stack. How this stack is managed is determined by the `dmode' option290(see~"option dmode"), and its size is controlled by the `dsize' option291(see~"option dsize").292293\index{coincidence}\index{dead coset (number)}294As already mentioned a *coincidence* occurs when it is determined that295two coset numbers in fact represent the same coset. When this occurs296the larger coset number becomes a *dead coset number* and the297coincidence is placed in a queue. When and how these dead coset298numbers are eventually eliminated is controlled by the options299`dmode', `path' and `compaction' (see~"option dmode", "option path"300and~"option compaction"). The user may also force coincidences to301occur (see Section~"Finding Subgroups"), which, however, may change302the subgroup whose cosets are enumerated.303304\index{preferred definition!preferred definition stack}305The key to performance of coset enumeration procedures is good306selection of the next coset number to be defined. Leech307in~\cite{Lee77} and~\cite{Lee84} showed how a number of coset308enumerations could be simplified by removing coset numbers needlessly309defined by computer implementations. Human enumerators intelligently310choose which coset number should be defined next, based on the value311of each potential definition. In particular, definitions which close312relator cycles (or at least shorten gaps in cycles) are favoured. A313definition which actually closes a relator cycle immediately yields314twice as many table entries (deductions) as other definitions. The315value of the `pmode' option (see~"option pmode") determines which316definitions are *preferred*; if the value of the `pmode' option is317non-zero, depending on the `pmode' value, gaps of length one found318during relator C style (i.e.~Felsch-like) scans are either filled319immediately (subject to the value of `fill') or noted in the320*preferred definition stack*. The preferred definition stack is321implemented as a ring of size determined by the `psize' option322(see~"option psize"). However, making preferred definitions carelessly323can violate the conditions required for guaranteed termination of the324coset enumeration procedure in the case of finite index. To avoid such325a violation {\ACE} ensures a fraction of the coset table is filled326before a preferred definition is made; the reciprocal of this327fraction, the `fill factor', is manipulated via the `fill' option328(see~"option fill"). In~\cite{Hav91}, the `felsch := 1' type329enumeration of the cosets of the certain index 40 subgroup of the330$G(3,21)$ Macdonald group was further improved to require a total331number of coset numbers of just 43 by incorporating the use of332preferred definitions.333334%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%335\Section{Finding Subgroups}336337\index{coincidence}338The {\ACE} package, via its interactive {\ACE} interface functions339(described in Chapter~"Functions for Using ACE Interactively"),340provides the possibility of searching for subgroups. To do this one341starts at a known subgroup (possibly the trivial subgroup). Then one342may augment it by adding new subgroup generators either explicitly via343`ACEAddSubgroupGenerators' (see~"ACEAddSubgroupGenerators") or344implicitly by introducing *coincidences* (see `ACECosetCoincidence':345"ACECosetCoincidence", or `ACERandomCoincidences':346"ACERandomCoincidences"). Also, one may descend to smaller subgroups347by deleting subgroup generators via `ACEDeleteSubgroupGenerators'348(see~"ACEDeleteSubgroupGenerators").349350%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%351\Section{Coset Table Standardisation Schemes}352353\atindex{lenlex standardisation scheme}{@\noexpand`lenlex' %354standardisation scheme}355The default standardisation scheme for {\GAP} from {\GAP}~4.3 and the356standardisation scheme provided by {\ACE} is the `lenlex' scheme, of357Charles Sims~\cite{Sim94}. This scheme numbers cosets first according358to word-length and then according to a lexical ordering of coset359representatives. Each coset representative is a word in an alphabet360consisting of the user-supplied generators and their inverses, and the361lexical ordering of `lenlex' is that implied by ordering that alphabet362so that each generator is followed by its inverse, and the generators363appear in user-supplied order. See below for an example which gives364the first 20 lines of the `lenlex' standard coset table of the365(infinite) group with presentation $\langle x, y, a, b \mid x^2, y^3,366a^4, b^2\rangle$.367368In the table each inverse of a generator is represented by the369corresponding uppercase letter ($X$ represents the inverse of $x$370etc.), and the lexical ordering of the representatives is that implied371by defining an ordering of the alphabet of user-supplied generators372and their inverses to be $x\<X\<y\<Y\<a\<A\<b\<B$.373374A `lenlex' standard coset table whose columns correspond, in order, to375the already-described alphabet, of generators and their inverses, has376an important property: a scan of the body of the table row by row from377left to right, encounters new coset numbers in numeric order. Observe378that the table below has this property: the definition of coset 1 is379implicit; the first coset number we encounter in the table body is 2,380then 2 again, 3, 4, 5, 6, 7, then 7 again, etc.381382With the `lenlex' option (see~"option lenlex"), the coset table output383by `ACECosetTable' or `ACECosetTableFromGensAndRels' is standardised384according to the `lenlex' scheme.385386\begintt387coset no. || x X y Y a A b B rep've388-----------+------------------------------------------------------------------3891 || 2 2 3 4 5 6 7 73902 || 1 1 8 9 10 11 12 12 x3913 || 13 13 4 1 14 15 16 16 y3924 || 17 17 1 3 18 19 20 20 Y3935 || 21 21 22 23 24 1 25 25 a3946 || 26 26 27 28 1 24 29 29 A3957 || 30 30 31 32 33 34 1 1 b3968 || 35 35 9 2 36 37 38 38 xy3979 || 39 39 2 8 40 41 42 42 xY39810 || 43 43 44 45 46 2 47 47 xa39911 || 48 48 49 50 2 46 51 51 xA40012 || 52 52 53 54 55 56 2 2 xb40113 || 3 3 57 58 59 60 61 61 yx40214 || 62 62 63 64 65 3 66 66 ya40315 || 67 67 68 69 3 65 70 70 yA40416 || 71 71 72 73 74 75 3 3 yb40517 || 4 4 76 77 78 79 80 80 Yx40618 || 81 81 82 83 84 4 85 85 Ya40719 || 86 86 87 88 4 84 89 89 YA40820 || 90 90 91 92 93 94 4 4 Yb409\endtt410411\atindex{semilenlex standardisation scheme}{@\noexpand`semilenlex' %412standardisation scheme}413Another standardisation scheme for coset tables (the default scheme of414versions of {\GAP} up to {\GAP}~4.2), numbers cosets according to415coset representative word-length in the group generators and lexical416ordering imposed by the user-supplied ordering of the group417generators; it is known as `semilenlex' since though like `lenlex',418generator inverses do not feature. Here again is 20 lines of the coset419table of the group with presentation $\langle x, y, a, b \mid x^2,420y^3, a^4, b^2\rangle$, this time `semilenlex' standardised.421422\begintt423coset no. || x y a b rep've424-----------+--------------------------------------4251 || 2 3 4 54262 || 1 6 7 8 x4273 || 9 10 11 12 y4284 || 13 14 15 16 a4295 || 17 18 19 1 b4306 || 20 21 22 23 xy4317 || 24 25 2 26 xa4328 || 27 28 29 2 xb4339 || 3 30 31 32 yx43410 || 33 1 34 35 yy43511 || 36 37 38 39 ya43612 || 40 41 42 3 yb43713 || 4 43 44 45 ax43814 || 46 47 48 49 ay43915 || 50 51 52 53 aa44016 || 54 55 56 4 ab44117 || 5 57 58 59 bx44218 || 60 61 62 63 by44319 || 64 65 66 67 ba44420 || 6 68 69 70 xyx445\endtt446447The term `semilenlex' was coined by Edmund Robertson and Joachim448Neub{\accent127u}ser, for the scheme's applicability to semigroups449where generator inverses need not exist. This scheme ensures that as450one scans the columns corresponding to the group generators (in451user-supplied order) row by row, one encounters new coset numbers in452numeric order.453454Observe that the representatives are ordered according to length and455then the lexical ordering implied by defining $x\<y\<a\<b$ (with some456words omitted due to their equivalence to words that precede them in457the ordering). Also observe that as one scans the body of the table458row by row from left to right new coset numbers appear in numeric459order without gaps (2, 3, 4, 5, then 1 which we have implicitly460already seen, 6, 7, etc.).461462%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%463\Section{Coset Statistics Terminology}464465\indextt{activecosets}\indextt{maxcosets}\indextt{totcosets}466\index{coincidence}\index{dead coset (number)}\index{alive coset number}467There are three statistics involved in the counting of coset number468definitions: `activecosets', `maxcosets' and `totcosets'; these are469three of the fields of the record returned by `ACEStats' (see470Section~"Using ACE Directly to Test whether a Coset Enumeration471Terminates"), and they correspond to the `a', `m' and `t' statistics472of an {\ACE} ``results message'' (see Appendix~"The Meanings of ACE's473Output Messages"). As already described, coset enumeration proceeds by474defining coset numbers; `totcosets' counts *all* such definitions made475during an enumeration. During the coset enumeration process,476*coincidences* usually occur, resulting in the larger of each477coincident pair becoming a *dead coset number*. The statistic478`activecosets' is the count of coset numbers left *alive* (i.e.~not479dead) at the end of an enumeration; and `maxcosets' is the maximum480number of *alive* cosets at any point of an enumeration.481482In practice, the statistics `maxcosets' and `totcosets' tend to be of483a similar order, though, of course, `maxcosets' can never be more than484`totcosets'.485486%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%487\Section{Other Terminology}488489\index{loop}\index{pass}\index{state (machine)}490In various places in this manual, we will refer to a (main) *loop* or491a *pass* through such a loop. We don't intend to give a precise492meaning to these terms. The reader will need to forgive us for giving493somewhat circular definitions in our attempt to make these terms less494nebulous. It is sufficient to appreciate that the {\ACE} enumerator is495organised as a state machine, where each *state* is a value of the496coset table held internally by {\ACE} at the end of each ``main497loop''. Each step from one state to the next (i.e.~each passage498through the main loop) performs an ``action'' (i.e., `lookahead',499`compaction'; see~"option lookahead" and~"option compaction") or a500block of actions (i.e., `|ct|' coset number definitions, `|rt|' coset501number applications). {\ACE} counts the number of passes through the502main loop; if the option `loop' (see~"option loop") is set to a503positive integer, {\ACE} makes an early return when the loop count504hits the value of `loop'.505506%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%507%%508%E509510511