GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
#############################################################################
####
##
#W doL28.g ACE Research Example Greg Gamble
##
## Provides some easy applications of the pgrelfind.g functions, using the
## perfect simple group L_2(8).
##
#Y Copyright (C) 2000 Centre for Discrete Mathematics and Computing
#Y Department of Computer Science & Electrical Eng.
#Y University of Queensland, Australia.
##
ACEResExample := rec(filename := "doL28.g", print := false);
if IsBound(IsACEResExampleOK) and IsACEResExampleOK() then
Print("gap> Print(\"L2_8:\\n\", L2_8, \"\\n\");\n");
Print("L2_8:\n", L2_8, "\n");
L28 :=
ACE_PRINT_AND_EVAL(
"L28",
Concatenation(
"TranslatePresentation([a,b], L2_8.rels, L2_8.sgens,\n",
" ",
" [a^3*b, a^2*b])"
)
);
ACEResExample.options :=
[ "ACEworkspace := 2 * 10^3",
"head := x*y*x*y*x*y^-1*x*y*x*y",
"Ntails := 256",
"maxTailLength := 6",
"minMiddleLength := 4",
"maxMiddleLength := 20",
"Nrandom := 1000",
"Nrandom := len -> 1000 * (LogInt(len + 1, 2) + 1)"];
ACEResExample.option := ValueOption("optex");
if ACEResExample.option = fail then
ACEResExample.option := [];
elif IsPosInt(ACEResExample.option) then
ACEResExample.option := [ ACEResExample.option ];
fi;
if IsList(ACEResExample.option) and
IsSubset([1 .. Length(ACEResExample.options)], ACEResExample.option) then
L28n :=
ACE_PRINT_AND_EVAL(
"L28n",
Concatenation(
"PGRelFind(L28.fgens, L28.rels, L28.sgens\n",
" : ",
JoinStringsWithSeparator(
List(ACEResExample.option,
i -> ACEResExample.options[i]),
",\n "),
")"
)
);
Print("\nWould you like to try another option example?\n");
else
Print("Error, illegal value for option `optex'.\n",
"Usage: 'ACEReadResearchExample(\"doL28.g\" [: optex := <n>]);'\n",
" 'ACEReadResearchExample(\"doL28.g\" [: optex := <list>);'\n",
"where <n> is an integer, or <list> is a list of integers,\n",
"in the range [1 .. ",
Length(ACEResExample.options), "]\n");
fi;
Print("\nThe table below indicates the equivalent action of ",
"'optex := <n>':\n\n",
" Value of <n> Equivalent to\n",
" ------------ -------------\n");
ACEResExample.i := 1;
repeat
Print(" ", ACEResExample.i, " '",
ACEResExample.options[ACEResExample.i], "'\n");
ACEResExample.i := ACEResExample.i + 1;
until ACEResExample.i > Length(ACEResExample.options);
Print("\nNote: `optex' may also be a list containing a subset ",
"of the above <n>.\n");
elif ACEResExample.print then
## Begin
Print("L2_8:\n", L2_8, "\n");
L28 := TranslatePresentation([a,b], L2_8.rels, L2_8.sgens, [a^3*b, a^2*b]);
# Using option "ACEworkspace" (default is 10^6)
L28n := PGRelFind(L28.fgens, L28.rels, L28.sgens
: ACEworkspace := 2 * 10^3);
# Using option "head" (default is x*y*x*y*x*y^-1)
L28n := PGRelFind(L28.fgens, L28.rels, L28.sgens
: head := x*y*x*y*x*y^-1*x*y*x*y);
# Using option "Ntails" ... Ntails should be <= 2048 (default)
L28n := PGRelFind(L28.fgens, L28.rels, L28.sgens
: Ntails := 256);
# Using option "maxTailLength" (overrides Ntails if used)
L28n := PGRelFind(L28.fgens, L28.rels, L28.sgens
: maxTailLength := 6);
# Using option "minMiddleLength" (default is 0)
L28n := PGRelFind(L28.fgens, L28.rels, L28.sgens
: minMiddleLength := 4);
# Using option "maxMiddleLength" (default is 30)
L28n := PGRelFind(L28.fgens, L28.rels, L28.sgens
: maxMiddleLength := 20);
# Using option "Nrandom" (default is 0 = sequential and exhaustive)
L28n := PGRelFind(L28.fgens, L28.rels, L28.sgens
: Nrandom := 1000);
# Using option "Nrandom" again ... but this time Nrandom is a function
# of middle length
L28n := PGRelFind(L28.fgens, L28.rels, L28.sgens
: Nrandom := len -> 1000 * (LogInt(len + 1, 2) + 1));
## End
else
Print("Error, ACEReadResearchExample: functions and variables undefined.\n",
"Please type: 'ACEReadResearchExample();'\n",
"and try again.\n");
fi;
#E doL28.g . . . . . . . . . . . . . . . . . . . . . . . . . . . . ends here