%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %W button.tex GAP documentation Joachim Neub"user %% %H $Id: button.tex,v 1.11 2001/03/23 14:58:17 gap Exp $ %% %Y Copyright (C) 1999, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Chapter{Buttons and Menus}
The Coset Table Window will initially show you a coset table with
columns for each of the generators of the presently investigated group
<g> and their inverses, in which only the consequences of giving the
subgroup <h> the coset number $1$ are inserted (so that at the
beginning it has only one row). We have already described in Chapter "The Tables" how to work interactively by mouse clicks in this table.
Also in that chapter (see Sections~"Warnings" and "The Information
Line") we have described the warnings that may appear directly below
the Coset Table and the ``Information Line'' that is placed further
below the coset table.
However the Coset Table Window also provides via buttons and menus
access to much of the functionality offered by {\ITC}.
The Coset Table Window has a row of four buttons at the top: `Sheet',
`Settings', `Close', and `File'. We will refer to these as the *top
buttons*. Clicking one of these will pop up a menu from which you can
select actions in the course of a coset enumeration. You do this by
holding the left mouse button while moving the pointer to the
respective entry in the menu and releasing the mouse button there.
Then the respective action of the program will be executed while the
menu vanishes.
This action may consist in popping up yet another (query) window into
which you have to write further (e.~g. numerical) instructions or in
setting modes for the CE or in immediately performing certain changes
in the coset table and other tables.
This way of selecting actions may be felt to be uncomfortable and
hence for convenience the most frequently used actions occurring
during a coset enumeration can be prompted more directly by clicking
one of 18 buttons provided at the bottom of the Coset Table Window.
We will refer to these as the *bottom buttons*.
In the section ``The Top Buttons'' ("The Top Buttons") we will describe
the menus belonging to the buttons at the top of the coset table.
In a further section ``The Bottom Buttons'' ("The Bottom Buttons") we
will describe the use of the bottom buttons.
Many of the windows to be described will contain two further buttons
`ok' and `cancel'. Clicking `ok' means that you want the order
executed that is described in the window while `cancel' means that you
do not want this execution. In any case, having pressed one of this
buttons, you will afterwards return to where you called this window
from.
Note that *buttons* are in general clicked with the *left* mouse
button.
There is one exception where clicking a bottom button with the
*right* mouse button will have an effect namely with showing the
definitions made. This is explained in the description of the effect
of the bottom button `show defs' (see~"show defs").
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{The Top Buttons}
*Button* `Sheet'
Note: *This button also appears as a top button in each of the
``display windows''*.
Display windows (see Section~"How does it work?") are opened by
clicking the following bottom buttons of the Coset Table Window:
`show rels' (see~"show rels"), `show subgrp' (see~"show subgrp"),
`show defs' (see~"show defs"), `show gaps' (see~"show gaps"), and
`show coincs' (see~"show coincs"), as well as in the display window
opened by clicking the menu entry `show current settings' in the
menu popped up via the top button `Settings' (see~"show current
settings").
The menu popped up by the button `Sheet' has only two entries:
\beginitems
\>`save as postscript'{save as postscript} &
This allows you to save the contents of the respective window (e.~g.
the Coset Table Window) as a PostScript file. Releasing the left
mouse button on this entry will pop up a further menu which allows you
to enter the name of the file to which you want this to be written.
You are assisted doing this by a list of names of files that exist in
your directories, and from which you can choose. The menu also offers
you three more buttons: `ok', `cancel', and `home'. Choosing `home'
will insert the name of your home directory into the provided field
while `ok' starts the action after you have finished the name of the
target file, and `cancel' brings you back to the window in which you
clicked the button `Sheet'.
\>`close graphic sheet'{close graphic sheet} &
This closes the display window and brings you back to the window from
which you had opened it.
\enditems
*Button* `Settings'
The menu popped up by this button has ten entries. Two of these allow
one to influence the size of the table provided for the coset
enumeration. Seven further ones allow one to turn on or off certain
modes to be followed during the enumeration. These modes can be
turned on or off at the beginning, but can also be changed later on
during the enumeration. The last menu entry allows one to open a window
in which the presently set parameters and modes are shown.
\beginitems
\>`change default table size'{change default table size} &
This opens a query window (see Section "How does it work?") in which
you can change the default table size from the original value of
1000 to any positive integer you want by typing the desired size
into a field provided for this purpose, but consider that
unnecessarily high values may cause garbage collections. Clicking
`ok' means that you accept the value now given in the field and return
to the Coset Table Window, clicking `cancel' brings you back there
without having changed the existing default table size. You can
change your decision by going to that window again. Note that
changing the default value while a CE is under the way does not change
the present table size. If you want to or have to change the table
size during a coset enumeration, you can use the next menu entry
`extend table size' (see~"extend table size").
\>`extend table size'{extend table size} &
The text in the query window (see Section "How does it work?") tells
you the present table size and proposes twice that size as the value
to which it should be changed. You can again alter that value. `ok'
and `cancel' have the same meaning as before.
\enditems
Note that an analogous window for extending the table size will spring
up if in the coset enumeration you have exhausted the preset table
size. If you extend the table size and leave by clicking `ok' the CE
will immediately be resumed with the extended table size being
provided. If you do not extend the table size in such a case, {\ITC}
will refuse to accept or make further definitions. If you then extend
the table size using `extend table size' as described in "extend table
size" the calculation can be resumed but must be restarted again.
\beginitems
\>`coincidence handling off'{coincidence handling off} \>`coincidence handling on'{coincidence handling on} &
{\ITC} allows one to follow stepwise the handling of coincidences if such
occur. Since however this can be a fairly slow procedure that one
might not want to follow in detail, this feature can be turned on and
off by these two menu entries. If coincidence handling is switched
off any process will automatically come to a halt as soon as a
coincidence is encountered. At that time a window with the list of
pending coincidences will spring up and can then be used to eliminate
coincidences one by one in any wanted sequence ``by hand'' (see "The
List of Pending coincidences"). Also in the coset table (in addition
to the last definition made) all rows get marked in red that are up
for elimination. Note that while coincidences are pending the same
coset number can occur more than once in a column of an {\ITC} Coset
Table. By default coincidence handling will be switched on if you
start with a new group from the {\GAP} window, however if you make a
new attempt with the same group having finished the last one by the
`clear' button (see~"clear") you will retain the previous choice.
\>`echo on'{echo on} \>`echo off'{echo off} &
When you use a mouse click to perform any of the operations of {\ITC}
this will be documented by a line of the form `gap>
PointerButtonDown($x$,$y$,...)' or `gap> MenuSelected($u$,$v$,...)'
in the {\GAP} window, where e.~g. the integers $x$, $y$, ... specify
the position in the window in which you have clicked. This,
however, does not help you easily to understand what you have done. It
is not even helpful for re-doing what you have done, because in a
repeat the windows may sit in different places. On the other hand in
a long interactive run you may want to be able to reconstruct your
actions, be it -- horribile dictu -- that you have run into a bug that
you want to report, or - rather better - that by a stroke of luck you
found the result in a particularly nice and short way. For this
purpose you can click the menu entry `echo on'. Having done this
the {\GAP} window will after each of these rather ununderstandable
messages print with the prefix `>>' readable information on the button
or menu entry, respectively, that you had clicked, in many cases
simply the text written in that button or menu entry. Since you can
write in parallel everything occurring in the {\GAP} window to a file
using the `LogTo' command (see~"ref:LogTo" in the {\GAP} reference
manual) you can thus keep a record of your interactive actions. If
you do not want this feature, you can switch it off again.
\>`gaps strategy 1 (first gap)'{gaps strategy 1} \>`gaps strategy 2 (first rep of max weight)'{gaps strategy 2} \>`gaps strategy 3 (last rep of max weight)'{gaps strategy 3} &
These strategies have been explained in Section "Some definition
Strategies". You have the option to *preset the strategy* of
selecting the next gap of length 1 using these menu entries. Then
they can be executed using the bottom button `fill gaps' (see~"fill
gaps"). In the query window opened by clicking this bottom button
you can prescribe *how many* ``fill gaps'' steps you want to make
following the preset strategy. By default strategy 1 will be chosen.
\>`show current settings'{show current settings} &
Selecting this menu entry opens a display window in which the chosen
default table size and the current table size as well as the choices
of modes (`coincidence handling on/off' and `echo on/off') and of the
strategy for choosing the next gap of length 1 are shown. As long as
this window remains open it will be updated whenever any of these
values is changed.
\enditems
*Button* `Close'
The menu popped up by this button allows one to choose various strategies
for trying to finish the coset enumeration. The present menu entries
are
\beginitems
\>`close table by Felsch'{close table by Felsch} \>`use gaps strategy 1 (first gap)'{use gaps strategy 1} \>`use gaps strategy 2 (first rep of max weight)'{use gaps strategy 2} \>`use gaps strategy 3 (last rep of max weight)'{use gaps strategy 3} \>`close table by HLT'{close table by HLT} &
All these have been described in principle in Section "Some Definition
Strategies". Note however that the ``closing gaps of length 1''
strategies automatically use Felsch steps if and as long as no gap of
length 1 exists at a certain stage. If you want to see exactly how
this happens you have to use the `fill gaps' command (see~"fill gaps")
with some high number of wanted steps and to help it with Felsch steps
thrown in interactively if it gets stuck because of lack of gaps of
length 1. We will demonstrate this in the first of the examples.
Note that all but the first strategy do not guarantee the Mendelsohn
Condition.
\enditems
*Button* `File'
The menu popped up by this button has three entries which concern
reading from and writing to files important information that may have
been obtained by a longer interactive coset enumeration:
\beginitems
\>`read definitions from file'{read definitions from file} & \index{definition!read from file}%
Releasing the mouse button at this entry opens a query window (see
Section "How does it work?") in which you can write the name of the
file. You are assisted in doing that by a list of names of files that
exist in your directories, from which you can choose. Note that this
choice is disabled (and the menu text `read definitions from file'
coloured grey instead of black) as soon as you have started a coset
enumeration so that reading in another definiton sequence does not
make sense any longer.
\>`write definitions to file'{write definitions to file} & \index{definition!write to file}%
If you have constructed a definition sequence that you want to keep in
order to possibly reuse it, you can write this definition sequence to
a file. Releasing the mouse button at this entry opens a query window
(see Section "How does it work?") in which you can write the name of
the file. Again you are assisted by being offered some filenames from
which you can choose. Note that a definition sequence can be written
to a file at any time during a CE, so that you can use it to proceed
in different ways from a certain state that you have reached. However
note that this menu entry is disabled (and the menu text `write
definition to file' coloured grey instead of black) as long as no
definition sequence exists yet.
\>`write standardized table to file'{write standardized table to file} &
As mentioned e.~g. also in Section "the Information Line" there is no
renumbering of coset numbers in case some of them are eliminated by
the handling of coincidences. That means that at the end of a coset
enumeration that did involve handling of coincidences the coset
numbers will form a sequence of natural numbers that starts with $1$
but has ``holes''. This is inconvenient, in particular if one wants to
consider the columns of the coset table as the permutations of the
cosets under right multiplication by the respective generator (or
inverse generator). Therefore after a CE has finished it is possible
to write a standardized coset table (in which in particular the coset
numbers now run from $1$ to the index of <h> in <g>) to a file, which
then can be processed in any wanted way by {\GAP}. Releasing the mouse
button at this entry will open a query window (see Section "How does
it work?") in which you can write the name of this file. Again you are
assisted by being offered file names from which you may choose. Note
that this menu entry is disabled and the text `write standardized
table to file' coloured grey instead of black as long as the tables
have not closed. That is, only closed coset tables can be
standardized by {\ITC}.
A coset table that has been written this way to a file with name
<filename> can be read into {\GAP} and assigned to a variable <costab>
via \) <costab>:= ReadAsFunction( <filename> )();
The different kind of functionality of these 18 buttons is
to some extent indicated by their colours.
The first two (blue) buttons just allow one to scroll to the lines of
the coset table that one wants to work with, if it contains more than
30 ``alive'' rows.
\beginitems
\>`scroll to'{scroll to} &
Upon clicking this button a query window (see Section "How does it
work?") will be opened in which you can specify *by its number* the
row in the Coset Table that you want to see. The Coset Table will be
scrolled up or down in such a way that the wanted row appears in the
middle of the displayed part of the Coset Table. As a default, the number of the last still alive row of the Coset Table will be offered
to you. If the specified coset number is no longer ``alive'' the
maximal alive coset number below the specified one is taken instead.
Any displayed Relation Tables or the Table of Definitions will be
scrolled in parallel to the Coset Table.
\>`scroll by'{scroll by} &
Upon clicking this button a query window (see Section~"How does it
work?") will be opened in which you can enter into a field provided
for the purpose the number of rows by which you want to scroll up or
down in the coset table. Positive integers mean scrolling up, that is
to higher coset numbers, negative integers mean scrolling down, that
is to lower coset numbers. Originally the value 20 (that you may
change) is offered in this field. If you click this button a second
time, the number that you had accepted last time will be offered
again, thus allowing you to glance through the Coset Table at certain
intervals without having to type in a new number each time, Note that
here *actual rows shown in the tables* are counted. That is, if some
rows have been suppressed by coincidence handling they are not
counted, so that you may end up with rows of higher numbers than you
expected. Any displayed Relation Tables or the Table of Definitions
will be scrolled in parallel to the Coset Table.
\enditems
The next seven (green) buttons all give access to certain strategies
to be followed through several steps in a coset enumeration. See
Section~"Some Definition Strategies" for details.
\beginitems
\>`Felsch'{Felsch} &
The ``Felsch'' strategy for performing a coset enumeration makes a
sequence of definitions by row-wise filling empty places in the coset
table and by searching for all consequences after each definition
which are then immediately worked in as well as all coincidences that
may be found. Upon clicking this button a query window (see Section "How does it work?") will be opened, in which you can choose how many
definitions you want to have made following this strategy. As default
(that you can change) the number 1 is offered; choosing this is
hence tantamount to making a definition in the first empty place in
the coset table in a row-wise scan.
\>`HLT'{HLT} &
The ``HLT'' strategy proceeds by filling rows of Subgroup and Relation
Tables (see Section~"Some Definition Strategies" and note in
particular that as explained there the HLT strategy of {\ITC} deviates
in some respect from what is usually meant by the term). Upon
clicking this button a query window (see Section~"How does it work?")
is opened in which you can specify how many definitions you want to
make using this strategy. If you want to *close* the tables using a
HLT strategy, you can use the menu entry `close table by HLT' ("close
table by HLT") in the menu opened by the top button `Close'.
\>`fill rows'{fill rows} &
This button allows you to fill at once in all Relation and Subgroup
Tables all rows that belong to one or more prescribed coset numbers.
Upon clicking this button a query window (see Section~"How does it
work?") will be opened in which you can specify the wanted coset
numbers, separated by commas. As a default the smallest number $i$ is
offered for which not all $i$th rows of Relation and Subgroup Tables
are filled yet. Note that you can only fill rows that do exist, that
is rows of a coset number that has already been defined and has not
been eliminated by coincidence handling. If you violate this
condition, your order will be ignored. If you want to fill a row only
in a particular Subgroup or Relation Table or in the Coset Table you
can do this by clicking at the beginning of the respective row
(see~"The Coset Table" and "The Relation Tables"). Specifying the
(non-existing) coset number 0 allows you to fill just the (first and
only) rows of the Subgroup Tables without filling rows in any of the
Relation Tables.
\>`fill gaps'{fill gaps} &
Closing rows in relation or subgroup tables in which only one place is
open, is the easiest way to get immediate consequences. Such empty
places are called *gaps of length~1*. Often several choices of such
``gaps of length 1'' to be closed are possible and {\ITC} offers
various strategies to make this choice (see Section~"Some Definition
Strategies"). (Remember -- compare Section~"Some Definition
Strategies" -- : by inspecting the Relation Tables that you can
display by {\ITC} you may not see all these gaps of length 1, since
{\ITC} does not display all the relation tables that can be obtained
by cyclic permutation of the relators in the given presentation.)
These strategies can be set via the top button `Settings' (see~"gaps
strategy 1"); by default strategy 1 will have been set. Clicking
the button `fill gaps' will open a query window (see Section "How does
it work?"), in which you can specify how many times you want to close
a gap of length 1 that is chosen by the selected strategy. By
clicking the button `show gaps' (see~"show gaps") you can learn which
gaps of length 1 are open at a given time. However note that by
closing a particular gap of length 1 often new gaps of length 1
will be created, so that by entering a number, say $ng$, bigger than
the number of presently existing gaps of length 1 into this window
you will start off what might be called a ``pure minimal gap strategy''.
This is often a very good strategy, however by the theory about the
Todd-Coxeter method it is not guaranteed that such a ``pure minimal gap
strategy'' must terminate, even if the index of <h> in <g> is finite
since the so called Mendelsohn Condition might be violated (see \cite{Neu82}). If you click this button while no gaps of length 1
exist, a warning `There are no gaps of length 1' will appear in red
below the coset table. If the process runs out of gaps of length 1
before $ng$ of such gaps have been closed, the process will stop and a
warning `There are no more gaps of length 1' will appear in red below
the Coset Table. Note that the strategies for *closing* the tables by
filling gaps of length 1 that are offered in the menu of the top
button `Close' are not ``pure minimal gap strategies'', they throw in
Felsch type definitions if no gaps of length 1 exist (see~"use gaps
strategy 1").
\>`back to'{back to} &
In experimenting with various definition sequences you may want to
retrace to a certain point in your procedure. This is offered by this
button. Upon clicking it a query window (see Section~"How does it
work?") is opened that allows you to retrace *to the situation after
defining the coset number that you enter into a given field*. The
default offered is to retrace by just one step by offering the
last-but-one defined coset number. If you enter a *negative* integer,
the CE process is retraced *by* a number of definitions that is the
absolute value of the negative integer that you had entered.
\>`sort defs'{sort defs}& \index{definition!sorting}%
Clicking this button will directly apply the ``Sorting
Definitions'' method (see Section~"Sorting Definitions") to the Coset
Table. Note that this button is disabled if the tables have not
closed. You may sometimes observe during the running of this method
that the number `Defined' in the Information Line is decreasing. When
the method has come to an end this will be indicated in the
Information Line by the (red) text `Tables sorted'.
\>`short-cut'{short-cut} &
As already pointed out in Section "The Short-cut Method", the number of
coincidences encountered before all tables close may strongly depend
on the definition sequence (the strategy followed). Once closure has
been reached, the definition sequence that has led to the result is
kept, and in case coincidences have occurred one may try to use it for
finding a shorter definition sequence that also leads to the result.
An algorithm that tries to do this has been developed by Volkmar
Felsch. This ``Short-cut'' method is described in Section "The
Short-cut Method", here we just mention that it goes through various
cycles that each may reduce the number of still needed definitions.
By clicking the button `short-cut' a query window (see Section "How
does it work?") is opened in which you can specify the number of
cycles of the Short-cut method to be performed or can decide to let it
run until it terminates having exhausted all its (finitely many)
possibilities. This stepwise reduction can be observed in the
Information Line (see~"The Information Line") where the number of
defined cosets keeps changing, and the number of cycles of the method
performed so far is displayed, until the algorithm stops. While the
reduction achieved is often quite remarkable it should be understood
that no guarantee is given that the absolute minimum of needed
definitions will be found. In fact by experimenting with this feature
you can see that the final number of definitions after this ``pruning''
can depend on the sequence of definitions from which you start. Note
that you can inspect the definition sequence before and after this
pruning using the bottom button `show defs' ("show defs"). Note that
the Short-cut method can only be applied after tables have *closed*,
if you try to invoke it before this has been achieved, a warning `The
tables have not closed' flashes up in red below the Coset Table and
nothing happens.
\enditems
Of the six white buttons five allow you to open further ``display''
windows (see Section "How does it work?"), in which additional
information about the state of the coset enumeration is shown. Note
that clicking the same button a second time will close the
corresponding display window.
\beginitems
\>`show rels'{show rels} &
Clicking this button opens a window that shows the ``List of Relators''
(see~"The List of relators" for operating this). Note that thus it
indirectly gives access to the Relation Tables (see Section~"The
Relation Tables").
\>`show subgrp'{show subgrp} &
Clicking this button opens a window that shows the List of Subgroup
Generators (see~"The List of Subgroup Generators" for operating this).
Note that it thus indirectly gives access to the Subgroup Tables
(see~"The Subgroup Tables"). If no subgroup generators are given, that
is if you try to enumerate the cosets of the trivial subgroup, no window
is opened but the warning `There are no subgroup generators' flashes
up in red below the Coset Table.
\>`show defs'{show defs} & \index{definition!show}%
Clicking this button with the *left* mouse button opens a window that
shows the Table of Definitions (see~"The Table of Definitions").
Clicking with the *right* mouse button will instead colour in the
Coset Table all those entries green in which the respective coset number was defined in the present definition sequence. We hope that
seeing the distribution of the definitions in the coset table may be
of interest in particular if such a definition sequence has been
obtained by use of the Short-cut method (see "short-cut" and "The
Short-cut Method").
\>`show gaps'{show gaps} &
Clicking this button opens a window showing a list of
``representatives'' of the equivalence classes of presently known gaps
of length 1. See Section~"Some Definition Strategies" and
Section~"The List of Length 1 Gaps" for a description of the structure
and meaning of that list as well as for the operations that can be
started by clicking in that list. If no gaps of length 1 exist, no
window will be opened, but a warning `There are no gaps of length 1'
will flash up in red below the Coset table.
\>`show coincs'{show coincs} &
If no coincidences are pending upon clicking this button the warning
`There are no pending coincidences' will flash up in red below the
Coset Table. Otherwise clicking this bottom button opens a window
which displays the text `Pending coincidences' and a list of these.
See `The List of Pending Coincidences' (Section "The List of Pending
Coincidences") for a description of the structure and meaning of that
list and the operations that can be started by clicking in that list.
\enditems
The white button
\beginitems
\>`mark cosets'{mark cosets} &
allows one to mark certain cosets (in green colour) in all tables in
order to see easily where they occur. Clicking this bottom button
opens a query window (see Section "How does it work?") in which you
can enter the coset numbers (separated by commas) that you want to get
coloured. Entering an empty sequence of coset numbers to be marked
will erase any markings.
\enditems
There are finally three red buttons, which allow you to leave your
present calculation with {\ITC} in various ways.
\beginitems
\>`clear'{clear} &
Clicking this bottom button will clear all the tables from all
entries constructed in the coset enumeration, while keeping the group
and subgroup that you had entered into {\GAP}, so that you can directly
start anew with the same problem. The table size will be reset to the
default table size, but otherwise settings defined during the last
run, for instance whether coincidence handling is switched on or off,
will remain, that is, not automatically be set to their default
values. Remember that you can inspect the present settings in the
window opened via the menu entry `show current settings' ("show
current settings").
\>`reset'{reset} &
This works similarly to `clear' except that all settings will be reset
to their default values. Remember again that you can inspect the
present settings in the window opened via the menu entry `show current
settings' ("show current settings").
\>`quit'{quit} &
This closes all windows and just brings you back to the GAP
window. In a new start of {\ITC} all switches will be set to their
default values. The group that you had handled will still be available
as a {\GAP} object.
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.