Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
| Download
GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
Project: cocalc-sagemath-dev-slelievre
Views: 4183461[1X5 [33X[0;0YInteractive ANUPQ functions[133X[101X23[33X[0;0YHere we describe the interactive functions defined by the [5XANUPQ[105X package,4i.e. the functions that manipulate and initiate interactive [5XANUPQ[105X processes.5These are functions that extract information via a dialogue with a running6[10Xpq[110X process (process used in the UNIX sense). Occasionally, a user needs the7[21Xnext step[121X; the functions provided in this chapter make use of data from8previous steps retained by the [10Xpq[110X program, thus allowing the user to9interact with the [10Xpq[110X program like one can when one uses the [10Xpq[110X program as a10stand-alone (see [10Xguide.dvi[110X in the [10Xstandalone-doc[110X directory).[133X1112[33X[0;0YAn interactive [5XANUPQ[105X process is initiated by [10XPqStart[110X and terminated via13[10XPqQuit[110X; these functions are described in ection [14X'[33X[0;0YStarting and Stopping14Interactive ANUPQ Processes[133X'[114X.[133X1516[33X[0;0YEach interactive [5XANUPQ[105X function that manipulates an already started17interactive [5XANUPQ[105X process, has a form where the first argument is the18integer [3Xi[103X returned by the initiating [10XPqStart[110X command, and a second form with19one argument fewer (where the integer [3Xi[103X is discovered by a default20mechanism, namely by determining the least integer [3Xi[103X for which there is a21currently active interactive [5XANUPQ[105X process). We will thus commonly say that22[21Xfor the [3Xi[103Xth (or default) interactive [5XANUPQ[105X process[121X a certain function23performs a given action. In each case, it is an error if [3Xi[103X is not the index24of an active interactive process, or there are no current active interactive25processes.[133X2627[33X[0;0Y[13XNotes[113X: The global method of passing options (via [10XPushOptions[110X), should not be28used with any of the interactive functions. In fact, the [10XOptionsStack[110X should29be empty at the time any of the interactive functions is called.[133X3031[33X[0;0YOn [9Xquit[109Xting [5XGAP[105X, [10XPqQuitAll();[110X is executed, which terminates all active32interactive [5XANUPQ[105X processes. If [5XGAP[105X is killed without [9Xquit[109Xting, before all33interactive [5XANUPQ[105X processes are terminated, [13Xzombie[113X processes (still living34[13Xchild[113X processes whose [13Xparents[113X have died), may result. Since zombie processes35do consume resources, in such an event, the responsible computer user should36seek out and terminate those zombie processes (e.g. on Linux: [10Xps xw | grep37pq[110X gives you information on the [10Xpq[110X processes corresponding to any38interactive [5XANUPQ[105X processes started in a [5XGAP[105X session; you can then do [10Xkill [3XN[103X[10X[110X39for each number [3XN[103X appearing in the first column of this output).[133X404142[1X5.1 [33X[0;0YStarting and Stopping Interactive ANUPQ Processes[133X[101X4344[1X5.1-1 PqStart[101X4546[33X[1;0Y[29X[2XPqStart[102X( [3XG[103X, [3Xworkspace:[103X [3Xoptions[103X ) [32X function[133X47[33X[1;0Y[29X[2XPqStart[102X( [3XG:[103X [3Xoptions[103X ) [32X function[133X48[33X[1;0Y[29X[2XPqStart[102X( [3Xworkspace:[103X [3Xoptions[103X ) [32X function[133X49[33X[1;0Y[29X[2XPqStart[102X( [3X:[103X [3Xoptions[103X ) [32X function[133X5051[33X[0;0Yactivate an iostream for an interactive [5XANUPQ[105X process (i.e. [10XPqStart[110X starts52up a [10Xpq[110X process and opens a [5XGAP[105X iostream to [21Xtalk[121X to that process) and53returns an integer [3Xi[103X that can be used to identify that process. The argument54[3XG[103X should be an [13Xfp group[113X or [13Xpc group[113X that the user intends to manipulate55using interactive [5XANUPQ[105X functions. If the function is called without56specifying [3XG[103X, a group can be read in by using the function57[10XPqRestorePcPresentation[110X (see [2XPqRestorePcPresentation[102X ([14X5.6-3[114X)). If [10XPqStart[110X is58given an integer argument [3Xworkspace[103X, then the [10Xpq[110X program is started up with59a workspace (an integer array) of size [3Xworkspace[103X (i.e. [22X4 × [3Xworkspace[103X[122X bytes60in a 32-bit environment); otherwise, the [10Xpq[110X program sets a default workspace61of [22X10000000[122X.[133X6263[33X[0;0YThe only [3Xoptions[103X currently recognised by [10XPqStart[110X are [10XPrime[110X, [10XExponent[110X and64[10XRelators[110X (see Chapter [14X'[33X[0;0YANUPQ Options[133X'[114X for detailed descriptions of these65options) and if provided they are essentially global for the interactive66[5XANUPQ[105X process, except that any interactive function interacting with the67process and passing new values for these options will over-ride the global68values.[133X6970[1X5.1-2 PqQuit[101X7172[33X[1;0Y[29X[2XPqQuit[102X( [3Xi[103X ) [32X function[133X73[33X[1;0Y[29X[2XPqQuit[102X( ) [32X function[133X7475[33X[0;0Ycloses the stream of the [3Xi[103Xth or default interactive [5XANUPQ[105X process and76unbinds its [10XANUPQData.io[110X record.[133X7778[33X[0;0Y[13XNote:[113X It can happen that the [10Xpq[110X process, and hence the [5XGAP[105X iostream assigned79to communicate with it, can die, e.g. by the user typing a [10XCtrl-C[110X while the80[10Xpq[110X process is engaged in a long calculation. [10XIsPqProcessAlive[110X81(see [2XIsPqProcessAlive[102X ([14X5.2-3[114X)) is provided to check the status of the [5XGAP[105X82iostream (and hence the status of the [10Xpq[110X process it was communicating with).[133X8384[1X5.1-3 PqQuitAll[101X8586[33X[1;0Y[29X[2XPqQuitAll[102X( ) [32X function[133X8788[33X[0;0Yis provided as a convenience, to terminate all active interactive [5XANUPQ[105X89processes with a single command. It is equivalent to executing [10XPqQuit([3Xi[103X[10X)[110X for90all active interactive [5XANUPQ[105X processes [3Xi[103X (see [2XPqQuit[102X ([14X5.1-2[114X)).[133X919293[1X5.2 [33X[0;0YInteractive ANUPQ Process Utility Functions[133X[101X9495[1X5.2-1 PqProcessIndex[101X9697[33X[1;0Y[29X[2XPqProcessIndex[102X( [3Xi[103X ) [32X function[133X98[33X[1;0Y[29X[2XPqProcessIndex[102X( ) [32X function[133X99100[33X[0;0YWith argument [3Xi[103X, which must be a positive integer, [10XPqProcessIndex[110X returns [3Xi[103X101if it corresponds to an active interactive process, or raises an error. With102no arguments it returns the default active interactive process or returns103[9Xfail[109X and emits a warning message to [10XInfo[110X at [10XInfoANUPQ[110X or [10XInfoWarning[110X level1041.[133X105106[33X[0;0Y[13XNote:[113X Essentially, an interactive [5XANUPQ[105X process [3Xi[103X is [21Xactive[121X if107[10XANUPQData.io[[3Xi[103X[10X][110X is bound (i.e. we still have some data telling us about it).108Also see [2XPqStart[102X ([14X5.1-1[114X).[133X109110[1X5.2-2 PqProcessIndices[101X111112[33X[1;0Y[29X[2XPqProcessIndices[102X( ) [32X function[133X113114[33X[0;0Yreturns the list of integer indices of all active interactive [5XANUPQ[105X115processes (see [2XPqProcessIndex[102X ([14X5.2-1[114X) for the meaning of [21Xactive[121X).[133X116117[1X5.2-3 IsPqProcessAlive[101X118119[33X[1;0Y[29X[2XIsPqProcessAlive[102X( [3Xi[103X ) [32X function[133X120[33X[1;0Y[29X[2XIsPqProcessAlive[102X( ) [32X function[133X121122[33X[0;0Yreturn [9Xtrue[109X if the [5XGAP[105X iostream of the [3Xi[103Xth (or default) interactive [5XANUPQ[105X123process started by [10XPqStart[110X is alive (i.e. can still be written to), or124[9Xfalse[109X, otherwise. (See the notes for [2XPqStart[102X ([14X5.1-1[114X) and [2XPqQuit[102X ([14X5.1-2[114X).)[133X125126[33X[0;0YIf the user does not yet have a [10Xgap>[110X prompt then usually the [10Xpq[110X program is127still away doing something and an [5XANUPQ[105X interface function is still waiting128for a reply. Typing a [10XCtrl-C[110X (i.e. holding down the [10XCtrl[110X key and typing [10Xc[110X)129will stop the waiting and send [5XGAP[105X into a [10Xbreak[110X-loop, from which one has no130option but to [10Xquit;[110X. The typing of [10XCtrl-C[110X, in such a circumstance, usually131causes the stream of the interactive [5XANUPQ[105X process to die; to check this we132provide [10XIsPqProcessAlive[110X (see [2XIsPqProcessAlive[102X).[133X133134[33X[0;0YThe [5XGAP[105X iostream of an interactive [5XANUPQ[105X process will also die if the [10Xpq[110X135program has a segmentation fault. We do hope that this never happens to you,136but if it does and the failure is reproducible, then it's a bug and we'd137like to know about it. Please read the [10XREADME[110X that comes with the [5XANUPQ[105X138package to find out what to include in a bug report and who to email it to.[133X139140141[1X5.3 [33X[0;0YInteractive Versions of Non-interactive ANUPQ Functions[133X[101X142143[1X5.3-1 Pq[101X144145[33X[1;0Y[29X[2XPq[102X( [3Xi:[103X [3Xoptions[103X ) [32X function[133X146[33X[1;0Y[29X[2XPq[102X( [3X:[103X [3Xoptions[103X ) [32X function[133X147148[33X[0;0Yreturn, for the fp or pc group (let us call it [3XF[103X), of the [3Xi[103Xth or default149interactive [5XANUPQ[105X process, the [22Xp[122X-quotient of [3XF[103X specified by [3Xoptions[103X, as a pc150group; [3XF[103X must previously have been given (as first argument) to [10XPqStart[110X to151start the interactive [5XANUPQ[105X process (see [2XPqStart[102X ([14X5.1-1[114X)) or restored from152file using the function [10XPqRestorePcPresentation[110X (see [2XPqRestorePcPresentation[102X153([14X5.6-3[114X)). Following the colon [3Xoptions[103X is a selection of the options listed154for the non-interactive [10XPq[110X function (see [2XPq[102X ([14X4.1-1[114X)), separated by commas155like record components (see Section [14XReference: Function Call With Options[114X in156the [5XGAP[105X Reference Manual), except that the options [10XSetupFile[110X or [10XPqWorkspace[110X157are ignored by the interactive [10XPq[110X, and [10XRedoPcp[110X is an option only recognised158by the interactive [10XPq[110X i.e. the following options are recognised by the159interactive [10XPq[110X function:[133X160161[30X [33X[0;6Y[10XPrime := [3Xp[103X[10X[110X[133X162163[30X [33X[0;6Y[10XClassBound := [3Xn[103X[10X[110X[133X164165[30X [33X[0;6Y[10XExponent := [3Xn[103X[10X[110X[133X166167[30X [33X[0;6Y[10XRelators := [3Xrels[103X[10X[110X[133X168169[30X [33X[0;6Y[10XMetabelian[110X[133X170171[30X [33X[0;6Y[10XIdentities := [3Xfuncs[103X[10X[110X[133X172173[30X [33X[0;6Y[10XGroupName := [3Xname[103X[10X[110X[133X174175[30X [33X[0;6Y[10XOutputLevel := [3Xn[103X[10X[110X[133X176177[30X [33X[0;6Y[10XRedoPcp[110X[133X178179[33X[0;0YDetailed descriptions of the above options may be found in Chapter [14X'[33X[0;0YANUPQ180Options[133X'[114X.[133X181182[33X[0;0YAs a minimum the [10XPq[110X function [13Xmust[113X have a value for the [10XPrime[110X option, though183[10XPrime[110X need not be passed again in the case it has previously been provided,184e.g. to [10XPqStart[110X (see [2XPqStart[102X ([14X5.1-1[114X)) when starting the interactive process.[133X185186[33X[0;0YThe behaviour of the interactive [10XPq[110X function depends on the current state of187the pc presentation stored by the [10Xpq[110X program:[133X188189[31X1[131X [33X[0;6YIf no pc presentation has yet been computed (the case immediately190after the [10XPqStart[110X call initiating the process) then the quotient group191of the input group of the process of largest lower exponent-[3Xp[103X class192bounded by the value of the [10XClassBound[110X option (see [14X6.2[114X) is returned.[133X193194[31X2[131X [33X[0;6YIf the current pc presentation of the process was determined by a195previous call to [10XPq[110X or [10XPqEpimorphism[110X, and the current call has a196larger value [10XClassBound[110X then the class is extended as much as is197possible and the quotient group of the input group of the process of198the new lower exponent-[3Xp[103X class is returned.[133X199200[31X3[131X [33X[0;6YIf the current pc presentation of the process was determined by a201previous call to [10XPqPCover[110X then a consistent pc presentation of a202quotient for the current class is determined before proceeding as in2032.[133X204205[31X4[131X [33X[0;6YIf the [10XRedoPcp[110X option is supplied the current pc presentation is206scrapped, all options must be re-supplied (in particular, [10XPrime[110X [13Xmust[113X207be supplied) and then the [10XPq[110X function proceeds as in 1.[133X208209[33X[0;0YSee Section [14X'[33X[0;0YAttributes and a Property for fp and pc p-groups[133X'[114X for the210attributes and property [10XNuclearRank[110X, [10XMultiplicatorRank[110X and [10XIsCapable[110X which211may be applied to the group returned by [10XPq[110X.[133X212213[33X[0;0YThe following is one of the examples for the non-interactive [10XPq[110X redone with214the interactive version. Also, we set the option [10XOutputLevel[110X to 1 (see [14X6.2[114X),215in order to see the orders of the quotients of all the classes determined,216and we set the [10XInfoANUPQ[110X level to 2 (see [2XInfoANUPQ[102X ([14X3.3-1[114X)), so that we217catch the timing information.[133X218219[4X[32X Example [32X[104X220[4X[25Xgap>[125X [27XF := FreeGroup("a", "b");; a := F.1;; b := F.2;;[127X[104X221[4X[25Xgap>[125X [27XG := F / [a^4, b^4];[127X[104X222[4X[28X<fp group on the generators [ a, b ]>[128X[104X223[4X[25Xgap>[125X [27XPqStart(G);[127X[104X224[4X[28X1[128X[104X225[4X[25Xgap>[125X [27XSetInfoLevel(InfoANUPQ, 2); #To see timing information[127X[104X226[4X[25Xgap>[125X [27XPq(: Prime := 2, ClassBound := 3, OutputLevel := 1 );[127X[104X227[4X[28X#I Lower exponent-2 central series for [grp][128X[104X228[4X[28X#I Group: [grp] to lower exponent-2 central class 1 has order 2^2[128X[104X229[4X[28X#I Group: [grp] to lower exponent-2 central class 2 has order 2^5[128X[104X230[4X[28X#I Group: [grp] to lower exponent-2 central class 3 has order 2^8[128X[104X231[4X[28X#I Computation of presentation took 0.00 seconds[128X[104X232[4X[28X<pc group of size 256 with 8 generators>[128X[104X233[4X[32X[104X234235[1X5.3-2 PqEpimorphism[101X236237[33X[1;0Y[29X[2XPqEpimorphism[102X( [3Xi:[103X [3Xoptions[103X ) [32X function[133X238[33X[1;0Y[29X[2XPqEpimorphism[102X( [3X:[103X [3Xoptions[103X ) [32X function[133X239240[33X[0;0Yreturn, for the fp or pc group (let us call it [3XF[103X), of the [3Xi[103Xth or default241interactive [5XANUPQ[105X process, an epimorphism from [3XF[103X onto the [22Xp[122X-quotient of [3XF[103X242specified by [3Xoptions[103X; [3XF[103X must previously have been given (as first argument)243to [10XPqStart[110X to start the interactive [5XANUPQ[105X process (see [2XPqStart[102X ([14X5.1-1[114X)).244Since the underlying interactions with the [10Xpq[110X program effected by the245interactive [10XPqEpimorphism[110X are identical to those effected by the interactive246[10XPq[110X, everything said regarding the requirements and behaviour of the247interactive [10XPq[110X function (see [2XPq[102X ([14X5.3-1[114X)) is also the case for the248interactive [10XPqEpimorphism[110X.[133X249250[33X[0;0Y[13XNote:[113X See Section [14X'[33X[0;0YAttributes and a Property for fp and pc p-groups[133X'[114X for the251attributes and property [10XNuclearRank[110X, [10XMultiplicatorRank[110X and [10XIsCapable[110X which252may be applied to the image group of the epimorphism returned by253[10XPqEpimorphism[110X.[133X254255[1X5.3-3 PqPCover[101X256257[33X[1;0Y[29X[2XPqPCover[102X( [3Xi:[103X [3Xoptions[103X ) [32X function[133X258[33X[1;0Y[29X[2XPqPCover[102X( [3X:[103X [3Xoptions[103X ) [32X function[133X259260[33X[0;0Yreturn, for the fp or pc group of the [3Xi[103Xth or default interactive [5XANUPQ[105X261process, the [22Xp[122X-covering group of the [22Xp[122X-quotient [10XPq([3Xi[103X[10X : [3Xoptions[103X[10X)[110X or [10XPq(:262[3Xoptions[103X[10X)[110X, modulo the following:[133X263264[31X1[131X [33X[0;6YIf no pc presentation has yet been computed (the case immediately265after the [10XPqStart[110X call initiating the process) and the group [3XF[103X of the266process is already a [22Xp[122X-group, in the sense that [10XHasIsPGroup([3XF[103X[10X) and267IsPGroup([3XF[103X[10X)[110X is [9Xtrue[109X, then[133X268269[8X[10XPrime[110X[8X[108X270[33X[0;12Ydefaults to [10XPrimePGroup([3XF[103X[10X)[110X, if not supplied and271[10XHasPrimePGroup([3XF[103X[10X) = true[110X; and[133X272273[8X[10XClassBound[110X[8X[108X274[33X[0;12Ydefaults to [10XPClassPGroup([3XF[103X[10X)[110X if [10XHasPClassPGroup([3XF[103X[10X) = true[110X if not275supplied, or to the usual default of 63, otherwise.[133X276277[31X2[131X [33X[0;6YIf a pc presentation has been computed and none of [3Xoptions[103X is [10XRedoPcp[110X278or if no pc presentation has yet been computed but 1. does not apply279then [10XPqPCover([3Xi[103X[10X : [3Xoptions[103X[10X);[110X is equivalent to:[133X280281[4X [32X[104X282[4XPq(i : options);[104X283[4XPqPCover(i);[104X284[4X[32X[104X285286[31X3[131X [33X[0;6YIf the [10XRedoPcp[110X option is supplied the current pc presentation is287scrapped, and [10XPqPCover[110X proceeds as in 1. or 2. but without the [10XRedoPcp[110X288option.[133X289290[1X5.3-4 PqStandardPresentation[101X291292[33X[1;0Y[29X[2XPqStandardPresentation[102X( [[3Xi[103X][3X:[103X [3Xoptions[103X ) [32X function[133X293[33X[1;0Y[29X[2XStandardPresentation[102X( [[3Xi[103X][3X:[103X [3Xoptions[103X ) [32X function[133X294295[33X[0;0Yreturn, for the [3Xi[103Xth or default interactive [5XANUPQ[105X process, the [3Xp[103X-quotient of296the group [3XF[103X of the process, specified by [3Xoptions[103X, as an [13Xfp group[113X which has a297standard presentation. Here [3Xoptions[103X is a selection of the options from the298following list (see Chapter [14X'[33X[0;0YANUPQ Options[133X'[114X for detailed descriptions); this299list is the same as for the non-interactive version of300[10XPqStandardPresentation[110X except for the omission of options [10XSetupFile[110X and301[10XPqWorkspace[110X (see [2XPqStandardPresentation[102X ([14X4.2-1[114X)).[133X302303[30X [33X[0;6Y[10XPrime := [3Xp[103X[10X[110X[133X304305[30X [33X[0;6Y[10XpQuotient := [3XQ[103X[10X[110X[133X306307[30X [33X[0;6Y[10XClassBound := [3Xn[103X[10X[110X[133X308309[30X [33X[0;6Y[10XExponent := [3Xn[103X[10X[110X[133X310311[30X [33X[0;6Y[10XMetabelian[110X[133X312313[30X [33X[0;6Y[10XGroupName := [3Xname[103X[10X[110X[133X314315[30X [33X[0;6Y[10XOutputLevel := [3Xn[103X[10X[110X[133X316317[30X [33X[0;6Y[10XStandardPresentationFile := [3Xfilename[103X[10X[110X[133X318319[33X[0;0YUnless [3XF[103X is a pc [3Xp[103X-group, or the option [10XPrime[110X has been passed to a previous320interactive function for the process to compute a [3Xp[103X-quotient for [3XF[103X, the user321[13Xmust[113X supply either the option [10XPrime[110X or the option [10XpQuotient[110X (if both [10XPrime[110X322and [10XpQuotient[110X are supplied, the prime [3Xp[103X is determined by applying323[10XPrimePGroup[110X (see [2XPrimePGroup[102X ([14XReference: PrimePGroup[114X) in the Reference324Manual) to the value of [10XpQuotient[110X).[133X325326[33X[0;0YTaking one of the examples for the non-interactive version of327[10XStandardPresentation[110X (see [2XStandardPresentation[102X ([14X4.2-1[114X)) that required two328separate calls to the [10Xpq[110X program, we now show how it can be done by setting329up a dialogue with just the one [10Xpq[110X process, using the interactive version of330[10XStandardPresentation[110X:[133X331332[4X[32X Example [32X[104X333[4X[25Xgap>[125X [27XF4 := FreeGroup( "a", "b", "c", "d" );;[127X[104X334[4X[25Xgap>[125X [27Xa := F4.1;; b := F4.2;; c := F4.3;; d := F4.4;;[127X[104X335[4X[25Xgap>[125X [27XG4 := F4 / [ b^4, b^2 / Comm(Comm (b, a), a), d^16,[127X[104X336[4X[25X>[125X [27X a^16 / (c * d), b^8 / (d * c^4) ];[127X[104X337[4X[28X<fp group on the generators [ a, b, c, d ]>[128X[104X338[4X[25Xgap>[125X [27XSetInfoLevel(InfoANUPQ, 1); #Only essential Info please[127X[104X339[4X[25Xgap>[125X [27XPqStart(G4); #Start a new interactive process for a new group[127X[104X340[4X[28X2[128X[104X341[4X[25Xgap>[125X [27XK := Pq( 2 : Prime := 2, ClassBound := 1 ); #`pq' process no. is 2[127X[104X342[4X[28X<pc group of size 4 with 2 generators>[128X[104X343[4X[25Xgap>[125X [27XStandardPresentation( 2 : pQuotient := K, ClassBound := 14 );[127X[104X344[4X[28X<fp group with 53 generators>[128X[104X345[4X[32X[104X346347[33X[0;0Y[13XNotes[113X[133X348349[33X[0;0YIn contrast to the function [10XPq[110X (see [2XPq[102X ([14X4.1-1[114X)) which returns a pc group,350[10XPqStandardPresentation[110X or [10XStandardPresentation[110X returns an fp group. This is351because the output is mainly used for isomorphism testing for which an fp352group is enough. However, the presentation is a polycyclic presentation and353if you need to do any further computation with this group (e.g. to find the354order) you can use the function [10XPcGroupFpGroup[110X (see [2XPcGroupFpGroup[102X355([14XReference: PcGroupFpGroup[114X) in the [5XGAP[105X Reference Manual) to form a pc group.[133X356357[33X[0;0YIf the user does not supply a [3Xp[103X-quotient [3XQ[103X via the [10XpQuotient[110X option, and the358prime [3Xp[103X is either supplied, stored, or [3XF[103X is a pc [3Xp[103X-group, then a [3Xp[103X-quotient359[3XQ[103X is computed. (The value of the prime [3Xp[103X is stored if passed initially to360[10XPqStart[110X or to a subsequent interactive process.) Note that a stored value361for [10XpQuotient[110X (from a prior call to [10XPq[110X) does [13Xnot[113X have precedence over a362value for the prime [3Xp[103X. If the user does supply a [3Xp[103X-quotient [3XQ[103X via the363[10XpQuotient[110X option, the package [5XAutPGrp[105X is called to compute the automorphism364group of [3XQ[103X; an error will occur that asks the user to install the package365[5XAutPGrp[105X if the automorphism group cannot be computed.[133X366367[33X[0;0YIf any of the interactive functions [10XPqStandardPresentation[110X,368[10XStandardPresentation[110X, [10XEpimorphismPqStandardPresentation[110X or369[10XEpimorphismStandardPresentation[110X has been called previously for an370interactive process, a subsequent call to any of these functions for the371same process returns the previously computed value. Note that all these372functions compute both an epimorphism and an fp group and store the results373in the [10XSPepi[110X and [10XSP[110X fields of the data record associated with the process.374See the example for the interactive [10XEpimorphismStandardPresentation[110X375([2XEpimorphismStandardPresentation[102X ([14X5.3-5[114X)).[133X376377[33X[0;0YThe attributes and property [10XNuclearRank[110X, [10XMultiplicatorRank[110X and [10XIsCapable[110X are378set for the group returned by [10XPqStandardPresentation[110X or [10XStandardPresentation[110X379(see Section [14X'[33X[0;0YAttributes and a Property for fp and pc p-groups[133X'[114X).[133X380381[1X5.3-5 EpimorphismPqStandardPresentation[101X382383[33X[1;0Y[29X[2XEpimorphismPqStandardPresentation[102X( [[3Xi[103X][3X:[103X [3Xoptions[103X ) [32X function[133X384[33X[1;0Y[29X[2XEpimorphismStandardPresentation[102X( [[3Xi[103X][3X:[103X [3Xoptions[103X ) [32X method[133X385386[33X[0;0YEach of the above functions accepts the same arguments and options as the387interactive form of [10XStandardPresentation[110X (see [2XStandardPresentation[102X ([14X5.3-4[114X))388and returns an epimorphism from the fp or pc group [3XF[103X of the [3Xi[103Xth or default389interactive [5XANUPQ[105X process onto the finitely presented group given by a390standard presentation, i.e. if [3XS[103X is the standard presentation computed for391the [22Xp[122X-quotient of [3XF[103X by [10XStandardPresentation[110X then392[10XEpimorphismStandardPresentation[110X returns the epimorphism from [3XF[103X to the group393with presentation [3XS[103X. The group [3XF[103X must have been given (as first argument) to394[10XPqStart[110X to start the interactive [5XANUPQ[105X process (see [2XPqStart[102X ([14X5.1-1[114X)).[133X395396[33X[0;0YTaking our earlier non-interactive example397(see [2XEpimorphismPqStandardPresentation[102X ([14X4.2-2[114X)) and modifying it a little,398we illustrate, as for the interactive [10XStandardPresentation[110X399(see [2XStandardPresentation[102X ([14X5.3-4[114X)), how something that required two separate400calls to the [10Xpq[110X program can now be achieved with a dialogue with just one [10Xpq[110X401process. Also, observe that calls to one of the standard presentation402functions (as mentioned in the notes of [2XStandardPresentation[102X ([14X5.3-4[114X))403computes and stores both an fp group with a standard presentation and an404epimorphism; subsequent calls to a standard presentation function for the405same process simply return the appropriate stored value.[133X406407[4X[32X Example [32X[104X408[4X[25Xgap>[125X [27XF := FreeGroup(6, "F");;[127X[104X409[4X[25Xgap>[125X [27Xx := F.1;; y := F.2;; z := F.3;; w := F.4;; a := F.5;; b := F.6;;[127X[104X410[4X[25Xgap>[125X [27XR := [x^3 / w, y^3 / w * a^2 * b^2, w^3 / b,[127X[104X411[4X[25X>[125X [27X Comm (y, x) / z, Comm (z, x), Comm (z, y) / a, z^3 ];[127X[104X412[4X[28X[ F1^3*F4^-1, F2^3*F4^-1*F5^2*F6^2, F4^3*F6^-1, F2^-1*F1^-1*F2*F1*F3^-1, [128X[104X413[4X[28X F3^-1*F1^-1*F3*F1, F3^-1*F2^-1*F3*F2*F5^-1, F3^3 ][128X[104X414[4X[25Xgap>[125X [27XQ := F / R;[127X[104X415[4X[28X<fp group on the generators [ F1, F2, F3, F4, F5, F6 ]>[128X[104X416[4X[25Xgap>[125X [27XPqStart( Q );[127X[104X417[4X[28X3[128X[104X418[4X[25Xgap>[125X [27XG := Pq( 3 : Prime := 3, ClassBound := 3 );[127X[104X419[4X[28X<pc group of size 729 with 6 generators>[128X[104X420[4X[25Xgap>[125X [27Xlev := InfoLevel(InfoANUPQ);; # Save current InfoANUPQ level[127X[104X421[4X[25Xgap>[125X [27XSetInfoLevel(InfoANUPQ, 2); # To see computation times[127X[104X422[4X[25Xgap>[125X [27X# It is not necessary to pass the `Prime' option to[127X[104X423[4X[25Xgap>[125X [27X# `EpimorphismStandardPresentation' since it was previously[127X[104X424[4X[25Xgap>[125X [27X# passed to `Pq':[127X[104X425[4X[25Xgap>[125X [27Xphi := EpimorphismStandardPresentation( 3 : ClassBound := 3 );[127X[104X426[4X[28X#I Class 1 3-quotient and its 3-covering group computed in 0.00 seconds[128X[104X427[4X[28X#I Order of GL subgroup is 48[128X[104X428[4X[28X#I No. of soluble autos is 0[128X[104X429[4X[28X#I dim U = 1 dim N = 3 dim M = 3[128X[104X430[4X[28X#I nice stabilizer with perm rep[128X[104X431[4X[28X#I Computing standard presentation for class 2 took 0.00 seconds[128X[104X432[4X[28X#I Computing standard presentation for class 3 took 0.01 seconds[128X[104X433[4X[28X[ F1, F2, F3, F4, F5, F6 ] -> [ f1*f2^2*f3*f4^2*f5^2, f1*f2*f3*f5, f3^2, [128X[104X434[4X[28X f4*f6^2, f5, f6 ][128X[104X435[4X[25Xgap>[125X [27X# Image of phi should be isomorphic to G ...[127X[104X436[4X[25Xgap>[125X [27X# let's check the order is correct:[127X[104X437[4X[25Xgap>[125X [27XSize( Image(phi) );[127X[104X438[4X[28X729[128X[104X439[4X[25Xgap>[125X [27X# `StandardPresentation' and `EpimorphismStandardPresentation'[127X[104X440[4X[25Xgap>[125X [27X# behave like attributes, so no computation is done when[127X[104X441[4X[25Xgap>[125X [27X# either is called again for the same process ...[127X[104X442[4X[25Xgap>[125X [27XStandardPresentation( 3 : ClassBound := 3 );[127X[104X443[4X[28X<fp group of size 729 on the generators [ f1, f2, f3, f4, f5, f6 ]>[128X[104X444[4X[25Xgap>[125X [27X# No timing data was Info-ed since no computation was done[127X[104X445[4X[25Xgap>[125X [27XSetInfoLevel(InfoANUPQ, lev); # Restore previous InfoANUPQ level[127X[104X446[4X[32X[104X447448[33X[0;0YA very similar (essential details are the same) example to the above may be449executed live, by typing: [10XPqExample( "EpimorphismStandardPresentation-i" );[110X.[133X450451[33X[0;0Y[13XNote:[113X The notes for [10XPqStandardPresentation[110X or [10XStandardPresentation[110X452(see [2XPqStandardPresentation[102X ([14X5.3-4[114X)) apply also to453[10XEpimorphismPqStandardPresentation[110X or [10XEpimorphismStandardPresentation[110X except454that their return value is an [13Xepimorphism onto[113X an fp group, i.e. one should455interpret the phrase [21Xreturns an fp group[121X as [21Xreturns an epimorphism onto an456fp group[121X etc.[133X457458[1X5.3-6 PqDescendants[101X459460[33X[1;0Y[29X[2XPqDescendants[102X( [3Xi:[103X [3Xoptions[103X ) [32X function[133X461[33X[1;0Y[29X[2XPqDescendants[102X( [3X:[103X [3Xoptions[103X ) [32X function[133X462463[33X[0;0Yreturn for the pc group [3XG[103X of the [3Xi[103Xth or default interactive [5XANUPQ[105X process,464which must be of prime power order with a confluent pc presentation465(see [2XIsConfluent[102X ([14XReference: IsConfluent for pc groups[114X) in the [5XGAP[105X Reference466Manual), a list of descendants (pc groups) of [3XG[103X. The group [3XG[103X is usually467given as first argument to [10XPqStart[110X when starting the interactive [5XANUPQ[105X468process (see [2XPqStart[102X ([14X5.1-1[114X)). Alternatively, one may initiate the process469with an fp group, use [10XPq[110X interactively (see [2XPq[102X ([14X5.3-1[114X)) to create a pc group470and use [10XPqSetPQuotientToGroup[110X (see [2XPqSetPQuotientToGroup[102X ([14X5.3-7[114X)), which471involves [13Xno[113X computation, to set the pc group returned by [10XPq[110X as the group of472the process. Note that repeating a call to [10XPqDescendants[110X for the same473interactive [5XANUPQ[105X process simply returns the list of descendants originally474calculated; a warning is emitted at [10XInfoANUPQ[110X level 1 reminding you of this475should you do this.[133X476477[33X[0;0YAfter the colon, [3Xoptions[103X a selection of the options listed for the478non-interactive [10XPqDescendants[110X function (see [2XPqDescendants[102X ([14X4.4-1[114X)), should479be given, separated by commas like record components (see Section [14XReference:480Function Call With Options[114X in the [5XGAP[105X Reference Manual), except that the481options [10XSetupFile[110X or [10XPqWorkspace[110X are ignored by the interactive482[10XPqDescendants[110X, i.e. the following options are recognised by the interactive483[10XPqDescendants[110X function:[133X484485[30X [33X[0;6Y[10XClassBound := [3Xn[103X[10X[110X[133X486487[30X [33X[0;6Y[10XRelators := [3Xrels[103X[10X[110X[133X488489[30X [33X[0;6Y[10XOrderBound := [3Xn[103X[10X[110X[133X490491[30X [33X[0;6Y[10XStepSize := [3Xn[103X[10X[110X, [10XStepSize := [3Xlist[103X[10X[110X[133X492493[30X [33X[0;6Y[10XRankInitialSegmentSubgroups := [3Xn[103X[10X[110X[133X494495[30X [33X[0;6Y[10XSpaceEfficient[110X[133X496497[30X [33X[0;6Y[10XCapableDescendants[110X[133X498499[30X [33X[0;6Y[10XAllDescendants := false[110X[133X500501[30X [33X[0;6Y[10XExponent := [3Xn[103X[10X[110X[133X502503[30X [33X[0;6Y[10XMetabelian[110X[133X504505[30X [33X[0;6Y[10XGroupName := [3Xname[103X[10X[110X[133X506507[30X [33X[0;6Y[10XSubList := [3Xsub[103X[10X[110X[133X508509[30X [33X[0;6Y[10XBasicAlgorithm[110X[133X510511[30X [33X[0;6Y[10XCustomiseOutput := [3Xrec[103X[10X[110X[133X512513[33X[0;0Y[13XNotes:[113X The function [10XPqDescendants[110X uses the automorphism group of [3XG[103X which it514computes via the package [5XAutPGrp[105X if the automorphism group of [3XG[103X is not515already present. If [5XAutPGrp[105X is not installed an error may be raised. If the516automorphism group of [3XG[103X is insoluble the [10Xpq[110X program will call [5XGAP[105X together517with the [5XAutPGrp[105X package for certain orbit-stabilizer calculations.[133X518519[33X[0;0YThe attributes and property [10XNuclearRank[110X, [10XMultiplicatorRank[110X and [10XIsCapable[110X are520set for each group of the list returned by [10XPqDescendants[110X (see521Section [14X'[33X[0;0YAttributes and a Property for fp and pc p-groups[133X'[114X).[133X522523[33X[0;0YLet us now repeat the examples previously given for the non-interactive524[10XPqDescendants[110X, but this time with the interactive version of [10XPqDescendants[110X:[133X525526[4X[32X Example [32X[104X527[4X[25Xgap>[125X [27XF := FreeGroup( "a", "b" );; a := F.1;; b := F.2;;[127X[104X528[4X[25Xgap>[125X [27XG := PcGroupFpGroup( F / [ a^2, b^2, Comm(b, a) ] );[127X[104X529[4X[28X<pc group of size 4 with 2 generators>[128X[104X530[4X[25Xgap>[125X [27XPqStart(G); #This will now be the 4th interactive process running[127X[104X531[4X[28X4[128X[104X532[4X[25Xgap>[125X [27Xdes := PqDescendants( 4 : OrderBound := 6, ClassBound := 5 );;[127X[104X533[4X[25Xgap>[125X [27XLength(des);[127X[104X534[4X[28X83[128X[104X535[4X[25Xgap>[125X [27XList(des, Size);[127X[104X536[4X[28X[ 8, 8, 8, 16, 16, 16, 32, 16, 16, 16, 16, 16, 32, 32, 64, 64, 32, 32, 32, [128X[104X537[4X[28X 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, [128X[104X538[4X[28X 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 32, 64, 64, 64, [128X[104X539[4X[28X 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, [128X[104X540[4X[28X 64, 64, 64, 64, 64, 64, 64 ][128X[104X541[4X[25Xgap>[125X [27XList(des, d -> Length( PCentralSeries( d, 2 ) ) - 1 );[127X[104X542[4X[28X[ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, [128X[104X543[4X[28X 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, [128X[104X544[4X[28X 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, [128X[104X545[4X[28X 4, 4, 4, 5, 5, 5, 5, 5 ][128X[104X546[4X[32X[104X547548[33X[0;0YIn the second example we compute all capable descendants of order 27 of the549elementary abelian group of order 9.[133X550551[4X[32X Example [32X[104X552[4X[25Xgap>[125X [27XF := FreeGroup( 2, "g" );;[127X[104X553[4X[25Xgap>[125X [27XG := PcGroupFpGroup( F / [ F.1^3, F.2^3, Comm(F.1, F.2) ] );[127X[104X554[4X[28X<pc group of size 9 with 2 generators>[128X[104X555[4X[25Xgap>[125X [27XPqStart(G); #This will now be the 5th interactive process running[127X[104X556[4X[28X5[128X[104X557[4X[25Xgap>[125X [27Xdes := PqDescendants( 5 : OrderBound := 3, ClassBound := 2,[127X[104X558[4X[25X>[125X [27X CapableDescendants );[127X[104X559[4X[28X[ <pc group of size 27 with 3 generators>, [128X[104X560[4X[28X <pc group of size 27 with 3 generators> ][128X[104X561[4X[25Xgap>[125X [27XList(des, d -> Length( PCentralSeries( d, 3 ) ) - 1 );[127X[104X562[4X[28X[ 2, 2 ][128X[104X563[4X[25Xgap>[125X [27X# For comparison let us now compute all descendants[127X[104X564[4X[25Xgap>[125X [27X# (using the non-interactive Pq function)[127X[104X565[4X[25Xgap>[125X [27XPqDescendants( G : OrderBound := 3, ClassBound := 2);[127X[104X566[4X[28X[ <pc group of size 27 with 3 generators>, [128X[104X567[4X[28X <pc group of size 27 with 3 generators>, [128X[104X568[4X[28X <pc group of size 27 with 3 generators> ][128X[104X569[4X[32X[104X570571[33X[0;0YIn the third example, we compute all capable descendants of the elementary572abelian group of order [22X5^2[122X which have exponent-[22X5[122X class at most [22X3[122X, exponent573[22X5[122X, and are metabelian.[133X574575[4X[32X Example [32X[104X576[4X[25Xgap>[125X [27XF := FreeGroup( 2, "g" );;[127X[104X577[4X[25Xgap>[125X [27XG := PcGroupFpGroup( F / [ F.1^5, F.2^5, Comm(F.2, F.1) ] );[127X[104X578[4X[28X<pc group of size 25 with 2 generators>[128X[104X579[4X[25Xgap>[125X [27XPqStart(G); #This will now be the 6th interactive process running[127X[104X580[4X[28X6[128X[104X581[4X[25Xgap>[125X [27Xdes := PqDescendants( 6 : Metabelian, ClassBound := 3,[127X[104X582[4X[25X>[125X [27X Exponent := 5, CapableDescendants );[127X[104X583[4X[28X[ <pc group of size 125 with 3 generators>, [128X[104X584[4X[28X <pc group of size 625 with 4 generators>, [128X[104X585[4X[28X <pc group of size 3125 with 5 generators> ][128X[104X586[4X[25Xgap>[125X [27XList(des, d -> Length( PCentralSeries( d, 5 ) ) - 1 );[127X[104X587[4X[28X[ 2, 3, 3 ][128X[104X588[4X[25Xgap>[125X [27XList(des, d -> Length( DerivedSeries( d ) ) );[127X[104X589[4X[28X[ 3, 3, 3 ][128X[104X590[4X[25Xgap>[125X [27XList(des, d -> Maximum( List( Elements(d), Order ) ) );[127X[104X591[4X[28X[ 5, 5, 5 ][128X[104X592[4X[32X[104X593594[1X5.3-7 PqSetPQuotientToGroup[101X595596[33X[1;0Y[29X[2XPqSetPQuotientToGroup[102X( [3Xi[103X ) [32X function[133X597[33X[1;0Y[29X[2XPqSetPQuotientToGroup[102X( ) [32X function[133X598599[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, set the [22Xp[122X-quotient600previously computed by the interactive [10XPq[110X function (see [2XPq[102X ([14X5.3-1[114X)) to be601the group of the process. This function is supplied to enable the602computation of descendants of a [22Xp[122X-quotient that is already known to the [10Xpq[110X603program, via the interactive [10XPqDescendants[110X function (see [2XPqDescendants[102X604([14X5.3-6[114X)), thus avoiding the need to re-submit it and have the [10Xpq[110X program605recompute it.[133X606607[33X[0;0Y[13XNote:[113X See the function [10XPqPGSetDescendantToPcp[110X ([2XPqPGSetDescendantToPcp[102X608([14X5.9-4[114X)) for a mechanism to make (the [22Xp[122X-cover of) a particular descendants609the current group of the process.[133X610611[33X[0;0YThe following example of the usage of [10XPqSetPQuotientToGroup[110X, which is612essentially equivalent to what is obtained by running613[10XPqExample("PqDescendants-1-i");[110X, redoes the first example of [2XPqDescendants[102X614([14X5.3-6[114X) (which computes the descendants of the Klein four group).[133X615616[4X[32X Example [32X[104X617[4X[25Xgap>[125X [27XF := FreeGroup( "a", "b" );[127X[104X618[4X[28X<free group on the generators [ a, b ]>[128X[104X619[4X[25Xgap>[125X [27XprocId := PqStart( F : Prime := 2 );[127X[104X620[4X[28X7[128X[104X621[4X[25Xgap>[125X [27XPq( procId : ClassBound := 1 );[127X[104X622[4X[28X<pc group of size 4 with 2 generators>[128X[104X623[4X[25Xgap>[125X [27XPqSetPQuotientToGroup( procId );[127X[104X624[4X[25Xgap>[125X [27Xdes := PqDescendants( procId : OrderBound := 6, ClassBound := 5 );;[127X[104X625[4X[25Xgap>[125X [27XLength(des);[127X[104X626[4X[28X83[128X[104X627[4X[25Xgap>[125X [27XList(des, Size);[127X[104X628[4X[28X[ 8, 8, 8, 16, 16, 16, 32, 16, 16, 16, 16, 16, 32, 32, 64, 64, 32, 32, 32, [128X[104X629[4X[28X 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, [128X[104X630[4X[28X 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 32, 64, 64, 64, [128X[104X631[4X[28X 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, [128X[104X632[4X[28X 64, 64, 64, 64, 64, 64, 64 ][128X[104X633[4X[25Xgap>[125X [27XList(des, d -> Length( PCentralSeries( d, 2 ) ) - 1 );[127X[104X634[4X[28X[ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, [128X[104X635[4X[28X 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, [128X[104X636[4X[28X 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, [128X[104X637[4X[28X 4, 4, 4, 5, 5, 5, 5, 5 ][128X[104X638[4X[32X[104X639640641[1X5.4 [33X[0;0YLow-level Interactive ANUPQ functions based on menu items of the pq[101X642[1Xprogram[133X[101X643644[33X[0;0YThe [10Xpq[110X program has 5 menus, the details of which the reader will not645normally need to know, but if she wishes to know the details they may be646found in the standalone manual: [10Xguide.dvi[110X. Both [10Xguide.dvi[110X and the [10Xpq[110X program647refer to the items of these 5 menus as [21Xoptions[121X, which do [13Xnot[113X correspond in648any way to the options used by any of the [5XGAP[105X functions that interface with649the [10Xpq[110X program.[133X650651[33X[0;0Y[13XWarning:[113X The commands provided in this section are intended to provide652something like the interactive functionality one has when running the653standalone, from within [5XGAP[105X. The [10Xpq[110X standalone (in particular, its [21Xadvanced[121X654menus) assumes some expertise of the user; doing the [21Xwrong[121X thing can cause655the program to crash. While a number of safeguards have been provided in the656[5XGAP[105X interface to the [10Xpq[110X program, these are [13Xnot[113X foolproof, and the user657should exercise care and ensure pre-requisites of the various commands are658met.[133X659660661[1X5.5 [33X[0;0YGeneral commands[133X[101X662663[33X[0;0YThe following commands either use a menu item from whatever menu is [21Xcurrent[121X664for the [10Xpq[110X program, or have general application and are not associated with665just one menu item of the [10Xpq[110X program.[133X666667[1X5.5-1 PqNrPcGenerators[101X668669[33X[1;0Y[29X[2XPqNrPcGenerators[102X( [3Xi[103X ) [32X function[133X670[33X[1;0Y[29X[2XPqNrPcGenerators[102X( ) [32X function[133X671672[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, return the number of pc673generators of the lower exponent [22Xp[122X-class quotient of the group currently674determined by the process. This also applies if the pc presentation is not675consistent.[133X676677[1X5.5-2 PqFactoredOrder[101X678679[33X[1;0Y[29X[2XPqFactoredOrder[102X( [3Xi[103X ) [32X function[133X680[33X[1;0Y[29X[2XPqFactoredOrder[102X( ) [32X function[133X681682[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, return an integer pair [10X[[3Xp[103X[10X,683[3Xn[103X[10X][110X where [3Xp[103X is a prime and [3Xn[103X is the number of pc generators684(see [2XPqNrPcGenerators[102X ([14X5.5-1[114X)) in the pc presentation of the quotient group685currently determined by the process. If this presentation is consistent,686then [22Xp^n[122X is the order of the quotient group. Otherwise (if tails have been687added but the necessary consistency checks, relation collections, exponent688law checks and redundant generator eliminations have not yet been done), [22Xp^n[122X689is an upper bound for the order of the group.[133X690691[1X5.5-3 PqOrder[101X692693[33X[1;0Y[29X[2XPqOrder[102X( [3Xi[103X ) [32X function[133X694[33X[1;0Y[29X[2XPqOrder[102X( ) [32X function[133X695696[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, return [22Xp^n[122X where [10X[[3Xp[103X[10X, [3Xn[103X[10X][110X is697the pair as returned by [10XPqFactoredOrder[110X (see [2XPqFactoredOrder[102X ([14X5.5-2[114X)).[133X698699[1X5.5-4 PqPClass[101X700701[33X[1;0Y[29X[2XPqPClass[102X( [3Xi[103X ) [32X function[133X702[33X[1;0Y[29X[2XPqPClass[102X( ) [32X function[133X703704[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, return the lower exponent705[22Xp[122X-class of the quotient group currently determined by the process.[133X706707[1X5.5-5 PqWeight[101X708709[33X[1;0Y[29X[2XPqWeight[102X( [3Xi[103X, [3Xj[103X ) [32X function[133X710[33X[1;0Y[29X[2XPqWeight[102X( [3Xj[103X ) [32X function[133X711712[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, return the weight of the713[3Xj[103Xth pc generator of the lower exponent [22Xp[122X-class quotient of the group714currently determined by the process, or [9Xfail[109X if there is no such numbered pc715generator.[133X716717[1X5.5-6 PqCurrentGroup[101X718719[33X[1;0Y[29X[2XPqCurrentGroup[102X( [3Xi[103X ) [32X function[133X720[33X[1;0Y[29X[2XPqCurrentGroup[102X( ) [32X function[133X721722[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, return the group whose pc723presentation is determined by the process as a [5XGAP[105X pc group (either a lower724exponent [22Xp[122X-class quotient of the start group or the [22Xp[122X-cover of such a725quotient).[133X726727[33X[0;0Y[13XNotes:[113X See Section [14X'[33X[0;0YAttributes and a Property for fp and pc p-groups[133X'[114X for728the attributes and property [10XNuclearRank[110X, [10XMultiplicatorRank[110X and [10XIsCapable[110X729which may be applied to the group returned by [10XPqCurrentGroup[110X.[133X730731[1X5.5-7 PqDisplayPcPresentation[101X732733[33X[1;0Y[29X[2XPqDisplayPcPresentation[102X( [3Xi:[103X [[3XOutputLevel[103X [3X:=[103X [3Xlev[103X] ) [32X function[133X734[33X[1;0Y[29X[2XPqDisplayPcPresentation[102X( [3X:[103X [[3XOutputLevel[103X [3X:=[103X [3Xlev[103X] ) [32X function[133X735736[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to737display the pc presentation of the lower exponent [22Xp[122X-class quotient of the738group currently determined by the process.[133X739740[33X[0;0YExcept if the last command communicating with the [10Xpq[110X program was a [22Xp[122X-group741generation command (for which there is only a verbose output level), to set742the amount of information this command displays you may wish to call743[10XPqSetOutputLevel[110X first (see [2XPqSetOutputLevel[102X ([14X5.5-8[114X)), or equivalently pass744the option [10XOutputLevel[110X (see [14X6.2[114X).[133X745746[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqDisplayPcPresentation[110X747performs menu item 4 of the current menu of the [10Xpq[110X program.[133X748749[1X5.5-8 PqSetOutputLevel[101X750751[33X[1;0Y[29X[2XPqSetOutputLevel[102X( [3Xi[103X, [3Xlev[103X ) [32X function[133X752[33X[1;0Y[29X[2XPqSetOutputLevel[102X( [3Xlev[103X ) [32X function[133X753754[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to755set the output level of the [10Xpq[110X program to [3Xlev[103X.[133X756757[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqSetOutputLevel[110X performs menu758item 5 of the main (or advanced) [22Xp[122X-Quotient menu, or the Standard759Presentation menu.[133X760761[1X5.5-9 PqEvaluateIdentities[101X762763[33X[1;0Y[29X[2XPqEvaluateIdentities[102X( [3Xi:[103X [[3XIdentities[103X [3X:=[103X [3Xfuncs[103X] ) [32X function[133X764[33X[1;0Y[29X[2XPqEvaluateIdentities[102X( [3X:[103X [[3XIdentities[103X [3X:=[103X [3Xfuncs[103X] ) [32X function[133X765766[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, invoke the evaluation of767identities defined by the [10XIdentities[110X option, and eliminate any redundant pc768generators formed. Since a previous value of [10XIdentities[110X is saved in the data769record of the process, it is unnecessary to pass the [10XIdentities[110X if set770previously.[133X771772[33X[0;0Y[13XNote:[113X This function is mainly implemented at the [5XGAP[105X level. It does not773correspond to a menu item of the [10Xpq[110X program.[133X774775776[1X5.6 [33X[0;0YCommands from the Main [22Xp[122X[101X[1X-Quotient menu[133X[101X777778[1X5.6-1 PqPcPresentation[101X779780[33X[1;0Y[29X[2XPqPcPresentation[102X( [3Xi:[103X [3Xoptions[103X ) [32X function[133X781[33X[1;0Y[29X[2XPqPcPresentation[102X( [3X:[103X [3Xoptions[103X ) [32X function[133X782783[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to784compute the pc presentation of the quotient (determined by [3Xoptions[103X) of the785group of the process, which for process [3Xi[103X is stored as786[10XANUPQData.io[[3Xi[103X[10X].group[110X.[133X787788[33X[0;0YThe possible [3Xoptions[103X are the same as for the interactive [10XPq[110X (see [2XPq[102X ([14X5.3-1[114X))789function, except for [10XRedoPcp[110X (which, in any case, would be superfluous),790namely: [10XPrime[110X, [10XClassBound[110X, [10XExponent[110X, [10XRelators[110X, [10XGroupName[110X, [10XMetabelian[110X,791[10XIdentities[110X and [10XOutputLevel[110X (see Chapter [14X'[33X[0;0YANUPQ Options[133X'[114X for a detailed792description for these options). The option [10XPrime[110X is required unless already793provided to [10XPqStart[110X.[133X794795[33X[0;0Y[13XNotes[113X[133X796797[33X[0;0YThe pc presentation is held by the [10Xpq[110X program. In contrast to [10XPq[110X (see [2XPq[102X798([14X5.3-1[114X)), no [5XGAP[105X pc group is returned; see [10XPqCurrentGroup[110X ([2XPqCurrentGroup[102X799([14X5.5-6[114X)) if you need the corresponding [5XGAP[105X pc group.[133X800801[33X[0;0Y[10XPqPcPresentation([3Xi[103X[10X: [3Xoptions[103X[10X);[110X is roughly equivalent to the following802sequence of low-level commands:[133X803804[4X[32X[104X805[4XPqPcPresentation(i: opts); #class 1 call[104X806[4Xfor c in [2 .. class] do[104X807[4X PqNextClass(i);[104X808[4Xod;[104X809[4X[32X[104X810811[33X[0;0Ywhere [3Xopts[103X is [3Xoptions[103X except with the [10XClassBound[110X option set to 1, and [3Xclass[103X812is either the maximum class of a [3Xp[103X-quotient of the group of the process or813the user-supplied value of the option [10XClassBound[110X (whichever is smaller). If814the [10XIdentities[110X option has been set, both the first [10XPqPcPresentation[110X class 1815call and the [10XPqNextClass[110X calls invoke [10XPqEvaluateIdentities([3Xi[103X[10X);[110X as their816final step.[133X817818[33X[0;0YFor those familiar with the [10Xpq[110X program, [10XPqPcPresentation[110X performs menu item8191 of the main [22Xp[122X-Quotient menu.[133X820821[1X5.6-2 PqSavePcPresentation[101X822823[33X[1;0Y[29X[2XPqSavePcPresentation[102X( [3Xi[103X, [3Xfilename[103X ) [32X function[133X824[33X[1;0Y[29X[2XPqSavePcPresentation[102X( [3Xfilename[103X ) [32X function[133X825826[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to827save the pc presentation previously computed for the quotient of the group828of that process to the file with name [3Xfilename[103X. If the first character of829the string [3Xfilename[103X is not [10X/[110X, [3Xfilename[103X is assumed to be the path of a830writable file relative to the directory in which [5XGAP[105X was started. A saved831file may be restored by [10XPqRestorePcPresentation[110X (see [2XPqRestorePcPresentation[102X832([14X5.6-3[114X)).[133X833834[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqSavePcPresentation[110X performs835menu item 2 of the main [22Xp[122X-Quotient menu.[133X836837[1X5.6-3 PqRestorePcPresentation[101X838839[33X[1;0Y[29X[2XPqRestorePcPresentation[102X( [3Xi[103X, [3Xfilename[103X ) [32X function[133X840[33X[1;0Y[29X[2XPqRestorePcPresentation[102X( [3Xfilename[103X ) [32X function[133X841842[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to843restore the pc presentation previously saved to [3Xfilename[103X, by844[10XPqSavePcPresentation[110X (see [2XPqSavePcPresentation[102X ([14X5.6-2[114X)). If the first845character of the string [3Xfilename[103X is not [10X/[110X, [3Xfilename[103X is assumed to be the846path of a readable file relative to the directory in which [5XGAP[105X was started.[133X847848[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqRestorePcPresentation[110X849performs menu item 3 of the main [22Xp[122X-Quotient menu.[133X850851[1X5.6-4 PqNextClass[101X852853[33X[1;0Y[29X[2XPqNextClass[102X( [3Xi:[103X [[3XQueueFactor[103X] ) [32X function[133X854[33X[1;0Y[29X[2XPqNextClass[102X( [3X:[103X [[3XQueueFactor[103X] ) [32X function[133X855856[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to857calculate the next class of [10XANUPQData.io[[3Xi[103X[10X].group[110X.[133X858859[33X[0;0Y[10XPqNextClass[110X accepts the option [10XQueueFactor[110X (see also [14X6.2[114X) which should be a860positive integer if automorphisms have been previously supplied. If the [10Xpq[110X861program requires a queue factor and none is supplied via the option862[10XQueueFactor[110X a default of 15 is taken.[133X863864[33X[0;0Y[13XNotes[113X[133X865866[33X[0;0YThe single command: [10XPqNextClass([3Xi[103X[10X);[110X is equivalent to executing[133X867868[4X[32X[104X869[4XPqComputePCover(i);[104X870[4XPqCollectDefiningRelations(i);[104X871[4XPqDoExponentChecks(i);[104X872[4XPqEliminateRedundantGenerators(i);[104X873[4X[32X[104X874875[33X[0;0YIf the [10XIdentities[110X option is set the [10XPqEliminateRedundantGenerators([3Xi[103X[10X);[110X step876is essentially replaced by [10XPqEvaluateIdentities([3Xi[103X[10X);[110X (which invokes its own877elimination of redundant generators).[133X878879[33X[0;0YFor those familiar with the [10Xpq[110X program, [10XPqNextClass[110X performs menu item 6 of880the main [22Xp[122X-Quotient menu.[133X881882[1X5.6-5 PqComputePCover[101X883884[33X[1;0Y[29X[2XPqComputePCover[102X( [3Xi[103X ) [32X function[133X885[33X[1;0Y[29X[2XPqComputePCover[102X( ) [32X function[133X886887[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X processi, directi, the [10Xpq[110X program888to compute the [22Xp[122X-covering group of [10XANUPQData.io[[3Xi[103X[10X].group[110X. In contrast to the889function [10XPqPCover[110X (see [2XPqPCover[102X ([14X4.1-3[114X)), this function does not return a890[5XGAP[105X pc group.[133X891892[33X[0;0Y[13XNotes[113X[133X893894[33X[0;0YThe single command: [10XPqComputePCover([3Xi[103X[10X);[110X is equivalent to executing[133X895896[4X[32X[104X897[4XPqSetupTablesForNextClass(i);[104X898[4XPqTails(i, 0);[104X899[4XPqDoConsistencyChecks(i, 0, 0);[104X900[4XPqEliminateRedundantGenerators(i);[104X901[4X[32X[104X902903[33X[0;0YFor those familiar with the [10Xpq[110X program, [10XPqComputePCover[110X performs menu item 7904of the main [22Xp[122X-Quotient menu.[133X905906907[1X5.7 [33X[0;0YCommands from the Advanced [22Xp[122X[101X[1X-Quotient menu[133X[101X908909[1X5.7-1 PqCollect[101X910911[33X[1;0Y[29X[2XPqCollect[102X( [3Xi[103X, [3Xword[103X ) [32X function[133X912[33X[1;0Y[29X[2XPqCollect[102X( [3Xword[103X ) [32X function[133X913914[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, instruct the [10Xpq[110X program to915do a collection on [3Xword[103X, a word in the current pc generators (the form of916[3Xword[103X required is described below). [10XPqCollect[110X returns the resulting word of917the collection as a list of generator number, exponent pairs (the same form918as the second allowed input form of [3Xword[103X; see below).[133X919920[33X[0;0YThe argument [3Xword[103X may be input in either of the following ways:[133X921922[31X1[131X [33X[0;6Y[3Xword[103X may be a string, where the [3Xi[103Xth pc generator is represented by [10Xx[3Xi[103X[10X[110X,923e.g. [10X"x3*x2^2*x1"[110X. This way is quite versatile as parentheses and924left-normed commutators -- using square brackets, in the same way as925[10XPqGAPRelators[110X (see [2XPqGAPRelators[102X ([14X3.4-2[114X)) -- are permitted; [3Xword[103X is926checked for correct syntax via [10XPqParseWord[110X (see [2XPqParseWord[102X ([14X3.4-3[114X)).[133X927928[31X2[131X [33X[0;6YOtherwise, [3Xword[103X must be a list of generator number, exponent pairs of929integers, i.e. each pair represents a [21Xsyllable[121X so that [10X[ [3, 1], [2,9302], [1, 1] ][110X represents the same word as that of the example given for931the first allowed form of [3Xword[103X.[133X932933[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqCollect[110X performs menu item 1934of the Advanced [22Xp[122X-Quotient menu.[133X935936[1X5.7-2 PqSolveEquation[101X937938[33X[1;0Y[29X[2XPqSolveEquation[102X( [3Xi[103X, [3Xa[103X, [3Xb[103X ) [32X function[133X939[33X[1;0Y[29X[2XPqSolveEquation[102X( [3Xa[103X, [3Xb[103X ) [32X function[133X940941[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to942solve [22X[3Xa[103X * [3Xx[103X = [3Xb[103X[122X for [3Xx[103X, where [3Xa[103X and [3Xb[103X are words in the pc generators. For the943representation of these words see the description of the function [10XPqCollect[110X944([2XPqCollect[102X ([14X5.7-1[114X)).[133X945946[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqSolveEquation[110X performs menu947item 2 of the Advanced [22Xp[122X-Quotient menu.[133X948949[1X5.7-3 PqCommutator[101X950951[33X[1;0Y[29X[2XPqCommutator[102X( [3Xi[103X, [3Xwords[103X, [3Xpow[103X ) [32X function[133X952[33X[1;0Y[29X[2XPqCommutator[102X( [3Xwords[103X, [3Xpow[103X ) [32X function[133X953954[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, instruct the [10Xpq[110X program to955compute the left normed commutator of the list [3Xwords[103X of words in the current956pc generators raised to the integer power [3Xpow[103X, and return the resulting word957as a list of generator number, exponent pairs. The form required for each958word of [3Xwords[103X is the same as that required for the [3Xword[103X argument of959[10XPqCollect[110X (see [2XPqCollect[102X ([14X5.7-1[114X)). The form of the output word is also the960same as for [10XPqCollect[110X.[133X961962[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqCommutator[110X performs menu963item 3 of the Advanced [22Xp[122X-Quotient menu.[133X964965[1X5.7-4 PqSetupTablesForNextClass[101X966967[33X[1;0Y[29X[2XPqSetupTablesForNextClass[102X( [3Xi[103X ) [32X function[133X968[33X[1;0Y[29X[2XPqSetupTablesForNextClass[102X( ) [32X function[133X969970[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to971set up tables for the next class. As as side-effect, after972[10XPqSetupTablesForNextClass([3Xi[103X[10X)[110X the value returned by [10XPqPClass([3Xi[103X[10X)[110X will be one973more than it was previously.[133X974975[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqSetupTablesForNextClass[110X976performs menu item 6 of the Advanced [22Xp[122X-Quotient menu.[133X977978[1X5.7-5 PqTails[101X979980[33X[1;0Y[29X[2XPqTails[102X( [3Xi[103X, [3Xweight[103X ) [32X function[133X981[33X[1;0Y[29X[2XPqTails[102X( [3Xweight[103X ) [32X function[133X982983[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to984compute and add tails of weight [3Xweight[103X if [3Xweight[103X is in the integer range [10X[2985.. PqPClass([3Xi[103X[10X)][110X (assuming [3Xi[103X is the number of the process, even in the986default case) or for all weights if [10X[3Xweight[103X[10X = 0[110X.[133X987988[33X[0;0YIf [3Xweight[103X is non-zero, then tails that introduce new generators for only989weight [3Xweight[103X are computed and added, and in this case and if [10X[3Xweight[103X[10X <990PqPClass([3Xi[103X[10X)[110X, it is assumed that the tails that introduce new generators for991each weight from [10XPqPClass([3Xi[103X[10X)[110X down to weight [10X[3Xweight[103X[10X + 1[110X have already been992added. You may wish to call [10XPqSetMetabelian[110X (see [2XPqSetMetabelian[102X ([14X5.7-16[114X))993prior to calling [10XPqTails[110X.[133X994995[33X[0;0Y[13XNotes[113X[133X996997[33X[0;0YFor its use in the context of finding the next class see [2XPqNextClass[102X998([14X5.6-4[114X); in particular, a call to [10XPqSetupTablesForNextClass[110X999(see [2XPqSetupTablesForNextClass[102X ([14X5.7-4[114X)) needs to have been made prior to1000calling [10XPqTails[110X.[133X10011002[33X[0;0YThe single command: [10XPqTails([3Xi[103X[10X, [3Xweight[103X[10X);[110X is equivalent to[133X10031004[4X[32X[104X1005[4XPqComputeTails(i, weight);[104X1006[4XPqAddTails(i, weight);[104X1007[4X[32X[104X10081009[33X[0;0YFor those familiar with the [10Xpq[110X program, [10XPqTails[110X uses menu item 7 of the1010Advanced [22Xp[122X-Quotient menu.[133X10111012[1X5.7-6 PqComputeTails[101X10131014[33X[1;0Y[29X[2XPqComputeTails[102X( [3Xi[103X, [3Xweight[103X ) [32X function[133X1015[33X[1;0Y[29X[2XPqComputeTails[102X( [3Xweight[103X ) [32X function[133X10161017[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1018compute tails of weight [3Xweight[103X if [3Xweight[103X is in the integer range [10X[2 ..1019PqPClass([3Xi[103X[10X)][110X (assuming [3Xi[103X is the number of the process, even in the default1020case) or for all weights if [10X[3Xweight[103X[10X = 0[110X. See [10XPqTails[110X ([2XPqTails[102X ([14X5.7-5[114X)) for1021more details.[133X10221023[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqComputeTails[110X uses menu item10247 of the Advanced [22Xp[122X-Quotient menu.[133X10251026[1X5.7-7 PqAddTails[101X10271028[33X[1;0Y[29X[2XPqAddTails[102X( [3Xi[103X, [3Xweight[103X ) [32X function[133X1029[33X[1;0Y[29X[2XPqAddTails[102X( [3Xweight[103X ) [32X function[133X10301031[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1032add the tails of weight [3Xweight[103X, previously computed by [10XPqComputeTails[110X1033(see [2XPqComputeTails[102X ([14X5.7-6[114X)), if [3Xweight[103X is in the integer range [10X[2 ..1034PqPClass([3Xi[103X[10X)][110X (assuming [3Xi[103X is the number of the process, even in the default1035case) or for all weights if [10X[3Xweight[103X[10X = 0[110X. See [10XPqTails[110X ([2XPqTails[102X ([14X5.7-5[114X)) for1036more details.[133X10371038[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqAddTails[110X uses menu item 7 of1039the Advanced [22Xp[122X-Quotient menu.[133X10401041[1X5.7-8 PqDoConsistencyChecks[101X10421043[33X[1;0Y[29X[2XPqDoConsistencyChecks[102X( [3Xi[103X, [3Xweight[103X, [3Xtype[103X ) [32X function[133X1044[33X[1;0Y[29X[2XPqDoConsistencyChecks[102X( [3Xweight[103X, [3Xtype[103X ) [32X function[133X10451046[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, do consistency checks for1047weight [3Xweight[103X if [3Xweight[103X is in the integer range [10X[3 .. PqPClass([3Xi[103X[10X)][110X (assuming1048[3Xi[103X is the number of the process) or for all weights if [10X[3Xweight[103X[10X = 0[110X, and for1049type [3Xtype[103X if [3Xtype[103X is in the range [10X[1, 2, 3][110X (see below) or for all types if1050[10X[3Xtype[103X[10X = 0[110X. (For its use in the context of finding the next class see1051[2XPqNextClass[102X ([14X5.6-4[114X).)[133X10521053[33X[0;0YThe [13Xtype[113X of a consistency check is defined as follows.1054[10XPqDoConsistencyChecks([3Xi[103X[10X, [3Xweight[103X[10X, [3Xtype[103X[10X)[110X for [3Xweight[103X in [10X[3 .. PqPClass([3Xi[103X[10X)][110X and1055the given value of [3Xtype[103X invokes the equivalent of the following1056[10XPqDoConsistencyCheck[110X calls (see [2XPqDoConsistencyCheck[102X ([14X5.7-17[114X)):[133X10571058[8X[10X[3Xtype[103X[8X[10X = 1[110X[8X:[108X1059[33X[0;6Y[10XPqDoConsistencyCheck([3Xi[103X[10X, [3Xa[103X[10X, [3Xa[103X[10X, [3Xa[103X[10X)[110X checks [10X2 * PqWeight([3Xi[103X[10X, [3Xa[103X[10X) + 1 =1060[3Xweight[103X[10X[110X, for pc generators of index [3Xa[103X.[133X10611062[8X[10X[3Xtype[103X[8X[10X = 2[110X[8X:[108X1063[33X[0;6Y[10XPqDoConsistencyCheck([3Xi[103X[10X, [3Xb[103X[10X, [3Xb[103X[10X, [3Xa[103X[10X)[110X checks for pc generators of indices1064[3Xb[103X, [3Xa[103X satisfyingx both [10X[3Xb[103X[10X > [3Xa[103X[10X[110X and [10XPqWeight([3Xi[103X[10X, [3Xb[103X[10X) + PqWeight([3Xi[103X[10X, [3Xa[103X[10X) + 1 =1065[3Xweight[103X[10X[110X.[133X10661067[8X[10X[3Xtype[103X[8X[10X = 3[110X[8X:[108X1068[33X[0;6Y[10XPqDoConsistencyCheck([3Xi[103X[10X, [3Xc[103X[10X, [3Xb[103X[10X, [3Xa[103X[10X)[110X checks for pc generators of indices1069[3Xc[103X, [3Xb[103X, [3Xa[103X satisfying [10X[3Xc[103X[10X > [3Xb[103X[10X > [3Xa[103X[10X[110X and the sum of the weights of these1070generators equals [3Xweight[103X.[133X10711072[33X[0;0Y[13XNotes[113X[133X10731074[33X[0;0Y[10XPqWeight([3Xi[103X[10X, [3Xj[103X[10X)[110X returns the weight of the [3Xj[103Xth pc generator, for process [3Xi[103X1075(see [2XPqWeight[102X ([14X5.5-5[114X)).[133X10761077[33X[0;0YIt is assumed that tails for the given weight (or weights) have already been1078added (see [2XPqTails[102X ([14X5.7-5[114X)).[133X10791080[33X[0;0YFor those familiar with the [10Xpq[110X program, [10XPqDoConsistencyChecks[110X performs menu1081item 8 of the Advanced [22Xp[122X-Quotient menu.[133X10821083[1X5.7-9 PqCollectDefiningRelations[101X10841085[33X[1;0Y[29X[2XPqCollectDefiningRelations[102X( [3Xi[103X ) [32X function[133X1086[33X[1;0Y[29X[2XPqCollectDefiningRelations[102X( ) [32X function[133X10871088[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1089collect the images of the defining relations of the original fp group of the1090process, with respect to the current pc presentation, in the context of1091finding the next class (see [2XPqNextClass[102X ([14X5.6-4[114X)). If the tails operation is1092not complete then the relations may be evaluated incorrectly.[133X10931094[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqCollectDefiningRelations[110X1095performs menu item 9 of the Advanced [22Xp[122X-Quotient menu.[133X10961097[1X5.7-10 PqCollectWordInDefiningGenerators[101X10981099[33X[1;0Y[29X[2XPqCollectWordInDefiningGenerators[102X( [3Xi[103X, [3Xword[103X ) [32X function[133X1100[33X[1;0Y[29X[2XPqCollectWordInDefiningGenerators[102X( [3Xword[103X ) [32X function[133X11011102[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, take a user-defined word1103[3Xword[103X in the defining generators of the original presentation of the fp or pc1104group of the process. Each generator is mapped into the current pc1105presentation, and the resulting word is collected with respect to the1106current pc presentation. The result of the collection is returned as a list1107of generator number, exponent pairs.[133X11081109[33X[0;0YThe [3Xword[103X argument may be input in either of the two ways described for1110[10XPqCollect[110X (see [2XPqCollect[102X ([14X5.7-1[114X)).[133X11111112[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqCollectDefiningGenerators[110X1113performs menu item 23 of the Advanced [22Xp[122X-Quotient menu.[133X11141115[1X5.7-11 PqCommutatorDefiningGenerators[101X11161117[33X[1;0Y[29X[2XPqCommutatorDefiningGenerators[102X( [3Xi[103X, [3Xwords[103X, [3Xpow[103X ) [32X function[133X1118[33X[1;0Y[29X[2XPqCommutatorDefiningGenerators[102X( [3Xwords[103X, [3Xpow[103X ) [32X function[133X11191120[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, take a list [3Xwords[103X of1121user-defined words in the defining generators of the original presentation1122of the fp or pc group of the process, and an integer power [3Xpow[103X. Each1123generator is mapped into the current pc presentation. The list [3Xwords[103X is1124interpreted as a left-normed commutator which is then raised to [3Xpow[103X and1125collected with respect to the current pc presentation. The result of the1126collection is returned as a list of generator number, exponent pairs.[133X11271128[33X[0;0Y[13XNote[113X For those familiar with the [10Xpq[110X program, [10XPqCommutatorDefiningGenerators[110X1129performs menu item 24 of the Advanced [22Xp[122X-Quotient menu.[133X11301131[1X5.7-12 PqDoExponentChecks[101X11321133[33X[1;0Y[29X[2XPqDoExponentChecks[102X( [3Xi:[103X [[3XBounds[103X [3X:=[103X [3Xlist[103X] ) [32X function[133X1134[33X[1;0Y[29X[2XPqDoExponentChecks[102X( [3X:[103X [[3XBounds[103X [3X:=[103X [3Xlist[103X] ) [32X function[133X11351136[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1137do exponent checks for weights (inclusively) between the bounds of [10XBounds[110X or1138for all weights if [10XBounds[110X is not given. The value [3Xlist[103X of [10XBounds[110X (assuming1139the interactive process is numbered [3Xi[103X) should be a list of two integers [3Xlow[103X,1140[3Xhigh[103X satisfying [22X1 le [3Xlow[103X le [3Xhigh[103X le[122X [10XPqPClass([3Xi[103X[10X)[110X (see [2XPqPClass[102X ([14X5.5-4[114X)). If1141no exponent law has been specified, no exponent checks are performed.[133X11421143[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqDoExponentChecks[110X performs1144menu item 10 of the Advanced [22Xp[122X-Quotient menu.[133X11451146[1X5.7-13 PqEliminateRedundantGenerators[101X11471148[33X[1;0Y[29X[2XPqEliminateRedundantGenerators[102X( [3Xi[103X ) [32X function[133X1149[33X[1;0Y[29X[2XPqEliminateRedundantGenerators[102X( ) [32X function[133X11501151[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1152eliminate redundant generators of the current [22Xp[122X-quotient.[133X11531154[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqEliminateRedundantGenerators[110X1155performs menu item 11 of the Advanced [22Xp[122X-Quotient menu.[133X11561157[1X5.7-14 PqRevertToPreviousClass[101X11581159[33X[1;0Y[29X[2XPqRevertToPreviousClass[102X( [3Xi[103X ) [32X function[133X1160[33X[1;0Y[29X[2XPqRevertToPreviousClass[102X( ) [32X function[133X11611162[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1163abandon the current class and revert to the previous class.[133X11641165[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqRevertToPreviousClass[110X1166performs menu item 12 of the Advanced [22Xp[122X-Quotient menu.[133X11671168[1X5.7-15 PqSetMaximalOccurrences[101X11691170[33X[1;0Y[29X[2XPqSetMaximalOccurrences[102X( [3Xi[103X, [3Xnoccur[103X ) [32X function[133X1171[33X[1;0Y[29X[2XPqSetMaximalOccurrences[102X( [3Xnoccur[103X ) [32X function[133X11721173[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1174set maximal occurrences of the weight 1 generators in the definitions of pcp1175generators of the group of the process. This can be used to avoid the1176definition of generators of which one knows for theoretical reasons that1177they would be eliminated later on.[133X11781179[33X[0;0YThe argument [3Xnoccur[103X must be a list of non-negative integers of length the1180number of weight 1 generators (i.e. the rank of the class 1 [22Xp[122X-quotient of1181the group of the process). An entry of [10X0[110X for a particular generator1182indicates that there is no limit on the number of occurrences for the1183generator.[133X11841185[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqSetMaximalOccurrences[110X1186performs menu item 13 of the Advanced [22Xp[122X-Quotient menu.[133X11871188[1X5.7-16 PqSetMetabelian[101X11891190[33X[1;0Y[29X[2XPqSetMetabelian[102X( [3Xi[103X ) [32X function[133X1191[33X[1;0Y[29X[2XPqSetMetabelian[102X( ) [32X function[133X11921193[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1194enforce metabelian-ness.[133X11951196[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqSetMetabelian[110X performs menu1197item 14 of the Advanced [22Xp[122X-Quotient menu.[133X11981199[1X5.7-17 PqDoConsistencyCheck[101X12001201[33X[1;0Y[29X[2XPqDoConsistencyCheck[102X( [3Xi[103X, [3Xc[103X, [3Xb[103X, [3Xa[103X ) [32X function[133X1202[33X[1;0Y[29X[2XPqDoConsistencyCheck[102X( [3Xc[103X, [3Xb[103X, [3Xa[103X ) [32X function[133X1203[33X[1;0Y[29X[2XPqJacobi[102X( [3Xi[103X, [3Xc[103X, [3Xb[103X, [3Xa[103X ) [32X function[133X1204[33X[1;0Y[29X[2XPqJacobi[102X( [3Xc[103X, [3Xb[103X, [3Xa[103X ) [32X function[133X12051206[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1207do the consistency check for the pc generators with indices [3Xc[103X, [3Xb[103X, [3Xa[103X which1208should be non-increasing positive integers, i.e. [22X[3Xc[103X ge [3Xb[103X ge [3Xa[103X[122X.[133X12091210[33X[0;0YThere are 3 types of consistency checks:[133X121112121213[24X[33X[0;6Y\begin{array}{rclrl} (a^n)a &=& a(a^n) && {\rm (Type\ 1)} \\ (b^n)a &=&1214b^{(n-1)}(ba), b(a^n) = (ba)a^{(n-1)} && {\rm (Type\ 2)} \\ c(ba) &=& (cb)a1215&& {\rm (Type\ 3)} \\ \end{array}[133X12161217[124X12181219[33X[0;0YThe reason some people talk about Jacobi relations instead of consistency1220checks becomes clear when one looks at the consistency check of type 3:[133X122112221223[24X[33X[0;6Y\begin{array}{rcl} c(ba) &=& a c[c,a] b[b,a] = acb [c,a][c,a,b][b,a] = \dots1224\\ (cb)a &=& b c[c,b] a = a b[b,a] c[c,a] [c,b][c,b,a] \\ &=& abc [b,a]1225[b,a,c] [c,a] [c,b] [c,b,a] = \dots \\ \end{array}[133X12261227[124X12281229[33X[0;0YEach collection would normally carry on further. But one can see already1230that no other commutators of weight 3 will occur. After all terms of weight1231one and weight two have been moved to the left we end up with:[133X123212331234[24X[33X[0;6Y\begin{array}{rcl} & &abc [b,a] [c,a] [c,b] [c,a,b] \dots \\ &=&abc [b,a]1235[c,a] [c,b] [c,b,a] [b,a,c] \dots \\ \end{array}[133X12361237[124X12381239[33X[0;0YModulo terms of weight 4 this is equivalent to[133X124012411242[24X[33X[0;6Y[c,a,b] [b,c,a] [a,b,c] = 1[133X12431244[124X12451246[33X[0;0Ywhich is the Jacobi identity.[133X12471248[33X[0;0YSee also [10XPqDoConsistencyChecks[110X ([2XPqDoConsistencyChecks[102X ([14X5.7-8[114X)).[133X12491250[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqDoConsistencyCheck[110X and1251[10XPqJacobi[110X perform menu item 15 of the Advanced [22Xp[122X-Quotient menu.[133X12521253[1X5.7-18 PqCompact[101X12541255[33X[1;0Y[29X[2XPqCompact[102X( [3Xi[103X ) [32X function[133X1256[33X[1;0Y[29X[2XPqCompact[102X( ) [32X function[133X12571258[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1259do a compaction of its work space. This function is safe to perform only at1260certain points in time.[133X12611262[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqCompact[110X performs menu item126316 of the Advanced [22Xp[122X-Quotient menu.[133X12641265[1X5.7-19 PqEchelonise[101X12661267[33X[1;0Y[29X[2XPqEchelonise[102X( [3Xi[103X ) [32X function[133X1268[33X[1;0Y[29X[2XPqEchelonise[102X( ) [32X function[133X12691270[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1271echelonise the word most recently collected by [10XPqCollect[110X or [10XPqCommutator[110X1272against the relations of the current pc presentation, and return the number1273of the generator made redundant or [9Xfail[109X if no generator was made redundant.1274A call to [10XPqCollect[110X (see [2XPqCollect[102X ([14X5.7-1[114X)) or [10XPqCommutator[110X1275(see [2XPqCommutator[102X ([14X5.7-3[114X)) needs to be performed prior to using this1276command.[133X12771278[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqEchelonise[110X performs menu1279item 17 of the Advanced [22Xp[122X-Quotient menu.[133X12801281[1X5.7-20 PqSupplyAutomorphisms[101X12821283[33X[1;0Y[29X[2XPqSupplyAutomorphisms[102X( [3Xi[103X, [3Xmlist[103X ) [32X function[133X1284[33X[1;0Y[29X[2XPqSupplyAutomorphisms[102X( [3Xmlist[103X ) [32X function[133X12851286[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, supply the automorphism1287data provided by the list [3Xmlist[103X of matrices with non-negative integer1288coefficients. Each matrix in [3Xmlist[103X describes one automorphism in the1289following way.[133X12901291[30X [33X[0;6YThe rows of each matrix correspond to the pc generators of weight one.[133X12921293[30X [33X[0;6YEach row is the exponent vector of the image of the corresponding1294weight one generator under the respective automorphism.[133X12951296[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqSupplyAutomorphisms[110X uses1297menu item 18 of the Advanced [22Xp[122X-Quotient menu.[133X12981299[1X5.7-21 PqExtendAutomorphisms[101X13001301[33X[1;0Y[29X[2XPqExtendAutomorphisms[102X( [3Xi[103X ) [32X function[133X1302[33X[1;0Y[29X[2XPqExtendAutomorphisms[102X( ) [32X function[133X13031304[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1305extend automorphisms of the [22Xp[122X-quotient of the previous class to the1306[22Xp[122X-quotient of the present class.[133X13071308[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqExtendAutomorphisms[110X uses1309menu item 18 of the Advanced [22Xp[122X-Quotient menu.[133X13101311[1X5.7-22 PqApplyAutomorphisms[101X13121313[33X[1;0Y[29X[2XPqApplyAutomorphisms[102X( [3Xi[103X, [3Xqfac[103X ) [32X function[133X1314[33X[1;0Y[29X[2XPqApplyAutomorphisms[102X( [3Xqfac[103X ) [32X function[133X13151316[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1317apply automorphisms; [3Xqfac[103X is the queue factor e.g. [10X15[110X.[133X13181319[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqCloseRelations[110X performs menu1320item 19 of the Advanced [22Xp[122X-Quotient menu.[133X13211322[1X5.7-23 PqDisplayStructure[101X13231324[33X[1;0Y[29X[2XPqDisplayStructure[102X( [3Xi:[103X [[3XBounds[103X [3X:=[103X [3Xlist[103X] ) [32X function[133X1325[33X[1;0Y[29X[2XPqDisplayStructure[102X( [3X:[103X [[3XBounds[103X [3X:=[103X [3Xlist[103X] ) [32X function[133X13261327[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1328display the structure for the pcp generators numbered (inclusively) between1329the bounds of [10XBounds[110X or for all generators if [10XBounds[110X is not given. The value1330[3Xlist[103X of [10XBounds[110X (assuming the interactive process is numbered [3Xi[103X) should be a1331list of two integers [3Xlow[103X, [3Xhigh[103X satisfying [22X1 le [3Xlow[103X le [3Xhigh[103X le[122X1332[10XPqNrPcGenerators([3Xi[103X[10X)[110X (see [2XPqNrPcGenerators[102X ([14X5.5-1[114X)). [10XPqDisplayStructure[110X also1333accepts the option [10XOutputLevel[110X (see [14X6.2[114X).[133X13341335[33X[0;0Y[13XExplanation of output[113X[133X13361337[33X[0;0YNew generators are defined as commutators of previous generators and1338generators of class 1 or as [22Xp[122X-th powers of generators that have themselves1339been defined as [22Xp[122X-th powers. A generator is never defined as [22Xp[122X-th power of a1340commutator.[133X13411342[33X[0;0YTherefore, there are two cases: all the numbers on the righthand side are1343either the same or they differ. Below, [10Xg[3Xi[103X[10X[110X refers to the [3Xi[103Xth defining1344generator.[133X13451346[30X [33X[0;6YIf the righthand side numbers are all the same, then the generator is1347a [22Xp[122X-th power (of a [22Xp[122X-th power of a [22Xp[122X-th power, etc.). The number of1348repeated digits say how often a [22Xp[122X-th power has to be taken.[133X13491350[33X[0;6YIn the following example, the generator number 31 is the eleventh1351power of generator 17 which in turn is an eleventh power and so on:[133X13521353[33X[0;6Y\begintt #I 31 is defined on 17^11 = 1 1 1 1 1 \endtt So generator 311354is obtained by taking the eleventh power of generator 1 five times.[133X13551356[30X [33X[0;6YIf the numbers are not all the same, the generator is defined by a1357commutator. If the first two generator numbers differ, the generator1358is defined as a left-normed commutator of the weight one generators,1359e.g.[133X13601361[33X[0;6Y\begintt #I 19 is defined on [11, 1] = 2 1 1 1 1 \endtt Here,1362generator 19 is defined as the commutator of generator 11 and1363generator 1 which is the same as the left-normed commutator [10X[x2, x1,1364x1, x1, x1][110X. One can check this by tracing back the definition of1365generator 11 until one gets to a generator of class 1.[133X13661367[30X [33X[0;6YIf the first two generator numbers are identical, then the left most1368component of the left-normed commutator is a [22Xp[122X-th power, e.g.[133X13691370[33X[0;6Y\begintt #I 25 is defined on [14, 1] = 1 1 2 1 1 \endtt[133X13711372[33X[0;6YIn this example, generator 25 is defined as commutator of generator 141373and generator 1. The left-normed commutator is[133X137413751376[24X [33X[0;6Y[(x1^{11})^{11}, x2, x1, x1][133X13771378[124X13791380[33X[0;6YAgain, this can be verified by tracing back the definitions.[133X13811382[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqDisplayStructure[110X performs1383menu item 20 of the Advanced [22Xp[122X-Quotient menu.[133X13841385[1X5.7-24 PqDisplayAutomorphisms[101X13861387[33X[1;0Y[29X[2XPqDisplayAutomorphisms[102X( [3Xi:[103X [[3XBounds[103X [3X:=[103X [3Xlist[103X] ) [32X function[133X1388[33X[1;0Y[29X[2XPqDisplayAutomorphisms[102X( [3X:[103X [[3XBounds[103X [3X:=[103X [3Xlist[103X] ) [32X function[133X13891390[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1391display the automorphism actions on the pcp generators numbered1392(inclusively) between the bounds of [10XBounds[110X or for all generators if [10XBounds[110X1393is not given. The value [3Xlist[103X of [10XBounds[110X (assuming the interactive process is1394numbered [3Xi[103X) should be a list of two integers [3Xlow[103X, [3Xhigh[103X satisfying [22X1 le [3Xlow[103X1395le [3Xhigh[103X le[122X [10XPqNrPcGenerators([3Xi[103X[10X)[110X (see [2XPqNrPcGenerators[102X ([14X5.5-1[114X)).1396[10XPqDisplayStructure[110X also accepts the option [10XOutputLevel[110X (see [14X6.2[114X).[133X13971398[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqDisplayAutomorphisms[110X1399performs menu item 21 of the Advanced [22Xp[122X-Quotient menu.[133X14001401[1X5.7-25 PqWritePcPresentation[101X14021403[33X[1;0Y[29X[2XPqWritePcPresentation[102X( [3Xi[103X, [3Xfilename[103X ) [32X function[133X1404[33X[1;0Y[29X[2XPqWritePcPresentation[102X( [3Xfilename[103X ) [32X function[133X14051406[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1407write a pc presentation of a previously-computed quotient of the group of1408that process, to the file with name [3Xfilename[103X. Here the group of a process is1409the one given as first argument when [10XPqStart[110X was called to initiate that1410process (for process [3Xi[103X the group is stored as [10XANUPQData.io[[3Xi[103X[10X].group[110X). If the1411first character of the string [3Xfilename[103X is not [10X/[110X, [3Xfilename[103X is assumed to be1412the path of a writable file relative to the directory in which [5XGAP[105X was1413started. If a pc presentation has not been previously computed by the [10Xpq[110X1414program, then [10Xpq[110X is called to compute it first, effectively invoking1415[10XPqPcPresentation[110X (see [2XPqPcPresentation[102X ([14X5.6-1[114X)).[133X14161417[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqPcWritePresentation[110X performs1418menu item 25 of the Advanced [22Xp[122X-Quotient menu.[133X141914201421[1X5.8 [33X[0;0YCommands from the Standard Presentation menu[133X[101X14221423[1X5.8-1 PqSPComputePcpAndPCover[101X14241425[33X[1;0Y[29X[2XPqSPComputePcpAndPCover[102X( [3Xi:[103X [3Xoptions[103X ) [32X function[133X1426[33X[1;0Y[29X[2XPqSPComputePcpAndPCover[102X( [3X:[103X [3Xoptions[103X ) [32X function[133X14271428[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, directs the [10Xpq[110X program to1429compute for the group of that process a pc presentation up to the [22Xp[122X-quotient1430of maximum class or the value of the option [10XClassBound[110X and the [22Xp[122X-cover of1431that quotient, and sets up tabular information required for computation of a1432standard presentation. Here the group of a process is the one given as first1433argument when [10XPqStart[110X was called to initiate that process (for process [3Xi[103X the1434group is stored as [10XANUPQData.io[[3Xi[103X[10X].group[110X).[133X14351436[33X[0;0YThe possible [3Xoptions[103X are [10XPrime[110X, [10XClassBound[110X, [10XRelators[110X, [10XExponent[110X, [10XMetabelian[110X1437and [10XOutputLevel[110X (see Chapter [14X'[33X[0;0YANUPQ Options[133X'[114X for detailed descriptions of1438these options). The option [10XPrime[110X is normally determined via [10XPrimePGroup[110X, and1439so is not required unless the group doesn't know it's a [22Xp[122X-group and1440[10XHasPrimePGroup[110X returns [9Xfalse[109X.[133X14411442[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqSPComputePcpAndPCover[110X1443performs option 1 of the Standard Presentation menu.[133X14441445[1X5.8-2 PqSPStandardPresentation[101X14461447[33X[1;0Y[29X[2XPqSPStandardPresentation[102X( [3Xi[103X[, [3Xmlist[103X][3X:[103X [[3Xoptions[103X] ) [32X function[133X1448[33X[1;0Y[29X[2XPqSPStandardPresentation[102X( [[3Xmlist[103X][3X:[103X [[3Xoptions[103X] ) [32X function[133X14491450[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, inputs data given by1451[3Xoptions[103X to compute a standard presentation for the group of that process. If1452argument [3Xmlist[103X is given it is assumed to be the automorphism group data1453required. Otherwise it is assumed that a call to either [10XPq[110X (see [2XPq[102X ([14X5.3-1[114X))1454or [10XPqEpimorphism[110X (see [2XPqEpimorphism[102X ([14X5.3-2[114X)) has generated a [22Xp[122X-quotient and1455that [5XGAP[105X can compute its automorphism group from which the necessary1456automorphism group data can be derived. The group of the process is the one1457given as first argument when [10XPqStart[110X was called to initiate the process (for1458process [3Xi[103X the group is stored as [10XANUPQData.io[[3Xi[103X[10X].group[110X and the [22Xp[122X-quotient if1459existent is stored as [10XANUPQData.io[[3Xi[103X[10X].pQuotient[110X). If [3Xmlist[103X is not given and1460a [22Xp[122X-quotient of the group has not been previously computed a class 11461[22Xp[122X-quotient is computed.[133X14621463[33X[0;0Y[10XPqSPStandardPresentation[110X accepts three options, all optional:[133X14641465[30X [33X[0;6Y[10XClassBound := [3Xn[103X[10X[110X[133X14661467[30X [33X[0;6Y[10XPcgsAutomorphisms[110X[133X14681469[30X [33X[0;6Y[10XStandardPresentationFile := [3Xfilename[103X[10X[110X[133X14701471[33X[0;0YIf [10XClassBound[110X is omitted it defaults to 63.[133X14721473[33X[0;0YDetailed descriptions of the above options may be found in Chapter [14X'[33X[0;0YANUPQ1474Options[133X'[114X.[133X14751476[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqSPPcPresentation[110X performs1477menu item 2 of the Standard Presentation menu.[133X14781479[1X5.8-3 PqSPSavePresentation[101X14801481[33X[1;0Y[29X[2XPqSPSavePresentation[102X( [3Xi[103X, [3Xfilename[103X ) [32X function[133X1482[33X[1;0Y[29X[2XPqSPSavePresentation[102X( [3Xfilename[103X ) [32X function[133X14831484[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, directs the [10Xpq[110X program to1485save the standard presentation previously computed for the group of that1486process to the file with name [3Xfilename[103X, where the group of a process is the1487one given as first argument when [10XPqStart[110X was called to initiate that1488process. If the first character of the string [3Xfilename[103X is not [10X/[110X, [3Xfilename[103X is1489assumed to be the path of a writable file relative to the directory in which1490[5XGAP[105X was started.[133X14911492[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqSPSavePresentation[110X performs1493menu item 3 of the Standard Presentation menu.[133X14941495[1X5.8-4 PqSPCompareTwoFilePresentations[101X14961497[33X[1;0Y[29X[2XPqSPCompareTwoFilePresentations[102X( [3Xi[103X, [3Xf1[103X, [3Xf2[103X ) [32X function[133X1498[33X[1;0Y[29X[2XPqSPCompareTwoFilePresentations[102X( [3Xf1[103X, [3Xf2[103X ) [32X function[133X14991500[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1501compare the presentations in the files with names [3Xf1[103X and [3Xf2[103X and returns [9Xtrue[109X1502if they are identical and [9Xfalse[109X otherwise. For each of the strings [3Xf1[103X and1503[3Xf2[103X, if the first character is not a [10X/[110X then it is assumed to be the path of a1504readable file relative to the directory in which [5XGAP[105X was started.[133X15051506[33X[0;0Y[13XNotes[113X[133X15071508[33X[0;0YThe presentations in files [3Xf1[103X and [3Xf2[103X must have been generated by the [10Xpq[110X1509program but they do [13Xnot[113X need to be [13Xstandard[113X presentations. If If the1510presentations in files [3Xf1[103X and [3Xf2[103X [13Xhave[113X been generated by1511[10XPqSPStandardPresentation[110X (see [2XPqSPStandardPresentation[102X ([14X5.8-2[114X)) then a [9Xfalse[109X1512response from [10XPqSPCompareTwoFilePresentations[110X says the groups defined by1513those presentations are [13Xnot[113X isomorphic.[133X15141515[33X[0;0YFor those familiar with the [10Xpq[110X program, [10XPqSPCompareTwoFilePresentations[110X1516performs menu item 6 of the Standard Presentation menu.[133X15171518[1X5.8-5 PqSPIsomorphism[101X15191520[33X[1;0Y[29X[2XPqSPIsomorphism[102X( [3Xi[103X ) [32X function[133X1521[33X[1;0Y[29X[2XPqSPIsomorphism[102X( ) [32X function[133X15221523[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1524compute the isomorphism mapping from the [22Xp[122X-group of the process to its1525standard presentation. This function provides a description only; for a [5XGAP[105X1526object, use [10XEpimorphismStandardPresentation[110X1527(see [2XEpimorphismStandardPresentation[102X ([14X5.3-5[114X)).[133X15281529[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqSPIsomorphism[110X performs menu1530item 8 of the Standard Presentation menu.[133X153115321533[1X5.9 [33X[0;0YCommands from the Main [22Xp[122X[101X[1X-Group Generation menu[133X[101X15341535[33X[0;0YNote that the [22Xp[122X-group generation commands can only be applied once the [10Xpq[110X1536program has produced a pc presentation of some quotient group of the [21Xgroup1537of the process[121X.[133X15381539[1X5.9-1 PqPGSupplyAutomorphisms[101X15401541[33X[1;0Y[29X[2XPqPGSupplyAutomorphisms[102X( [3Xi[103X[, [3Xmlist[103X][3X:[103X [3Xoptions[103X ) [32X function[133X1542[33X[1;0Y[29X[2XPqPGSupplyAutomorphisms[102X( [[3Xmlist[103X][3X:[103X [3Xoptions[103X ) [32X function[133X15431544[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, supply the [10Xpq[110X program with1545the automorphism group data needed for the current quotient of the group of1546that process (for process [3Xi[103X the group is stored as [10XANUPQData.io[[3Xi[103X[10X].group[110X).1547For a description of the format of [3Xmlist[103X see [2XPqSupplyAutomorphisms[102X ([14X5.7-20[114X).1548The options possible are [10XNumberOfSolubleAutomorphisms[110X and [10XRelativeOrders[110X.1549(Detailed descriptions of these options may be found in Chapter [14X'[33X[0;0YANUPQ1550Options[133X'[114X.)[133X15511552[33X[0;0YIf [3Xmlist[103X is omitted, the automorphism data is determined from the group of1553the process which must have been a [22Xp[122X-group in pc presentation.[133X15541555[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqPGSupplyAutomorphisms[110X1556performs menu item 1 of the main [22Xp[122X-Group Generation menu.[133X15571558[1X5.9-2 PqPGExtendAutomorphisms[101X15591560[33X[1;0Y[29X[2XPqPGExtendAutomorphisms[102X( [3Xi[103X ) [32X function[133X1561[33X[1;0Y[29X[2XPqPGExtendAutomorphisms[102X( ) [32X function[133X15621563[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1564compute the extensions of the automorphisms of the [22Xp[122X-quotient of the1565previous class to the [22Xp[122X-quotient of the current class. You may wish to set1566the [10XInfoLevel[110X of [10XInfoANUPQ[110X to 2 (or more) in order to see the output from1567the [10Xpq[110X program (see [2XInfoANUPQ[102X ([14X3.3-1[114X)).[133X15681569[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqPGExtendAutomorphisms[110X1570performs menu item 2 of the main or advanced [22Xp[122X-Group Generation menu.[133X15711572[1X5.9-3 PqPGConstructDescendants[101X15731574[33X[1;0Y[29X[2XPqPGConstructDescendants[102X( [3Xi:[103X [3Xoptions[103X ) [32X function[133X1575[33X[1;0Y[29X[2XPqPGConstructDescendants[102X( [3X:[103X [3Xoptions[103X ) [32X function[133X15761577[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1578construct descendants prescribed by [3Xoptions[103X, and return the number of1579descendants constructed (compare function [2XPqDescendants[102X ([14X4.4-1[114X) which1580returns the list of descendants). The options possible are [10XClassBound[110X,1581[10XOrderBound[110X, [10XStepSize[110X, [10XPcgsAutomorphisms[110X, [10XRankInitialSegmentSubgroups[110X,1582[10XSpaceEfficient[110X, [10XCapableDescendants[110X, [10XAllDescendants[110X, [10XExponent[110X, [10XMetabelian[110X,1583[10XBasicAlgorithm[110X, [10XCustomiseOutput[110X. (Detailed descriptions of these options may1584be found in Chapter [14X'[33X[0;0YANUPQ Options[133X'[114X.)[133X15851586[33X[0;0Y[10XPqPGConstructDescendants[110X requires that the [10Xpq[110X program has previously1587computed a pc presentation and a [22Xp[122X-cover for a [22Xp[122X-quotient of some class of1588the group of the process.[133X15891590[33X[0;0Y[13XNote:[113X For those familiar with the [10Xpq[110X program, [10XPqPGConstructDescendants[110X1591performs menu item 5 of the main [22Xp[122X-Group Generation menu.[133X15921593[1X5.9-4 PqPGSetDescendantToPcp[101X15941595[33X[1;0Y[29X[2XPqPGSetDescendantToPcp[102X( [3Xi[103X, [3Xcls[103X, [3Xn[103X ) [32X function[133X1596[33X[1;0Y[29X[2XPqPGSetDescendantToPcp[102X( [3Xcls[103X, [3Xn[103X ) [32X function[133X1597[33X[1;0Y[29X[2XPqPGSetDescendantToPcp[102X( [3Xi:[103X [[3XFilename[103X [3X:=[103X [3Xname[103X] ) [32X function[133X1598[33X[1;0Y[29X[2XPqPGSetDescendantToPcp[102X( [3X:[103X [[3XFilename[103X [3X:=[103X [3Xname[103X] ) [32X function[133X1599[33X[1;0Y[29X[2XPqPGRestoreDescendantFromFile[102X( [3Xi[103X, [3Xcls[103X, [3Xn[103X ) [32X function[133X1600[33X[1;0Y[29X[2XPqPGRestoreDescendantFromFile[102X( [3Xcls[103X, [3Xn[103X ) [32X function[133X1601[33X[1;0Y[29X[2XPqPGRestoreDescendantFromFile[102X( [3Xi:[103X [[3XFilename[103X [3X:=[103X [3Xname[103X] ) [32X function[133X1602[33X[1;0Y[29X[2XPqPGRestoreDescendantFromFile[102X( [3X:[103X [[3XFilename[103X [3X:=[103X [3Xname[103X] ) [32X function[133X16031604[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1605restore group [3Xn[103X of class [3Xcls[103X from a temporary file, where [3Xcls[103X and [3Xn[103X are1606positive integers, or the group stored in [3Xname[103X. [10XPqPGSetDescendantToPcp[110X and1607[10XPqPGRestoreDescendantFromFile[110X are synonyms; they make sense only after a1608prior call to construct descendants by say [10XPqPGConstructDescendants[110X1609(see [2XPqPGConstructDescendants[102X ([14X5.9-3[114X)) or the interactive [10XPqDescendants[110X1610(see [2XPqDescendants[102X ([14X5.3-6[114X)). In the [10XFilename[110X option forms, the option1611defaults to the last filename in which a presentation was stored by the [10Xpq[110X1612program.[133X16131614[33X[0;0Y[13XNotes[113X[133X16151616[33X[0;0YSince the [10XPqPGSetDescendantToPcp[110X and [10XPqPGRestoreDescendantFromFile[110X are1617intended to be used in calculation of further descendants the [10Xpq[110X program1618computes the [22Xp[122X-cover of the restored descendant. Hence, [10XPqCurrentGroup[110X used1619immediately after one of these commands returns the [22Xp[122X-cover of the restored1620descendant rather than the descendant itself.[133X16211622[33X[0;0YFor those familiar with the [10Xpq[110X program, [10XPqPGSetDescendantToPcp[110X and1623[10XPqPGRestoreDescendantFromFile[110X perform menu item 3 of the main or advanced1624[22Xp[122X-Group Generation menu.[133X162516261627[1X5.10 [33X[0;0YCommands from the Advanced [22Xp[122X[101X[1X-Group Generation menu[133X[101X16281629[33X[0;0YThe functions below perform the component algorithms of1630[10XPqPGConstructDescendants[110X (see [2XPqPGConstructDescendants[102X ([14X5.9-3[114X)). You can get1631some idea of their usage by trying [10XPqExample("Nott-APG-Rel-i");[110X. You can get1632some idea of the breakdown of [10XPqPGConstructDescendants[110X into these functions1633by comparing the previous output with [10XPqExample("Nott-PG-Rel-i");[110X.[133X16341635[33X[0;0YThese functions are intended for use only by [21Xexperts[121X; please contact the1636authors of the package if you genuinely have a need for them and need any1637amplified descriptions.[133X16381639[1X5.10-1 PqAPGDegree[101X16401641[33X[1;0Y[29X[2XPqAPGDegree[102X( [3Xi[103X, [3Xstep[103X, [3Xrank:[103X [[3XExponent[103X [3X:=[103X [3Xn[103X] ) [32X function[133X1642[33X[1;0Y[29X[2XPqAPGDegree[102X( [3Xstep[103X, [3Xrank:[103X [[3XExponent[103X [3X:=[103X [3Xn[103X] ) [32X function[133X16431644[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1645invoke menu item 6 of the Advanced [22Xp[122X-Group Generation menu. Here the1646step-size [3Xstep[103X and the rank [3Xrank[103X are positive integers and are the arguments1647required by the [10Xpq[110X program. See [14X6.2[114X for the one recognised option [10XExponent[110X.[133X16481649[1X5.10-2 PqAPGPermutations[101X16501651[33X[1;0Y[29X[2XPqAPGPermutations[102X( [3Xi:[103X [3Xoptions[103X ) [32X function[133X1652[33X[1;0Y[29X[2XPqAPGPermutations[102X( [3X:[103X [3Xoptions[103X ) [32X function[133X16531654[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X program to1655perform menu item 7 of the Advanced [22Xp[122X-Group Generation menu. Here the1656options [3Xoptions[103X recognised are [10XPcgsAutomorphisms[110X, [10XSpaceEfficient[110X,1657[10XPrintAutomorphisms[110X and [10XPrintPermutations[110X (see Chapter [14X'[33X[0;0YANUPQ Options[133X'[114X for1658details).[133X16591660[1X5.10-3 PqAPGOrbits[101X16611662[33X[1;0Y[29X[2XPqAPGOrbits[102X( [3Xi:[103X [3Xoptions[103X ) [32X function[133X1663[33X[1;0Y[29X[2XPqAPGOrbits[102X( [3X:[103X [3Xoptions[103X ) [32X function[133X16641665[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X to perform1666menu item 8 of the Advanced [22Xp[122X-Group Generation menu.[133X16671668[33X[0;0YHere the options [3Xoptions[103X recognised are [10XPcgsAutomorphisms[110X, [10XSpaceEfficient[110X1669and [10XCustomiseOutput[110X (see Chapter [14X'[33X[0;0YANUPQ Options[133X'[114X for details). For the1670[10XCustomiseOutput[110X option only the setting of the [10Xorbit[110X is recognised (all1671other fields if set are ignored).[133X16721673[1X5.10-4 PqAPGOrbitRepresentatives[101X16741675[33X[1;0Y[29X[2XPqAPGOrbitRepresentatives[102X( [3Xi:[103X [3Xoptions[103X ) [32X function[133X1676[33X[1;0Y[29X[2XPqAPGOrbitRepresentatives[102X( [3X:[103X [3Xoptions[103X ) [32X function[133X16771678[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X to perform1679item 9 of the Advanced [22Xp[122X-Group Generation menu.[133X16801681[33X[0;0YThe options [3Xoptions[103X may be any selection of the following:1682[10XPcgsAutomorphisms[110X, [10XSpaceEfficient[110X, [10XExponent[110X, [10XMetabelian[110X, [10XCapableDescendants[110X1683(or [10XAllDescendants[110X), [10XCustomiseOutput[110X (where only the [10Xgroup[110X and [10Xautgroup[110X1684fields are recognised) and [10XFilename[110X (see Chapter [14X'[33X[0;0YANUPQ Options[133X'[114X for1685details). If [10XFilename[110X is omitted the reduced [22Xp[122X-cover is written to the file1686[10X"redPCover"[110X in the temporary directory whose name is stored in1687[10XANUPQData.tmpdir[110X.[133X16881689[1X5.10-5 PqAPGSingleStage[101X16901691[33X[1;0Y[29X[2XPqAPGSingleStage[102X( [3Xi:[103X [3Xoptions[103X ) [32X function[133X1692[33X[1;0Y[29X[2XPqAPGSingleStage[102X( [3X:[103X [3Xoptions[103X ) [32X function[133X16931694[33X[0;0Yfor the [3Xi[103Xth or default interactive [5XANUPQ[105X process, direct the [10Xpq[110X to perform1695option 5 of the Advanced [22Xp[122X-Group Generation menu.[133X16961697[33X[0;0YThe possible options are [10XStepSize[110X, [10XPcgsAutomorphisms[110X,1698[10XRankInitialSegmentSubgroups[110X, [10XSpaceEfficient[110X, [10XCapableDescendants[110X,1699[10XAllDescendants[110X, [10XExponent[110X, [10XMetabelian[110X, [10XBasicAlgorithm[110X and [10XCustomiseOutput[110X.1700(Detailed descriptions of these options may be found in Chapter [14X'[33X[0;0YANUPQ1701Options[133X'[114X.)[133X170217031704[1X5.11 [33X[0;0YPrimitive Interactive ANUPQ Process Read/Write Functions[133X[101X17051706[33X[0;0YFor those familiar with using the [10Xpq[110X program as a standalone we provide1707primitive read/write tools to communicate directly with an interactive [5XANUPQ[105X1708process, started via [10XPqStart[110X. For the most part, it is up to the user to1709translate the output strings from [10Xpq[110X program into a form useful in [5XGAP[105X.[133X17101711[1X5.11-1 PqRead[101X17121713[33X[1;0Y[29X[2XPqRead[102X( [3Xi[103X ) [32X function[133X1714[33X[1;0Y[29X[2XPqRead[102X( ) [32X function[133X17151716[33X[0;0Yread a complete line of [5XANUPQ[105X output, from the [3Xi[103Xth or default interactive1717[5XANUPQ[105X process, if there is output to be read and returns [9Xfail[109X otherwise.1718When successful, the line is returned as a string complete with trailing1719newline, colon, or question-mark character. Please note that it is possible1720to be [21Xtoo quick[121X (i.e. the return can be [9Xfail[109X purely because the output from1721[5XANUPQ[105X is not there yet), but if [10XPqRead[110X finds any output at all, it waits for1722a complete line. [10XPqRead[110X also writes the line read via [10XInfo[110X at [10XInfoANUPQ[110X1723level 2. It doesn't try to distinguish banner and menu output from other1724output of the [10Xpq[110X program.[133X17251726[1X5.11-2 PqReadAll[101X17271728[33X[1;0Y[29X[2XPqReadAll[102X( [3Xi[103X ) [32X function[133X1729[33X[1;0Y[29X[2XPqReadAll[102X( ) [32X function[133X17301731[33X[0;0Yread and return as many [13Xcomplete[113X lines of [5XANUPQ[105X output, from the [3Xi[103Xth or1732default interactive [5XANUPQ[105X process, as there are to be read, [13Xat the time of1733the call[113X, as a list of strings with any trailing newlines removed and1734returns the empty list otherwise. [10XPqReadAll[110X also writes each line read via1735[10XInfo[110X at [10XInfoANUPQ[110X level 2. It doesn't try to distinguish banner and menu1736output from other output of the [10Xpq[110X program. Whenever [10XPqReadAll[110X finds only a1737partial line, it waits for the complete line, thus increasing the1738probability that it has captured all the output to be had from [5XANUPQ[105X.[133X17391740[1X5.11-3 PqReadUntil[101X17411742[33X[1;0Y[29X[2XPqReadUntil[102X( [3Xi[103X, [3XIsMyLine[103X ) [32X function[133X1743[33X[1;0Y[29X[2XPqReadUntil[102X( [3XIsMyLine[103X ) [32X function[133X1744[33X[1;0Y[29X[2XPqReadUntil[102X( [3Xi[103X, [3XIsMyLine[103X, [3XModify[103X ) [32X function[133X1745[33X[1;0Y[29X[2XPqReadUntil[102X( [3XIsMyLine[103X, [3XModify[103X ) [32X function[133X17461747[33X[0;0Yread complete lines of [5XANUPQ[105X output, from the [3Xi[103Xth or default interactive1748[5XANUPQ[105X process, [21Xchomps[121X them (i.e. removes any trailing newline character),1749emits them to [10XInfo[110X at [10XInfoANUPQ[110X level 2 (without trying to distinguish1750banner and menu output from other output of the [10Xpq[110X program), and applies the1751function [3XModify[103X (where [3XModify[103X is just the identity map/function for the1752first two forms) until a [21Xchomped[121X line [3Xline[103X for which [10X[3XIsMyLine[103X[10X( [3XModify[103X[10X([3Xline[103X[10X)1753)[110X is true. [10XPqReadUntil[110X returns the list of [3XModify[103X-ed [21Xchomped[121X lines read.[133X17541755[33X[0;0Y[13XNotes:[113X When provided by the user, [3XModify[103X should be a function that accepts a1756single string argument.[133X17571758[33X[0;0Y[3XIsMyLine[103X should be a function that is able to accept the output of [3XModify[103X1759(or take a single string argument when [3XModify[103X is not provided) and should1760return a boolean.[133X17611762[33X[0;0YIf [10X[3XIsMyLine[103X[10X( [3XModify[103X[10X([3Xline[103X[10X) )[110X is never true, [10XPqReadUntil[110X will wait1763indefinitely.[133X17641765[1X5.11-4 PqWrite[101X17661767[33X[1;0Y[29X[2XPqWrite[102X( [3Xi[103X, [3Xstring[103X ) [32X function[133X1768[33X[1;0Y[29X[2XPqWrite[102X( [3Xstring[103X ) [32X function[133X17691770[33X[0;0Ywrite [3Xstring[103X to the [3Xi[103Xth or default interactive [5XANUPQ[105X process; [3Xstring[103X must be1771in exactly the form the [5XANUPQ[105X standalone expects. The command is echoed via1772[10XInfo[110X at [10XInfoANUPQ[110X level 3 (with a [21X[10XToPQ> [110X[121X prompt); i.e. do1773[10XSetInfoLevel(InfoANUPQ, 3);[110X to see what is transmitted to the [10Xpq[110X program.1774[10XPqWrite[110X returns [9Xtrue[109X if successful in writing to the stream of the1775interactive [5XANUPQ[105X process, and [9Xfail[109X otherwise.[133X17761777[33X[0;0Y[13XNote:[113X If [10XPqWrite[110X returns [9Xfail[109X it means that the [5XANUPQ[105X process has died.[133X1778177917801781