#############################################################################
##
## This file is part of recog, a package for the GAP computer algebra system
## which provides a collection of methods for the constructive recognition
## of groups.
##
## This files's authors include Max Neunhöffer, Ákos Seress.
##
## Copyright of recog belongs to its developers whose names are too numerous
## to list here. Please refer to the COPYRIGHT file for details.
##
## SPDX-License-Identifier: GPL-3.0-or-later
##
##
## Code to recognise (simple) groups by their two largest element orders.
## At least recognise the "natural" characteristic.
##
#############################################################################
# parses certain strings and numbers into a number
RECOG.ParseNumber := function( number, d, default )
if IsInt(number) then
return number;
elif number = "logd" then
return
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
# # gens # repeat
return # nams # nrs := [];
end;
# RECOG.MakeStabChainHint := function( chain, stdgens )
# local b,bb,choice,dims,f,gens,grpnum,grps,i,j,lens,llens,m,name,names,nams,nrs,o,orblens,pts,r,size,slps;
# f := FieldOfMatrixList(stdgens);
# name := chain[1].name;
# size := chain[1].order;
# slps := [];
# names := [];
# dims := [];
# orblens := [];
# pts := [];
# gens := stdgens;
# repeat
# Print("Working on ",name,"\n");
# grps := [];
# nams := [];
# nrs := [];
# for i in [1..Length(chain)] do
# r := chain[i];
# if IsBound(r.parent) and r.parent = name then
# Add(grps,ResultOfStraightLineProgram(r.generators,gens));
# Add(nams,r.name);
# Add(nrs,i);
# fi;
# od;
# if Length(grps) = 0 then break; fi;
# Print("Considering subgroups: ",nams,"\n");
# bb := [];
# llens := [];
# grpnum := [];
# for i in [1..Length(grps)] do
# # will be left by break in case of success
# Print(" Considering ",nams[i],"\n");
# m := GModuleByMats(grps[i],f);
# if not MTX.IsIrreducible(m) then
# b := List(MTX.BasesMinimalSubmodules(m),MutableCopyMat);
# Sort(b,function(a,b) return Length(a) < Length(b); end );
# Print(" Dimensions: ",List(b,Length),"\n");
# lens := [];
# for j in [1..Length(b)] do
# TriangulizeMat(b[j]);
# if Length(b[j]) = 1 then
# o := Orb(gens,b[j][1],OnLines,rec( report := 10000,
# treehashsize := 1000, storenumbers := true ));
# else
# o := Orb(gens,b[j],OnSubspacesByCanonicalBasis,
# rec( report := 10000, treehashsize := 1000,
# storenumbers := true ));
# fi;
# Enumerate(o);
# Print(" Found orbit of length ",Length(o),"\n");
# lens[j] := Length(o);
# od;
# Append(bb,b);
# Append(llens,lens);
# Append(grpnum,ListWithIdenticalEntries(Length(b),i));
# else
# Print(" Restriction is irreducible!\n");
# fi;
# od;
# choice := 1;
# Print("Dimensions: ",List(bb,Length),"\n");
# Print("Orbit lengths: ",llens,"\n");
# Error("now decide which orbit to take, set choice");
# if choice > 0 then
# i := grpnum[choice];
# Add(names,nams[i]);
# Add(dims,Length(bb[choice]));
# name := nams[i];
# gens := grps[i];
# size := size / llens[choice];
# Add(orblens,llens[choice]);
# Add(slps,chain[nrs[i]].generators);
# Add(pts,bb[choice]);
# fi;
# until size = 1 or choice = 0;
# return rec( slps := slps, names := names, dims := dims, orblens := orblens,
# pts := pts );
# end;
java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for leng th 61
local,ce,,homs,maxes,,s
finder !java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 33
if finder = fail then
InfoInfoI2"java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 73
notjava.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 31
(,1"yourjava.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 62
return =or =
fiInfoInfoRecog2,java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 74
gm := ;
. =[(
func=ri java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 72
:[];
Info IsBoundujava.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 32
:java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 75
rec java.lang.StringIndexOutOfBoundsException: Range [50, 48) out of bounds for length 78
if stdgens = maxes := hint{(1.Lengthhintusemax]
(nfoRecog2"finder did not ,.name;
return fail;
fi;
stdgens := stdgens.gens;
#Setslptostd(ri,SLPOfElms(stdgens));
#SetStdGens(ri,StripMemory(stdgens));
if IsBound(hint. else
if IsBound(int.)then
;
bra := BrauerCharacterValue(elm! formax in maxesdo
maxes :=u{iltered[.Length(hint.),
i->hint.brauercharvals[ifs = fail then
else
maxes := hint.usemax;
fi;
formax in maxesdo
s := AtlasProgram(hint.name,max);
if s = fail then
Info(,,"Expectedmaximal of "hint.ame,
" not available!");
Infomaxgens := ResultOfStraightLineProgram(.,
return ;
fi;
maxgens := :=GModuleByMatsmaxgens,.);
(stdgens;
m := GModuleByMats(maxgens,ri!.fieldM.()x>[];
Sortcf,(,b returna. <b.; endjava.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
InfoI,,Foundsubmodule";
continue;
fi;
cf := List(MTX.CollectedFactors(m),x->x[1]);
cf,unction(a,)return a.imension<b.; end);
for c in Con(homs[]ri!.field;
homs: .omomorphismsc);
if Length(java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 26
ConvertToMatrixRep(homs[1],ri!.field);
b := MutableCopyMat(homs[1]);
;
( (ri,StabChain"true).l ;
:rec(Projective: true,RandomElmFunc: )
od;
TriangulizeMat(b);
fu := optCand : ( =[[1] : OnLines );
C : ( : [,
if ()= 1 then
opt.Cand := rec( points := [ fi;
else
opt.Cand := rec opt. : .size;
ops :=OnSubspacesByCanonicalBasis);
fi;
gm := GroupWithGenerators( hint.name," ...");
opt. : hint.;
Info(InfoRecog,2, correctnessby originalgens:
hint.name," ...
(gm,)
# Verify correctness by sifting original gens:Setslptonicer,SLPOfElmsStrongGeneratorsS);
esnot terminate if nogroupof this
# size is found!
ri!.Unbind(S!.opt.RandomElmFu;
(SLPOfElms())java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
(,.ize;
ForgetMemory(S);
Unbind(S!.opt.RandomElmFunc);
java.lang.StringIndexOutOfBoundsException: Range [60, 28) out of bounds for length 82
SetFilterObj(ri,IsLeaf);
if IsBound(hint.ssimple
ri!.comment=hint.name;
fi;
true;
ri!.fi;
return true;
od;
Inf ,2," chain , yet implemented!";
(InfoRecog,,"ot chain , yet ! ;
return ;
endtries,triesinner,riesinnerlimit,trieslimit,,y
Info(InfoRecog,,Gothint , trying LowIndex.."java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
d := ridimension
if IsBound(hinte)then
Info(nfoRecog2" hint group,trying LowIndex.."
fld
:=i+1;
if IsBound(hint.elordersstart) then
java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 13
repeat
i := i + 1;
if i > 10000 "wrong hints?);
ErrorNoReturnx :PseudoRandomG;
"wrong hints?");
fi;
x := PseudoRandom(G);
until Order(java.lang.StringIndexOutOfBoundsException: Range [0, 19) out of bounds for length 15
x:=[];
elsex:= [];
x := [];
fi;
tries := 0;
numberrandgensfijava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
triesinnerlimit := RECOG.ParseNumber(hint.triesforgens,d,"1d");
trieslimit := RECOG.ParseNumber(hint.tries,d,10 : RECOG.hint.numberrandgensd,;
=.java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 60
3"java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
it=,java.lang.StringIndexOutOfBoundsException: Range [69, 68) out of bounds for length 69
,java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 36
repeat
gens := ShallowCopy(x);
triesinner"=,)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
gens =ShallowCopyx)
triesinner := 0;
if = Lengthg)then# we have to make the hm module
: tries + 1;
continue;
fi;
else
while Lengthgens) numberrandgensand
triesinner < triesinnerlimittries =tries 1java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
y :else
Add(gens,)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
;
hm := GModuleByMats( java.lang.StringIndexOutOfBoundsException: Range [35, 36) out of bounds for length 35
: +1java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
if IsIrreduciblehm)
;
od;
fi
if :bas]
bas := [MTX.ProperSubmoduleBasis(hm)]; := .(hm,);
s := bas[1];
:MTX.roperSubmoduleBasis(hm);
hm := MTX.InducedActionSubmodule(hm,s);
s =MTX.ProperSubmoduleBasishm)
Add(bas,s); java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
od;
Unbind( for i in bas-,b).1] do
=basL()java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
in [Lengthbas),b)-.1
s := s * bas[i];
od;
# Now s is the basis of a minimal submodule, permute that:
()java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
TriangulizeMat( ConvertToMatrixRs)
#FIXME:this be :
ConvertToMatrixRep(s);
Info,2" dimension ,
Length(s), ifnot (hint.ubspacedims java.lang.StringIndexOutOfBoundsException: Range [46, 47) out of bounds for length 46
if not b : RECOG.(G,s,)
s inhint.
#orb := RECOG.OrbitSubspaceWithLimit(G,s,orblenlimit);
orb lBasis,
rec(storenumbers := true,
NextPrimeInt(2*orblenlimit)));
Enumerate(orb,orblenlimit);
if IsClosed(orb) then
: OrbActionHomomorphism(G,orb);
if Length(s) * Length(orb) Length()*Length(rb then
InitialDataForKernelRecogNode(ri)blocksize: Lengths;
() =Length(s);
.,
FindHomMethodsProjective.DoBaseChangeForBlocks,
2000);
Setimmediateverification(ri,true);
findgensNmeth(ri).args[1] := Length(orb)+3;ri.2]:5java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
findgensNmeth(ri).args[2] : ,"java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
Info(InfoRecog,2,"Found block Length(orb)," - not a block, java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 65
Length)" .";
else
Info( java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
Length()"-not block.";
fi;
SetHomom(ri,hom);
Setmethodsforimage(ri, "not enumerating orbit.");
fijava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
fi;
else
Info(InfoRecog ;
"not enumerating orbit.");
fi;
# We start a database of hints, whenever we discover a certain group, we
tries := tries + 1;
RECOGAlmostSimpleHints:rec(;
return java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
end );
# We start a database of hints, whenever we discover a certain group, we
# can ask this database what to do:
RECOG.AlmostSimpleHints := rec();
# is called in almostsimple/hints.gi to create a database in
# RECOG.AlmostSimpleHints to store hints about almost simple groups.
# Currently just sporadic simple groups are contained.
InstallGlobalFunction(InstallAlmostSimpleHint,
function( name, type, re )
if not IsBound(RECOG.AlmostSimpleHints RECOG.AlmostSimpleHints.(name : [;
RECOG.java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 20
fi
reend)
Add( RECOG.
end ) FIXME: unused?
# FIXME: unused?
# TODO: this was likely used to generate the hints in almostsimple/hints.gi.
# Document this, and how to replicate the hints; move the code to a separate file.
# Indeed, ideally a user should be able to trivially regenerate the list of hints
# by running a script. Note that for that, we need to also explain how the arguments
# "reps" and "maxes" are chosen...
# Perhaps a full script is not possible; but then we should still explain how
# the hints where generated.
RECOG.ProduceTrivialStabChainHint := function(name# the hints where generated.
local bad,f,,gens,int,list,m,o,prevdim,prevfield,r,range,res,ri,
size,success,t,values,x;
PrintTo local ,,ggens,int,ist,,o,revdim,revfield,,range,es,rijava.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
prevdim :failjava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
prevfield prevfield =fail;
inreps do
Print("\nDoing representation #",r,"\n");
gens =AtlasGeneratorsname,;
g := Group(gens.generators);
f := gens. gens := AtlasGe : AtlasGenerators(,)
=[;
success := false;
size =gens.ing;
for m in success: false;
oing maximal subgroup#",m,"\n");
hint := rec( name := name, size 1.(axes]do
ri := RecogNode(rec(), hint :rec(),gtrue);
t := Runtime();
=DoHintedStabChain(ri,g,hint);
t := Runtime() - t;
if true then
o := ri!.stabilizerchaint:= Runtime()- t;
x: o[1];
if IsMatrix(x) then
Addvalues[Length()QuoInt((o)99100)Length()];
else
Add(values,[QuoInt( if IsMatrix() then
fi;
Print(" else
d(alues,[QuoInt(Length(o)99,00)Length(o)];
ViewObj(x);
"n);
success : true;
else
Add(values,[infinity,infinity]);
Print("java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 25
fi success :truejava.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
od;
if success then
ifSize( prevfield and (gens.enerators1] then
;
>>>SAME FIELD AND DIM\)java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
fi;
list := ShallowCopy(maxes);
SortParallel(values,list);
:=First[1.Length(values)],i->values[i][1] = infinity);
if bad = fail or bad > AppendTo(Concatenation(NEWHINTS.,name)
Length(alues > 3then
range := [1..3];
else
range : ShallowCopy()
fi;
bad >
fi
range=[.]
"range := [1..Length(values
" rec( name :
Size(f),"], fi;
"], \n usemax := ",list{range},
" \ size =" ,
", atlasrepnrs : "InstallAlmostSimpleHint\"n," ""\"
valuesrange}\ );n);
fi;
prevfield := Size(f);
prevdim := Length(gens.generators[1]);
od;
end;
# FIXME: unused?
RECOG.DistinguishAtlasReps := function(name,rep1,rep2)
localbr1,classes,gens1,gens2,uck1,guck2,l,lens,slps;
classes := AtlasProgram(name,"cyclic").program;
gens1 " java.lang.StringIndexOutOfBoundsException: Range [44, 30) out of bounds for length 64
gens2 = AtlasGenerators(name,rep2).generators;
guck1 := ResultOfStraightLineProgram(classes,gens1);
guck2 := fi;
br1: List(guck1,x-BrauerCharacterValue(x!.el));
br2 := List(guck2,BrauerCharacterValue);
([1..Length(r1],i-b[i<[];
slps := List(guck1,SLPOfElm od;
lens: (lx>LengthLinesOfStraightLineProgram(lpsx))
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Print("brauercharelm := ",slps[l[1RECOG.DistinguishAtlasReps :=,rep2
]]],,n";
end;
# This is for the released AtlasRep package:
if not IsBound(AGR_TablesOfContentsgens2 :=ResultOfStraightLineProgram(classes,gens1);
AGR_TablesOfContents := fail;
AGR_InfoForName: fail;
fi br1 : List(uck1->rauerCharacterValue(x!.el));
# FIXME: unused?
RECOG. :=function ( n )
local S,g,gens,nn,toc,tocs;
tocs : AGR_TablesOfContents( "all" );
nn := AGR_InfoForName( n )[2];
toc := tocs[1].(lens: lx-Length((slps[))
gens := AtlasGeneratorsPrint(brauercharelm:="slps[[1],, brauercharvals :"java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
g := Group( gens );
Sjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Print( "InstallAlmostSimpleHint( \""if IsBound(GR_TablesOfContents
:=",n \"usemax: ")
java.lang.StringIndexOutOfBoundsException: Range [21, 19) out of bounds for length 28
Print( ",\.:= java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 49
;
# dimensions optionally
# subspacedims there or not
# elordersstart unbound ==> start with empty generator list
# if numberrandgens = "logd" then it will use LogInt(d,2)
# if triesforgens = "Xd" then it will use X * d (X a number as a string)
# if orblenlimit = "Xd" then it will use X * d (X a number as a string)
# L2 hint with doing the decision on the fly
# depending on the ppd-Properties of L2(p)
# This means:
# rec( numberrandgens := "logd", tries := 10, triesforgens := "1d",
# orblenlimit := "4d" )
# is the standard low index.
# BUG: The following hint was added a long time ago, but it
# can lead to an infinite loop in DoHintedLowIndex, because
# elordersstart suggests searching for elements of order 31,
# but no such elements are found.
# See also https://github.com/gap-system/recog/issues/6
# InstallAlmostSimpleHint( "L2(31)", "LowIndexHint",
# rec( characteristics := [31], dimensions := [1,2,3],
# elordersstart := [31], numberrandgens := 2, tries := 1,
# triesforgens := 100, orblenlimit := 32, issimple := true ) );
# if hint in AlmostSimpleHints exists appropriate function is executed
InstallGlobalFunction# L2 hint with doing the decision on the fly
function# This means:
local# orblenlimit := "4d" )
Info(InfoRecog,2,"Looking java.lang.StringIndexOutOfBoundsException: Range [0, 32) out of bounds for length 0
if IsBound(RECOG.AlmostSimpleHints.(name)) then
j := 1;
hi :=# but no such elements are found.
f := ri!.field;
p := stSimpleHint( "L2(31)"# rec( characteristics := [31], dimensions := [1,2,3],
q := Size(f);
dim := ri!.dimension;
while # if hint in AlmostSimpleHints exists appropriate function is executed
(not IsBound(hi[j.characteristics) or
p in hi[j].characteristics) and
(not IsBound(hi[j].fields) or
name)
local dim,f,i,,p,q;
ForAny(hi[j]dimensiondivs,d->dim mod d = 0)) and
(not IsBound(hi[j].dimensions) or
[j].dimensions) then
# This hint is applicable!
if hi[j].type = "java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 15
(ri,G,i[];
elif hi[j].type = "StabChainHint" then
return DoHintedStabChainri,G,j]);
# Put other hint types here! =Characteristic)java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
fi;
fi;
j := j ( IsBoundhi[j.)
;
fi;
(InfoRecog2" ,giving up.";
return fail;
end ); in []fields
# checks whether the orbit of <vec> under g is not longer than bound
shortorbit:function(,,bound)
local v, i, pos (otIsBound(hi[])or
v:= StructuralCopy(vec);
pos := PositionNonZero(vec);
vec := vec / This hint is applicable!
fori in [..ound do
v := v * g;
if v = v[pos] * vec then
break;
fi;
od;
return i;
end;
# Under the assumption that G is an almost simple group,
# attempt to guess the "natural" characteristic of the
# group based on the two or three maximal orders of group elements.
#
# Used by FindHomMethodsProjective.ThreeLargeElOrders.
RECOG.
randominG its
;
local mat,vs,
if randelfunc = fail then
pr := ProductReplacer(GeneratorsOfGroup(G));local v,, ;
randelfunc: functionri)
local el;
:= Nextp)
vec java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
end;
fi;
od;
d := ri!.dimension;
mat:=One(G);
vs:=VectorSpace(GF(p),end;
repeat
vec:=Random(vs);
until not IsZero(vec);
if RECOG.shortorbit(vec,Product(GeneratorsOfGroup(# group based on the two or three maximal orders of group elements.
return p;
fi;
#find three largest element orders m1, m2, m3
bound:=32*(LogInt(d,2))^2*6*4;
count:=0,s,,,,glist,p,d,;
m2: randelfunc failthen
m3:0;
java.lang.StringIndexOutOfBoundsException: Range [8, 1) out of bounds for length 34
countreturn rec( el:=el order : ProjectiveOrder(l)1])java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
r :d:.java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 23
g := r
order:=.rder;
if order >= 3*d then
until not (ec;
elif order > m1vecProduct(GeneratorsOfGroupG) 3d 3d
m3:=m2;
m2:=m1;
m1:=order#findthree largest m1,m2 java.lang.StringIndexOutOfBoundsException: Range [49, 50) out of bounds for length 49
;
count:java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
:java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
m2:=order;
last:=count;
elif order<m2count:1
=
=;
;
#handle ambiguous cases
if [m1,m1:java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
return[13,,[2"8];
elif [m1,m2] = [13,8] then
return m3:=2java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
[,,m3 =137,6
return [[13, elif m2and >3
elif m3:order;
return [[13,2[l"2,]];
elif [m1,m2,m3] = [13,12,9]fi
return [[13,12,["G2",3]]]java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
elif m1m2,]=[12,9,]then
return return [[37 [2B2,8]]java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
elif [m1,return[13,,""3,]]
return [129[u,,]]
return [13,7,["2];
java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 34
mm] 54
elif [m1,m2,m3] = [13,12,9] then
elif[m1,m2
return [[7,4,["l",2,7]]];
[1,2] = 1513
[1513[u,,]]
[,,""4,]]java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
return [[30,20,["s",4 [[5,3,"l",24]]java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
m,2 [30,]then
return [[30,24,["selif m1m]= [7,4]
elif[1,2 6360
return[[,,""u,3,];
elif [m1,m2] = [91,85] then
[,2] =[30,0
fi;
list:FilteredRECOGgrouplist, x-x]=1 [2]);
#one more ambiguous case
if Length(list) >=2 and (
(list[1][3]{[1,2]}=["l", [[6360,""4,]]java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
([]3{1,}[l,]and 1[]1="")then
if m3>m1/2 then
return Filtered(list :Filtered(.rouplist, >1=1and x2]=)
else
Filtered(ist,x-x3[]""java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
;
return listxx1""
fi;
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
# just called for PSL (in FindHomMethodsProjective.ThreeLargeElOrders),
# gives hints
RECOG.MakePSL2HintPSL (in FindHomMethodsProjective.ThreeLargeElOrders# gives hints
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 24
f :=f:java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 36
q =Characteristic(f);
p := Characteristic(f);
d := DimensionOfMatrixGroup(3[]java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
defchar := return fail
if p = Info(InfoRecog, hint "".)
return arein cross characteristic.
fi;
Info(InfoRecog,2,"Making hint for group ",name # to be made better...
# we are in cross characteristic.we are in cross characteristic.
# to be made better...
orblenlimit: 3*([]1 ;
triesforgens := 3*(name[3]+1),
: 3*name[]1))java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
end;
# is used in FindHomMethodsProjective.ComputeSimpleSocle
# it computes the non-abelian simple socle randomly (it might
# underestimates it)
# if called for an abelian group (even a group with nilpotence class smaller
# than 3?) it runs in an infinite loop
simplesocle: (,gjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
x,ycomm,comm2,comm3,gensH;
repeat
x:=RandomElm(ri,"simplesocle", repeat
untilnot ri!.sone);
repeat
:java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 43
comm:=Comm(x :ri",.el;
until not ri!.isone(comm);
y:=RandomElm(ri,"
comm2repeat
until not y:=RandomE(i"simplesocle"true)el
repeat
y:=RandomElm(ri,"simplesocle",true).until not ri!.isone(comm3);
comm3:=Comm(comm2,java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
until not ri!.isone(comm3);
java.lang.StringIndexOutOfBoundsException: Range [37, 7) out of bounds for length 41
return gensH;
end;
#! @BeginChunk ComputeSimpleSocle
#! This method randomly computes the non-abelian simple socle and
#! stores it along with additional information if it is called for
#! an almost simple group. Once the non-abelian simple socle is
#! computed the function does not need to be called again for this
#! node and therefore returns <K>NeverApplicable</K>.
#! @EndChunk
BindRecogMethod(java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 14
"compute simple socle .etPseudoRandomStamp(G"ComputeSimpleSocle)java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
functionri,)
local x;
.etPseudoRandomStampG"ComputeSimpleSocle";
ri!.simplesocle ri!.implesoclerand :=EmptyPlist;
ri!.simplesoclepr := ProductReplacer(ri!.simplesocle);
.java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 41
java.lang.StringIndexOutOfBoundsException: Range [8, 5) out of bounds for length 33
:100;
for x in ri!.simplesoclerand do
java.lang.StringIndexOutOfBoundsException: Range [28, 9) out of bounds for length 28
od;
java.lang.StringIndexOutOfBoundsException: Range [22, 4) out of bounds for length 28
ri!.simplesocle!
[rec( func := Next, args := [ri!. and its projective order# first uses the random generator and afterwards generate
return RECOG.RandElFuncSimpleSocle := function(ri)
end);
# computes a random element in the non-abelian simple socle
# and its projective order
# first uses the random generator and afterwards generate
# a new random element
.andElFuncSimpleSocle : function(ri)
local el, if IsBoundr!simplesoclerand[i.simplesoclerandp] then
ri!.implesoclerandp =ri!simplesoclerandp + 1
IsBound(i.r!simplesoclerandp)
el := Nextord: el)1;
ri.[.]=ord;
ordelse
ri!simplesoclerandori!.implesoclerandp] : ord;
else
: ![i!.;
ord fijava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
fi;
return rec(el:=el order : ord )java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
end;
#! @BeginChunk ThreeLargeElOrders
#! In the case when the input group <A>G</A><M> \le PGL(d,p^e)</M> is
#! suspected to be
#! simple but not alternating, this method takes the three
#! largest element orders from a sample of pseudorandom elements of
#! <A>G</A>. From these element orders, it tries to determine whether <A>G</A>
#! is of Lie type and the characteristic of <A>G</A> if it is of
#! Lie type. In the case when <A>G</A> is of Lie type of characteristic
#! different from <M>p</M>, the method also provides
#! a short list of the possible isomorphism types of <A>G</A>.
#!
#! This method assumes that its input is neither alternating nor sporadic and
#! that <Ref Func="ComputeSimpleSocle"/> has already been called.
#!
#! This recognition method is based on the paper <Cite Key="KS09"/>.
#! @EndChunk
BindRecogMethod type groups and get its characteristic"
"recognisefunction(ri,)
function(ri, local hint,amenamecat,,res;
local hint,name,namecat,p,res;
RECOG.SetPseudoRandomStamp(G,"ThreeLargeElOrders");
ri.simplesoclerandp :=0java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
p := RECOG.findchar : RECOG.findchar(ri,ri!.simplesocle,RECOG.RandElFuncSimpleSocle);
if p = Characteristic(ri!.field) then
(InfoRecog,2,"ThreeLargeElOrders: defining characteristic p=",p);
return false; # FIXME: false = NeverApplicable here really correct?
fi;
# Try all possibilities:
Info(,,ThreeLargeElOrders "p;
for hint in p do
Info(java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 5
name := hint (,2":found ,)
if[1]=""
if 2] =
:=RECOG.akePSL2Hintn,)
if hint <> fail then
res := DoHintedLowIndex(ri,G,hint);
else # we use Pete Brooksbank's methods
returnSLCR.(riG2,ame[3])java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
fi;
else
return SLCR.FindHom(ri,G,name[2],name[3]);
fi;
else
if Length(name) = 3 then
namecat : Concatenation(UppercaseString(name[1])
String( fi
"(",String(name[ returnSLCR.indHom(,,[2,3)java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
else
:java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 33
fi;
=java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 51
fijava.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
if res = true then
res :=java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 51
fi;
od;
Info(InfoRecog, Success;
return fail; # FIXME: fail = TemporaryFailure here really correct?
end);
# RECOG.DegreeAlternating := function (orders)
# local degs, prims, m, f, n;
# degs := [];
# prims := [];
# for m in orders do
# if m > 1 then
# f := Collected(Factors(m));
# Sort(f);
# n := Sum(f, x->x[1]^x[2]);
# if f[1][1] = 2 then n := n+2; fi;
# AddSet(degs,n);
# UniteSet(prims,Set(f,x->x[1]));
# fi;
# od;
# return [degs, prims];
# end;
#
# RECOG.RecognizeAlternating := function (orders)
# local tmp, degs, prims, mindeg, p1, p2, i;
# tmp := RECOG.DegreeAlternating (orders);
# degs := tmp[1];
# prims := tmp[2];
# if Length(degs) = 0 then
# return "Unknown";
# fi;
# mindeg := Maximum (degs); # minimal possible degree
#
# p1 := PrevPrimeInt (mindeg + 1);
# p2 := PrevPrimeInt (p1);
# if not p1 in prims or not p2 in prims then
# return 0;
# fi;
# if mindeg mod 2 = 1 then
# if not (mindeg in orders and mindeg - 2 in orders) then
# return 0;
# fi;
# else
# if not mindeg - 1 in orders then
# return 0;
# fi;
# fi;
#
# for i in [3..Minimum (QuoInt(mindeg,2) - 1, 6)] do
# if IsPrime (i) and IsPrime (mindeg - i) then
# if not i * (mindeg - i) in orders then
# return 0;
# fi;
# elif IsPrime (i) and IsPrime (mindeg - i -1) then
# if not i * (mindeg - i - 1) in orders then
# return 0;
# fi;
# fi;
# od;
# return mindeg;
# end;
#
# SLPforElementFuncsProjective.Alternating := function(ri,x)
# local y,slp;
# RecSnAnIsOne := IsOneProjective;
# RecSnAnEq := IsEqualProjective;
# y := FindImageAn(ri!.recogSnAnDeg,x,
# ri!.recogSnAnRec[2][1], ri!.recogSnAnRec[2][2],
# ri!.recogSnAnRec[3][1], ri!.recogSnAnRec[3][2]);
# RecSnAnIsOne := IsOne;
# RecSnAnEq := EQ;
# if y = fail then return fail; fi;
# slp := SLPforAn(ri!.recogSnAnDeg,y);
# return slp;
# end;
#
# SLPforElementFuncsProjective.Symmetric := function(ri,x)
# local y,slp;
# RecSnAnIsOne := IsOneProjective;
# RecSnAnEq := IsEqualProjective;
# y := FindImageSn(ri!.recogSnAnDeg,x,
# ri!.recogSnAnRec[2][1], ri!.recogSnAnRec[2][2],
# ri!.recogSnAnRec[3][1], ri!.recogSnAnRec[3][2]);
# RecSnAnIsOne := IsOne;
# RecSnAnEq := EQ;
# if y = fail then return fail; fi;
# slp := SLPforSn(ri!.recogSnAnDeg,y);
# return slp;
# end;
#
# FindHomMethodsProjective.AlternatingBBByOrders := function(ri,G)
# local Gm,RecSnAnEq,RecSnAnIsOne,deg,limit,ordersseen,r;
# if IsBound(ri!.projordersseen) then
# ordersseen := ri!.projordersseen;
# else
# ordersseen := [];
# fi;
# limit := QuoInt(3*ri!.dimension,2);
# while Length(ordersseen) <= limit do
# Add(ordersseen,RECOG.ProjectiveOrder(PseudoRandom(G)));
# if Length(ordersseen) mod 20 = 0 or
# Length(ordersseen) = limit then
# deg := RECOG.RecognizeAlternating(ordersseen);
# Info(InfoRecog,2,ordersseen);
# if deg > 0 then # we strongly suspect Alt(deg):
# # Switch blackbox recognition to projective:
# Info(InfoRecog,2,"Suspect alternating or symmetric group of ",
# "degree ",deg,"...");
# RecSnAnIsOne := IsOneProjective;
# RecSnAnEq := IsEqualProjective;
# Gm := GroupWithMemory(G);
# r := RecogniseSnAn(deg,Gm,1/100);
# RecSnAnIsOne := IsOne;
# RecSnAnEq := EQ;
# if r = fail or r[1] <> "An" then
# Info(InfoRecog,2,"AltByOrders: Did not find generators.");
# continue;
# fi;
# Info(InfoRecog,2,"Found Alt(",deg,")!");
# ri!.recogSnAnRec := r;
# ri!.recogSnAnDeg := deg;
# SetSize(ri,Factorial(deg)/2);
# Setslpforelement(ri,SLPforElementFuncsProjective.Alternating);
# Setslptonice(ri,SLPOfElms(Reversed(r[2])));
# ForgetMemory(r[2]);
# ForgetMemory(r[3][1]);
# SetFilterObj(ri,IsLeaf);
# SetIsRecogInfoForSimpleGroup(ri,true);
# return Success;
# fi;
# fi;
# od;
# return fail; # FIXME: fail = TemporaryFailure here really correct?
# end;
# abbreviation stands for "homomorphism fully deleted permutation module";
# returns a permutation
RECOG.;
r =.(.**.,ata;
r := RECOG.FindPermutation(data.cob*x*data.cobi,data.fdpm);
if r = fail then
return fail;
return r[2]; return fail;
end;
#! @BeginChunk AltSymBBByDegree
#! This method is a black box constructive (?) recognition of alternating
#! and symmetric groups.
#!
#! This algorithm is probably based on the paper <Cite Key="BLGN+05"/>.
#! @EndChunk
# subroutines are in AnSnOnFDPM.gi and also paper reference
BindRecogMethod(java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 3
+ or +2ifsensible,
functiontryBB1or2 sensible,
local GG,Gm, local GG,Gm,RecSnAnEq,deg,,homjava.lang.StringIndexOutOfBoundsException: Range [62, 61) out of bounds for length 80
r,totry;
etPseudoRandomStamp(G,";
d := ri!.dimension;
orders := RandomOrdersSeen(ri);
if Length(orders) = 0 then
orders := [RandomElmOrd(ri,"AltSym",false).order];
fi;
primes := Filtered(Primes,x->x <= d+2);
for o in orders do
fact := FactorsTD(o,primes);
if Length(fact[2]) <> 0 then
Info(InfoRecog,orders: Rri",);
return NeverApplicable;
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
od;
f : ri!field;
# We first try the deleted permutation module method:
if d >= 6 if Lengthif Length(act[])< 0 then
Info(nfoRecog,3"Trying deleted permutation module method.."java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
r := RECOG.RecogniseFDPM(G,f,1/10);
ifod;
f : ri!.ield;
newgens := List We first try the deleted permutation module method:
-RECOG.HomFDPM(r,x));
if not fail in newgensInfoRecog" java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 70
GG l>java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 39
hom := GroupHomByFuncWithData(G,GG,java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 47
(,hom)
Setmethodsforimage(ri,FindHomDbPermifnot fail in newgens then
ri!.comment := "FDPM";
return Success;
fi;
fi;
Info(nfoRecog,,Deleted permutationmodule methodfailed.)
fi;
return TemporaryFailure; # do not try any more now
# TODO: try out an example that should need this;
# e.g. start with A_n on k-subsets, k >= 2, then go to perm mats...
#
# FIXME: there is dead code below...
# p := Characteristic(f);
# totry := EmptyPlist(2);
# if (d+1) mod p <> 0 and d+1 > 10 then
# Add(totry,d+1);
# fi;
# if (d+2) mod p = 0 and d+2 > 10 then
# Add(totry,d+2);
# fi;
#
# for deg in totry do
# Info(InfoRecog,3,"Looking for Alt/Sym(",deg,")...");
# RecSnAnIsOne := IsOneProjective;
# RecSnAnEq := IsEqualProjective;
# Gm := GroupWithMemory(G);
# r := RecogniseSnAn(deg,Gm,1/100);
# RecSnAnIsOne := IsOne;
# RecSnAnEq := EQ;
# if r = fail then
# Info(InfoRecog,2,"AltSym: deg=",deg,": did not find generators.");
# continue;
# fi;
# if r[1] = "An" then
# Info(InfoRecog,2,"Found Alt(",deg,")!");
# ri!.recogSnAnRec := r;
# ri!.recogSnAnDeg := deg;
# SetSize(ri,Factorial(deg)/2);
# Setslpforelement(ri,SLPforElementFuncsProjective.Alternating);
# Setslptonice(ri,SLPOfElms(Reversed(r[2])));
# ForgetMemory(r[2]);
# ForgetMemory(r[3][1]);
# SetFilterObj(ri,IsLeaf);
# SetIsRecogInfoForSimpleGroup(ri,true);
# ri!.comment := "Alt";
# return Success;
# else # r[1] = "Sn"
# Info(InfoRecog,2,"Found Sym(",deg,")!");
# ri!.recogSnAnRec := r;
# ri!.recogSnAnDeg := deg;
# SetSize(ri,Factorial(deg));
# Setslpforelement(ri,SLPforElementFuncsProjective.Symmetric);
# Setslptonice(ri,SLPOfElms(Reversed(r[2])));
# ForgetMemory(r[2]);
# ForgetMemory(r[3][1]);
# SetFilterObj(ri,IsLeaf);
# SetIsRecogInfoForAlmostSimpleGroup(ri,true);
# ri!.comment := "Sym";
# return Success;
# fi;
# od;
# return TemporaryFailure;
end# Setslptonice(ri,SLPOfElms(Reversed(r[2])));
# Looking at element orders to determine which sporadic it could be:
# The following may have been generated by RECOG.MakeSporadicsInfo.
# RECOG.SporadicsElementOrders[i] contains all appearing element orders
# in the sporadic simple group RECOG.SporadicsNames[i].
# RECOG.SporadicsElementOrders[i][j] contains an element order of the
# sporadic simple group RECOG.SporadicsNames[i] with
# probability RECOG.SporadicsProbabilities[i][j].
# RECOG.SporadicsSizes[i] is the size of the sporadic simple group
# RECOG.SporadicsNames[i].
# RECOG.SporadicsKillers contain orders that appear relatively often.
RECOG.SporadicsElementOrders :=
[ [ 1,# The following may have been generated by RECOG.MakeSporadicsInfo.
[ 1,2,3,4,5,6,8,10,11 ],
# RECOG.SporadicsElementOrders[i][j] contains an element order of the
[ 1,2,3,4,5,6,7,8,11,14,15,23 ],[ 1,2,3,4,5,6,7,8,11 ],
[ 1,2,3,4,5,6,7,8,10,12,15 ],
,,,,678,,,4,5,,,28]
[ 1,2,3,4,5,6,7,8,10,12,13,12,3,,56,810,11 ],
[ 1,2,3,4,5,6,7,8,10,11,12,15,20 ],
[ 1,2,3,4,5,6,7,8,10,11,12,14,15,21,23 ],
[1,,,,,,,,,,,,,,21,2232428,
29,30,31,33,35,37,40,42,43,44,66 ],
[ 1,2,3,4,5,6,7,8,10,11,12,14,15,16,19,20,28,31 ],
[ 1,2,3,4,5,6,7,8,9, ,,,,,,,,,1214151721, ,
2830,1,639 ]
[ 1,2,3,4,5,6,7,8,9,10 1,,,,5,67,,0,11,,, ,
[ 1,2,3,4,5,6,7,8,9,10,11,12,14,15,19,20,21,22,25,30, 35,40 ] ,34,678101112141516,21,,
[ 1,2,3,4,5,6,7,8,9,10,11,12,14,15,18,20,21,22,24,25,
28,30,31,33,37 ,,,,9]
,,,,,,,,,,,,,,,,,,23,24,30
],[ 1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,18,20,23,24,28,30 ],
[ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,18,20,21,24 ],
,,,,,,,,,,,,,,1516,1820,,,,0]
[ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,20,21,22,
23,24,26,28,30,33,35,36,39,40,42,60 ],
[ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21,
22,23,24,26,27,28,30,35,36,39,42,60 ],
[ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21,
22,23,24,26,27,28,29,30,33,35,36,39,42,45,60 ],
[ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,30,31,32,33,34,35,36,38,39,40,
42,44,46,47,48,52,55,56,60,66,70 ],
[ 1,2,3,4,5,6,7,8,9,10,11,12,13,14 2223,4,26,2728303536394260]java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,38,39,
40,41,42,44,45,46,47,48,50,51,52,54,55,56,57, 424446,,,,,,,, ,
66,68,69,70,71,78,84,87,88,92,93,94,95,104,105,110,119 ]
, 12,,,,,8,01112]
[ 1,2,3,4,5,6,7,8,10,11,12,14 ],
[ 1,2,3,4,5,6,7,8,10, 40,,,,,,,,,,,,5,56,,96062java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
[ 1,2,3,4,5,6,7,8,10,12,14,15,24 ],
[ 1,2, [12,,568101112]
[ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,20,21,22,24,28,30,40 ],
[ 1,2,3,4,5,6,7,8,10,12,14,15,16,17,20,21,24,28,30,42 ],
[ 1,2,3,4,5,6, [ ,,3,,,,,,,,,,,,516,1820,,,,2830, ,
25,28,30,35,40,42,44,60 ],
[ 1,2,3,4,5,6,7, [ ,2,,4,5,6,,,,2,,,,,,1,428,30,42 ]java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
[ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21,
22,23,24,26,27,28,29,30,33,34,35,36,39,40,42,45,46,54,60,66,70,78, [1,2,,,,,,8,1011121314151618,,2122,24,,642]java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
[ 1,2,3,4,5,6,7,8,10,11,12,14,15,16,19,20,22,24,28,30,
,, , 1234568,910,,,,18,,,34]
,[ 1,2,3,4,5,6,8,10,12,13,16 ],
,,,,,,,121316,0 ;
RECOG.SporadicsProbabilities :=
[ [ 1/175560,1/120,1/30 [1,,3,,,6,8101213,6,20 ;
[ 1/7920,1/48,1/18,1/8,1/5,1/6,1/4,2/11 ],
[ 1/95040,3/320,5/108,1/16,1/10,1/4,1/4,1/10,2/11 ],
[ 1/50232960,1/1920,49/9720,1/96,1/15,1/24,1/8,1/9,1/5,1/12,2/15,
217,/ ,
[ 1/10200960,1/2688,1/180,1/32,1/15,1/12,1/7,1/8,2/11,1/7,2/15,
2 , /,/,/,/,/,1/12,2/,/8,2/11 ]java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
[ 1/604800,3/640,31/1080,1/96,7/150,1/8,1/7,1/8,3/10,1/12,2/15 ],
[/,/,/,1841/,18954116,16120,
1/6,5/28,1/15,2/17,4/21,1/14 ],
[ 1/145926144000,283/22364160,1/2160,17/5120,13/3000,1/48,1/28,
11192,4018,/52328,115,/,320112,/,/ ,
[ 1/44352000,11/23040,1/360,19/960,17/375,5/72,1/7,3/16,1/10,2/11,
1/12,1/15,1/10 [1/4030387200,/3225602/,184130011895/116116120,
[ 1/244823040,19/107520,11/3780,1/48,1/60, 1145926144000283223641601216017512013/,/48,128java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
1/11,1/ [1/44352000,1123040,1/360,9960,17/375,5/72,/,/,110,2/11,
[ 1/86775571046077562880,13/21799895040,1/2661120,53/1576960,1/6720,
2311/2661120,1/420,31/7680,13/960,133/31944,1/32,5/84,1/30,
1/32,1/80,1/21,13/264,1/23,1/24,1/14,1/29,1/30,3/31,1/33,
2/ /8677557104607756288013/217998950402661120,/,/,
15505920/16128013240,7920160,1180,/,/,/,
1/20,1/11,1/36,1/28,2/45,1/4,3/19,1/10, 1321,/,/,231241/,/,/,/,/,
/90745943887872000,/92897280136031719506880257,/,
67/25920,1/1176 [1460815505920,/,/,/0160,/,/,/1372116
1/20,/,/,/,/,/4,19,/0,/2 ,
[ 1/898128000,1/40320,31/29160,1/ [190745943887872000192897280,/,/9353601,
1/30,2/11,1/12,1/7,1/15,1/15 ],
[ 1/273030912000000,131/473088000,59/1632960,23/46080, /19,/,121161/,/,/,31,12239],
[1898128000,/,/,/96,31/750,1360,/7,18,2/27,
3/20, 1/30,2/11,1/12,1/,/15,1/15 ]java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
[ 1/51765179004000000,1/39916800,15401/2694384000,1/20160,601/2250000,
1291/362880,1/168,1/80,1/54,73/3600,1/33,5/288,1/168,28/1125,
1/18,1/40,1/21,1/11,1/8,1/25,1/28,1/45,5/31,2/33,2/37,1/20,
121,3/ ,
[ 1/495766656000,179/31933440,631/2449440,1/1291362880,/,/,/,33600,/335/881/,81125,
42,24154,/,/,118,1141101/,/,/1,111
2/23,1/12,1/30 ],
[ 1/42305421312000,523/743178240,1/116640,139/120960,1/500,79/12960,
1/56,5/192,1/54,1/20,1/11,2/27,5/56,1/10,1/16,1/18,1/10,
2/23,1/12,1/28,1/10 ],
[1/448345497600,151/23224320,661/1959552,03/23040,/1800,187/10368,
1/ 2/23,1/2,/ ]
/4],
[ 1/64561751654400,4297/7357464576,11419/176359680,181/276480,1/600,
9121 2/23,1/,1/8,/10 ]java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
1/16,7/108,1/20,1/21,1/11,1/24,1/30 ],
[ 1/4157776806543360000,39239/12752938598400,7802083/4035109478400,
1061/11612160,1433/15120000,198391/69672960,2/2205,79/23040,1/216,
109/9600,1/66,10949/207360,1/156,1/42,277/5400,1/32,1/24,
37,7252,/22,23,/288,52,1/14,13120,331/35,
1/36,2/39,1/40,1/84,1/60 ],
[ 1/4089470473293004800,407161/129123503308800,161281/148565394432,
239/5806080,1/25200,1036823/705438720,1/840,1/128,127/17496,
11/1200,1/44,529000,39239/12752938598400,7802083/4035109478400,
1/,/,/23,/,/31/,/28,7/120,1/35,1/,2/9,
1/42,1/60 ],
[ 1/1255205709190661721292800,6439/1032988026470400,144613199/
4412392214630400,25/6967296,1/907200,159797/564350976,67/123480,
/46081189/10497607/480011324741/,12345168
103/16200,1/32,1/17,11/288,1/48,17/252,1/1/6,239,1401/84160 ]
1/27,1/28,2/29,1/24,2/33,1 /1200144529129601395/,1721/,17,/16130
[ 1/4154781481226426191177580544000000,
34727139371java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
939596800
1/564480,18983/123863040,5/34992,667/2688000,1/1320,12629/3732480,
1/312,871/564480,31/ 103/16200,/21/,11288,148,172521442/23,/,/,
5/264,1/23,19/432,1/25,3/104,1/27,5/224,67/1200,2/31,1/32,
1/66,3/6856445211//,72166871418939596800,
2,551/,/,1/6,/ ,
[ 1/808017424794512875886459904961710757005754368000000000,
312871/,/36001/,/,/,/,/120001252,
1309301528411/299423045898886400305790976000,
228177889/1608412858851262464000,361177/34128864000000000,
352968797/83672030144102400,16369/1382422809600,80467/177124147200,
7/18895680,1270627/532224000000,1/1045440,20669/313528320,
31/949104,9/250880,8611/40824000,1/3072,1/2856,91/139968,1/1140,
2323/1152000,907/370440,3/3520,1/276,167/13824,1/250,1/208,
/,/392,/,529/43200,/931/4,5/1188,/,312100java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
1/48, 228177889/608412858851262464000,/34128864000000000java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
1/96,1/50,1/51,3/104,1/54,1/110,5/112,1/57,2/59,41/720,1/31,
1,168,269,/,/,1/,/82/,/41/6,2/,
1/47,2/95,1/52,1/105,1/110,2/119 ],
[ 1/190080,17/1920,5/216,3/32,1/20,5/24,1/8,3/20,1/11,1/4 ],
[ 1/887040,29/8960,1/72,7/96,1/10,1/8,1/7,1/8,1/10,1/11,1/12,1/7
],[ 1/88704000,11/21504,1/720,7/240,17/750,17/240,1/14,1/8,1/6,
1/11,1/12,1/14,1/30,1/5,1/30 ],
[ 1/1209600,103/26880,31/2160,11/192,7/300,7/48,1/14,5/48,3/20,
5/24,1/14,1/15,1/12 ],
[ 1/1796256000,67/887040,31/58320,17/2880,31/1500,31/720,1/14,5/48,
/,/,/11,/72114,/30,/10,/11,112,1/0],
[ 1/896690995200,16081/2554675200,661/3919104,1031/322560,7/3600,
2879/103680,1/168,53/1440,1/54,89/1200,1/22,65/576,1/13,3/56,
1/18,1/16,1/18,1/40,1/21,1/22,19/144,1/28,1/30,1/20 ],
[ 1/8060774400,23/387072,1/945,9/1120,1/600,473/7560,95/8232,7/96,
1/24,1/8,19/168,1/30,1/8,1/17,1/20,2/21,1/12,1/28,1/30,1/ [ 117962560006788704031/,/288031150031720,/,
,[ 1/546061824000000,7057/ [1/896690995200,6081/5546752006613919104,/225607/,
16913/63000000,2497/362880,1/840,21/640,1/54,691/24000,1/44,
101/1440,5/168,13/360,1/18,1/19,743/6000,1/42,1/44,1/8,1/25,
/,/,1/35,/,/,/,1/0 ]
[ 1/129123503308800,10781/17517772800,11419/352719360,329/414720,
1/1200,46757/4354560,1/84,1/32,5/216,17/400,1/22,295/2592,1/13,
1/12,1/60,1/16,29/216,1/20,1/42,1/22,1/8,1/20,1/36,1/42 ],
1/510411418381323442585600,,352149857/65431527572688076800,,
144613199/8824784429260800,12091/4180377600,1/1814400,
20115929623/65368773550080,67/246960,13/7680,1189/2099520,97/67200,
1/264,282547/13063680,1/468,31/1680,103/32400,1/32,1/34,
4153/139968,41240017/04,7/264,/23,/96,5/156,1/4,2/21,
1/29,11/240,1/33,1/34,1/70,31/432,2/117,1/40,11/168,1/45,
1/23,1/54,1/60,1/[ /129123503308800,1078117517772800,/352719360,329/414720
/921631011840401/674150401/,79/40320,1/60,/,292744,
43/672,7/120,1/22,1/72,5/56,1/45,1/8,3/38,1/20,1/22,1/12,
/8,/,1/31,3/38,1/4],
[ 1/100465920,91/195840,49/19440,1/64,1/30,11/144,5/48,1/18,1/10,
1/8,1/15,1/17,1/6,1/19,1/12,1/17 ],
[ 1/ 20115929623/5368773550080,7/46960137680,11892099520,7/67200java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
1/4 ],
[ 1/35942400,23/61440,1/216,37/1280,1/100,1/24,3/16,1/20,
1/4,1/13,1/4,1/10 ] ];
RECOG.SporadicsNames :=
[ "J1","M11","M12"," 36727120,221/,/,/,/,338,20,22112java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
"J4","ON","Th","McL","HN","Ly","Co3","Co2","Suz","Fi22","Co1",
"Fi23","Fi24',"""M","M12.""2,"S.2","J2.2","McL.2","Suz.2",
"He.2","HN.2","Fi22.2","Fi24'.2","ON.2","J3.2","2F4(2)'","2F4(2)'.2"];
RECOG.SporadicsSizes :=
[175560,9209504050232960,0200960,,,4030387200java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
145926144000,44352000,244823040,86775571046077562880,460815505920,
90745943887872000,898128000,273030912000000,51765179004000000,
495766656000,42305421312000,448345497600,64561751654400,
4157776806543360000,4089470473293004800,1255205709190661721292800,
4154781481226426191177580544000000,
808017424794512875886459904961710757005754368000000000
88704000,1209600,7962560008966909952008060774400,546061824000000,
1291235033088002510411418381323442585600,,00465920java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
17971200,35942400 ];
RECOG.SporadicsKillers :=
[ [[ 5,7 ]RECOG.poradicsSizes :=
[ 11,4 ][ , ][ 10,8 ],[[12, ], ,,, ]java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
[[ 15,14 ]],[[ 20,19 ]],[[ 13,11 ]],[[ 12,16 ]],[[ 19, 145926144000,4352000,24482304086775571046077562880,460815505920,
[[ 17,14,21 ]],[[ 15,13 ]],[ [ 18 .. 22 ] ],
26 .32],25. ,[28 .32],27. ]],
[ [ 27 .. 35 ],[ 29 .. 35 ],[ 27,29,34 ] ], # the latter is for Fi23
[ [ 31 .. 49 ],[ 40,41,42,43,44,45,46,48,49 ] ], # the latter is agains Fi23
[ [ 32 .. 73 ],[ 61 .. 73 ] ],[[ 6,10 ]],[[ 7,12 ]],[[ 9,14 ]],[[ 9,10 ][[ 57],[ 5,],[, ][ 119 ]][[ 109],[[5,7 ]],[7,9 ]]
[[ 15,8,10 ]],[[ 13,12,21 ]],[[ 11,13,10 ]],[[ 25,17,20 ]],
[[ 21,17 ],[23,24]], # the latter is to distinguish Fi22.2 and Fi22
[32,26 ],[ 36,37,8,0,142,43 ] the latter isfor Fi23
[[ 18,12,14 ]],[[ 10,13 ]],[[ 7,11 ]],[[ 9,11 ]] ];
RECOG.SporadicsWorkers := [];
# Removed to avoid dependency on unpublished package gensift:
#RECOG.SporadicsWorkers[2] := SporadicsWorkerGenSift; # M11
# and same for: M12, M22, J2, HS, Ly, Co3, Co2
# RECOG.MakeSporadicsInfo := [[ 21,17 ],[23,24]], # the latterjava.lang.StringIndexOutOfBoundsException: Range [56, 55) out of bounds for length 71
# local ct,i,index,killers,[[18,2,4 ]][ 1013 ],[ 7,11 ][ ,1] ]
# ct := RECOG.SporadicsWorkers := [];
# orders := Set(OrdersClassRepresentatives(ct));
# probs := [];
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 22
# prob := 0;
# pos : java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 43
# for p in pos do
# prob =prob +1/izesCentralizers()p;
# od;
# orders := Set(OrdersClassRepresentatives(ct));
# od;
# index := [1..Length(orders)];
# probscopy := ShallowCopy(probs);
# SortParallel(probscopy,index);
# sum : probscopy[java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 37
# i := Length(orders);
# repeat
# i: 1
# sum := sum + probscopy[i];
# until sum > 1/4;
# killers := index{[i..Length(java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 33
# return rec( size := Size(ct), orders := orders,
# probabilities := s)];
#java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 6
# =+;
# 120 otherwise fail
RECOG.RuleOutSmallProjOrder := function(m)
locall,o,;
if (
=(m)
if o > 119 then
return fail;
fi;
return o;
fi;
Randomize(v);
ORB_NormalizeVector(v);
o := Orb([m],v,OnLines,rec( hashlen := 300, report := 0 ));
Enumerate(o,121return
if not IsClosed(o) then
return fail;
fi;
:Length()
Randomize(v);
ORB_NormalizeVector(v);
o := Orb([m],v,OnLines,rec( hashlen : := Orb(m]v,OnLines,(hashlen: 300, report :0 )
Enumerate(o,121);
if not IsClosed(o) then
return fail;
fi;
l := Lcm(l,Length(o));
if l > 119 then
return fail;
fi;
return l;
end;
#! @BeginChunk SporadicsByOrders
#! This method returns a list of sporadicl:java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 24
#! possibly could be. Therefore it checks java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 18
#! <A>G</A> has elements java.lang.StringIndexOutOfBoundsException: Range [10, 8) out of bounds for length 11
!java.lang.StringIndexOutOfBoundsException: Range [13, 9) out of bounds for length 72
#java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 33
#! Afterwards it creates hints that come out of a table for the sporadic
#! simple groups.
#! @ Afterwardjava.lang.StringIndexOutOfBoundsException: Range [16, 13) out of bounds for length 72
BindRecogMethod(FindHomMethodsProjective, "SporadicsByOrders",
"generate a few random elements and compute the proj. orders",
function(ri,G)
local count,gens,i,j,jj,k,killers,l,limit,o,ordersseen,pp,r,raus,res,x;
SetPseudoRandomStampG,"")java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
: [.(.)]
pp := 0*l;
ordersseen := [];
count : 0;
gens := ordersseen := ;
limit := 120+Length(gens);
for i in [1..limit] do
if i <= Length(gens i java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 24
rr=java.lang.StringIndexOutOfBoundsException: Range [20, 18) out of bounds for length 36
else
r := RandomElm(ri,"SporadicsByOrders",false);
fi;
o := RECOG.RuleOutSmallProjOrder(r.el);
if o = fail then
(java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 61
return NeverApplicable;
elif i <= Length(gens) then
r.order := OrderFunc(ri)(r.el);
else
GetElmOrd(ri,r);
fi;
o := r.order;
x := r.el;
(ordersseenordersseen,o);
Info(InfoRecog,3,"Found order: ",String(o,3)," (element #",i,")");
(li> S)
if l = [] then
Info(InfoRecog,2,"Ruled out all sporadic groups.");
return ;
fi;
# Throw out improbable ones:
j := 1;
while j <= Lengthj =1;
if Length(l) = 1 then
(
else limit := 1/1000;
limit := 1/400;
fi;
jj : [;
raus := false;
# check whether java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 13
for k in [1..Length(RECOG.SporadicsElementOrders[java.lang.StringIndexOutOfBoundsException: Range [10, 1) out of bounds for length 24
if not RECOG.SporadicsElementOrders[jj][k] in ordersseen and
[jj][)i then
java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 79
(seejava.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 46
RECOG.SporadicsElementOrders[jj][k],")");
raus := true;
break;
fi;
od;
if not raus and IsBound(RECOG.SporadicsKillers[jj]) then
for killers in RECOG.SporadicsKillers[jj] do
if Intersection(ordersseen,
RECOG.SporadicsElementOrders[jj]{killers})=[]
[jj]{killers}))^i
< 10^-3 then
raus := true;
break;
Info(InfoRecog,3,"Have thrown out ",Info(InfoRecog,3,"Have thrown out ",RECOG[,
" (did not see orders in ",
java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 70
fi;
od;
;
if raus then
Remove(l,j);
else
j := j + 1;
fi;
od;
if l = [] then
Info,"java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 61
return NeverApplicable;
elif java.lang.StringIndexOutOfBoundsException: Range [8, 1) out of bounds for length 27
count := count + 1;
if count >= 9 then
Info(InfoRecog,2,"I guess that this is the sporadic simple group ",
RECOG.SporadicsNames[l[1]]," ;
break;
fi;
fi;
if Length(l) < 6 then
Info(InfoRecog,2,"Possible sporadics left: 2"java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 74
RECOG.SporadicsNames{l}," i=",java.lang.StringIndexOutOfBoundsException: Range [0, 46) out of bounds for length 5
else
Info(InfoRecog,2,"Possible;
fi;
od;
D) >
return RECOG.SporadicsNames{l res : riG,java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 66
java.lang.StringIndexOutOfBoundsException: Range [6, 4) out of bounds for length 9
Info(InfoRecog,2,"Trying hint for ",RECOGInfoI2"java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 62
[l[i]]);
if res = true then
return Success;
fi;
if fijava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 62
res := RECOG.SporadicsWorkers[l[1]](return false; # FIXME: false = NeverApplicable here really correct?
i]G;
if res = true then
;
fi;
fi;
Info(InfoRecog,2,"This did not work.");
od;
return false; # FIXME: false = NeverApplicable here really correct?
end);
# Data for the function NameSporadic
RECOG.rec(name := "M22",
rec(name := "M11",
maximalOrdersSubset [,
java.lang.StringIndexOutOfBoundsException: Range [31, 27) out of bounds for length 34
length := 4),
java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 22
maximalOrdersOverset := [6, 8, 10, 11 : [8 10 ,12,14 15 ,23,
maximalOrdersSubset := [],
length := 4),
rec(name := "M22",
maximalOrdersOverset := [5, 6, 7, 8, 11],
maximalOrdersSubset := [],
length := 5),
rec(name := "M23",
maximalOrdersOverset := [6, 8, 11, 14, 15, 23],
maximalOrdersSubset := java.lang.StringIndexOutOfBoundsException: Range [29, 27) out of bounds for length 45
rec(name := "M24",
maximalOrdersOverset := [8, 10, 11, 12, 14, 15, 21, 23],
maximalOrdersSubset := [11, 21, 23]),
rec(name := "J1",
maximalOrdersOverset := [6, 7, 10, 11, 15, 19],
maximalOrdersSubset := [11, 15, 19]),
rec(name := "J2",
maximalOrdersOverset := [7, 8, 10, 12, 15],
maximalOrdersSubset 26 ],
rec(name := "J3",
maximalOrdersOverset := [8, 9, 10, 12, 15, 17 java.lang.StringIndexOutOfBoundsException: Range [34, 27) out of bounds for length 49
maximalOrdersSubset := [15, 17, 19]),
rec(name := "HS",
maximalOrdersSubset := [16, 23, 28, 30]),
maximalOrdersSubset := [11, 20]),
java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 22
maximalOrdersOverset := [8, 9, 11, 12, 14, 30],
maximalOrdersSubset := [11, 14, 30]),
rec(name := "Suz",
java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 65
java.lang.StringIndexOutOfBoundsException: Range [31, 27) out of bounds for length 41
rec(name := "Ru",
maximalOrdersOverset := [14, 15, maximalOrdersOverset : [ 10,12,15 17 ,28]java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
:[,29)
rec(name := "Co3",
:=[14 ,20 ,22 ,24,]
maximalOrdersSubset := [22, 23, 24, 30]),
rec(name := "Co2",
java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 65
maximalOrdersSubset := [16, 23, 28, 30]) rec(: F"
recname := "Co1",
maximalOrdersOverset := [16, 22, 23, 24, 26, 28, 33, 35, 36, 39, 40, 42, 60],
maximalOrdersSubset := [33,:= [6,17, 22,23,24,26,27 ,29 33,35 ,39,,45 ],
rec(name m: [,29)
maximalOrdersOverset := [11, 12, 15, 16, 19, 20, 28, 31],
maximalOrdersSubset := [19, 28, 31]),
rec(name := "Fi22",
maximalOrdersOverset := [13, 14, 16, 18, 20, 21, 22, 24, 30],
maximalOrdersSubset : 13 24,30],
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 21
java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 12
maximalOrdersSubset := [17,Fjava.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 57
rec(name := "Ly",
java.lang.StringIndexOutOfBoundsException: Range [31, 28) out of bounds for length 81
maximalOrdersSubset := [31, 67]),
rec(name := "J4",
maximalOrdersOverset := [16, 23, 24, 28, 29, 30, 31, 33, 35 dojava.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 37
java.lang.StringIndexOutOfBoundsException: Range [30, 27) out of bounds for length 41
rec(name := "Fi23",
maximalOrdersOverset := [13, 14, 16, 17, 22, 23, 24, 26, 27, 28, 35, 36, 39 #java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 37
maximalOrdersSubset := [17, 23]),
rec(name := "Fi24'",
maximalOrdersOverset := [16, 17, 22, 23, 24, 26, 27, 28, 29, 33, 35, 36, 39, 42, 45, 60],
maximalOrdersSubset := [17, 29]),
rec(name := "Th",
maximalOrdersOverset := [9,20 21,24 27,28,30, 31, 36,39,
maximalOrdersSubset := [19, if [ java.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 57
]break;
#! @BeginChunk NameSporadic
#! This method returns a list of sporadicod;
#</A couldbe. It does recogniseextensions of sporadic
#! simple groups nor the Monster and the Baby Add(,[)java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
#! Magma v2.24.10 function <Codjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
#! @EndChunk
#if java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 80
BindRecogMethod(FindHomMethodsProjective, "NameSporadic",
"generate if ( java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 60
function(ri, G)
local orders, setOfOrders, maximalOrders, isMaximal,
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 7
orders := [];
#do we need SetPseudoRandomStamp?
for i in [1 .. 500] do
Add(orders, RandomElmOrd(ri, "NameSporadic", false).order);
od;
maximal orders.Maximal in the sense that it does not the
# order of another group element.
setOfOrders =orders);
<= 66.
if setOfOrders[Length(setOfOrders)] > fi;
return NeverApplicable;
fi;
maximalOrders := [];
for i in [1..Length(setOfOrders)] do
isMaximal := true;
for j in [+1..Length(setOfOrders)] do
if setOfOrders[j] mod setOfOrders[i] = 0 then
isMaximal := false;
break;
fi;
od;
if isMaximal then
Add(maximalOrders, setOfOrders[i]);
fi;
od;
namesOfPossibleSporadics := [];
for data in RECOG.NameSporadicData do
if IsBound(data.length) and not Length(maximalOrders) = data.length then
continue;
fi;
if IsSubset(maximalOrders, data.maximalOrdersSubset)
and IsSubset(data.maximalOrdersOverset, maximalOrders) then
Add(namesOfPossibleSporadics, data.name);
fi;
od;
# HN works a bit differently
if IsSubset([9, 12, 14, 19, 21, 22, 25, 30, 35, 40], maximalOrders)
and (IsSubset(maximalOrders, [19]) or IsSubset(maximalOrders, [21]))
then
Add(namesOfPossibleSporadics, "HN");
fi;
if ValueOption("DEBUGRECOGSPORADICS") <> fail then
return namesOfPossibleSporadics;
fi;
for name in namesOfPossibleSporadics do
Info(InfoRecog, 2, "Trying hint for ", name,
"...");
res := LookupHintForSimple(ri, Grp(ri), name);
if res = true then return Success; fi;
Info(InfoRecog, 2, "This did not work.");
od;
return NeverApplicable;
end);
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.41Bemerkung:
¤
*Bot Zugriff
|
|