# This file is part of the GAP package MAPCLASS # This file contains a system of GAP programs motivated by Staszewski and Voelklein # to compute the number of generating tuples # # A.James, K. Magaard, and S.Shpectorov 2011
# # NumberGeneratingTuples # general function computing the number of generating tuples #
InstallGlobalFunction(NumberGeneratingTuples,function(group,p,t,g)
local tp,i,full,sz,cc,oc,ct,str,StepDown;
tp:=[]; for i in [1..Length(p)] do
Append(tp,List([1..p[i]],c->i));
od;
full:=[];
sz:=Size(group);
cc:=ConjugacyClasses(group);
oc:=List(t,s->Filtered([1..Length(cc)],i->s in cc[i]));
## RECURSIVE FUNCTION STARTS HERE
StepDown:=function(no)
local gp,cc,oc,ms,m,sz,p,pp,fl,mcc,moc,ct,str,t,i;
gp:=full[no].gp;
cc:=full[no].cc;
oc:=full[no].oc;
ms:=MaximalSubgroupClassReps(gp); for m in ms do
sz:=Size(m);
p:=no;
pp:=full[no].pr;
fl:=false;
## Find the next subgroup while full[p].sz>=sz do if full[p].sz=sz then if IsConjugate(group,full[p].gp,m) then
fl:=true;
break; fi; fi;
pp:=p;
p:=full[p].nx; if p=0then
break; fi;
od; if not fl then
mcc:=ConjugacyClasses(m);
moc:=List(oc,s-> Union(List(s, n-> Filtered([1..Length(mcc)],i ->
Representative(mcc[i]) in cc[n])))); if not ([] in moc) then
ct:=CharacterTable(m);
str:=0;
t:=List(tp,c->1);
repeat
str:=str+TotalNumberOfTuples(ct, g,
List([1..Length(t)],i->moc[i][t[i]]));
i:=1; while i<=Length(tp) do if t[i]<>Length(moc[i]) then
t[i]:=t[i]+1;
break; else
t[i]:=1;
i:=i+1; fi;
od;
until i>Length(tp);
Add(full,rec(gp:=m,sz:=sz,cc:=mcc,oc:=moc,str:=str,pr:=pp,nx:=p)); if pp<>0then
full[pp].nx:=Length(full); fi; if p<>0then
full[p].pr:=Length(full); fi;
StepDown(Length(full)); fi; fi;
od;
str:=full[no].str;
p:=full[no].nx; while p<>0do if (full[no].sz mod full[p].sz)=0then ## If is a p-group then try something else because Isomorphic subgroups ## sloooow if IsPGroup(gp) then
ms:=IsomorphicSubgroups(gp,full[p].gp); for m in ms do
m:=Image(m); if IsConjugate(group,m,full[p].gp) then
str:=str-full[p].str*Index(gp,Normalizer(gp,m)); fi;
od; else
ms:=IsomorphicSubgroups(gp,full[p].gp); for m in ms do
m:=Image(m); if IsConjugate(group,m,full[p].gp) then
str:=str-full[p].str*Index(gp,Normalizer(gp,m)); fi;
od; fi; fi;
p:=full[p].nx;
od;
full[no].str:=str; end; ## END OF RECURSIVE FUNCTION
StepDown(Length(full));
return full[1].str; end);
# End
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet am 2026-10-12)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.