Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Another method for minimum generating set for finite groups #5716

Open
wants to merge 25 commits into
base: master
Choose a base branch
from
Open
Changes from 2 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
2b74d1d
Added a method to deal with non solvable groups
pranav-joshi-iitgn May 17, 2024
3534ad7
Removed the Error log
pranav-joshi-iitgn May 17, 2024
5d00602
Minor Changes
pranav-joshi-iitgn May 17, 2024
af0531f
Minor Changes
pranav-joshi-iitgn May 17, 2024
9ee8e9a
Small Changes
pranav-joshi-iitgn May 17, 2024
25ed7d8
Fixed an error
pranav-joshi-iitgn May 17, 2024
99bd539
Small Changes
pranav-joshi-iitgn May 17, 2024
e4234d1
Changed location of function
pranav-joshi-iitgn May 17, 2024
d0259db
Changed location of code
pranav-joshi-iitgn May 17, 2024
257e077
Small Change
pranav-joshi-iitgn May 17, 2024
db92d52
Removed `mingenset_km1_reps`
pranav-joshi-iitgn May 18, 2024
47ab818
small changes
pranav-joshi-iitgn May 19, 2024
5fb927b
Very small change
pranav-joshi-iitgn May 19, 2024
a826f27
Reintroduced the error log
pranav-joshi-iitgn May 22, 2024
6193173
Reintroduced the error log
pranav-joshi-iitgn May 22, 2024
ee8c073
Fixed a mistake and added some tests
pranav-joshi-iitgn May 28, 2024
0175fb0
small change
pranav-joshi-iitgn May 28, 2024
19b88a3
Removed the check
pranav-joshi-iitgn May 28, 2024
b436972
Updated tests
pranav-joshi-iitgn May 28, 2024
afc2a9d
fixed linting error
pranav-joshi-iitgn May 28, 2024
1d2677d
Mentioned the function in the documentation
pranav-joshi-iitgn Jun 4, 2024
d520f2b
Very small change
pranav-joshi-iitgn Jun 4, 2024
848b2f9
Merge branch 'gap-system:master' into master
pranav-joshi-iitgn Jun 7, 2024
fd35ad2
Merge branch 'gap-system:master' into master
pranav-joshi-iitgn Jul 9, 2024
5a399d6
Merge branch 'gap-system:master' into master
pranav-joshi-iitgn Aug 13, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 86 additions & 5 deletions lib/grp.gi
Original file line number Diff line number Diff line change
Expand Up @@ -130,14 +130,95 @@ end);
InstallOtherMethod(MinimalGeneratingSet,"fallback method to inform user",true,
[IsObject],0,
function(G)
local
check,GbyGk,
Gkm1byGk,
Gkm1byGk_L,
Gkm1byGk_elem_reps,
Gkm1byGk_gen,
Gkm1byGk_gen_reps,
pranav-joshi-iitgn marked this conversation as resolved.
Show resolved Hide resolved
mingenset_km1_reps,
mingenset_k_reps,
temp,i,j,l,L,x,xl,y,last,gmod,N,g,g0,g1,s,r,stop,
cs,phi_GbyG1,GbyG1,Gk,Gkm1,phi_GbyGk,phi_Gkm1byGk,k;
if IsGroup(G) and IsSolvableGroup(G) then
TryNextMethod();
else
Error(
"`MinimalGeneratingSet' currently assumes that the group is solvable, or\n",
"already possesses a generating set of size 2.\n",
"In general, try `SmallGeneratingSet' instead, which returns a generating\n",
"set that is small but not of guaranteed smallest cardinality");
cs := ChiefSeries(G);
pranav-joshi-iitgn marked this conversation as resolved.
Show resolved Hide resolved
phi_GbyG1 := NaturalHomomorphismByNormalSubgroup(G,cs[2]);
GbyG1 := ImagesSource(phi_GbyG1);
mingenset_k_reps := List(SmallGeneratingSet(GbyG1), x -> PreImagesRepresentative(phi_GbyG1, x));
for k in [3..Length(cs)] do # Lifting
mingenset_km1_reps := mingenset_k_reps;
pranav-joshi-iitgn marked this conversation as resolved.
Show resolved Hide resolved
Gk := cs[k];
Gkm1 := cs[k-1];
phi_GbyGk := NaturalHomomorphismByNormalSubgroup(G,Gk);
phi_Gkm1byGk := NaturalHomomorphismByNormalSubgroup(Gkm1,Gk);
Gkm1byGk := ImagesSource(phi_Gkm1byGk);
GbyGk := ImagesSource(phi_GbyGk);
check := gx -> GbyGk = GroupByGenerators(ImagesSet(phi_GbyGk,gx));
Gkm1byGk_elem_reps := List(AsList(Gkm1byGk),x -> PreImagesRepresentative(phi_Gkm1byGk,x));
pranav-joshi-iitgn marked this conversation as resolved.
Show resolved Hide resolved
Gkm1byGk_gen := SmallGeneratingSet(Gkm1byGk);
Gkm1byGk_gen_reps := List(Gkm1byGk_gen,x -> PreImagesRepresentative(phi_Gkm1byGk,x));
g := ShallowCopy(mingenset_km1_reps);
stop := false;
if IsAbelian(Gkm1byGk) then
if check(g) then mingenset_k_reps := g; fi;
for i in [1..Length(g)] do
if stop then break; fi;
for j in [1..Length(Gkm1byGk_gen_reps)] do
temp := g[i];
g[i] := temp * Gkm1byGk_gen_reps[j];
if check(g) then
mingenset_k_reps := g;
stop := true;
break;
fi;
g[i] := temp;
od;
od;
Add(g,Gkm1byGk_gen_reps[1]);
mingenset_k_reps := g;
else
g0 := ShallowCopy(mingenset_km1_reps);
g := ShallowCopy(mingenset_km1_reps);
Add(g,Gkm1byGk_elem_reps[1]);
g1 := ShallowCopy(g);
for g in [g0,g1] do
if stop then break;fi;
l := Length(g);
L := Length(Gkm1byGk_elem_reps);
s := L^l;
last := [];
for i in [l,l-1..1] do last[i] := 1; od;
gmod := ShallowCopy(g);
for x in [0..s-1] do
xl := [];
for i in [1..l] do xl[i] := 0; od;
i := 1;
while x > 0 do
r := RemInt(x,L);
x := QuoInt(x,L);
xl[i]:=r;
i:= i+1;
od;
for i in [1..l] do
if xl[i] <> last[i] then
gmod[i] := g[i] * Gkm1byGk_elem_reps[xl[i]+1];
fi;
od;
if check(gmod) then
mingenset_k_reps := gmod;
stop := true;
break;
fi;
last := xl;
pranav-joshi-iitgn marked this conversation as resolved.
Show resolved Hide resolved
od;
od;
fi;
od;
if G = GroupByGenerators(mingenset_k_reps) then return mingenset_k_reps; fi;
return mingenset_k_reps;
pranav-joshi-iitgn marked this conversation as resolved.
Show resolved Hide resolved
fi;
end);

Expand Down