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[1X6 [33X[0;0YNew [5XGAP[105X[101X[1X Objects and Utility Functions Provided by the [5XAtlasRep[105X[101X[1X Package[133X[101X23[33X[0;0YThis chapter describes [5XGAP[105X objects and functions that are provided by the4[5XAtlasRep[105X package but that might be of general interest.[133X56[33X[0;0YThe new objects are straight line decisions (see Section [14X6.1[114X) and black box7programs (see Section [14X6.2[114X).[133X89[33X[0;0YThe new functions are concerned with representations of minimal degree, see10Section [14X6.3[114X.[133X111213[1X6.1 [33X[0;0YStraight Line Decisions[133X[101X1415[33X[0;0Y[13XStraight line decisions[113X are similar to straight line programs (see16Section [14X'Reference: Straight Line Programs'[114X) but return [9Xtrue[109X or [9Xfalse[109X. A17straight line decisions checks a property for its inputs. An important18example is to check whether a given list of group generators is in fact a19list of standard generators (cf. Section[14X3.3[114X) for this group.[133X2021[33X[0;0YA straight line decision in [5XGAP[105X is represented by an object in the filter22[2XIsStraightLineDecision[102X ([14X6.1-1[114X) that stores a list of [21Xlines[121X each of which has23one of the following three forms.[133X2425[31X1[131X [33X[0;6Ya nonempty dense list [22Xl[122X of integers,[133X2627[31X2[131X [33X[0;6Ya pair [22X[ l, i ][122X where [22Xl[122X is a list of form 1. and [22Xi[122X is a positive28integer,[133X2930[31X3[131X [33X[0;6Ya list [22X[[122X[10X"Order"[110X[22X, i, n ][122X where [22Xi[122X and [22Xn[122X are positive integers.[133X3132[33X[0;0YThe first two forms have the same meaning as for straight line programs (see33Section [14X'Reference: Straight Line Programs'[114X), the last form means a check34whether the element stored at the label [22Xi[122X-th has the order [22Xn[122X.[133X3536[33X[0;0YFor the meaning of the list of lines, see [2XResultOfStraightLineDecision[102X37([14X6.1-6[114X).[133X3839[33X[0;0YStraight line decisions can be constructed using [2XStraightLineDecision[102X40([14X6.1-5[114X), defining attributes for straight line decisions are41[2XNrInputsOfStraightLineDecision[102X ([14X6.1-3[114X) and [2XLinesOfStraightLineDecision[102X42([14X6.1-2[114X), an operation for straight line decisions is43[2XResultOfStraightLineDecision[102X ([14X6.1-6[114X).[133X4445[33X[0;0YSpecial methods applicable to straight line decisions are installed for the46operations [2XDisplay[102X ([14XReference: Display[114X), [2XIsInternallyConsistent[102X ([14XReference:47IsInternallyConsistent[114X), [2XPrintObj[102X ([14XReference: PrintObj[114X), and [2XViewObj[102X48([14XReference: ViewObj[114X).[133X4950[33X[0;0YFor a straight line decision [3Xprog[103X, the default [2XDisplay[102X ([14XReference: Display[114X)51method prints the interpretation of [3Xprog[103X as a sequence of assignments of52associative words and of order checks; a record with components [10Xgensnames[110X53(with value a list of strings) and [10Xlistname[110X (a string) may be entered as54second argument of [2XDisplay[102X ([14XReference: Display[114X), in this case these names55are used, the default for [10Xgensnames[110X is [10X[ g1, g2, [110X[22X...[122X[10X ][110X, the default for56[3Xlistname[103X is [22Xr[122X.[133X5758[1X6.1-1 IsStraightLineDecision[101X5960[29X[2XIsStraightLineDecision[102X( [3Xobj[103X ) [32X Category6162[33X[0;0YEach straight line decision in [5XGAP[105X lies in the filter63[2XIsStraightLineDecision[102X.[133X6465[1X6.1-2 LinesOfStraightLineDecision[101X6667[29X[2XLinesOfStraightLineDecision[102X( [3Xprog[103X ) [32X operation68[6XReturns:[106X [33X[0;10Ythe list of lines that define the straight line decision.[133X6970[33X[0;0YThis defining attribute for the straight line decision [3Xprog[103X (see71[2XIsStraightLineDecision[102X ([14X6.1-1[114X)) corresponds to [2XLinesOfStraightLineProgram[102X72([14XReference: LinesOfStraightLineProgram[114X) for straight line programs.[133X7374[4X[32X Example [32X[104X75[4X[25Xgap>[125X [27Xdec:= StraightLineDecision( [ [ [ 1, 1, 2, 1 ], 3 ],[127X[104X76[4X[25X>[125X [27X[ "Order", 1, 2 ], [ "Order", 2, 3 ], [ "Order", 3, 5 ] ] );[127X[104X77[4X[28X<straight line decision>[128X[104X78[4X[25Xgap>[125X [27XLinesOfStraightLineDecision( dec );[127X[104X79[4X[28X[ [ [ 1, 1, 2, 1 ], 3 ], [ "Order", 1, 2 ], [ "Order", 2, 3 ], [128X[104X80[4X[28X [ "Order", 3, 5 ] ][128X[104X81[4X[32X[104X8283[1X6.1-3 NrInputsOfStraightLineDecision[101X8485[29X[2XNrInputsOfStraightLineDecision[102X( [3Xprog[103X ) [32X operation86[6XReturns:[106X [33X[0;10Ythe number of inputs required for the straight line decision.[133X8788[33X[0;0YThis defining attribute corresponds to [2XNrInputsOfStraightLineProgram[102X89([14XReference: NrInputsOfStraightLineProgram[114X).[133X9091[4X[32X Example [32X[104X92[4X[25Xgap>[125X [27XNrInputsOfStraightLineDecision( dec );[127X[104X93[4X[28X2[128X[104X94[4X[32X[104X9596[1X6.1-4 ScanStraightLineDecision[101X9798[29X[2XScanStraightLineDecision[102X( [3Xstring[103X ) [32X function99[6XReturns:[106X [33X[0;10Ya record containing the straight line decision, or [9Xfail[109X.[133X100101[33X[0;0YLet [3Xstring[103X be a string that encodes a straight line decision in the sense102that it consists of the lines listed for [2XScanStraightLineProgram[102X ([14X7.4-1[114X),103except that [10Xoup[110X lines are not allowed, and instead lines of the following104form may occur.[133X105106[8X[10Xchor [110X[22Xa[122X [22Xb[122X[108X107[33X[0;6Ymeans that it is checked whether the order of the element at label [22Xa[122X108is [22Xb[122X.[133X109110[33X[0;0Y[2XScanStraightLineDecision[102X returns a record containing as the value of its111component [10Xprogram[110X the corresponding [5XGAP[105X straight line decision112(see [2XIsStraightLineDecision[102X ([14X6.1-1[114X)) if the input string satisfies the113syntax rules stated above, and returns [9Xfail[109X otherwise. In the latter case,114information about the first corrupted line of the program is printed if the115info level of [2XInfoCMeatAxe[102X ([14X7.1-2[114X) is at least [22X1[122X.[133X116117[4X[32X Example [32X[104X118[4X[25Xgap>[125X [27Xstr:= "inp 2\nchor 1 2\nchor 2 3\nmu 1 2 3\nchor 3 5";;[127X[104X119[4X[25Xgap>[125X [27Xprg:= ScanStraightLineDecision( str );[127X[104X120[4X[28Xrec( program := <straight line decision> )[128X[104X121[4X[25Xgap>[125X [27Xprg:= prg.program;;[127X[104X122[4X[25Xgap>[125X [27XDisplay( prg );[127X[104X123[4X[28X# input:[128X[104X124[4X[28Xr:= [ g1, g2 ];[128X[104X125[4X[28X# program:[128X[104X126[4X[28Xif Order( r[1] ) <> 2 then return false; fi;[128X[104X127[4X[28Xif Order( r[2] ) <> 3 then return false; fi;[128X[104X128[4X[28Xr[3]:= r[1]*r[2];[128X[104X129[4X[28Xif Order( r[3] ) <> 5 then return false; fi;[128X[104X130[4X[28X# return value:[128X[104X131[4X[28Xtrue[128X[104X132[4X[32X[104X133134[1X6.1-5 StraightLineDecision[101X135136[29X[2XStraightLineDecision[102X( [3Xlines[103X[, [3Xnrgens[103X] ) [32X function137[29X[2XStraightLineDecisionNC[102X( [3Xlines[103X[, [3Xnrgens[103X] ) [32X function138[6XReturns:[106X [33X[0;10Ythe straight line decision given by the list of lines.[133X139140[33X[0;0YLet [3Xlines[103X be a list of lists that defines a unique straight line decision141(see [2XIsStraightLineDecision[102X ([14X6.1-1[114X)); in this case [2XStraightLineDecision[102X142returns this program, otherwise an error is signalled. The optional argument143[3Xnrgens[103X specifies the number of input generators of the program; if a list of144integers (a line of form 1. in the definition above) occurs in [3Xlines[103X then145this number is not determined by [3Xlines[103X and therefore [13Xmust[113X be specified by146the argument [3Xnrgens[103X; if not then [2XStraightLineDecision[102X returns [9Xfail[109X.[133X147148[33X[0;0Y[2XStraightLineDecisionNC[102X does the same as [2XStraightLineDecision[102X, except that149the internal consistency of the program is not checked.[133X150151[1X6.1-6 ResultOfStraightLineDecision[101X152153[29X[2XResultOfStraightLineDecision[102X( [3Xprog[103X, [3Xgens[103X[, [3Xorderfunc[103X] ) [32X operation154[6XReturns:[106X [33X[0;10Y[9Xtrue[109X if all checks succeed, otherwise [9Xfalse[109X.[133X155156[33X[0;0Y[2XResultOfStraightLineDecision[102X evaluates the straight line decision157(see [2XIsStraightLineDecision[102X ([14X6.1-1[114X)) [3Xprog[103X at the group elements in the list158[3Xgens[103X.[133X159160[33X[0;0YThe function for computing the order of a group element can be given as the161optional argument [3Xorderfunc[103X. For example, this may be a function that gives162up at a certain limit if one has to be aware of extremely huge orders in163failure cases.[133X164165[33X[0;0YThe [13Xresult[113X of a straight line decision with lines [22Xp_1, p_2, ..., p_k[122X when166applied to [3Xgens[103X is defined as follows.[133X167168[8X(a)[108X169[33X[0;6YFirst a list [22Xr[122X of intermediate values is initialized with a shallow170copy of [3Xgens[103X.[133X171172[8X(b)[108X173[33X[0;6YFor [22Xi ≤ k[122X, before the [22Xi[122X-th step, let [22Xr[122X be of length [22Xn[122X. If [22Xp_i[122X is the174external representation of an associative word in the first [22Xn[122X175generators then the image of this word under the homomorphism that is176given by mapping [22Xr[122X to these first [22Xn[122X generators is added to [22Xr[122X. If [22Xp_i[122X177is a pair [22X[ l, j ][122X, for a list [22Xl[122X, then the same element is computed,178but instead of being added to [22Xr[122X, it replaces the [22Xj[122X-th entry of [22Xr[122X. If179[22Xp_i[122X is a triple [22X[[122X[10X"Order"[110X[22X, i, n ][122X then it is checked whether the order180of [22Xr[i][122X is [22Xn[122X; if not then [9Xfalse[109X is returned immediately.[133X181182[8X(c)[108X183[33X[0;6YIf all [22Xk[122X lines have been processed and no order check has failed then184[9Xtrue[109X is returned.[133X185186[33X[0;0YHere are some examples.[133X187188[4X[32X Example [32X[104X189[4X[25Xgap>[125X [27Xdec:= StraightLineDecision( [ ], 1 );[127X[104X190[4X[28X<straight line decision>[128X[104X191[4X[25Xgap>[125X [27XResultOfStraightLineDecision( dec, [ () ] );[127X[104X192[4X[28Xtrue[128X[104X193[4X[32X[104X194195[33X[0;0YThe above straight line decision [10Xdec[110X returns [9Xtrue[109X –for [13Xany[113X input of the196right length.[133X197198[4X[32X Example [32X[104X199[4X[25Xgap>[125X [27Xdec:= StraightLineDecision( [ [ [ 1, 1, 2, 1 ], 3 ],[127X[104X200[4X[25X>[125X [27X [ "Order", 1, 2 ], [ "Order", 2, 3 ], [ "Order", 3, 5 ] ] );[127X[104X201[4X[28X<straight line decision>[128X[104X202[4X[25Xgap>[125X [27XLinesOfStraightLineDecision( dec );[127X[104X203[4X[28X[ [ [ 1, 1, 2, 1 ], 3 ], [ "Order", 1, 2 ], [ "Order", 2, 3 ], [128X[104X204[4X[28X [ "Order", 3, 5 ] ][128X[104X205[4X[25Xgap>[125X [27XResultOfStraightLineDecision( dec, [ (), () ] );[127X[104X206[4X[28Xfalse[128X[104X207[4X[25Xgap>[125X [27XResultOfStraightLineDecision( dec, [ (1,2)(3,4), (1,4,5) ] );[127X[104X208[4X[28Xtrue[128X[104X209[4X[32X[104X210211[33X[0;0YThe above straight line decision admits two inputs; it tests whether the212orders of the inputs are [22X2[122X and [22X3[122X, and the order of their product is [22X5[122X.[133X213214215[1X6.1-7 [33X[0;0YSemi-Presentations and Presentations[133X[101X216217[33X[0;0YWe can associate a [13Xfinitely presented group[113X [22XF / R[122X to each straight line218decision [3Xdec[103X, say, as follows. The free generators of the free group [22XF[122X are219in bijection with the inputs, and the defining relators generating [22XR[122X as a220normal subgroup of [22XF[122X are given by those words [22Xw^k[122X for which [3Xdec[103X contains a221check whether the order of [22Xw[122X equals [22Xk[122X.[133X222223[33X[0;0YSo if [3Xdec[103X returns [9Xtrue[109X for the input list [22X[ g_1, g_2, ..., g_n ][122X then224mapping the free generators of [22XF[122X to the inputs defines an epimorphism [22XΦ[122X from225[22XF[122X to the group [22XG[122X, say, that is generated by these inputs, such that [22XR[122X is226contained in the kernel of [22XΦ[122X.[133X227228[33X[0;0Y(Note that [21Xsatisfying [3Xdec[103X[121X is a stronger property than [21Xsatisfying a229presentation[121X. For example, [22X⟨ x ∣ x^2 = x^3 = 1 ⟩[122X is a presentation for the230trivial group, but the straight line decision that checks whether the order231of [22Xx[122X is both [22X2[122X and [22X3[122X clearly always returns [9Xfalse[109X.)[133X232233[33X[0;0YThe [5XATLAS[105X of Group Representations contains the following two kinds of234straight line decisions.[133X235236[30X [33X[0;6YA [13Xpresentation[113X is a straight line decision [3Xdec[103X that is defined for a237set of standard generators of a group [22XG[122X and that returns [9Xtrue[109X if and238only if the list of inputs is in fact a sequence of such standard239generators for [22XG[122X. In other words, the relators derived from the order240checks in the way described above are defining relators for [22XG[122X, and241moreover these relators are words in terms of standard generators. (In242particular the kernel of the map [22XΦ[122X equals [22XR[122X whenever [3Xdec[103X returns243[9Xtrue[109X.)[133X244245[30X [33X[0;6YA [13Xsemi-presentation[113X is a straight line decision [3Xdec[103X that is defined246for a set of standard generators of a group [22XG[122X and that returns [9Xtrue[109X247for a list of inputs [13Xthat is known to generate a group isomorphic with248[22XG[122X[113X if and only if these inputs form in fact a sequence of standard249generators for [22XG[122X. In other words, the relators derived from the order250checks in the way described above are [13Xnot necessarily defining251relators[113X for [22XG[122X, but if we assume that the [22Xg_i[122X generate [22XG[122X then they are252standard generators. (In particular, [22XF / R[122X may be a larger group than253[22XG[122X but in this case [22XΦ[122X maps the free generators of [22XF[122X to standard254generators of [22XG[122X.)[133X255256[33X[0;6YMore about semi-presentations can be found in [NW05].[133X257258[33X[0;0YAvailable presentations and semi-presentations are listed by259[2XDisplayAtlasInfo[102X ([14X3.5-1[114X), they can be accessed via [2XAtlasProgram[102X ([14X3.5-3[114X).260(Clearly each presentation is also a semi-presentation. So a261semi-presentation for some standard generators of a group is regarded as262available whenever a presentation for these standard generators and this263group is available.)[133X264265[33X[0;0YNote that different groups can have the same semi-presentation. We266illustrate this with an example that is mentioned in [NW05]. The groups267[22XL_2(7) ≅ L_3(2)[122X and [22XL_2(8)[122X are generated by elements of the orders [22X2[122X and [22X3[122X268such that their product has order [22X7[122X, and no further conditions are necessary269to define standard generators.[133X270271[4X[32X Example [32X[104X272[4X[25Xgap>[125X [27Xcheck:= AtlasProgram( "L2(8)", "check" );[127X[104X273[4X[28Xrec( groupname := "L2(8)", [128X[104X274[4X[28X identifier := [ "L2(8)", "L28G1-check1", 1, 1 ], [128X[104X275[4X[28X program := <straight line decision>, standardization := 1 )[128X[104X276[4X[25Xgap>[125X [27Xgens:= AtlasGenerators( "L2(8)", 1 );[127X[104X277[4X[28Xrec( charactername := "1a+8a", [128X[104X278[4X[28X generators := [ (1,2)(3,4)(6,7)(8,9), (1,3,2)(4,5,6)(7,8,9) ], [128X[104X279[4X[28X groupname := "L2(8)", id := "", [128X[104X280[4X[28X identifier := [ "L2(8)", [ "L28G1-p9B0.m1", "L28G1-p9B0.m2" ], 1, 9 [128X[104X281[4X[28X ], isPrimitive := true, maxnr := 1, p := 9, rankAction := 2, [128X[104X282[4X[28X repname := "L28G1-p9B0", repnr := 1, size := 504, [128X[104X283[4X[28X stabilizer := "2^3:7", standardization := 1, transitivity := 3, [128X[104X284[4X[28X type := "perm" )[128X[104X285[4X[25Xgap>[125X [27XResultOfStraightLineDecision( check.program, gens.generators );[127X[104X286[4X[28Xtrue[128X[104X287[4X[25Xgap>[125X [27Xgens:= AtlasGenerators( "L3(2)", 1 );[127X[104X288[4X[28Xrec( generators := [ (2,4)(3,5), (1,2,3)(5,6,7) ], [128X[104X289[4X[28X groupname := "L3(2)", id := "a", [128X[104X290[4X[28X identifier := [ "L3(2)", [ "L27G1-p7aB0.m1", "L27G1-p7aB0.m2" ], 1, [128X[104X291[4X[28X 7 ], isPrimitive := true, maxnr := 1, p := 7, rankAction := 2, [128X[104X292[4X[28X repname := "L27G1-p7aB0", repnr := 1, size := 168, [128X[104X293[4X[28X stabilizer := "S4", standardization := 1, transitivity := 2, [128X[104X294[4X[28X type := "perm" )[128X[104X295[4X[25Xgap>[125X [27XResultOfStraightLineDecision( check.program, gens.generators );[127X[104X296[4X[28Xtrue[128X[104X297[4X[32X[104X298299[1X6.1-8 AsStraightLineDecision[101X300301[29X[2XAsStraightLineDecision[102X( [3Xbbox[103X ) [32X attribute302[6XReturns:[106X [33X[0;10Yan equivalent straight line decision for the given black box303program, or [9Xfail[109X.[133X304305[33X[0;0YFor a black box program (see [2XIsBBoxProgram[102X ([14X6.2-1[114X)) [3Xbbox[103X,306[2XAsStraightLineDecision[102X returns a straight line decision (see307[2XIsStraightLineDecision[102X ([14X6.1-1[114X)) with the same output as [3Xbbox[103X, in the sense308of [2XAsBBoxProgram[102X ([14X6.2-5[114X), if such a straight line decision exists, and [9Xfail[109X309otherwise.[133X310311[4X[32X Example [32X[104X312[4X[25Xgap>[125X [27Xlines:= [ [ "Order", 1, 2 ], [ "Order", 2, 3 ],[127X[104X313[4X[25X>[125X [27X [ [ 1, 1, 2, 1 ], 3 ], [ "Order", 3, 5 ] ];;[127X[104X314[4X[25Xgap>[125X [27Xdec:= StraightLineDecision( lines, 2 );[127X[104X315[4X[28X<straight line decision>[128X[104X316[4X[25Xgap>[125X [27Xbboxdec:= AsBBoxProgram( dec );[127X[104X317[4X[28X<black box program>[128X[104X318[4X[25Xgap>[125X [27Xasdec:= AsStraightLineDecision( bboxdec );[127X[104X319[4X[28X<straight line decision>[128X[104X320[4X[25Xgap>[125X [27XLinesOfStraightLineDecision( asdec );[127X[104X321[4X[28X[ [ "Order", 1, 2 ], [ "Order", 2, 3 ], [ [ 1, 1, 2, 1 ], 3 ], [128X[104X322[4X[28X [ "Order", 3, 5 ] ][128X[104X323[4X[32X[104X324325[1X6.1-9 StraightLineProgramFromStraightLineDecision[101X326327[29X[2XStraightLineProgramFromStraightLineDecision[102X( [3Xdec[103X ) [32X operation328[6XReturns:[106X [33X[0;10Ythe straight line program associated to the given straight line329decision.[133X330331[33X[0;0YFor a straight line decision [3Xdec[103X (see [2XIsStraightLineDecision[102X ([14X6.1-1[114X),332[2XStraightLineProgramFromStraightLineDecision[102X returns the straight line333program (see [2XIsStraightLineProgram[102X ([14XReference: IsStraightLineProgram[114X)334obtained by replacing each line of type 3. (i.e, each order check) by an335assignment of the power in question to a new slot, and by declaring the list336of these elements as the return value.[133X337338[33X[0;0YThis means that the return value describes exactly the defining relators of339the presentation that is associated to the straight line decision, see340[14X6.1-7[114X.[133X341342[33X[0;0YFor example, one can use the return value for printing the relators with343[2XStringOfResultOfStraightLineProgram[102X ([14XReference:344StringOfResultOfStraightLineProgram[114X), or for explicitly constructing the345relators as words in terms of free generators, by applying346[2XResultOfStraightLineProgram[102X ([14XReference: ResultOfStraightLineProgram[114X) to the347program and to these generators.[133X348349[4X[32X Example [32X[104X350[4X[25Xgap>[125X [27Xdec:= StraightLineDecision( [ [ [ 1, 1, 2, 1 ], 3 ],[127X[104X351[4X[25X>[125X [27X[ "Order", 1, 2 ], [ "Order", 2, 3 ], [ "Order", 3, 5 ] ] );[127X[104X352[4X[28X<straight line decision>[128X[104X353[4X[25Xgap>[125X [27Xprog:= StraightLineProgramFromStraightLineDecision( dec );[127X[104X354[4X[28X<straight line program>[128X[104X355[4X[25Xgap>[125X [27XDisplay( prog );[127X[104X356[4X[28X# input:[128X[104X357[4X[28Xr:= [ g1, g2 ];[128X[104X358[4X[28X# program:[128X[104X359[4X[28Xr[3]:= r[1]*r[2];[128X[104X360[4X[28Xr[4]:= r[1]^2;[128X[104X361[4X[28Xr[5]:= r[2]^3;[128X[104X362[4X[28Xr[6]:= r[3]^5;[128X[104X363[4X[28X# return values:[128X[104X364[4X[28X[ r[4], r[5], r[6] ][128X[104X365[4X[25Xgap>[125X [27XStringOfResultOfStraightLineProgram( prog, [ "a", "b" ] );[127X[104X366[4X[28X"[ a^2, b^3, (ab)^5 ]"[128X[104X367[4X[25Xgap>[125X [27Xgens:= GeneratorsOfGroup( FreeGroup( "a", "b" ) );[127X[104X368[4X[28X[ a, b ][128X[104X369[4X[25Xgap>[125X [27XResultOfStraightLineProgram( prog, gens );[127X[104X370[4X[28X[ a^2, b^3, (a*b)^5 ][128X[104X371[4X[32X[104X372373374[1X6.2 [33X[0;0YBlack Box Programs[133X[101X375376[33X[0;0Y[13XBlack box programs[113X formalize the idea that one takes some group elements,377forms arithmetic expressions in terms of them, tests properties of these378expressions, executes conditional statements (including jumps inside the379program) depending on the results of these tests, and eventually returns380some result.[133X381382[33X[0;0YA specification of the language can be found in [Nic06], see also[133X383384[33X[0;0Y[7Xhttp://brauer.maths.qmul.ac.uk/Atlas/info/blackbox.html[107X.[133X385386[33X[0;0YThe [13Xinputs[113X of a black box program may be explicit group elements, and the387program may also ask for random elements from a given group. The [13Xprogram388steps[113X form products, inverses, conjugates, commutators, etc. of known389elements, [13Xtests[113X concern essentially the orders of elements, and the [13Xresult[113X390is a list of group elements or [9Xtrue[109X or [9Xfalse[109X or [9Xfail[109X.[133X391392[33X[0;0YExamples that can be modeled by black box programs are[133X393394[8X[13Xstraight line programs[113X,[108X395[33X[0;6Ywhich require a fixed number of input elements and form arithmetic396expressions of elements but do not use random elements, tests,397conditional statements and jumps; the return value is always a list of398elements; these programs are described in Section [14X'Reference: Straight399Line Programs'[114X.[133X400401[8X[13Xstraight line decisions[113X,[108X402[33X[0;6Ywhich differ from straight line programs only in the sense that also403order tests are admissible, and that the return value is [9Xtrue[109X if all404these tests are satisfied, and [9Xfalse[109X as soon as the first such test405fails; they are described in Section [14X6.1[114X.[133X406407[8X[13Xscripts for finding standard generators[113X,[108X408[33X[0;6Ywhich take a group and a function to generate a random element in this409group but no explicit input elements, admit all control structures,410and return either a list of standard generators or [9Xfail[109X; see411[2XResultOfBBoxProgram[102X ([14X6.2-4[114X) for examples.[133X412413[33X[0;0YIn the case of general black box programs, currently [5XGAP[105X provides only the414possibility to read an existing program via [2XScanBBoxProgram[102X ([14X6.2-2[114X), and to415run the program using [2XRunBBoxProgram[102X ([14X6.2-3[114X). It is not our aim to write416such programs in [5XGAP[105X.[133X417418[33X[0;0YThe special case of the [21Xfind[121X scripts mentioned above is also admissible as419an argument of [2XResultOfBBoxProgram[102X ([14X6.2-4[114X), which returns either the set of420generators or [9Xfail[109X.[133X421422[33X[0;0YContrary to the general situation, more support is provided for straight423line programs and straight line decisions in [5XGAP[105X, see Section [14X'Reference:424Straight Line Programs'[114X for functions that manipulate them (compose,425restrict etc.).[133X426427[33X[0;0YThe functions [2XAsStraightLineProgram[102X ([14X6.2-6[114X) and [2XAsStraightLineDecision[102X428([14X6.1-8[114X) can be used to transform a general black box program object into a429straight line program or a straight line decision if this is possible.[133X430431[33X[0;0YConversely, one can create an equivalent general black box program from a432straight line program or from a straight line decision with [2XAsBBoxProgram[102X433([14X6.2-5[114X).[133X434435[33X[0;0Y(Computing a straight line program related to a given straight line decision436is supported in the sense of [2XStraightLineProgramFromStraightLineDecision[102X437([14X6.1-9[114X).)[133X438439[33X[0;0YNote that none of these three kinds of objects is a special case of another:440Running a black box program with [2XRunBBoxProgram[102X ([14X6.2-3[114X) yields a record,441running a straight line program with [2XResultOfStraightLineProgram[102X ([14XReference:442ResultOfStraightLineProgram[114X) yields a list of elements, and running a443straight line decision with [2XResultOfStraightLineDecision[102X ([14X6.1-6[114X) yields [9Xtrue[109X444or [9Xfalse[109X.[133X445446[1X6.2-1 IsBBoxProgram[101X447448[29X[2XIsBBoxProgram[102X( [3Xobj[103X ) [32X Category449450[33X[0;0YEach black box program in [5XGAP[105X lies in the filter [2XIsBBoxProgram[102X.[133X451452[1X6.2-2 ScanBBoxProgram[101X453454[29X[2XScanBBoxProgram[102X( [3Xstring[103X ) [32X function455[6XReturns:[106X [33X[0;10Ya record containing the black box program encoded by the input456string, or [9Xfail[109X.[133X457458[33X[0;0YFor a string [3Xstring[103X that describes a black box program, e.g., the return459value of [2XStringFile[102X ([14XGAPDoc: StringFile[114X), [2XScanBBoxProgram[102X computes this460black box program. If this is successful then the return value is a record461containing as the value of its component [10Xprogram[110X the corresponding [5XGAP[105X462object that represents the program, otherwise [9Xfail[109X is returned.[133X463464[33X[0;0YAs the first example, we construct a black box program that tries to find465standard generators for the alternating group [22XA_5[122X; these standard generators466are any pair of elements of the orders [22X2[122X and [22X3[122X, respectively, such that467their product has order [22X5[122X.[133X468469[4X[32X Example [32X[104X470[4X[25Xgap>[125X [27Xfindstr:= "\[127X[104X471[4X[25X>[125X [27X set V 0\n\[127X[104X472[4X[25X>[125X [27Xlbl START1\n\[127X[104X473[4X[25X>[125X [27X rand 1\n\[127X[104X474[4X[25X>[125X [27X ord 1 A\n\[127X[104X475[4X[25X>[125X [27X incr V\n\[127X[104X476[4X[25X>[125X [27X if V gt 100 then timeout\n\[127X[104X477[4X[25X>[125X [27X if A notin 1 2 3 5 then fail\n\[127X[104X478[4X[25X>[125X [27X if A noteq 2 then jmp START1\n\[127X[104X479[4X[25X>[125X [27Xlbl START2\n\[127X[104X480[4X[25X>[125X [27X rand 2\n\[127X[104X481[4X[25X>[125X [27X ord 2 B\n\[127X[104X482[4X[25X>[125X [27X incr V\n\[127X[104X483[4X[25X>[125X [27X if V gt 100 then timeout\n\[127X[104X484[4X[25X>[125X [27X if B notin 1 2 3 5 then fail\n\[127X[104X485[4X[25X>[125X [27X if B noteq 3 then jmp START2\n\[127X[104X486[4X[25X>[125X [27X # The elements 1 and 2 have the orders 2 and 3, respectively.\n\[127X[104X487[4X[25X>[125X [27X set X 0\n\[127X[104X488[4X[25X>[125X [27Xlbl CONJ\n\[127X[104X489[4X[25X>[125X [27X incr X\n\[127X[104X490[4X[25X>[125X [27X if X gt 100 then timeout\n\[127X[104X491[4X[25X>[125X [27X rand 3\n\[127X[104X492[4X[25X>[125X [27X cjr 2 3\n\[127X[104X493[4X[25X>[125X [27X mu 1 2 4 # ab\n\[127X[104X494[4X[25X>[125X [27X ord 4 C\n\[127X[104X495[4X[25X>[125X [27X if C notin 2 3 5 then fail\n\[127X[104X496[4X[25X>[125X [27X if C noteq 5 then jmp CONJ\n\[127X[104X497[4X[25X>[125X [27X oup 2 1 2";;[127X[104X498[4X[25Xgap>[125X [27Xfind:= ScanBBoxProgram( findstr );[127X[104X499[4X[28Xrec( program := <black box program> )[128X[104X500[4X[32X[104X501502[33X[0;0YThe second example is a black box program that checks whether its two inputs503are standard generators for [22XA_5[122X.[133X504505[4X[32X Example [32X[104X506[4X[25Xgap>[125X [27Xcheckstr:= "\[127X[104X507[4X[25X>[125X [27Xchor 1 2\n\[127X[104X508[4X[25X>[125X [27Xchor 2 3\n\[127X[104X509[4X[25X>[125X [27Xmu 1 2 3\n\[127X[104X510[4X[25X>[125X [27Xchor 3 5";;[127X[104X511[4X[25Xgap>[125X [27Xcheck:= ScanBBoxProgram( checkstr );[127X[104X512[4X[28Xrec( program := <black box program> )[128X[104X513[4X[32X[104X514515[1X6.2-3 RunBBoxProgram[101X516517[29X[2XRunBBoxProgram[102X( [3Xprog[103X, [3XG[103X, [3Xinput[103X, [3Xoptions[103X ) [32X function518[6XReturns:[106X [33X[0;10Ya record describing the result and the statistics of running the519black box program [3Xprog[103X, or [9Xfail[109X, or the string [10X"timeout"[110X.[133X520521[33X[0;0YFor a black box program [3Xprog[103X, a group [3XG[103X, a list [3Xinput[103X of group elements, and522a record [3Xoptions[103X, [2XRunBBoxProgram[102X applies [3Xprog[103X to [3Xinput[103X, where [3XG[103X is used only523to compute random elements.[133X524525[33X[0;0YThe return value is [9Xfail[109X if a syntax error or an explicit [10Xfail[110X statement is526reached at runtime, and the string [10X"timeout"[110X if a [10Xtimeout[110X statement is527reached. (The latter might mean that the random choices were unlucky.)528Otherwise a record with the following components is returned.[133X529530[8X[10Xgens[110X[108X531[33X[0;6Ya list of group elements, bound if an [10Xoup[110X statement was reached,[133X532533[8X[10Xresult[110X[108X534[33X[0;6Y[9Xtrue[109X if a [10Xtrue[110X statement was reached, [9Xfalse[109X if either a [10Xfalse[110X535statement or a failed order check was reached,[133X536537[33X[0;0YThe other components serve as statistical information about the numbers of538the various operations ([10Xmultiply[110X, [10Xinvert[110X, [10Xpower[110X, [10Xorder[110X, [10Xrandom[110X, [10Xconjugate[110X,539[10Xconjugateinplace[110X, [10Xcommutator[110X), and the runtime in milliseconds ([10Xtimetaken[110X).[133X540541[33X[0;0YThe following components of [3Xoptions[103X are supported.[133X542543[8X[10Xrandomfunction[110X[108X544[33X[0;6Ythe function called with argument [3XG[103X in order to compute a random545element of [3XG[103X (default [2XPseudoRandom[102X ([14XReference: PseudoRandom[114X))[133X546547[8X[10Xorderfunction[110X[108X548[33X[0;6Ythe function for computing element orders (the default is [2XOrder[102X549([14XReference: Order[114X)),[133X550551[8X[10Xquiet[110X[108X552[33X[0;6Yif [9Xtrue[109X then ignore [10Xecho[110X statements (default [9Xfalse[109X),[133X553554[8X[10Xverbose[110X[108X555[33X[0;6Yif [9Xtrue[109X then print information about the line that is currently556processed, and about order checks (default [9Xfalse[109X),[133X557558[8X[10Xallowbreaks[110X[108X559[33X[0;6Yif [9Xtrue[109X then call [2XError[102X ([14XReference: Error[114X) when a [10Xbreak[110X statement is560reached, otherwise ignore [10Xbreak[110X statements (default [9Xtrue[109X).[133X561562[33X[0;0YAs an example, we run the black box programs constructed in the example for563[2XScanBBoxProgram[102X ([14X6.2-2[114X).[133X564565[4X[32X Example [32X[104X566[4X[25Xgap>[125X [27Xg:= AlternatingGroup( 5 );;[127X[104X567[4X[25Xgap>[125X [27Xres:= RunBBoxProgram( find.program, g, [], rec() );;[127X[104X568[4X[25Xgap>[125X [27XIsBound( res.gens ); IsBound( res.result );[127X[104X569[4X[28Xtrue[128X[104X570[4X[28Xfalse[128X[104X571[4X[25Xgap>[125X [27XList( res.gens, Order );[127X[104X572[4X[28X[ 2, 3 ][128X[104X573[4X[25Xgap>[125X [27XOrder( Product( res.gens ) );[127X[104X574[4X[28X5[128X[104X575[4X[25Xgap>[125X [27Xres:= RunBBoxProgram( check.program, "dummy", res.gens, rec() );;[127X[104X576[4X[25Xgap>[125X [27XIsBound( res.gens ); IsBound( res.result );[127X[104X577[4X[28Xfalse[128X[104X578[4X[28Xtrue[128X[104X579[4X[25Xgap>[125X [27Xres.result;[127X[104X580[4X[28Xtrue[128X[104X581[4X[25Xgap>[125X [27Xothergens:= GeneratorsOfGroup( g );;[127X[104X582[4X[25Xgap>[125X [27Xres:= RunBBoxProgram( check.program, "dummy", othergens, rec() );;[127X[104X583[4X[25Xgap>[125X [27Xres.result;[127X[104X584[4X[28Xfalse[128X[104X585[4X[32X[104X586587[1X6.2-4 ResultOfBBoxProgram[101X588589[29X[2XResultOfBBoxProgram[102X( [3Xprog[103X, [3XG[103X ) [32X function590[6XReturns:[106X [33X[0;10Ya list of group elements or [9Xtrue[109X, [9Xfalse[109X, [9Xfail[109X, or the string591[10X"timeout"[110X.[133X592593[33X[0;0YThis function calls [2XRunBBoxProgram[102X ([14X6.2-3[114X) with the black box program [3Xprog[103X594and second argument either a group or a list of group elements; the default595options are assumed. The return value is [9Xfail[109X if this call yields [9Xfail[109X,596otherwise the [10Xgens[110X component of the result, if bound, or the [10Xresult[110X597component if not.[133X598599[33X[0;0YAs an example, we run the black box programs constructed in the example for600[2XScanBBoxProgram[102X ([14X6.2-2[114X).[133X601602[4X[32X Example [32X[104X603[4X[25Xgap>[125X [27Xg:= AlternatingGroup( 5 );;[127X[104X604[4X[25Xgap>[125X [27Xres:= ResultOfBBoxProgram( find.program, g );;[127X[104X605[4X[25Xgap>[125X [27XList( res, Order );[127X[104X606[4X[28X[ 2, 3 ][128X[104X607[4X[25Xgap>[125X [27XOrder( Product( res ) );[127X[104X608[4X[28X5[128X[104X609[4X[25Xgap>[125X [27Xres:= ResultOfBBoxProgram( check.program, res );[127X[104X610[4X[28Xtrue[128X[104X611[4X[25Xgap>[125X [27Xothergens:= GeneratorsOfGroup( g );;[127X[104X612[4X[25Xgap>[125X [27Xres:= ResultOfBBoxProgram( check.program, othergens );[127X[104X613[4X[28Xfalse[128X[104X614[4X[32X[104X615616[1X6.2-5 AsBBoxProgram[101X617618[29X[2XAsBBoxProgram[102X( [3Xslp[103X ) [32X attribute619[6XReturns:[106X [33X[0;10Yan equivalent black box program for the given straight line620program or straight line decision.[133X621622[33X[0;0YLet [3Xslp[103X be a straight line program (see [2XIsStraightLineProgram[102X ([14XReference:623IsStraightLineProgram[114X)) or a straight line decision (see624[2XIsStraightLineDecision[102X ([14X6.1-1[114X)). Then [2XAsBBoxProgram[102X returns a black box625program [3Xbbox[103X (see [2XIsBBoxProgram[102X ([14X6.2-1[114X)) with the [21Xsame[121X output as [3Xslp[103X, in the626sense that [2XResultOfBBoxProgram[102X ([14X6.2-4[114X) yields the same result for [3Xbbox[103X as627[2XResultOfStraightLineProgram[102X ([14XReference: ResultOfStraightLineProgram[114X) or628[2XResultOfStraightLineDecision[102X ([14X6.1-6[114X), respectively, for [3Xslp[103X.[133X629630[4X[32X Example [32X[104X631[4X[25Xgap>[125X [27Xf:= FreeGroup( "x", "y" );; gens:= GeneratorsOfGroup( f );;[127X[104X632[4X[25Xgap>[125X [27Xslp:= StraightLineProgram( [ [1,2,2,3], [3,-1] ], 2 );[127X[104X633[4X[28X<straight line program>[128X[104X634[4X[25Xgap>[125X [27XResultOfStraightLineProgram( slp, gens );[127X[104X635[4X[28Xy^-3*x^-2[128X[104X636[4X[25Xgap>[125X [27Xbboxslp:= AsBBoxProgram( slp );[127X[104X637[4X[28X<black box program>[128X[104X638[4X[25Xgap>[125X [27XResultOfBBoxProgram( bboxslp, gens );[127X[104X639[4X[28X[ y^-3*x^-2 ][128X[104X640[4X[25Xgap>[125X [27Xlines:= [ [ "Order", 1, 2 ], [ "Order", 2, 3 ],[127X[104X641[4X[25X>[125X [27X [ [ 1, 1, 2, 1 ], 3 ], [ "Order", 3, 5 ] ];;[127X[104X642[4X[25Xgap>[125X [27Xdec:= StraightLineDecision( lines, 2 );[127X[104X643[4X[28X<straight line decision>[128X[104X644[4X[25Xgap>[125X [27XResultOfStraightLineDecision( dec, [ (1,2)(3,4), (1,3,5) ] );[127X[104X645[4X[28Xtrue[128X[104X646[4X[25Xgap>[125X [27XResultOfStraightLineDecision( dec, [ (1,2)(3,4), (1,3,4) ] );[127X[104X647[4X[28Xfalse[128X[104X648[4X[25Xgap>[125X [27Xbboxdec:= AsBBoxProgram( dec );[127X[104X649[4X[28X<black box program>[128X[104X650[4X[25Xgap>[125X [27XResultOfBBoxProgram( bboxdec, [ (1,2)(3,4), (1,3,5) ] );[127X[104X651[4X[28Xtrue[128X[104X652[4X[25Xgap>[125X [27XResultOfBBoxProgram( bboxdec, [ (1,2)(3,4), (1,3,4) ] );[127X[104X653[4X[28Xfalse[128X[104X654[4X[32X[104X655656[1X6.2-6 AsStraightLineProgram[101X657658[29X[2XAsStraightLineProgram[102X( [3Xbbox[103X ) [32X attribute659[6XReturns:[106X [33X[0;10Yan equivalent straight line program for the given black box660program, or [9Xfail[109X.[133X661662[33X[0;0YFor a black box program (see [2XAsBBoxProgram[102X ([14X6.2-5[114X)) [3Xbbox[103X,663[2XAsStraightLineProgram[102X returns a straight line program (see664[2XIsStraightLineProgram[102X ([14XReference: IsStraightLineProgram[114X)) with the same665output as [3Xbbox[103X if such a straight line program exists, and [9Xfail[109X otherwise.[133X666667[4X[32X Example [32X[104X668[4X[25Xgap>[125X [27XDisplay( AsStraightLineProgram( bboxslp ) );[127X[104X669[4X[28X# input:[128X[104X670[4X[28Xr:= [ g1, g2 ];[128X[104X671[4X[28X# program:[128X[104X672[4X[28Xr[3]:= r[1]^2;[128X[104X673[4X[28Xr[4]:= r[2]^3;[128X[104X674[4X[28Xr[5]:= r[3]*r[4];[128X[104X675[4X[28Xr[3]:= r[5]^-1;[128X[104X676[4X[28X# return values:[128X[104X677[4X[28X[ r[3] ][128X[104X678[4X[25Xgap>[125X [27XAsStraightLineProgram( bboxdec );[127X[104X679[4X[28Xfail[128X[104X680[4X[32X[104X681682683[1X6.3 [33X[0;0YRepresentations of Minimal Degree[133X[101X684685[33X[0;0YThis section deals with minimal degrees of permutation and matrix686representations. We do not provide an algorithm that computes these degrees687for an arbitrary group, we only provide some tools for evaluating known688databases, mainly concerning [21Xbicyclic extensions[121X (see [CCNPW85,689Section 6.5]) of simple groups, in order to derive the minimal degrees, see690Section [14X6.3-4[114X.[133X691692[33X[0;0YIn the [5XAtlasRep[105X package, this information can be used for prescribing693[21Xminimality conditions[121X in [2XDisplayAtlasInfo[102X ([14X3.5-1[114X), [2XOneAtlasGeneratingSetInfo[102X694([14X3.5-5[114X), and [2XAllAtlasGeneratingSetInfos[102X ([14X3.5-6[114X). An overview of the stored695minimal degrees can be shown with [2XBrowseMinimalDegrees[102X ([14X3.6-1[114X).[133X696697[1X6.3-1 MinimalRepresentationInfo[101X698699[29X[2XMinimalRepresentationInfo[102X( [3Xgrpname[103X, [3Xconditions[103X ) [32X function700[6XReturns:[106X [33X[0;10Ya record with the components [10Xvalue[110X and [10Xsource[110X, or [9Xfail[109X[133X701702[33X[0;0YLet [3Xgrpname[103X be the [5XGAP[105X name of a group [22XG[122X, say. If the information described703by [3Xconditions[103X about minimal representations of this group can be computed or704is stored then [2XMinimalRepresentationInfo[102X returns a record with the705components [10Xvalue[110X and [10Xsource[110X, otherwise [9Xfail[109X is returned.[133X706707[33X[0;0YThe following values for [3Xconditions[103X are supported.[133X708709[30X [33X[0;6YIf [3Xconditions[103X is [2XNrMovedPoints[102X ([14XReference: NrMovedPoints (for a710permutation)[114X) then [10Xvalue[110X, if known, is the degree of a minimal711faithful (not necessarily transitive) permutation representation for712[22XG[122X.[133X713714[30X [33X[0;6YIf [3Xconditions[103X consists of [2XCharacteristic[102X ([14XReference: Characteristic[114X)715and a prime integer [3Xp[103X then [10Xvalue[110X, if known, is the dimension of a716minimal faithful (not necessarily irreducible) matrix representation717in characteristic [3Xp[103X for [22XG[122X.[133X718719[30X [33X[0;6YIf [3Xconditions[103X consists of [2XSize[102X ([14XReference: Size[114X) and a prime power [3Xq[103X720then [10Xvalue[110X, if known, is the dimension of a minimal faithful (not721necessarily irreducible) matrix representation over the field of size722[3Xq[103X for [22XG[122X.[133X723724[33X[0;0YIn all cases, the value of the component [10Xsource[110X is a list of strings that725describe sources of the information, which can be the ordinary or modular726character table of [22XG[122X (see [CCNPW85], [JLPW95], [HL89]), the table of marks727of [22XG[122X, or [Jan05]. For an overview of minimal degrees of faithful matrix728representations for sporadic simple groups and their covering groups, see729also[133X730731[33X[0;0Y[7Xhttp://www.math.rwth-aachen.de/~MOC/mindeg/[107X.[133X732733[33X[0;0YNote that [2XMinimalRepresentationInfo[102X cannot provide any information about734minimal representations over prescribed fields in characteristic zero.[133X735736[33X[0;0YInformation about groups that occur in the [5XAtlasRep[105X package is precomputed737in [2XMinimalRepresentationInfoData[102X ([14X6.3-2[114X), so the packages [5XCTblLib[105X and [5XTomLib[105X738are not needed when [2XMinimalRepresentationInfo[102X is called for these groups.739(The only case that is not covered by this list is that one asks for the740minimal degree of matrix representations over a prescribed field in741characteristic coprime to the group order.)[133X742743[33X[0;0YOne of the following strings can be given as an additional last argument.[133X744745[8X[10X"cache"[110X[108X746[33X[0;6Ymeans that the function tries to compute (and then store) values that747are not stored in [2XMinimalRepresentationInfoData[102X ([14X6.3-2[114X), but stored748values are preferred; this is also the default.[133X749750[8X[10X"lookup"[110X[108X751[33X[0;6Ymeans that stored values are returned but the function does not752attempt to compute values that are not stored in753[2XMinimalRepresentationInfoData[102X ([14X6.3-2[114X).[133X754755[8X[10X"recompute"[110X[108X756[33X[0;6Ymeans that the function always tries to compute the desired value, and757checks the result against stored values.[133X758759[4X[32X Example [32X[104X760[4X[25Xgap>[125X [27XMinimalRepresentationInfo( "A5", NrMovedPoints );[127X[104X761[4X[28Xrec( [128X[104X762[4X[28X source := [ "computed (alternating group)", [128X[104X763[4X[28X "computed (char. table)", "computed (subgroup tables)", [128X[104X764[4X[28X "computed (subgroup tables, known repres.)", [128X[104X765[4X[28X "computed (table of marks)" ], value := 5 )[128X[104X766[4X[25Xgap>[125X [27XMinimalRepresentationInfo( "A5", Characteristic, 2 );[127X[104X767[4X[28Xrec( source := [ "computed (char. table)" ], value := 2 )[128X[104X768[4X[25Xgap>[125X [27XMinimalRepresentationInfo( "A5", Size, 2 );[127X[104X769[4X[28Xrec( source := [ "computed (char. table)" ], value := 4 )[128X[104X770[4X[32X[104X771772[1X6.3-2 MinimalRepresentationInfoData[101X773774[29X[2XMinimalRepresentationInfoData[102X[32X global variable775776[33X[0;0YThis is a record whose components are [5XGAP[105X names of groups for which777information about minimal permutation and matrix representations were known778in advance or have been computed in the current [5XGAP[105X session. The value for779the group [22XG[122X, say, is a record with the following components.[133X780781[8X[10XNrMovedPoints[110X[108X782[33X[0;6Ya record with the components [10Xvalue[110X (the degree of a smallest faithful783permutation representation of [22XG[122X) and [10Xsource[110X (a string describing the784source of this information).[133X785786[8X[10XCharacteristic[110X[108X787[33X[0;6Ya record whose components are at most [10X0[110X and strings corresponding to788prime integers, each bound to a record with the components [10Xvalue[110X (the789degree of a smallest faithful matrix representation of [22XG[122X in this790characteristic) and [10Xsource[110X (a string describing the source of this791information).[133X792793[8X[10XCharacteristicAndSize[110X[108X794[33X[0;6Ya record whose components are strings corresponding to prime integers795[3Xp[103X, each bound to a record with the components [10Xsizes[110X (a list of powers796[3Xq[103X of [3Xp[103X), [10Xdimensions[110X (the corresponding list of minimal dimensions of797faithful matrix representations of [22XG[122X over a field of size [3Xq[103X), [10Xsources[110X798(the corresponding list of strings describing the source of this799information), and [10Xcomplete[110X (a record with the components [10Xval[110X ([9Xtrue[109X if800the minimal dimension over [13Xany[113X finite field in characteristic [3Xp[103X can be801derived from the values in the record, and [9Xfalse[109X otherwise) and [10Xsource[110X802(a string describing the source of this information)).[133X803804[33X[0;0YThe values are set by [2XSetMinimalRepresentationInfo[102X ([14X6.3-3[114X).[133X805806[1X6.3-3 SetMinimalRepresentationInfo[101X807808[29X[2XSetMinimalRepresentationInfo[102X( [3Xgrpname[103X, [3Xop[103X, [3Xvalue[103X, [3Xsource[103X ) [32X function809[6XReturns:[106X [33X[0;10Y[9Xtrue[109X if the values were successfully set, [9Xfalse[109X if stored values810contradict the given ones.[133X811812[33X[0;0YThis function sets an entry in [2XMinimalRepresentationInfoData[102X ([14X6.3-2[114X) for the813group [22XG[122X, say, with [5XGAP[105X name [3Xgrpname[103X.[133X814815[33X[0;0YSupported values for [3Xop[103X are[133X816817[30X [33X[0;6Y[10X"NrMovedPoints"[110X (see [2XNrMovedPoints[102X ([14XReference: NrMovedPoints (for a818permutation)[114X)), which means that [3Xvalue[103X is the degree of minimal819faithful (not necessarily transitive) permutation representations of820[22XG[122X,[133X821822[30X [33X[0;6Ya list of length two with first entry [10X"Characteristic"[110X (see823[2XCharacteristic[102X ([14XReference: Characteristic[114X)) and second entry [3Xchar[103X824either zero or a prime integer, which means that [3Xvalue[103X is the825dimension of minimal faithful (not necessarily irreducible) matrix826representations of [22XG[122X in characteristic [3Xchar[103X,[133X827828[30X [33X[0;6Ya list of length two with first entry [10X"Size"[110X (see [2XSize[102X ([14XReference:829Size[114X)) and second entry a prime power [3Xq[103X, which means that [3Xvalue[103X is the830dimension of minimal faithful (not necessarily irreducible) matrix831representations of [22XG[122X over the field with [3Xq[103X elements, and[133X832833[30X [33X[0;6Ya list of length three with first entry [10X"Characteristic"[110X (see834[2XCharacteristic[102X ([14XReference: Characteristic[114X)), second entry a prime835integer [3Xp[103X, and third entry the string [10X"complete"[110X, which means that the836information stored for characteristic [3Xp[103X is complete in the sense that837for any given power [22Xq[122X of [3Xp[103X, the minimal faithful degree over the field838with [22Xq[122X elements equals that for the largest stored field size of which839[22Xq[122X is a power.[133X840841[33X[0;0YIn each case, [3Xsource[103X is a string describing the source of the data; [13Xcomputed[113X842values are detected from the prefix [10X"comp"[110X of [3Xsource[103X.[133X843844[33X[0;0YIf the intended value is already stored and differs from [3Xvalue[103X then an error845message is printed.[133X846847[4X[32X Example [32X[104X848[4X[25Xgap>[125X [27XSetMinimalRepresentationInfo( "A5", "NrMovedPoints", 5,[127X[104X849[4X[25X>[125X [27X "computed (alternating group)" );[127X[104X850[4X[28Xtrue[128X[104X851[4X[25Xgap>[125X [27XSetMinimalRepresentationInfo( "A5", [ "Characteristic", 0 ], 3,[127X[104X852[4X[25X>[125X [27X "computed (char. table)" );[127X[104X853[4X[28Xtrue[128X[104X854[4X[25Xgap>[125X [27XSetMinimalRepresentationInfo( "A5", [ "Characteristic", 2 ], 2,[127X[104X855[4X[25X>[125X [27X "computed (char. table)" );[127X[104X856[4X[28Xtrue[128X[104X857[4X[25Xgap>[125X [27XSetMinimalRepresentationInfo( "A5", [ "Size", 2 ], 4,[127X[104X858[4X[25X>[125X [27X "computed (char. table)" );[127X[104X859[4X[28Xtrue[128X[104X860[4X[25Xgap>[125X [27XSetMinimalRepresentationInfo( "A5", [ "Size", 4 ], 2,[127X[104X861[4X[25X>[125X [27X "computed (char. table)" );[127X[104X862[4X[28Xtrue[128X[104X863[4X[25Xgap>[125X [27XSetMinimalRepresentationInfo( "A5", [ "Characteristic", 3 ], 3,[127X[104X864[4X[25X>[125X [27X "computed (char. table)" );[127X[104X865[4X[28Xtrue[128X[104X866[4X[32X[104X867868869[1X6.3-4 [33X[0;0YCriteria Used to Compute Minimality Information[133X[101X870871[33X[0;0YThe information about the minimal degree of a faithful [13Xmatrix representation[113X872of [22XG[122X in a given characteristic or over a given field in positive873characteristic is derived from the relevant (ordinary or modular) character874table of [22XG[122X, except in a few cases where this table itself is not known but875enough information about the degrees is available in [HL89] and [Jan05].[133X876877[33X[0;0YThe following criteria are used for deriving the minimal degree of a878faithful [13Xpermutation representation[113X of [22XG[122X from the information in the [5XGAP[105X879libraries of character tables and of tables of marks.[133X880881[30X [33X[0;6YIf the name of [22XG[122X has the form [10X"A[110X[22Xn[122X[10X"[110X or [10X"A[110X[22Xn[122X[10X.2"[110X (denoting alternating and882symmetric groups, respectively) then the minimal degree is [22Xn[122X, except883if [22Xn[122X is smaller than [22X3[122X or [22X2[122X, respectively.[133X884885[30X [33X[0;6YIf the name of [22XG[122X has the form [10X"L2([110X[22Xq[122X[10X)"[110X (denoting projective special886linear groups in dimension two) then the minimal degree is [22Xq + 1[122X,887except if [22Xq ∈ { 2, 3, 5, 7, 9, 11 }[122X, see [Hup67, Satz II.8.28].[133X888889[30X [33X[0;6YIf the largest maximal subgroup of [22XG[122X is core-free then the index of890this subgroup is the minimal degree. (This is used when the two891character tables in question and the class fusion are available in892[5XGAP[105X's Character Table Library ([Bre13]); this happens for many893character tables of simple groups.)[133X894895[30X [33X[0;6YIf [22XG[122X has a unique minimal normal subgroup then each minimal faithful896permutation representation is transitive.[133X897898[33X[0;6YIn this case, the minimal degree can be computed directly from the899information in the table of marks of [22XG[122X if this is available in [5XGAP[105X's900Library of Tables of Marks ([NMP13]).[133X901902[33X[0;6YSuppose that the largest maximal subgroup of [22XG[122X is not core-free but903simple and normal in [22XG[122X, and that the other maximal subgroups of [22XG[122X are904core-free. In this case, we take the minimum of the indices of the905core-free maximal subgroups and of the product of index and minimal906degree of the normal maximal subgroup. (This suffices since no907core-free subgroup of the whole group can contain a nontrivial normal908subgroup of a normal maximal subgroup.)[133X909910[33X[0;6YLet [22XN[122X be the unique minimal normal subgroup of [22XG[122X, and assume that [22XG/N[122X911is simple and has minimal degree [22Xn[122X, say. If there is a subgroup [22XU[122X of912index [22Xn ⋅ |N|[122X in [22XG[122X that intersects [22XN[122X trivially then the minimal degree913of [22XG[122X is [22Xn ⋅ |N|[122X. (This is used for the case that [22XN[122X is central in [22XG[122X and914[22XN × U[122X occurs as a subgroup of [22XG[122X.)[133X915916[30X [33X[0;6YIf we know a subgroup of [22XG[122X whose minimal degree is [22Xn[122X, say, and if we917know either (a class fusion from) a core-free subgroup of index [22Xn[122X in [22XG[122X918or a faithful permutation representation of degree [22Xn[122X for [22XG[122X then [22Xn[122X is919the minimal degree for [22XG[122X. (This happens often for tables of almost920simple groups.)[133X921922923924