Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Firefox/taskcluster/scripts/misc/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 10.2.2025 mit Größe 567 B image not shown  

Quelle  CHAP001.htm   Sprache: HTML

 
 products/Sources/formale Sprachen/GAP/pkg/ace/htm/CHAP001.htm


<html><head><title>[ACE] 1 The ACE Package</title></head>
<body text="#000000" bgcolor="#ffffff">
[<a href = "chapters.htm">Up</a>] [<a href ="CHAP002.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
<h1>1 The ACE Package</h1><p>
<P>
<H3>Sections</H3>
<oL>
<li> <A HREF="CHAP001.htm#SECT001">Using ACE as a Default for Coset Enumerations</a>
<li> <A HREF="CHAP001.htm#SECT002">Using ACE Directly to Generate a Coset Table</a>
<li> <A HREF="CHAP001.htm#SECT003">Using ACE Directly to Test whether a Coset Enumeration Terminates</a>
<li> <A HREF="CHAP001.htm#SECT004">Writing ACE Standalone Input Files to Generate a Coset Table</a>
<li> <A HREF="CHAP001.htm#SECT005">Using ACE Interactively</a>
<li> <A HREF="CHAP001.htm#SECT006">Accessing ACE Examples with ACEExample and ACEReadResearchExample</a>
<li> <A HREF="CHAP001.htm#SECT007">General Warnings regarding the Use of Options</a>
<li> <A HREF="CHAP001.htm#SECT008">The ACEData Record</a>
<li> <A HREF="CHAP001.htm#SECT009">Setting the Verbosity of ACE via Info and InfoACE</a>
<li> <A HREF="CHAP001.htm#SECT010">Acknowledgements</a>
<li> <A HREF="CHAP001.htm#SECT011">Changes from earlier versions</a>
</ol><p>
<p>
<a name = "I0"></a>

The ``Advanced Coset Enumerator'' <font face="Gill Sans,Helvetica,Arial">ACE</font>:
<p>
<pre>
ACE coset enumerator (C) 1995-2001 by George Havas and Colin Ramsay
</pre>
<a href="http://staff.itee.uq.edu.au/havas">http://staff.itee.uq.edu.au/havas</a>
<p>
can  be called  from within  <font face="Gill Sans,Helvetica,Arial">GAP</font> through  an interface,  written by
Alexander Hulpke and Greg Gamble, which is described in this manual.
<p>
The interface links to an external binary and therefore is only usable
under UNIX (see  Section <a href="CHAP002.htm#SECT001">Installing  the  ACE  Package</a>  for  how  to
install  <font face="Gill Sans,Helvetica,Arial">ACE</font>).  It  will  not  work  on  Windows.
The current version requires at least <font face="Gill Sans,Helvetica,Arial">GAP</font> 4.4.
<p>
<ul>
<p>
<li> one may supplant the  usual  <font face="Gill Sans,Helvetica,Arial">GAP</font>  coset  enumerator  (see
Section <a href="CHAP001.htm#SECT001">Using ACE as a Default for Coset Enumerations</a>),
<p>
<li>  one  may  generate  a  coset  table  using  <font face="Gill Sans,Helvetica,Arial">ACE</font>  without
redefining the usual <font face="Gill Sans,Helvetica,Arial">GAP</font> coset enumerator (see  Section <a href="CHAP001.htm#SECT002">Using  ACE Directly to Generate a Coset Table</a>),
<p>
<li> one  may  simply  test  whether  a  coset  enumeration  will
terminate (see Section <a href="CHAP001.htm#SECT003">Using ACE Directly to  Test  whether  a  Coset Enumeration Terminates</a>),
<p>
<li> one may  use  <font face="Gill Sans,Helvetica,Arial">GAP</font>  to  write  a  script  for  the  <font face="Gill Sans,Helvetica,Arial">ACE</font>
standalone  (see  Section <a href="CHAP001.htm#SECT004">Writing  ACE  Standalone  Input  Files   to Generate a Coset Table</a>), and
<p>
<li> one may interact with  the  <font face="Gill Sans,Helvetica,Arial">ACE</font>  standalone  from  within
<font face="Gill Sans,Helvetica,Arial">GAP</font> (see Section <a href="CHAP001.htm#SECT005">Using ACE Interactively</a>).  Among  other  things,
the   interactive   <font face="Gill Sans,Helvetica,Arial">ACE</font>   interface   functions    (described    in
Chapter <a href="CHAP006.htm">Functions for Using ACE Interactively</a>) enable  the  user  to
search for subgroups of a group (see the note  of  Section <a href="CHAP001.htm#SECT005">Using  ACE Interactively</a>).
<p>
</ul>
<p>
Each of these ways gives the user access to a welter of options, which
are discussed in full  in  Chapters <a href="CHAP004.htm">Options  for  ACE</a>  and <a href="CHAP005.htm">Strategy Options for ACE</a>. Yet more options are provided in Appendix <a href="CHAP00D.htm">Other ACE Options</a>,  but  please  take  note  of  the  Appendix's introductory
paragraph. Check out Appendix <a href="CHAP00B.htm">Examples</a> for numerous examples of  the
<font face="Gill Sans,Helvetica,Arial">ACE</font> commands.
<p>
<strong>Note</strong>: Some care needs to be taken with  options;  be  sure  to  read
Section <a href="CHAP001.htm#SECT007">General Warnings  regarding  the  Use  of  Options</a>  and  the
introductory sections of Chapter <a href="CHAP004.htm">Options for ACE</a> for  some  warnings
regarding them and a general discussion of their use, before using any
of the functions provided by this interface to the <font face="Gill Sans,Helvetica,Arial">ACE</font> binary.
<p>
<p>
<h2><a name="SECT001">1.1 Using ACE as a Default for Coset Enumerations</a></h2>
<p><p>
After loading <font face="Gill Sans,Helvetica,Arial">ACE</font> (see Section <a href="CHAP002.htm#SECT002">Loading the ACE Package</a>),  if  you
want to use the <font face="Gill Sans,Helvetica,Arial">ACE</font> coset enumerator as a  default  for  all  coset
enumerations done by <font face="Gill Sans,Helvetica,Arial">GAP</font> (which may also  get  called  indirectly),
you can achieve this  by  setting  the  global  variable  <code>TCENUM</code>  to
<code>ACETCENUM</code>.
<p>
<pre>
gap> TCENUM:=ACETCENUM;;

</pre>
<p>
This    sets    the    function    <code>CosetTableFromGensAndRels</code>    (see
Section <a href="../../../doc/ref/chap47.html#X7BD0CEBA7B225416">Coset  Tables  and  Coset  Enumeration</a>  in  the   <font face="Gill Sans,Helvetica,Arial">GAP</font>
Reference Manual) to be  the  function  <code>ACECosetTableFromGensAndRels</code>
(described in Section <a href="CHAP001.htm#SECT002">Using ACE Directly to Generate a Coset Table</a>),
which then can be called with all the options defined for  the  <font face="Gill Sans,Helvetica,Arial">ACE</font>
interface, not just the options <code>max</code> and <code>silent</code>. If <code>TCENUM</code> is set
to <code>ACETCENUM</code> without any  further  action,  the  <code>default</code>  strategy
(option) of the <font face="Gill Sans,Helvetica,Arial">ACE</font> enumerator will be used (see  Chapter <a href="CHAP005.htm">Strategy Options for ACE</a>). This and other options can be modified in the  ways 
described in Chapter <a href="CHAP004.htm">Options for ACE</a>. For instance,
<p>
<pre>
gap> FactorCosetAction(G,H : workspace:=10^9);

</pre>
<p>
will result in <font face="Gill Sans,Helvetica,Arial">ACE</font> called with workspace of size 10<sup>9</sup>, instead of
the default value.
<p>
You can switch back to the coset  enumerator  built  into  the  <font face="Gill Sans,Helvetica,Arial">GAP</font>
library by assigning <code>TCENUM</code> to <code>GAPTCENUM</code>.
<p>
<pre>
gap> TCENUM:=GAPTCENUM;;

</pre>
<p>
<p>
<h2><a name="SECT002">1.2 Using ACE Directly to Generate a Coset Table</a></h2>
<p><p>
If, on the other hand you do not want to set up  <font face="Gill Sans,Helvetica,Arial">ACE</font>  globally  for
your coset enumerations, you may call the <font face="Gill Sans,Helvetica,Arial">ACE</font>  interface  directly,
which will allow you to decide for yourself, for each such call, which
options you want to use for running <font face="Gill Sans,Helvetica,Arial">ACE</font>. Please note  the  warnings
regarding options in Section <a href="CHAP001.htm#SECT007">General Warnings regarding  the  Use  of Options</a>. The functions discussed in this and  the  following  section
(<code>ACECosetTableFromGensAndRels</code> and <code>ACEStats</code>)  are  non-interactive,
i.e. by their use, a file with your  input  data  in  <font face="Gill Sans,Helvetica,Arial">ACE</font>  readable
format will be handed to <font face="Gill Sans,Helvetica,Arial">ACE</font> and you will get the  answer  back  in
<font face="Gill Sans,Helvetica,Arial">GAP</font> format. At that moment however the <font face="Gill Sans,Helvetica,Arial">ACE</font>  job  is  terminated,
that is, you cannot send any further questions or requests  about  the
result of that job to <font face="Gill Sans,Helvetica,Arial">ACE</font>. For an interactive use  of  <font face="Gill Sans,Helvetica,Arial">ACE</font>  from
<font face="Gill Sans,Helvetica,Arial">GAP</font> see Section <a href="CHAP001.htm#SECT005">Using ACE  Interactively</a>  and  Chapter <a href="CHAP006.htm">Functions for Using ACE Interactively</a>.
<p>
Using the <font face="Gill Sans,Helvetica,Arial">ACE</font> interface directly to generate a coset table is  done
by either of
<p>
<a name = "I1"></a>

<a name = "SSEC002.1"></a>
<li><code>ACECosetTableFromGensAndRels( </code><var>fgens</var><code>, </code><var>rels</var><code>, </code><var>sgens</var><code> [: </code><var>options</var><code>] ) F</code>
<a name = "SSEC002.1"></a>
<li><code>ACECosetTable( </code><var>fgens</var><code>, </code><var>rels</var><code>, </code><var>sgens</var><code> [: </code><var>options</var><code>] ) F</code>
<p>
Here <var>fgens</var> is a list of free generators, <var>rels</var> a list of  words  in
these generators giving relators for a finitely presented  group,  and
<var>sgens</var> the list of subgroup generators, again expressed as  words  in
the free generators. All these are given in the standard <font face="Gill Sans,Helvetica,Arial">GAP</font> format
(see Chapter <a href="../../../doc/ref/chap47.html#X7AA982637E90B35A">Finitely Presented Groups</a> of the  <font face="Gill Sans,Helvetica,Arial">GAP</font>  Reference
Manual). Note that the 3-argument form  of  <code>ACECosetTable</code>  described
here is merely a synonym for <code>ACECosetTableFromGensAndRels</code>, and  that
<code>ACECosetTable</code> may be called in a different  way  in  an  interactive
<font face="Gill Sans,Helvetica,Arial">ACE</font>    session    (see    Sections <a href="CHAP001.htm#SECT005">Using    ACE     Interactively</a>
and <a href="CHAP006.htm#SSEC006.1">ACECosetTable!interactive</a>).
<p>
Behind the colon any  selection  of  the  options  available  for  the
interface (see Chapters <a href="CHAP004.htm">Options for ACE</a>  and <a href="CHAP005.htm">Strategy  Options  for ACE</a>) can be given, separated by commas like record components.  These
can be used e.g. to preset limits of space and time  to  be  used,  to
modify input and output and to modify the enumeration procedure.  Note
that strategies are simply special options that set a  number  of  the
options, detailed in Chapter <a href="CHAP004.htm">Options for ACE</a>, all at once.
<p>
Please see Section <a href="CHAP001.htm#SECT007">General Warnings regarding the Use of Options</a> for
a discussion regarding global and local passing of  options,  and  the
non-orthogonal nature of <font face="Gill Sans,Helvetica,Arial">ACE</font>'s options.
<p>
Each of <code>ACECosetTableFromGensAndRels</code> and <code>ACECosetTable</code>  calls  the
<font face="Gill Sans,Helvetica,Arial">ACE</font> binary and, if successful, returns a standard coset table, as a
<font face="Gill Sans,Helvetica,Arial">GAP</font> list of  lists.  At  the  time  of  writing,  two  coset  table
standardisations schemes were possible: <code>lenlex</code> and <code>semilenlex</code> (see
Section <a href="CHAP003.htm#SECT004">Coset Table Standardisation Schemes</a>). The user  may  control
which standardisation scheme is used by selecting either the  <code>lenlex</code>
(see <a href="CHAP004.htm#SSEC011.4">option  lenlex</a>)  or  <code>semilenlex</code>   (see <a href="CHAP004.htm#SSEC011.5">option   semilenlex</a>)
option;  otherwise  the  table  is  standardised according to <font face="Gill Sans,Helvetica,Arial">GAP</font>'s
the  value  of  <code>CosetTableStandard</code>  (which  by default is <code>lenlex</code>).
We provide  <code>IsACEStandardCosetTable</code>  (see <a href="CHAP001.htm#SSEC002.2">IsACEStandardCosetTable</a>)
to determine whether a table (list of lists) is standard  relative  to
<font face="Gill Sans,Helvetica,Arial">GAP</font>'s default standardisation scheme, or with the use of options
(e.g. <code>lenlex</code> or <code>semilenlex</code>) to another standardisation scheme.
<p>
If the determination of a coset table is unsuccessful, then one of the
following occurs:
<p>
<ul>
<p>
<li> with the <code>incomplete</codeoption  (see <a href="CHAP004.htm#SSEC011.6">option  incomplete</a>)  an
incomplete coset table is returned (as a list of lists), with zeros in
positions where valid coset numbers could not be determined; or
<p>
<li> with the <code>silent</codeoption (see <a href="CHAP004.htm#SSEC011.3">option  silent</a>),  <code>fail</code>  is
returned; or
<p>
<li> a  <code>break</code>-loop  is  entered.  This  last   possibility   is
discussed in detail via the example that follows.
<p>
</ul>
<p>
The example given  below  is  the  call  for  a  presentation  of  the
Fibonacci group F(2,7) for  which  we  shall  discuss  the  impact  of
various options in Section <a href="CHAP00B.htm#SECT004">Fun with ACEExample</a>. Observe that in  the
example, no options are passed,  which  means  that  <font face="Gill Sans,Helvetica,Arial">ACE</font>  uses  the
<code>default</code> strategy (see Chapter <a href="CHAP005.htm">Strategy Options for ACE</a>).
<p>
<pre>
gap> F:= FreeGroup( "a""b""c""d""e""x""y");;
gap> a:= F.1;; b:= F.2;; c:= F.3;; d:= F.4;; e:= F.5;; x:= F.6;; y:= F.7;;
gap> fgens:= [a, b, c, d, e, x, y];;
gap> rels:= [ a*b*c^-1, b*c*d^-1, c*d*e^-1, d*e*x^-1,
>             e*x*y^-1, x*y*a^-1, y*a*b^-1];;
gap> ACECosetTable(fgens, rels, [c]);;

</pre>
<p>
<a name = "I2"></a>

In computing  the  coset  table,  <code>ACECosetTableFromGensAndRels</code>  must
first do a coset enumeration (which is where <font face="Gill Sans,Helvetica,Arial">ACE</font> comes in!). If the
coset enumeration does not finish in the preset limits a  <code>break</code>-loop
is entered,  unless  the  <code>incomplete</code>  (see <a href="CHAP004.htm#SSEC011.6">option  incomplete</a>)  or
<code>silent</code> (see <a href="CHAP004.htm#SSEC011.3">option silent</a>) options is set. In  the  event  that  a
<code>break</code>-loop is entered, don't despair or be frightened by the word
<code>Error</code>; by tweaking <font face="Gill Sans,Helvetica,Arial">ACE</font>'s options via the SetACEOptions function
that becomes available in the <code>break</code>-loop and then  typing  <code>return;</code>
it may be possible to help <font face="Gill Sans,Helvetica,Arial">ACE</font> complete the coset enumeration  (and
hence successfully compute the coset table); if not, you will  end  up
in the <code>break</code>-loop again, and you can have another go (or <code>quit;</code>  if
you've had enough). The SetACEOptions function is a no-argument
function; it's there purely to pass options (which, of course, are
listed behind a colon (<code>:</code>)  with  record  components  syntax).  Let's
continue the Fibonacci example above, redoing  the  last  command  but
with the option <code>max := 2</code>  (see <a href="CHAP004.htm#SSEC017.6">option  max</a>),  so  that  the  coset
enumeration has only two coset numbers to play with and hence is bound
to fail to complete, putting us in a <code>break</code>-loop.
<p>
<a name = "I3"></a>

<pre>
gap> ACECosetTable(fgens, rels, [c] : max := 2);
Error, no coset table ...
 the `ACE' coset enumeration failed with the result:
 OVERFLOW (a=2 r=1 h=1 n=3; l=5 c=0.00; m=2 t=2)
 called from
<function "ACECosetTable">( <arguments> ) called from read-eval-loop
Entering break read-eval-print loop ...
 try relaxing any restrictive options
 e.g. try the `hard' strategy or increasing `workspace'
 type: '?strategy options' for info on strategies
 type: '?options for ACE' for info on options
 type: 'DisplayACEOptions();' to see current ACE options;
 type: 'SetACEOptions(:<option1> := <value1>, ...);'
 to set <option1> to <value1> etc.
 (i.e. pass options after the ':' in the usual way)
 ... and then, type: 'return;' to continue.
 Otherwise, type: 'quit;' to quit to outer loop.
brk> SetACEOptions(: max := 0);
brk> return;
[ [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], 
  [ 1 ], [ 1 ], [ 1 ], [ 1 ] ]

</pre>
<p>
Observe how the lines  after  the  ``<code>Entering  break  read-eval-print
loop</code>'' announcement tell you <strong>exactly</strong> what to  do. At  the  
<code>break</code>-loop  prompt  <code>brk></code>  we  relaxed  all
restrictions on <code>max</code> (by re-setting it to 0) and typed  <code>return;</code>  to
leave the <code>break</code>-loop. The coset  enumeration  was  then  successful,
allowing the computation of what turned out  to  be  a  trivial  coset
table. Despite the fact that the eventual coset  table  only  has  one
line (i.e. there is exactly one coset number)  <font face="Gill Sans,Helvetica,Arial">ACE</font>  <strong>did</strong>  need  to
define more than 2 coset numbers. To  find  out  just  how  many  were
required before the final  collapse,  let's set the InfoLevel of
<code>InfoACE</code> (see <a href="CHAP001.htm#SSEC009.1">InfoACE</a>) to 2, so that the <font face="Gill Sans,Helvetica,Arial">ACE</font> enumeration
result is printed.
<p>
<pre>
gap> SetInfoLevel(InfoACE, 2);
gap> ACECosetTable(fgens, rels, [c]);
#I  INDEX = 1 (a=1 r=2 h=2 n=2; l=6 c=0.00; m=2049 t=3127)
[ [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], 
  [ 1 ], [ 1 ], [ 1 ], [ 1 ] ]

</pre>
<p>
The enumeration result line is the <code>Info</code> line  beginning  ``<code>#I </code>''.
Appendix <a href="CHAP00A.htm">The Meanings of  ACE's Output Messages explains how to
interpret such output messages from <font face="Gill Sans,Helvetica,Arial">ACE</font>. In particular, it explains
that <code>t=3127</code> tells us that a <code>t</code>otal number  of  3127  coset  numbers
needed to be defined before the final  collapse  to  1  coset  number.
Using some of the many options that <font face="Gill Sans,Helvetica,Arial">ACE</font> provides, one  may  achieve
this  result  more  efficiently,  e.g. with   the   <code>purec</code>   strategy
(see <a href="CHAP005.htm#SSEC001.6">option purec</a>):
<p>
<pre>
gap> ACECosetTable(fgens, rels, [c] : purec);
#I  INDEX = 1 (a=1 r=2 h=2 n=2; l=4 c=0.00; m=332 t=332)
[ [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], 
  [ 1 ], [ 1 ], [ 1 ], [ 1 ] ]

</pre>
<p>
<font face="Gill Sans,Helvetica,Arial">ACE</font> needs to define a <code>t</code>otal number of only  (relatively-speaking)
332 coset numbers before the final collapse to 1 coset number.
<p>
<strong>Notes:</strong
To initiate the coset enumeration,  the  <code>start</code>  option  (see <a href="CHAP00D.htm#SSEC003.2">option start</a>) is quietly inserted after the user's supplied options, unless
the user herself supplies one  of  the  enumeration-invoking  options,
which are: <code>start</code>, or one of its synonyms, <code>aep</code>  (see <a href="CHAP00D.htm#SSEC001.1">option  aep</a>)
or <code>rep</code> (see <a href="CHAP00D.htm#SSEC001.2">option rep</a>).
<p>
When  a  user  calls  <code>ACECosetTable</code>   with   the   <code>lenlex</code>   option
(see <a href="CHAP004.htm#SSEC011.4">option  lenlex</a>),  occasionally  it  is  necessary  to   enforce
<code>asis</code>=1 (see <a href="CHAP004.htm#SSEC013.1">option asis</a>), which may be counter to the  desires
of the  user.  The  occasions  where  this  action  is  necessary  are
precisely those for which, for the  arguments  <var>gens</var>  and  <var>rels</var>  of
<code>ACECosetTable</code>,   <code>IsACEGeneratorsInPreferredOrder</code>   would    return
<code>false</code>.
<p>
The non-interactive <code>ACECosetTable</code> and <code>ACECosetTableFromGensAndRels</code>
now use an iostream to communicate with the <font face="Gill Sans,Helvetica,Arial">ACE</fontbinary in order  to
avoid filling up a temporary directory with an incomplete coset  table
in  the  case  where  an  enumeration  overflows.  This  is  generally
advantageous. However, on some systems, it may <strong>not</strong> be  advisable  to
repeatedly  call  <code>ACECosetTable</code>  or   <code>ACECosetTableFromGensAndRels</code>
(e.g. in a loop), since one may run out of the pseudo  ttys  used  for
iostreams. If you encounter this problem, consider using an adaptation
of  the  usage  of  the  interactive  forms  of  <code>ACECosetTable</code>   and
<code>ACEStats</code>                            (see <a href="CHAP006.htm#SSEC006.1">ACECosetTable!interactive</a>
and <a href="CHAP006.htm#SSEC006.2">ACEStats!interactive</a>), together with  <code>ACEStart</code>  initialisation
steps, that is sketched in the schema below. For the  following  code,
it  is  imagined  the  scenario  is  one  of  looping   over   several
possibilities of <var>fgens</var>, <var>rels</var> and <var>sgens</var>; the two special forms of
<code>ACEStart</code> used, allow one to continually re-use a single  interactive
<font face="Gill Sans,Helvetica,Arial">ACE</font> process (i.e. only <strong>one</strong> iostream is used).
<p>
<code># start the interactive ACE process with no group information</code>
<br><code>procId := ACEStart(0);</code>
<br><code>while </code><var>expr</var><code> do</code>
<br><code> fgens := ...; rels := ...; sgens := ...;</code>
<br><code> ACEStart(procId, fgens, rels, sgens : </code><var>options</var><code>);</code>
<br><code> if ACEStats(procId).index > 0 then</code>
<br><code>  table := ACECosetTable(procId);</code>
<br><code>  ...</code>
<br><code> fi;</code>
<br><code>od;</code>
<p>
For an already  calculated  coset  table,  we  provide  the  following
function to determine whether or not it has been standardised.
<p>
<a name = "SSEC002.2"></a>
<li><code>IsACEStandardCosetTable( </code><var>table</var><code> [: </code><var>option</var><code>] ) F</code>
<p>
returns <code>true</code> if <var>table</var> (a list of lists of  integers)  is  standard
according to <font face="Gill Sans,Helvetica,Arial">GAP</font>'s default or the option (either lenlex or
<code>semilenlex</code>)  standardisation  scheme,  or  <code>false</code>  otherwise.   See
Section <a href="CHAP003.htm#SECT004">Coset  Table  Standardisation   Schemes</a>   for   a   detailed
discussion of the <code>lenlex</code> and <code>semilenlex</code> standardisation schemes.
<p>
<strong>Note:</strong>
Essentially, <code>IsACEStandardCosetTable</code>  extends  the  <font face="Gill Sans,Helvetica,Arial">GAP</font>  function
<code>IsStandardized</code>.
<p>
<a name = "I4"></a>

Users who wish their coset tables  to  use  <code>ACECosetTable</code>  with  the
<code>lenlex</code>    (see <a href="CHAP004.htm#SSEC011.4">option     lenlex</a>)     option,     which     causes
<code>lenlex</code> standardisation to occur at the <font face="Gill Sans,Helvetica,Arial">ACE</font> (rather  than  <font face="Gill Sans,Helvetica,Arial">GAP</font>)
level, should be aquainted with the following function.
<p>
<a name = "I5"></a>

<a name = "SSEC002.3"></a>
<li><code>IsACEGeneratorsInPreferredOrder( </code><var>gens</var><code>, </code><var>rels</var><code> ) F</code>
<p>
returns <code>true</code> if <var>gens</var>, a list of free group generators, are  in  an
order which will  not  be  changed  by  <font face="Gill Sans,Helvetica,Arial">ACE</font>,  for  the  group  with
presentation 〈<i>gens</i>   | <i>rels</i> 〉, where  <var>rels</var>  is  a
list   of   relators   (i.e. words   in   the   generators    <var>gens</var>).
<code>IsACEGeneratorsInPreferredOrder</code> may also be called  in  a  different
way         for         interactive          <font face="Gill Sans,Helvetica,Arial">ACE</font>          processes
(see <a href="CHAP006.htm#SSEC006.3">IsACEGeneratorsInPreferredOrder!interactive</a>).
<p>
For a presentation with more than one generator, the  first  generator
of which is an involution and the second is  not,  <font face="Gill Sans,Helvetica,Arial">ACE</font>  prefers  to
switch the  first  two  generators.  <code>IsACEGeneratorsInPreferredOrder</code>
returns <code>true</code> if the order of the  generators  <var>gens</var>  would  not  be
changed  within  <font face="Gill Sans,Helvetica,Arial">ACE</font>  and  <code>false</code>,  otherwise.  (Technically,   by
``involution'' above, we really mean ``a generator <code>x</code> for which there
is a relator in <var>rels</var> of form <code>x*x</code> or <code>x^2</code>''. Such a generator may,
of course, turn out to actually be the identity.)
<p>
<strong>Guru Notes:</strong>
If  <code>IsACEGeneratorsInPreferredOrder(</code><var>gens</var><code>,  </code><var>rels</var><code>)</code>  would   return
<code>false</code>, it is possible to enforce a user's order of the generators
within <font face="Gill Sans,Helvetica,Arial">ACE</font>, by setting the option <code>asis</code> (see <a href="CHAP004.htm#SSEC013.1">option asis</a>)  to  1
and, by passing the relator that determines that <code></code><var>gens</var><code>[1]</code> (which we
will assume is <code>x</code>) has order  at  most  2,  as:  <code>x*x</code>  (rather  than
<code>x^2</code>).  Behind  the  scenes  this  is  precisely  what  is  done,  if
necessary, when <code>ACECosetTable</code> is called with the <code>lenlex</codeoption.
<p>
The user may avoid all the technicalities  by  either  not  using  the
<code>lenlex</codeoption (and allowing <font face="Gill Sans,Helvetica,Arial">GAP</font> to  take  care  of  the  <code>lenlex</code>
standardisation), or by swapping the first  two  generators  in  those
cases where  <code>IsACEGeneratorsInPreferredOrder(</code><var>gens</var><code>,  </code><var>rels</var><code>)</code>  would
return <code>false</code>.
<p>
<p>
<h2><a name="SECT003">1.3 Using ACE Directly to Test whether a Coset Enumeration Terminates</a></h2>
<p><p>
If you only want to  test, whether a coset enumeration terminates, and
don't want to transfer the whole coset table to GAP, you can call
<p>
<a name = "I6"></a>

<a name = "SSEC003.1"></a>
<li><code>ACEStats( </code><var>fgens</var><code>, </code><var>rels</var><code>, </code><var>sgens</var><code> [: </code><var>options</var><code>] ) F</code>
<p>
which calls <font face="Gill Sans,Helvetica,Arial">ACE</font> non-interactively to do the coset enumeration,  the
result of which is parsed and returned as a <font face="Gill Sans,Helvetica,Arial">GAP</font> record with fields
<p>
<p>
<dl compact>
<p>
<dt> <code>index</code> <dd>the index of the subgroup 〈<i>sgens</i>  〉  in
〈<i>fgens</i>   | <i>rels</i>  〉, or 0 if the enumeration  does
not succeed;
<p>
<dt> <code>cputime</code> <dd>the total CPU  time  used  as  an  integer  number  of
<code>cputimeUnits</code> (the next field);
<p>
<dt> <code>cputimeUnits</code> <dd>the units of the  <code>cputime</code>  field,  e.g. <code>"10^-2
seconds";
<p>
<a name = "I7"></a>

<dt> <code>activecosets</code> <dd>the number of currently  <strong>active</strong>  (i.e. <strong>alive</strong>)
coset numbers (see Section <a href="CHAP003.htm#SECT005">Coset Statistics Terminology</a>);
<p>
<a name = "I8"></a>

<dt> <code>maxcosets</code> <dd>the <strong>maximum</strong> number of alive coset numbers  at  any
one  time  in   the   enumeration   (see   Section <a href="CHAP003.htm#SECT005">Coset   Statistics Terminology</a>); and
<p>
<a name = "I9"></a>

<dt> <code>totcosets</code> <dd>the  <strong>total</strong>  number  of  coset  numbers  that  were
defined   in   the   enumeration   (see   Section <a href="CHAP003.htm#SECT005">Coset    Statistics Terminology</a>).
<p>
</dl>
<p>
Options (see Chapters <a href="CHAP004.htm">Options  for  ACE</a>  and <a href="CHAP005.htm">Strategy  Options  for ACE</a>)   are   used    in    exactly    the    same    way    as    for
<code>ACECosetTableFromGensAndRels</code>, discussed in the previous section; and
the same  warnings  alluded  to  previously,  regarding  options  (see
Section <a href="CHAP001.htm#SECT007">General Warnings regarding the Use of Options</a>), apply.
<p>
<strong>Notes:</strong>
To initiate the coset enumeration,  the  <code>start</code>  option  (see <a href="CHAP00D.htm#SSEC003.2">option start</a>) is quietly inserted after the user's supplied options, unless
the user herself supplies one  of  the  enumeration-invoking  options,
which are: <code>start</code>, or one of its synonyms, <code>aep</code>  (see <a href="CHAP00D.htm#SSEC001.1">option  aep</a>)
or <code>rep</code> (see <a href="CHAP00D.htm#SSEC001.2">option rep</a>).
<p>
The fields of the  <code>ACEStats</code>  record  are  determined  by  parsing  a
``results  message''  (see  Appendix <a href="CHAP00A.htm">The  Meanings  of  ACE's Output Messages) from ACE.
<p>
<code>ACEStats</code> may also be called in a different  way  in  an  interactive
<font face="Gill Sans,Helvetica,Arial">ACE</font> session (see <a href="CHAP006.htm#SSEC006.2">ACEStats!interactive</a>).
<p>
<p>
<h2><a name="SECT004">1.4 Writing ACE Standalone Input Files to Generate a Coset Table</a></h2>
<p><p>
If you want to use <font face="Gill Sans,Helvetica,Arial">ACE</font> as a standalone with its own syntax, you can
write an <font face="Gill Sans,Helvetica,Arial">ACE</font> standalone input file by calling <code>ACECosetTable</code>  with
three arguments (see <a href="CHAP001.htm#SSEC002.1">ACECosetTableFromGensAndRels</a>)  and  the  option
<code>aceinfile := </code><var>filename</var><code></code> (see <a href="CHAP004.htm#SSEC011.7">option aceinfile</a>). This will keep the
input file for the <font face="Gill Sans,Helvetica,Arial">ACE</font> standalone produced by the <font face="Gill Sans,Helvetica,Arial">GAP</font>  interface
under the file name <var>filename</var> (and  just  return)  so  that  you  can
perform interactive work in the standalone.
<p>
<p>
<h2><a name="SECT005">1.5 Using ACE Interactively</a></h2>
<p><p>
An interactive <font face="Gill Sans,Helvetica,Arial">ACE</font> process is initiated with the command
<p>
<a name = "SSEC005.1"></a>
<li><code>ACEStart( </code><var>fgens</var><code>, </code><var>rels</var><code>, </code><var>sgens</var><code> [:</code><var>options</var><code>] ) F</code>
<p>
whose    arguments    and    options    are     exactly     as     for
<code>ACECosetTableFromGensAndRels</code>  and  <code>ACEStats</code>,   as   discussed   in
Sections <a href="CHAP001.htm#SECT002">Using ACE Directly to Generate a Coset Table</a> and <a href="CHAP001.htm#SECT003">Using ACE Directly to Test whether a Coset Enumeration  Terminates</a>.  The  usual
warnings  regarding  options  apply  (see  Section <a href="CHAP001.htm#SECT007">General   Warnings regarding the Use of Options</a>). <code>ACEStart</code> has a number of other forms
(see <a href="CHAP006.htm#SSEC001.1">ACEStart!details</a>).
<p>
The return value is an integer (numbering from 1) which represents the
running process. (It is possible to have  more  than  one  interactive
process running at once.) The integer returned may be  used  to  index
which of these processes an  interactive  <font face="Gill Sans,Helvetica,Arial">ACE</font>  function  should  be
applied to.
<p>
An interactive <font face="Gill Sans,Helvetica,Arial">ACE</font> process is terminated with the command
<p>
<a name = "SSEC005.2"></a>
<li><code>ACEQuit( </code><var>i</var><code> ) F</code>
<p>
where <var>i</var> is the integer returned by <code>ACEStart</code> when the  process  was
begun.   <code>ACEQuit</code>   may   also   be   called   with   no    arguments
(see <a href="CHAP006.htm#SSEC001.2">ACEQuit!details</a>).
<p>
We discuss each of these commands, as well as the range  of  functions
which enable one to access  features  of  the  <font face="Gill Sans,Helvetica,Arial">ACE</font>  standalone  not
available non-interactively, in depth, in Chapter <a href="CHAP006.htm">Functions for Using ACE interactively</a>.
<p>
<strong>Note:</strong>
<p>
<a name = "I10"></a>

<font face="Gill Sans,Helvetica,Arial">ACE</font> not only allows one to do a coset enumeration of a group  by  a
given (and then fixed) subgroup but it also allows one to  search  for
subgroups by starting from a given one (possibly the trivial subgroup)
and then augmenting  it  by  adding  new  subgroup  generators  either
explicitly               via                <code>ACEAddSubgroupGenerators</code>
(see <a href="CHAP006.htm#SSEC007.4">ACEAddSubgroupGenerators</a>)   or   implicitly   by    introducing
<strong>coincidences</strong> (see <code>ACECosetCoincidence</code>:  <a href="CHAP006.htm#SSEC007.7">ACECosetCoincidence</a>,  or
<code>ACERandomCoincidences</code>: <a href="CHAP006.htm#SSEC007.8">ACERandomCoincidences</a>);  or  one  can  find
smaller   subgroups    by    deleting    subgroup    generators    via
<code>ACEDeleteSubgroupGenerators</code> (see <a href="CHAP006.htm#SSEC007.6">ACEDeleteSubgroupGenerators</a>).
<p>
<p>
<h2><a name="SECT006">1.6 Accessing ACE Examples with ACEExample and ACEReadResearchExample</a></h2>
<p><p>
There are a number of examples available in the <code>examples</code>  directory,
which may be accessed via
<p>
<a name = "SSEC006.1"></a>
<li><code>ACEExample() F</code>
<li><code>ACEExample( </code><var>examplename</var><code> [:</code><var>options</var><code>] ) F</code>
<li><code>ACEExample( </code><var>examplename</var><code>, </code><var>ACEfunc</var><code> [:</code><var>options</var><code>] ) F</code>
<p>
where  <var>examplename</var>  is  a  string,  the  name  of  an  example  (and
corresponding file in the <code>examples</code> directory); and <var>ACEfunc</var> is  the
<font face="Gill Sans,Helvetica,Arial">ACE</font> function with which the example is to be executed. 
<p>
If <code>ACEExample</code> is called with no arguments,  or  with  the  argument:
<code>"index"</code> (meant in the sense of ``list''),  or  with  a  non-existent
example  name,  a  list  of  available  examples  is  displayed.   See
Section <a href="CHAP00B.htm#SECT004">Fun with ACEExample</a> where the list is displayed.
<p>
By  default,  examples  are  executed  via  <code>ACEStats</code>.  However,   if
<code>ACEExample</code> is called with a second argument (choose from the (other)
alternatives:   <code>ACECosetTableFromGensAndRels</code>    (or,    equivalently
<code>ACECosetTable</code>), or <code>ACEStart</code>), the example is executed  using  that
function, instead. Note that, whereas the first  argument  appears  in
double quotes (since it's a string), the second argument does not
(since it's a function); e.g. to execute example "A5" with function
<code>ACECosetTable</code>, one would type: <code>ACEExample("A5", ACECosetTable);</code>.
<p>
<code>ACEExample</code> also accepts user options, which  may  be  passed  either
globally  (i.e. by  using  <code>PushOptions</code>  to  push   them   onto   the
<code>OptionsStack</code>) or locally  behind  a  colon  after  the  <code>ACEExample</code>
arguments, and they are passed to <code>ACEStats</code> or <var>ACEfunc</var> as  if  they
were <strong>appended</strong> to the existing options of <var>examplename</var>; in this way,
the user may <strong>over-ride</strong> any or all of the options  of  <var>examplename</var>.
This is done by passing  an  option  <code>aceexampleoptions</code>  (see <a href="CHAP004.htm#SSEC011.15">option aceexampleoptions</a>), which sets up a mechanism to  reverse  the  usual
order in which options of recursively called functions are pushed onto
the <code>OptionsStack</code>. The option <code>aceexampleoptions</code>  is  <strong>not</strong>  a  user
option; it is intended only for <strong>internal</strong> use  by  <code>ACEExample</code>,  for
the above purpose. In the portion of the  output  due  to  the  <code>echo</code>
option, if one has  passed  options  to  <code>ACEExample</code>,  one  will  see
<code>aceexampleoptions</code> listed first and the result of the interaction  of
<var>examplename</var>'s options and the additional options.
<p>
Consider the example <code>"A5"</code>. The effect of running
<p>
<pre>
gap> ACEExample("A5", ACEStart);

</pre>
<p>
is essentially equivalent to executing:
<p>
<pre>
gap> file := Filename(DirectoriesPackageLibrary("ace""examples"), "A5");;
gap> ACEfunc := ACEStart;;
gap> ReadAsFunction(file)();

</pre>
<p>
except that some internal ``magic'' of <code>ACEExample</code> edits the  example
file and displays equivalent commands a user ``would'' execute. If the
user  has  passed  options  to  <code>ACEExample</code>   these   appear   in   a
``<code># User Options</code>'' block after the original options of the  example
in the <code>Info</code> portion of the output. By comparing with the portion  of
the output from the <code>echo</codeoption (unless the user has over-ridden the
<code>echo</codeoption), the user may directly observe any over-riding  effects
of user-passed options.
<p>
Please see Section <a href="CHAP00B.htm#SECT004">Fun with ACEExample</a> for some sample  interactions
with <code>ACEExample</code>.
<p>
<strong>Notes</strong>
<p>
Most examples use the <code>mess</code>  ( = <tt>messages</tt>)  option.  To  see  the
effect of this, it is recommended to do: <code>SetInfoLevel(InfoACE, 3);</code>
before calling <code>ACEExample</code>, with an example.
<p>
The coset table output from <code>ACEExample</code>, when called with many of the
examples and with the <font face="Gill Sans,Helvetica,Arial">ACE</font>  function  <code>ACECosetTableFromGensAndRels</code>
is often quite long. Recall that  the  output  may  be  suppressed  by
following the (<code>ACEExample</code>) command with a double semicolon (<code>;;</code>).
<p>
Also, try <code>SetInfoLevel(InfoACE, 2);</code> before  calling <code>ACEExample</code>,
with an example.
<p>
If you unexpectedly observe <code>aceexampleoptions</code> in your  output,  then
most probably you have unintentionally passed options  by  the  global
method, by having a non-empty <code>OptionsStack</code>. One possible  remedy  is
to use <code>FlushOptionsStack();</code> (see <a href="CHAP004.htm#SSEC002.1">FlushOptionsStack</a>), before trying
your <code>ACEExample</code> call again.
<p>
As discussed in Section <a href="CHAP004.htm#SECT006">Interpretation  of  ACE  Options</a>,  there  is
generally no sensible meaning that can  be  attributed  to  setting  a
strategy option (see Chapter <a href="CHAP005.htm">Strategy Options for ACE</a>)  to  <code>false</code>;
if you wish to nullify the effect of a strategy option,  pass  another
strategy  option,  e.g. pass  the  <code>default</code>  (see <a href="CHAP005.htm#SSEC001.1">option   default</a>)
strategy option.
<p>
Also provided are:
<p>
<a name = "SSEC006.2"></a>
<li><code>ACEReadResearchExample( </code><var>filename</var><code> ) F</code>
<li><code>ACEReadResearchExample() F</code>
<p>
which perform <code>Read</code> (see Section <a href="../../../doc/ref/chap9.html#X8373AC6B7D5F9167">Read</a> in the  <font face="Gill Sans,Helvetica,Arial">GAP</font>  Reference
Manual) on <var>filename</var> or, with no argument,  the  file  with  filename
<code>"pgrelfind.g"</code> in the <code>res-examples</code> directory;  e.g. the  effect  of
running
<p>
<pre>
gap> ACEReadResearchExample("pgrelfind.g");

</pre>
<p>
is equivalent to executing:
<p>
<pre>
gap> Read( Filename(DirectoriesPackageLibrary("ace""res-examples"),
>                   "pgrelfind.g") );

</pre>
<p>
The examples provided in the <code>res-examples</code>  directory  were  used  to
solve a genuine research problem, the results of which are reported in
<a href="biblio.htm#CHHR01"><cite>CHHR01</cite></a>. Please see Section <a href="CHAP00B.htm#SECT005">Using  ACEReadResearchExample</a>  for
a detailed description and examples of its use.
<p>
<a name = "SSEC006.3"></a>
<li><code>ACEPrintResearchExample( </code><var>example-filename</var><code> ) F</code>
<li><code>ACEPrintResearchExample( </code><var>example-filename</var><code>, </code><var>output-filename</var><code>) F</code>
<p>
print the ``essential'' contents of the file <var>example-filename</var> in the
<code>res-examples</code> directory to the terminal, or with two arguments to the
file  <var>output-filename</var>;  <var>example-filename</var>   and   <var>output-filename</var>
should be strings. <code>ACEPrintResearchExample</code> is provided  to  make  it
easy for users to copy and edit the examples for their own purposes.
<p>
<p>
<h2><a name="SECT007">1.7 General Warnings regarding the Use of Options</a></h2>
<p><p>
Firstly, let us mention (and we will remind you later) that an  <font face="Gill Sans,Helvetica,Arial">ACE</font>
strategy is merely a special option of <font face="Gill Sans,Helvetica,Arial">ACE</font> that sets  a  number  of
the options described in Chapter <a href="CHAP004.htm">Options for ACE</a> all  at  once.  The
strategy options are discussed in their own chapter (Chapter <a href="CHAP005.htm">Strategy Options for ACE</a>).
<p>
In Section <a href="CHAP004.htm#SECT001">Passing ACE Options</a>, we describe the two  means  provided
by <font face="Gill Sans,Helvetica,Arial">GAP</font> by which <font face="Gill Sans,Helvetica,Arial">ACE</font> options may be passed. In  Section <a href="CHAP004.htm#SECT002">Warnings regarding Options</a>, we discuss how options ``left over'' from previous
calculations can upset subsequent calculations; and hence, to  ``clear
the  decks''   in   such   circumstances,   why   we   have   provided
<code>FlushOptionsStack</code>   (see <a href="CHAP004.htm#SSEC002.1">FlushOptionsStack</a>).   However,   removing
<code>OptionsStack</code> options does not remove the options  previously  passed
to  an  <strong>interactive</strong>  <font face="Gill Sans,Helvetica,Arial">ACE</font>  process;  Section <a href="CHAP004.htm#SECT002">Warnings   regarding Options</a> discusses that too.
<p>
Note,  that  the  <font face="Gill Sans,Helvetica,Arial">ACE</font>  package   treatment   of   options   is   an
``enhancement'' over the general way <font face="Gill Sans,Helvetica,Arial">GAP</font> treats  options.  Firstly,
the <font face="Gill Sans,Helvetica,Arial">ACE</font> binary allows abbreviations and mixed case of  options  and
so  the  <font face="Gill Sans,Helvetica,Arial">ACE</font>  package  does  also,   as   much   as   is   possible
(see <a href="CHAP004.htm#SECT003">Abbreviations and mixed case for ACE Options</a>). Secondly,  since
<font face="Gill Sans,Helvetica,Arial">ACE</font>'s options are in general not orthogonal, the order in which
they are put to <font face="Gill Sans,Helvetica,Arial">ACE</font> is, in general, honoured (see <a href="CHAP004.htm#SECT004">Honouring of the order in which ACE Options are passed</a>). Thirdly, the <font face="Gill Sans,Helvetica,Arial">ACE</font>  binary's
concept of a boolean option is slightly different to that of <font face="Gill Sans,Helvetica,Arial">GAP</font>'s;
Section <a href="CHAP004.htm#SECT006">Interpretation of ACE Options</a> discusses, in particular,  how
an option detected by <font face="Gill Sans,Helvetica,Arial">GAP</font> as <code>true</code> is passed to the <font face="Gill Sans,Helvetica,Arial">ACE</font> binary.
<p>
Finally, Section <a href="CHAP004.htm#SECT005">What happens if no ACE Strategy Option or if no  ACE Option is passed</a> discusses what happens if no option is selected.
<p>
<p>
<h2><a name="SECT008">1.8 The ACEData Record</a></h2>
<p><p>
<a name = "SSEC008.1"></a>
<li><code>ACEData V</code>
<p>
is a <font face="Gill Sans,Helvetica,Arial">GAP</font> record in which the essential data for an  <font face="Gill Sans,Helvetica,Arial">ACE</font>  session
within <font face="Gill Sans,Helvetica,Arial">GAP</font> is stored; its fields are:
<p>
<p>
<dl compact>
<p>
<dt> <code>binary</code> <dd> the path of the <font face="Gill Sans,Helvetica,Arial">ACE</font> binary;
<p>
<dt> <code>tmpdir</code> <dd> the path of the  temporary  directory  containing  the
non-interactive   <font face="Gill Sans,Helvetica,Arial">ACE</font>   input   and   output   files   (also    see
<a href="CHAP001.htm#SSEC008.2">ACEDirectoryTemporary</a> below);
<p>
<dt> <code>ni</code>     <dd> the data record for a non-interactive <font face="Gill Sans,Helvetica,Arial">ACE</font> process;
<p>
<dt> <code>io</code>     <dd> list  of  data  records  for  <code>ACEStart</code>   (see  below 
and <a href="CHAP006.htm#SSEC001.1">ACEStart</a>) processes;
<p>
<dt> <code>infile</code> <dd> the full path of the <font face="Gill Sans,Helvetica,Arial">ACE</fontinput file;
<p>
<dt> <code>outfile</code><dd> the full path of the <font face="Gill Sans,Helvetica,Arial">ACE</fontoutput file; and
<p>
<dt> <code>version</code><dd> the  version  of  the  current  <font face="Gill Sans,Helvetica,Arial">ACE</font>  binary.   More
detailed information regarding the compilation of the binary is  given
by <code>ACEBinaryVersion</code> (see <a href="CHAP006.htm#SSEC005.25">ACEBinaryVersion</a>).
<p>
</dl>
<p>
Non-interactive processes used to use files rather than streams (hence
the fields <code>infile</code> and <code>outfile</code> above;  these  may  disappear  in  a
later version of the <font face="Gill Sans,Helvetica,Arial">ACE</font> package).
<p>
Each time an interactive <font face="Gill Sans,Helvetica,Arial">ACE</font> process is  initiated  via  <code>ACEStart</code>
(see <a href="CHAP006.htm#SSEC001.1">ACEStart</a>), an identifying number <var>ioIndex</var> is generated for the
interactive process and  a  record  <code>ACEData.io[</code><var>ioIndex</var><code>]</code>  with  the
following fields is created. A  non-interactive  process  has  similar
fields but is stored in the record <code>ACEData.ni</code>.
<p>
<p>
<dl compact>
<p>
<dt> <code>procId</code> <dd> the identifying number of the process  (<var>ioIndex</var>  for
interactive processes, and 0 for a non-interactive process);
<p>
<dt> <code>args</code>   <dd> a record with fields: <code>fgens</code>, <code>rels</code>,  <code>sgens</code>  whose
values  are  the  corresponding   arguments   passed   originally   to
<code>ACEStart</code>;
<p>
<dt> <code>options</code><dd> the current options record of the interactive process;
<p>
<dt> <code>acegens</code><dd> a list of strings representing the generators used  by
<font face="Gill Sans,Helvetica,Arial">ACE</font> (if the names of the generators passed via the  first  argument
<var>fgens</var> of <code>ACEStart</code> were all lowercase alphabetic  characters,  then
<code>acegens</code> is the <code>String</code> equivalent of <var>fgens</var>,  i.e. <code>acegens[1]   =
String(</code><var>fgens</var><code>[1])</code> etc.);
<p>
<dt> <code>stream</code> <dd> the IOStream opened for an interactive <font face="Gill Sans,Helvetica,Arial">ACE</font>  process
initiated via <code>ACEStart</code>; and
<p>
<dt> <code>enumResult</code> <dd
the enumeration result (string) without the trailing  newline,  output
from <font face="Gill Sans,Helvetica,Arial">ACE</font>;
<p>
<dt> <code>stats</code>  <dd> a record as output by the function <code>ACEStats</code>.
<p>
<dt> <code>enforceAsis</code> <dd
a  boolean  that  is  set  to  <code>true</code>  whenever  the   <code>asis</code>   option
(see <a href="CHAP004.htm#SSEC013.1">option asis</a>) must  be  set  to  <code>1</code>.  It  is  usually  <code>false</code>.
See <a href="CHAP001.htm#SSEC002.3">IsACEGeneratorsInPreferredOrder</a> <strong>Guru Notes</strong> for the details.
<p>
</dl>
<p>
<a name = "SSEC008.2"></a>
<li><code>ACEDirectoryTemporary( </code><var>dir</var><code> ) F</code>
<p>
calls the UNIX command <code>mkdir</code>  to  create  <var>dir</var>,  which  must  be  a
string, and if  successful  a  directory  object  for  <var>dir</var>  is  both
assigned to <code>ACEData.tmpdir</code> and returned. The fields <code>ACEData.infile</code>
and <code>ACEData.outfile</code> are also set to be  files  in  <code>ACEData.tmpdir</code>,
and on exit from <font face="Gill Sans,Helvetica,Arial">GAP</font> <var>dir</var> is removed. Most users will  never  need
this command;  by  default,  <font face="Gill Sans,Helvetica,Arial">GAP</font>  typically  chooses  a  ``random''
subdirectory of <code>/tmp</code> for  <code>ACEData.tmpdir</code>  which  may  occasionally
have limits on what  may  be  written  there.  <code>ACEDirectoryTemporary</code>
permits the user to choose a directory (object) where one  is  not  so
limited.
<p>
<p>
<h2><a name="SECT009">1.9 Setting the Verbosity of ACE via Info and InfoACE</a></h2>
<p><p>
<a name = "SSEC009.1"></a>
<li><code>InfoACE V</code>
<p>
The output of the <font face="Gill Sans,Helvetica,Arial">ACE</font> binary is, by default, not displayed. However
the user may choose to see some, or all, of this output. This is  done
via the <code>Info</code> mechanism  (see  Chapter <a href="../../../doc/ref/chap7.html#X7A9C902479CB6F7C">Info  Functions</a>  in  the
<font face="Gill Sans,Helvetica,Arial">GAP</font> Reference Manual). For this purpose, there is  the  <var>InfoClass</var>
<code>InfoACE</code>. Each line of output from <font face="Gill Sans,Helvetica,Arial">ACE</font> is directed to  a  call  to
<code>Info</code> and will be displayed for the user to see if the <code>InfoLevel</code> of
<code>InfoACE</code> is high enough. By default, the <code>InfoLevel</code> of <code>InfoACE</code>  is
1, and it is recommended that you leave it at this level,  or  higher.
Only messages which we think that the user will really want to see are
directed to <code>Info</code> at <code>InfoACE</code> level 1. To turn off  <strong>all</strong>  <code>InfoACE</code>
messaging, set the <code>InfoACE</code> level to 0  (see <a href="CHAP001.htm#SSEC009.1">InfoACE</a>).
<p>
Currently,  information  from
<font face="Gill Sans,Helvetica,Arial">ACE</font> is directed to <code>Info</code> at four <code>InfoACE</code> levels: 1, 2, 3 and  4.
The command
<p>
<pre>
gap> SetInfoLevel(InfoACE, 2);

</pre>
<p>
enables the display of the results line of an enumeration from <font face="Gill Sans,Helvetica,Arial">ACE</font>,
whereas
<p>
<pre>
gap> SetInfoLevel(InfoACE, 3);

</pre>
<p>
enables the display of  all  of  the  output  from  <font face="Gill Sans,Helvetica,Arial">ACE</font>  (including
<font face="Gill Sans,Helvetica,Arial">ACE</font>'s banner, containing the host machine information); in
particular,  the  progress  messages,  emitted  by  <font face="Gill Sans,Helvetica,Arial">ACE</font>  when   the
<code>messages</codeoption (see <a href="CHAP004.htm#SSEC018.1">option messages</a>) is set to a non-zero  value,
will be displayed via <code>Info</code>. Finally,
<p>
<pre>
gap> SetInfoLevel(InfoACE, 4);

</pre>
<p>
enables the display of all the input  directed  to  <font face="Gill Sans,Helvetica,Arial">ACE</font>  (behind  a
``<code>ToACE> </code>'' prompt, so you can distinguish it  from  other  output).
The <code>InfoACE</code> level of 4 is really for gurus who are familiar with the
<font face="Gill Sans,Helvetica,Arial">ACE</font> standalone.
<p>
<p>
<h2><a name="SECT010">1.10 Acknowledgements</a></h2>
<p><p>
Large parts of this manual,  in  particular  the  description  of  the
options for running <font face="Gill Sans,Helvetica,Arial">ACE</font>, are directly copied  from  the  respective
descriptions in the manual <a href="biblio.htm#Ram99ace"><cite>Ram99ace</cite></a> for the standalone version  of
<font face="Gill Sans,Helvetica,Arial">ACE</font> by Colin Ramsay.  Most  of  the  examples,  in  the  <code>examples</code>
directory and accessed  via  the  <code>ACEExample</code>  function,  are  direct
translations of Colin Ramsay's test###.in files in the src
directory.
<p>
Many thanks to Joachim Neubüser who not only provided  one
of the early manual drafts and hence a template for the style  of  the
manual and conceptual hooks for the design of the  Package  code,  but
also meticulously proof-read  all  drafts  and  made  many  insightful
comments.
<p>
Many thanks also to Volkmar Felsch who, in testing the <font face="Gill Sans,Helvetica,Arial">ACE</font> Package,
discovered a number of bugs, made a number of important suggestions on
code improvement, thoroughly checked all the  examples,  and  provided
the example found at the end of Section <a href="CHAP006.htm#SECT007">Steering  ACE  Interactively</a>
which  demonstrates  rather  nicely  how  one  can  use  the  function
<code>ACEConjugatesForSubgroupNormalClosure</code>.
<p>
We  also  wish  to  acknowledge the contribution of Charles Sims.  The
inclusion of the <code>incomplete</code> (see <a href="CHAP004.htm#SSEC011.6">option incomplete</a>)  and  <code>lenlex</code>
(see <a href="CHAP004.htm#SSEC011.4">option lenlex</a>) options, were made in response  to  requests  to
the  <font face="Gill Sans,Helvetica,Arial">GAP</font>  developers  to  include  such  options  for  coset  table
functions. Also, the definition of <code>lenlex</code> standardisation  of  coset
tables (see Section <a href="CHAP003.htm#SECT004">Coset Table Standardisation Schemes</a>), is due  to
him.
<p>
Finally, much of the work since 2005 in modifying the  <font face="Gill Sans,Helvetica,Arial">ACE</font>  package
particularly for new versions of <font face="Gill Sans,Helvetica,Arial">GAP</font> and in getting <font face="Gill Sans,Helvetica,Arial">ACE</font>  to  its
new home on <code>GitHub</code> has been due to Max Horn.
<p>
<p>
<h2><a name="SECT011">1.11 Changes from earlier versions</a></h2>
<p><p>
A reasonably comprehensive history of  the  evolution  of  pre-release
versions of the <font face="Gill Sans,Helvetica,Arial">ACE</font> Package, is contained in the file <code>CHANGES</code>  in
the <code>gap</code> directory. 
<p>
The <code>3.xxx</code> versions of the <font face="Gill Sans,Helvetica,Arial">ACE</font> Package were compatible with <font face="Gill Sans,Helvetica,Arial">GAP</font>
4.2, but were built for use with  <font face="Gill Sans,Helvetica,Arial">GAP</font>  4.3.  However,  the  current
version of the <font face="Gill Sans,Helvetica,Arial">ACE</font> Package requires at least <font face="Gill Sans,Helvetica,Arial">GAP</font> 4.4. Users  who
still have <font face="Gill Sans,Helvetica,Arial">GAP</font> 4.3 will need  to  use  <font face="Gill Sans,Helvetica,Arial">ACE</font>  4.1.  One  important
change in <font face="Gill Sans,Helvetica,Arial">GAP</font> from <font face="Gill Sans,Helvetica,Arial">GAP</font> 4.2 to <font face="Gill Sans,Helvetica,Arial">GAP</font> 4.3 that has relevance  for
<font face="Gill Sans,Helvetica,Arial">ACE</font> Package users is the change of the  default  standard  for  the
numbering of  cosets  in  a  coset  table  (see  Section <a href="CHAP003.htm#SECT004">Coset  Table Standardisation Schemes</a>).
<p>
<a name = "SSEC011.1"></a>
<li><code>ACEPackageVersion() F</code>
<p>
gives the current version of the <font face="Gill Sans,Helvetica,Arial">ACE</font> Package (i.e. the <font face="Gill Sans,Helvetica,Arial">GAP</font>  code
component; the  function  <code>ACEBinaryVersion</code>  (see <a href="CHAP006.htm#SSEC005.25">ACEBinaryVersion</a>)
gives details of the C code compilation).
<p>
<p>
[<a href = "chapters.htm">Up</a>] [<a href ="CHAP002.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
<P>
<address>ACE manual<br>April 2025
</address></body></html>

99%


¤ Dauer der Verarbeitung: 0.21 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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.