GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1\Chapter{Subgroup Lattices - Systematic Description}23In this chapter we give details about the various options and menus4available in a systematic way.56%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7\Section{GraphicSubgroupLattice}89\>GraphicSubgroupLattice( <g> )!{default sheet size form}1011`GraphicSubgroupLattice' creates a new graphic sheet for the Hasse12diagram of the subgroup lattice of <g>. The next sections describe13how to select and move vertices and the following sections describe the14available menus.1516\begintt17gap> GraphicSubgroupLattice( DihedralGroup(8) );18<graphic subgroup lattice "GraphicSubgroupLattice">19\endtt2021\>GraphicSubgroupLattice( <g>, <width>, <height> )!{sheet size setting form}2223In this form `GraphicSubgroupLattice' creates a graphic sheet of initial24dimensions <width> times <height>. However it is still possible to change25these dimensions later using either the menu (described in26"GraphicSubgroupLattice, Poset Menu") or the operation `Resize' for graphic27sheets (see "Resize").2829This function is the same for all types of groups. It only behaves differently30according to some properties of the group. For example finitely presented31groups are treated differently because other algorithms apply in this case32and some of the standard ones are not feasible to be carried out.3334In contrast to the {\GAP3} version of {\XGAP} all graphic subgroup lattices35are interactive so you can always remove vertices. For a finite group you36can still get the full lattice by choosing `All Subgroups' for the whole37group.3839%`GraphicSubgroupLattice( <g>, \"prime\"\ )'40%41%If you supply the parameter \"prime\", then a vertex will be placed above42%another vertex if the number of prime factors in the size of the43%corresponding subgroup is larger than the number of prime factors in the44%size of the subgroup belonging to the second vertex. The default45%behaviour is to compare the sizes instead of number of prime factors.4647%\begintt48%gap> GraphicSubgroupLattice( CyclicGroup(20) );;49%gap> GraphicSubgroupLattice( CyclicGroup(20), "prime" );;50%\endtt5152%`GraphicSubgroupLattice( <g>, \"normal subgroups\"\ )'5354%If you supply the parameter \"normal subgroups\", then only the lattice55%of normal subgroups of <g> will be drawn on the graphic sheet.5657%\begintt58%gap> GraphicSubgroupLattice( DihedralGroup(8), "normal subgroups" );59%\endtt6061%It is possible to abbreviate \"prime\"\ and \"normal subgroups\"\ and to62%supply one or both.636465%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%66\Section{GraphicSubgroupLattice, Protocol of Group Theoretic Constructions}6768\label{loggingfacility}69{\XGAP} offers the possibility to write a protocol of the group70theoretic constructions you perform via mouse clicks. This is71convenient because otherwise you have no record of what you did. The72normal {\GAP} command script cannot supply this because the menu73entries you select do not produce useful output there.7475You start the protocol facility by selecting `Start logging' from the76`Subgroups' menu. You are prompted for the file name of the protocol with77a file selector box. After selecting `OK' in this box, all subsequent78actions are logged in the protocol file. You can switch this feature79off by selecting `Stop logging' from the `Subgroups' menu.8081Note that when you select `SelectedGroups to GAP' from the `Subgroups'82menu, the usual {\GAP} logging is also directed to the {\XGAP} log83file. This is stopped when you select `InsertVertices from GAP' from84the `Subgroups' menu. The idea of this is that you also see the85{\GAP} commands you issue within an {\XGAP} session in the {\XGAP}86protocol file, if you temporarily work with the keyboard instead of87the mouse. See "Start logging" and "Stop logging" for a description88of the menu entries.899091%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%92\Section{GraphicSubgroupLattice, Labelling of Levels}9394\label{levelsintro}95We intend to represent subgroups of the same index at the same height96of the graphic lattice. For this purpose we introduce ``levels'' as97horizontal slices of a graphic subgroup lattice.9899All vertices for subgroups of a certain finite index are100placed in exactly one common level. But what about infinite indices?101102Every level has a ``level parameter''.103There are three types of levels: ``finite index'', ``finite size'', and104``infinity''. ``finite index'' means, that the index of the subgroups105in this level is a certain, finite natural number, the level parameter106is exactly this number. ``finite size'' means, that the size of the107subgroups in this level is finite *and* the index is either not known108(to {\GAP}) or `infinity'. The level parameter is the size but with a109negative sign. If the index is `infinity' and the size is110not known, the third type applies: ``infinity''. In each ``infinity''111level only one vertex can exist.112113This means that ``finite index'' takes precedence over ``finite size''114and ``infinity'', and ``finite size'' takes precedence over115``infinity'' if {\XGAP} is in doubt which level to choose for a new116vertex.117118If the group in question is a space group provided by the CRYST119package, levels of type ``infinity'' are also labelled by the Hirsch120length of the subgroup, which is the number of infinite cyclic factors121in any given subnormal series. Note that this is only implemented for122space groups as of this writing, although the Hirsch length is defined for123a wider range of groups.124125For every graphic subgroup lattice the levels are partially ordered by126the following rules:127128\beginlist%unordered129\item{--} A ``finite index'' level is greater than an ``infinity'' level.130131\item{--} An ``infinity'' is greater than a ``finite size'' level.132133\item{--} The ``finite index'' levels are totally ordered by descending indices.134135\item{--} The ``finite size'' levels are totally ordered by ascending sizes.136137\item{--} For space groups the ``infinity'' levels are partially ordered by138the Hirsch lengths of the subgroups.139\endlist140141Note that in general different ``infinity'' levels are not comparable in this142partial order!143144On the screen, the levels are of course always totally ordered with respect145to their height. {\XGAP} ensures that this total ordering is always146compatible with the abovementioned partial ordering. This means, that the147user can permute ``infinity'' levels, as long as this does not violate the148partial order by the Hirsch lengths and the149principle, that a vertex ``containing'' another one is drawn higher on150the screen.151152Note that the level a vertex belongs to will be changed, when new153information about the subgroup is available. This happens if the user154chooses any entry in the information menu and new information is155available thereafter.156157158%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%159\Section{GraphicSubgroupLattice, Moving Vertices}160161In order to move a vertex, place the pointer inside the vertex using the162mouse, and press the *left* mouse button. Hold the mouse button pressed,163and start moving the pointer by moving the mouse. The vertex will now164follow the pointer, but it is not possible to move the vertex out of165the boundaries of its level.166%(or number of prime factors, if \"prime\"\ was167%given as parameter to `GraphicSubgroupLattice')168or lower than a vertex of a group of smaller169size.170%(or number of prime factors).171As soon as you release the left mouse172button the vertex will stop following the pointer and, if the vertex was173a member of a conjugacy class, the remaining elements of the class are174moved.175176If you hold down the <SHIFT> key before moving a vertex as described177above then only the selected vertex is moved but not all members of the178same class. You can realign the vertices of a class by selecting one of179them and choose `Rearrange Classes' in the `Poset' menu180(see "Rearrange Classes").181182%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%183\Section{GraphicSubgroupLattice, Selecting Vertices}184185Selected vertices are represented by a slightly thicker circle and, if186your screen supports color, are colored red. There are five different187ways to select or deselect a vertex or a bunch of vertices.188189Place the pointer inside a vertex and press the *left* mouse button.190Release the button immediately without moving the mouse. This will191deselect all other vertices and select this vertex. If the vertex was192already the only selected vertex it is deselected.193194Place the pointer inside a vertex, hold down the <SHIFT> key, and press195the *left* mouse button. Release the button immediately without moving196the mouse, release the <SHIFT> key afterwards. If the vertex was197deselected this action will select it in addition to any other selected198vertices. If the vertex was already selected it will be deselected.199200Place the pointer outside any vertex and press the *left* mouse button.201Keep the button pressed and start moving the pointer. This will create a202rubber band rectangle. One corner at the position where you pressed the203mouse button, the opposite corner following the pointer. As soon as you204release the left mouse button, all vertices inside the rectangle are205selected, all vertices outside the rectangle are deselected.206207Place the pointer outside any vertex, hold down the <SHIFT> key and press208the *left* mouse button. Again you see a rubber band, however, now as209soon as you release the mouse button, all vertices inside the rectangle210are selected in addition to any other selected vertices.211212To select vertices from the {\GAP} command window call the function213`SelectGroups' with a subgroup or a list of subgroups to select.214215216%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%217\Section{GraphicSubgroupLattice, Inserting Vertices}218219To insert new vertices into a graphic sheet one has to use the220following operation:221222\>InsertVertex( <sheet>, <grp>, <conj>, <hint> )223\>InsertVertex( <sheet>, <grp> )224225Inserts the group <grp> as a new vertex into the sheet. If the lattice226is *not* the subgroup lattice of a finitely presented group, it227checks, if the group is already in the lattice or if there is already228a conjugate subgroup. Further, the new vertex is sorted into the229poset. So `InsertVertex' checks for all vertices on higher levels,230whether the new vertex is contained, and for all vertices on lower231levels, whether they are contained in the new vertex. It then tries to232add edges to the appropriate vertices. If the lattice is the lattice233of a finitely presented group, nothing is done with respect to the234connections of any vertex. `InsertVertex' returns a list with the new235vertex as first entry and a flag as second, which says, whether this236vertex was inserted right now or has already been there.237238<hint> is a list of $x$ coordinates which should give some hint for239the choice of the new $x$ coordinate. It can for example be the $x$240coordinates of those groups which were parameter for the operation241which calculated the group. <hints> can be empty but must always be a242list!243244If <conj> is a vertex we put the new vertex into the class of this245vertex. Otherwise <conj> should either be `false' or `fail'.246247You have access to the simpler form of the above functions via the248`Subgroups' menu and the mouse. If you select249`InsertVertices from GAP'250in the `Subgroups' menu, the function `InsertVertex' is called251for the group in the (automatic) variable `last', or, if `last'252contains a list of subgroups, for all of those subgroups. This is an253easy way to insert results of calculations with {\GAP} into the254lattice. If `last' is neither a subgroup nor a list of subgroups,255nothing happens.256257258%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%259\Section{GraphicSubgroupLattice, Sheet Menu}260261The `Sheet' menu will be pulled down if you place the pointer inside the262`Sheet' button and press the left mouse button. Keep the button down and263choose an entry by moving the pointer on top of this entry. Release the264mouse button to select an entry.265266\>`save as postscript'{save as postscript}@{`save as postscript'}267268Selecting this entry pops up a file selector. If you enter a file name269and click on <OK>, this will save a description of the graphic sheet and270graphic objects on the sheet as encapsulated postscript output. This271output should be imported easily into other documents.272273\>`close graphic sheet'{close graphic sheet}@{`close graphic sheet'}274275This entry will close the current graphic sheet and the window containing276the sheet and all ``Information'' menus related to this sheet. On some277window system or using some window manager the window itself has also a278close button or menu entry. However, using the window close method will279not close associated ``Information'' menus.280281282%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%283\Section{GraphicSubgroupLattice, Poset Menu}284285The `Poset' menu will be pulled down if you place the pointer inside the286`Poset' button and press the left mouse button. Keep the button down287and choose an entry by moving the pointer on top of this entry. Release288the mouse button to select an entry.289290This menu is a generic menu for any graphic poset and is not specific to291subgroup lattices. So you find here options for the handling of general292posets.293294\>`Redraw'{Redraw}@{`Redraw'}295296The whole lattice will be redrawn. Use this option if some manipulation297has disturbed the window.298299\>`Show Levels'{Show Levels}@{`Show Levels'}300301If this menu entry is activated (after clicking it will have a small302check sign at its right, clicking again deactivates it), there will be a303little blue box under each level at the left edge of the graphic304sheet. You can use these little boxes to change the height of a level by305moving it up or down like a vertex. In cases where the order of the306levels is not given by some ``external source'' like the index of the307subgroups you can move levels by moving the corresponding blue box with308pressed <SHIFT> button.309310\>`Show Levelparameters'{Show Levelparameters}@{`Show Levelparameters'}311312This menu entry controls the display of the level parameters at the right313edge of the graphic sheet. Normally these are displayed but you can314switch it off with this menu entry.315316\>`Delete Vertices'{Delete Vertices}@{`Delete Vertices'}317318Selecting the entry will delete all selected vertices. All edges from or319to one of these are also deleted. However, inclusion information is320preserved. This means that new edges are created from all vertices which321were maximal in the deleted one to all vertices in which the deleted322vertex was maximal. So you get the Hasse diagram of the poset which is323the restriction of the former one to the not selected vertices.324325\>`Delete Edge'{Delete Edge}@{`Delete Edge'}326327This menu entry is normally not selectable because it would destroy the328Hasse diagram.329330\>`Merge Classes'{Merge Classes}@{`Merge Classes'}331332This menu entry merges all classes within each level that contain a333selected vertex. Afterwards `RearrangeClasses' (see below) is334performed. Use `Merge Classes' to unite classes within a level, but335use it with care: No further test is performed! If you unite classes336of subgroups that are not conjugate, other errors may follow, because337conjugacy tests are later on only performed by looking at the first338subgroup in a given class!339340\>`Magnify Lattice'{Magnify Lattice}@{`Magnify Lattice'}341342Selecting the entry will multiply the dimensions of the graphic sheet by343the square root of $2$ and enlarge the lattice accordingly.344345\>`Shrink Lattice'{Shrink Lattice}@{`Shrink Lattice'}346347Selecting the entry will divide the dimensions of the graphic sheet by348the square root of $2$ and shrink the lattice accordingly.349350\>`Resize Lattice'{Resize Lattice}@{`Resize Lattice'}351352Selecting this entry will pop up a dialog box asking for an x and y factor353separated by a comma. You can enter integers or quotients. If you enter354only one number this is used for x and y. The graphic sheet is then355enlarged or shrinked and the lattice is resized accordingly.356357\>`Resize Sheet'{Resize Sheet}@{`Resize Sheet'}358359This entry is similar to `Resize Lattice' except that only the graphic360sheet is changed, the lattice remains unchanged. The numbers you enter must361be integers and mean pixel numbers.362363\>`Change Labels'{Change Labels}@{`Change Labels'}364365Selecting this entry will pop up a dialog box for each selected vertex366asking for a new label. Clicking on <CANCEL> will cancel the relabelling367of the remaining vertices but will not reset the already changed labels.368369\>`Average Y Positions'{Average Y Positions}@{`Average Y Positions'}370371Selecting this entry will average the y coordinates of all vertices372belonging to the same level. For graphic subgroup lattices this means all373subgroups with the same index in the whole group.374375\>`Average X Positions'{Average X Positions}@{`Average X Positions'}376377Selecting this entry will average the x coordinates of two or more378selected vertices. This will only work if the corresponding subgroups do379not have the same size and is used to align certain vertices380vertically.381382\>`Rearrange Classes'{Rearrange Classes}@{`Rearrange Classes'}383384Selecting this entry will clean up all classes which contain a selected385vertex. You need this option if you have moved a vertex without its class386(holding down the <SHIFT> key). The vertices in a class are arranged one387next to the other horizontally without changing the order of the x388coordinates. So you can permute the vertices within a class carelessly and389then again get a nice picture with the new order by selecting this menu390entry.391392\>`Use Black\&White'{Use BlackWhite}@{`Use Black\&White'}393394Switches to black and white in case of a color screen or back to colors.395396397%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%398\Section{GraphicSubgroupLattice, Subgroups Menu}399400The `Subgroups' menu will be pulled down if you place the pointer inside401the `Subgroups' button and press the left mouse button. Keep the button402down and choose an entry by moving the pointer on top of this entry.403Release the mouse button to select an entry.404405Note that you can also get the `Subgroups' menu as a popup menu by406clicking with the right mouse button into the graphic sheet of the subgroup407lattice, but *not* on a vertex.408409The result of a computation from any of the following entries is410colored green, if your screen supports color. There will also be a short411information message in the {\GAP} window about the result.412413In the following descriptions we use ``vertices'' as abbreviation for414``subgroups associated with vertices''.415416The following descriptions do not apply to the case of finitely presented417groups. See "GraphicSubgroupLattice for FpGroups, Subgroups Menu" for this418case.419420\>`All Subgroups'{All Subgroups}@{`All Subgroups'}421422For each selected vertex `All Subgroups' computes and displays all its423subgroups. Requires at least one selected vertex. Use with care! This can424cause huge computations! See also "ref:LatticeSubgroups" in the {\GAP}425reference manual.426427\>`Centralizers'{Centralizers}@{`Centralizers'}428429For each selected vertex `Centralizers' computes and displays its430centralizer with respect to the whole group. Requires at least one431selected vertex. See also "ref:Centralizer" in the {\GAP}432reference manual.433434\>`Centres'{Centres}@{`Centres'}435436For each selected vertex `Centres' computes and displays its centre.437Requires at least one selected vertex. See also "ref:Centre" in the {\GAP}438reference manual.439440\>`Closure'{Closure}@{`Closure'}441442computes and displays the common closure of the selected vertices.443Requires at least one selected vertex. See also "ref:ClosureGroup" in the444{\GAP} reference manual.445446\>`Closures'{Closures}@{`Closures'}447448computes and displays the closure of each pair of selected vertices.449Requires at least two selected vertices. See also "ref:ClosureGroup" in the450{\GAP} reference manual.451452\>`Commutator Subgroups'{Commutator Subgroups}@{`Commutator Subgroups'}453454computes and displays the commutator subgroup of each pair of selected455vertices. Requires at least two selected vertices. See also456"ref:CommutatorSubgroup" in the {\GAP}457reference manual.458459\>`Conjugate Subgroups'{Conjugate Subgroups}@{`Conjugate Subgroups'}460461computes and displays the conjugacy class (with respect to the whole462group) of each selected vertex. Requires at least one selected vertex.463See also "ref:ConjugacyClass" in the {\GAP}464reference manual.465466\>`Cores'{Cores}@{`Cores'}467468For each selected vertex `Cores' computes and displays its core with469respect to the whole group. Requires at least one selected vertex. See470also "ref:Core" in the {\GAP}471reference manual.472473\>`Derived Series'{Derived Series}@{`Derived Series'}474475For each selected vertex `Derived Series' computes and displays its476derived series. Requires at least one selected vertex. See also477"ref:DerivedSeriesOfGroup" in the {\GAP}478reference manual.479480\>`Derived Subgroups'{Derived Subgroups}@{`Derived Subgroups'}481482For each selected vertex `Derived Subgroups' computes and displays its483derived subgroup. Requires at least one selected vertex. See also484"ref:DerivedSubgroup" in the {\GAP}485reference manual.486487\>`Fitting Subgroups'{Fitting Subgroups}@{`Fitting Subgroups'}488489For each selected vertex `Fitting Subgroups' computes and displays its490Fitting subgroup. Requires at least one selected vertex. See also491"ref:FittingSubgroup" in the {\GAP}492reference manual.493494\>`Intermediate Subgroups'{Intermediate Subgroups}@{`Intermediate Subgroups'}495496computes and displays all intermediate subgroups between two selected497groups. Requires exactly two selected vertices. See also498"ref:IntermediateSubgroups" in the {\GAP}499reference manual.500501\>`Intersection'{Intersection}@{`Intersection'}502503computes and displays the common intersection of the selected vertices.504Requires at least one selected vertex. See also "ref:Intersection" in the505{\GAP} reference manual.506507\>`Intersections'{Intersections}@{`Intersections'}508509For each pair of selected vertices `Intersections' computes and displays510the intersection of the two vertices. Requires at least two selected511vertices. See also "ref:Intersection" in the {\GAP}512reference manual.513514\>`Normalizers'{Normalizers}@{`Normalizers'}515516For each selected vertex `Normalizers' computes and displays its normalizer517with respect to the whole group. Requires at least one selected vertex.518See also "ref:Normalizer" in the {\GAP}519reference manual.520521\>`Normal Closures'{Normal Closures}@{`Normal Closures'}522523For each selected vertex `Normal Closure' computes and displays its normal524closure with respect to the whole group. Requires at least one selected525vertex. See also "ref:NormalClosure" in the {\GAP}526reference manual.527528\>`Normal Subgroups'{Normal Subgroups}@{`Normal Subgroups'}529530For each selected vertex `Normal Subgroups' computes and displays the531normal subgroups of the subgroup associated with this vertex. These new532subgroups are not necessarily normal in the whole group. Requires at533least one selected vertex. See also "ref:NormalSubgroups" in the {\GAP}534reference manual.535536\>`Sylow Subgroups'{Sylow Subgroups}@{`Sylow Subgroups'}537538pops up a dialog box asking for a prime. After entering a prime $p$539and pressing <return> or clicking <OK> it computes and displays a Sylow540$p$-subgroup for each selected vertex. Requires at least one selected541vertex. See also "ref:SylowSubgroup" in the {\GAP}542reference manual.543544\>`SelectedGroups to GAP'{SelectedGroups to GAP}@{`SelectedGroups to GAP'}545546If the user selects this menu entry, the subgroups belonging to the547selected vertices are put into a list which is stored into the variable548`last'. This is equivalent to the statement `SelectedGroups(sheet);;' if549`sheet' contains the graphic sheet object. If {\XGAP} logging is on, then550the normal {\GAP} logging via `LogTo' is also directed to the {\XGAP} log551file.552553\>`InsertVertices from GAP'{InsertVertices from GAP}@{`InsertVertices from GAP'}554555If the user selects this menu entry, the value of the variable `last' is556used to insert new vertices into the graphic sheet. If `last' is equal to557one subgroup, it is inserted via `InsertVertex'. If `last' is a list of558subgroups, `InsertVertex' is called for all those subgroups. There is no559error issued if one of the entries of `last' is no subgroup. If {\XGAP}560logging is on, then the normal {\GAP} logging via `LogTo' is switched off!561The idea of this is to switch the logging temporarily from {\XGAP} logging562to normal {\GAP} logging between two clicks to `SelectedGroups to GAP'563and `InsertVertices from GAP' respectively.564565\>`Start Logging'{Start Logging}@{`Start Logging'}566567After clicking on this menu entry the user is prompted for a filename. From568this point on all commands issued via mouse clicks in the subgroup menu are569logged into that file, such that one can afterwards see ``what happened''570in the {\XGAP} session. The information displayed is the same as in the571info displays in the {\GAP} window.572573\>`Stop Logging'{Stop Logging}@{`Stop Logging'}574575A click onto this menu entry stops the {\XGAP} logging.576577\bigskip%578579These menu entries represent only a small selection of the functions580of {\GAP} which the authors of {\XGAP} considered most frequently581used. You can calculate other subgroups like for example prefrattini582subgroups from the {\GAP} command window. See sections "gapxgap" and583"xgapgap" for examples how to transfer information from the graphical584lattice of {\XGAP} to {\GAP} (via `SelectedGroups', see585"GraphicSubgroupLattice, Selecting Vertices") and vice versa (via586`SelectGroups', see "GraphicSubgroupLattice, Selecting Vertices", and587`InsertVertex', see "GraphicSubgroupLattice, Inserting Vertices").588589590%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%591\Section{GraphicSubgroupLattice, Information Menu}592593Note that this section does not deal with the case of a finitely presented594group. See "GraphicSubgroupLattice for FpGroups, Information Menu" for this595case.596597Placing the pointer inside a vertex (selected or not) and pressing the598*right* mouse button pops up the ``Information'' menu. Clicking on any of599the text lines will compute the corresponding property of the subgroup600$u$ associated with this vertex. Clicking on `all' will compute all601properties, clicking on `close' will close the ``Information'' menu.602603\>`Size'{Size}@{`Size'}604605computes and displays the size of $u$. See also "ref:Size" in the606{\GAP} reference manual.607608\>`Index'{Index}@{`Index'}609610computes and displays the index of $u$ in the whole group. See also611"ref:IndexInWholeGroup" in the {\GAP} reference manual.612%FIXME: eigentlich ref:Index, der ist aber falsch!613614\>`IsAbelian'{IsAbelian}@{`IsAbelian'}615616\>`IsCyclic'{IsCyclic}@{`IsCyclic'}617618\>`IsNilpotent'{IsNilpotent}@{`IsNilpotent'}619620\>`IsPerfect'{IsPerfect}@{`IsPerfect'}621622\>`IsSimple'{IsSimple}@{`IsSimple'}623624\>`IsSolvable'{IsSolvable}@{`IsSolvable'}625626computes and displays the corresponding property of $u$. See also627"ref:IsAbelian", "ref:IsCyclic", "ref:IsNilpotentGroup", "ref:IsPerfectGroup",628"ref:IsSimpleGroup", and "ref:IsSolvableGroup" in the {\GAP}629reference manual.630631\>`IsCentral'{IsCentral}@{`IsCentral'}632633\>`IsNormal'{IsNormal}@{`IsNormal'}634635computes and displays the corresponding property of $u$ with respect to636the whole group. See also "ref:IsCentral" and "ref:IsNormal" in the {\GAP}637reference manual.638639\>`Isomorphism'{Isomorphism}@{`Isomorphism'}640641computes and displays the isomorphism type of $u$. This will only work642if the size of $u$ is small. See "ref:IdGroup" in the {\GAP}643reference manual for details.644645\bigskip%646647Note that the exact result of all these information displays is stored in648the global variable `LastResultOfInfoDisplay' after each operation. So you649can access this easily from the {\GAP} command prompt. It is also returned650as `last' value.651652653%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%654%\Section{GraphicSubgroupLattice, Sheet Menu}655%656%In order to adjust any margin place the pointer outside of any vertex and657%press the *right* mouse button, keep the button pressed. The `Sheet'658%menu will pop up.659%660%`Left Margin'661%662%selecting <Left Margin> will narrow the graphic sheet, setting the new663%left margin to the x coordinate of your mouse click.664%665%`Right Margin'666%667%selecting <Right Margin> will narrow the graphic sheet, setting the new668%right margin to the x coordinate of your mouse click.669%670%`Top Margin'671%672%selecting <Top Margin> will narrow the graphic sheet, setting the new top673%margin to the y coordinate of your mouse click.674%675%`Bottom Margin'676%677%selecting <Bottom Margin> will narrow the graphic sheet, setting the new678%bottom margin to the y coordinate of your mouse click.679%680681682%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%683\Section{Vertex Shapes}684685The following vertex shapes can appear in an interactive lattice:686687\>`circle'{circle!vertex shape}@{`circle'!vertex shape}688689Subgroup is not normal in whole group.690691\>`diamond'{diamond!vertex shape}@{`diamond'!vertex shape}692693Subgroup is normal in whole group.694695\>`rectangle'{rectangle!vertex shape}@{`rectangle'!vertex shape}696697Subgroup has an index that is too big for automatic calculation of698normality. So it is not yet known whether this group is normal.699700\bigskip%701702Automatic calculation is controlled by the following variable:703704\>`GGLLimitForIsNormalCalc' V705706Only for subgroups with index smaller than this number an automatic707`IsNormal' test is performed when the vertex is added to the sheet.708709710%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%711\Section{GraphicSubgroupLattice for FpGroups, Subgroups Menu}712713The `Subgroups' menu will be pulled down if you place the pointer inside714the `Subgroups' button and press the left mouse button. Keep the button715down and choose an entry by moving the pointer on top of this entry.716Release the mouse button to select an entry.717718Note that you can also get the `Subgroups' menu as a popup menu by719clicking with the right mouse button into the graphic sheet of the subgroup720lattice, but *not* on a vertex.721722The result of a computation from any of the following entries is723colored green, if your screen supports color. In most cases there will724also be short information message in the {\GAP} window about the result.725726Note that some of the menu entries make it necessary to compute727presentations of subgroups using a modified Todd-Coxeter algorithm.728This can be very time consuming and in some cases even impossible, if729the index is too high.730731In the following descriptions, we use ``vertices'' as abbreviation for732``subgroups associated with vertices''.733734\>`Abelian Prime Quotient'{Abelian Prime Quotient}@{`Abelian Prime Quotient'}735736pops up a dialog box asking for a prime $p$. It then computes and737displays the largest elementary abelian $p$ quotient of the selected738vertex. If no presentation for the subgroup associated to the vertex is739known a presentation is first computed using a modified Todd-Coxeter740algorithm. It then calls `PrimeQuotient' to compute the largest741elementary abelian quotient. `Abelian PrimeQuotient' requires exactly one742selected vertex.743744\>`All Overgroups'{All Overgroups}@{`All Overgroups'}745746computes and displays all overgroups of the selected vertex. It first747computes the permutation action of the whole group on the cosets of the748subgroup associated with the selected vertex and then searches for all749block systems. If the subgroup of the selected vertex is normal, then750everything is calculated within the (finite) factor group in a better751representation. `All Overgroups' requires exactly one selected vertex.752753\>`Closure'{Closure!for FpGroups}@{`Closure'!for FpGroups}754755computes and displays the common closure of the selected vertices.756Requires at least one selected vertex. See also "ref:ClosureGroup" in the757{\GAP} reference manual.758759\>`Compare Subgroups'{Compare Subgroups}@{`Compare Subgroups'}760761A non-empty set of vertices must be selected to choose this menu entry. All762subgroups belonging to these vertices are compared pairwise, and the inclusion763information is displayed in the lattice. It may happen that two or more764vertices are merged if {\GAP} notices, that the subgroups are765equal.766767\>`Conjugacy Class'{Conjugacy Class}@{`Conjugacy Class'}768769computes and displays the conjugacy class of the selected vertex.770`Conjugacy Class' requires exactly one selected vertex.771772\>`Cores'{Cores!for FpGroups}@{`Cores'!for FpGroups}773774computes and displays the cores of the selected vertices. `Cores'775requires at least one selected vertex.776777\>`Derived Subgroups'{Derived SubgroupsFp}@{Derived Subgroups}778779computes and displays the derived subgroups of the selected vertices.780If applied to a proper subgroup of the whole group it will only781display those derived subgroups whose index is finite. `Derived782Subgroups' requires at least one selected vertex.783784\>`Epimorphisms (GQuotients)'{Epimorphisms (GQuotients)}%785@{`Epimorphisms (GQuotients)'}786787pops up another menu. Requires exactly one selected vertex.788789\begintt790Sym(n)791Alt(n)792PSL(d,q)793Library794User Defined795\endtt796797Click on any of these entries to try to find a quotient isomorphic to the798symmetric group (`Sym(n)'), the alternating group (`Alt(n)'), the projective799special linear group (`PSL(d,q)'), a group in a library supplied with800{\XGAP} (this will pop up a file selector), or a user defined group stored801in the variable `IMAGE_GROUP'. After supplying additional parameters, for802example, the degree of the symmetric group or the dimension and field of803$PSL$ using dialog boxes, the corresponding entry will change, for example804to something like805806\begintt807Sym(3) 3 found808\endtt809810After one or more quotients were found click <display> to display them.811812Note that in {\XGAP4} in fact the kernel of the epimorphism is marked whereas813in {\XGAP3} this was not the case, even though the {\XGAP3} manual stated814this.815816In fact in {\XGAP3} a stabilizer of a permutation action on an orbit was817put into the lattice.818819In case that the image of the epimorphism is a permutation group you can820get this functionality by clicking on <display point stabilizer> instead of821<display>.822823\>`Intermediate Subgroups'{Intermediate Subgroups!for FpGroups}%824@{`Intermediate Subgroups'!for FpGroups}825826computes and displays all intermediate subgroups between two selected827groups. Requires exactly two selected vertices. See also828"ref:IntermediateSubgroups" in the {\GAP} reference manual.829830\>`Intersection'{Intersection!for FpGroups}@{Intersection!for FpGroups}831832computes and displays the common intersection of the selected vertices.833Requires at least one selected vertex. See also "ref:Intersection" in the834{\GAP} reference manual.835836\>`Intersections'{Intersections!for FpGroups}@{Intersections!for FpGroups}837838computes and displays the pairwise intersections of the selected839vertices. `Intersections' requires at least two selected vertices.840841\>`Low Index Subgroups'{Low Index Subgroups}@{`Low Index Subgroups'}842843pops up a dialog box asking for index limit $k$. It will then do a low844index subgroup search for subgroups of index at most $k$ of the selected845vertex using `LowIndexSubgroupsFpGroup'. If no presentation for the846subgroup associated to the vertex is known a presentation is first847computed using a modified Todd-Coxeter algorithm. `Low Index Subgroups'848requires exactly one selected vertex.849850\>`Normalizers'{Normalizers!for FpGroups}@{`Normalizers'!for FpGroups}851852computes and displays the normalizers of the selected vertices.853`Normalizers' requires at least one selected vertex.854855\>`Prime Quotient'{Prime Quotient}@{`Prime Quotient'}856857pops up a dialog box asking for a prime $p$ and another dialog box asking858for a class $c$. It then computes and displays the largest $p$-quotient859of class $c$ of the selected vertex. If no presentation for the subgroup860associated to the vertex is known a presentation is first computed using861a modified Todd-Coxeter algorithm. It then calls `PrimeQuotient'.862`Prime Quotient' requires exactly one selected vertex.863864\>`Test Conjugacy'{Test Conjugacy}@{`Test Conjugacy'}865866walks through all levels and tests for all pairs of classes, that contain a867selected vertex, whether the groups in the classes are conjugates. If so,868the classes are merged. After these calculations `Rearrange Classes' is869called. Note that conjugacy calculations can take lots of time for finitely870presented groups!871872\>`SelectedGroups to GAP'{SelectedGroups to GAP!for FpGroups}%873@{`SelectedGroups to GAP'!for FpGroups}874875If the user selects this menu entry, the subgroups belonging to the876selected vertices are put into a list which is stored into the variable877`last'. This is equivalent to the statement `SelectedGroups(sheet);;' if878`sheet' contains the graphic sheet object. If {\XGAP} logging is on, then879the normal {\GAP} logging via `LogTo' is also directed to the {\XGAP} log880file.881882\>`InsertVertices from GAP'{InsertVertices from GAP!for FpGroups}%883@{`InsertVertices from GAP'!for FpGroups}884885If the user selects this menu entry, the value of the variable `last' is886used to insert new vertices into the graphic sheet. If `last' is equal to887one subgroup, it is inserted via `InsertVertex'. If `last' is a list of888subgroups, `InsertVertex' is called for all those subgroups. There is no889error issued if one of the entries of `last' is no subgroup. If {\XGAP}890logging is on, then the normal {\GAP} logging via `LogTo' is switched off!891The idea of this is to switch the logging temporarily from {\XGAP} logging892to normal {\GAP} logging between two clicks to ``SelectedGroups to GAP''893and ``InsertVertices from GAP'' respectively.894895\>`Start Logging'{Start Logging!for FpGroups}@{`Start Logging'!for FpGroups}896897After clicking on this menu entry the user is prompted for a filename. From898this point on all commands issued via mouse clicks in the subgroup menu are899logged into that file, such that one can afterwards see ``what happened''900in the {\XGAP} session. The information displayed is the same as in the901info displays in the {\GAP} window.902903\>`Stop Logging'{Stop Logging!for FpGroups}@{`Stop Logging'!for FpGroups}904905A click onto this menu entry stops the {\XGAP} logging.906907\bigskip%908909These menu entries represent only a small selection of the functions of910{\GAP} which the authors of {\XGAP} considered most frequently used. You911can calculate other subgroups from912the {\GAP} command window. See sections "gapxgap" and913"xgapgap" for examples how to transfer information from the graphical914lattice of {\XGAP} to {\GAP} (via `SelectedGroups', see915"GraphicSubgroupLattice, Selecting Vertices") and vice versa (via916`SelectGroups', see "GraphicSubgroupLattice, Selecting Vertices", and917`InsertVertex', see "GraphicSubgroupLattice, Inserting Vertices").918919920%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%921\Section{GraphicSubgroupLattice for FpGroups, Information Menu}922923Placing the pointer inside a vertex (selected or not) and pressing the924*right* mouse button pops up the ``Information'' menu. Clicking on any of925the text lines will compute the corresponding property of the subgroup926$u$ associated with this vertex. Clicking on `close' will close the927``Information'' menu.928929\>`Index'{Index!for FpGroups}@{`Index'!for FpGroups}930931displays the index of $u$ in the whole group.932933\>`IsNormal'{IsNormal!for FpGroups}@{`IsNormal'!for FpGroups}934935checks if $u$ is normal in the whole group.936937\>`IsFpGroup'{IsFpGroup}@{`IsFpGroup'}938939checks if $u$ is a finitely presented group. Note that a subgroup of a940finitely presented group that is defined by a coset table or as kernel941of an epimorphism is *not* automatically known to {\GAP} as a finitely942presented group. This means, that certain algorithms can not be943applied. Use `IsomorphismFpGroup' (see "ref:IsomorphismFpGroup" in the944{\GAP} reference manual) to calculate a finitely presented group and945an isomorphism onto it, if some calculation does not work automatically.946947\>`Abelian Invariants'{Abelian Invariants}@{`Abelian Invariants'}948949computes and displays the abelian invariants of $u$.950951\>`Coset Table'{Coset Table}@{`Coset Table'}952953computes a coset table for $u$.954955\>`IsomorphismFpGroup'{IsomorphismFpGroup}@{`IsomorphismFpGroup'}956957computes a finitely presented group that is isomorphic to $u$ and displays958the number of generators and relators of it.959960\>`Factor Fp Group'{Factor Fp Group}@{`Factor Fp Group'}961962computes the factor group of the whole group by $u$, if $u$ is normal.963964\bigskip%965966Note that the exact result of all these information displays is stored in967the global variable `LastResultOfInfoDisplay' after each operation. So you968can access this easily from the {\GAP} command prompt. It is also returned969as `last' value.970971972%%% Local Variables:973%%% mode: latex974%%% TeX-master: "manual"975%%% End:976977978