Skip to content

Commit

Permalink
WIP: Add FindImageSnSmallDegree
Browse files Browse the repository at this point in the history
  • Loading branch information
FriedrichRober authored and ssiccha committed Apr 9, 2021
1 parent b2804ef commit 5ae5367
Showing 1 changed file with 47 additions and 8 deletions.
55 changes: 47 additions & 8 deletions gap/SnAnUnknownDegree.gi
Original file line number Diff line number Diff line change
Expand Up @@ -665,6 +665,28 @@ RECOG.StandardGenerators := function(ri, g, c, k, eps, N)
fi;
end;

# In Conder's Thesis: Algorithm 7, ConjugateMap
# returns an element c such that i^c = j.
RECOG.FindAnElementMappingIToJ := function(s, t, i, j)
if i < 3 then
if j < 3 then
return t^(j-i);
else
return t^(3-i)*s^(j-3);
fi;
else
return s^(j-i);
fi;
end;

# TODO: Finish Algorithm
# In Conder's Thesis: Algorithm 10, ElementToSmallDegreePermutation
# Note that the arguments are in different order, so they are more consistent with the GAP function FindImageSn.
# returns image of g under the isomorphism
RECOG.FindImageSnSmallDegree := function(ri, n, g, s, t, E)

end;

# This function is an excerpt of the function RECOG.RecogniseSnAn in gap/SnAnBB.gi
# ri : recog info record with group G,
# n : degree
Expand All @@ -681,16 +703,26 @@ end;
# - slpToStdGens: an SLP to stdGens.
#
# TODO: Image Computation requires n >= 11.
# TODO: IsoData for n < 11
RECOG.ConstructSnAnIsomorphism := function(ri, n, stdGensAnWithMemory)
local grp, stdGensAn, xis, gImage, foundOddPermutation, slp, eval,
hWithMemory, bWithMemory, stdGensSnWithMemory, b, h, g;
grp := GroupWithMemory(Grp(ri));
stdGensAn := StripMemory(stdGensAnWithMemory);
xis := RECOG.ConstructXiAn(n, stdGensAn[1], stdGensAn[2]);
if n < 11 then
E := [stdGensAn[2], (~[1]^s)^(2*(n mod 2) - 1), (~[2]^s)^(2*(n mod 2) - 1)];
else
xis := RECOG.ConstructXiAn(n, stdGensAn[1], stdGensAn[2]);
fi;
for g in GeneratorsOfGroup(grp) do
gImage := RECOG.FindImageAn(ri, n, StripMemory(g),
stdGensAn[1], stdGensAn[2],
xis[1], xis[2]);
if n < 11 then
gImage := RECOG.FindImageSnSmallDegree(ri, n, StripMemory(g),
stdGensAn[1], stdGensAn[2], E);
else
gImage := RECOG.FindImageAn(ri, n, StripMemory(g),
stdGensAn[1], stdGensAn[2],
xis[1], xis[2]);
fi;
if gImage = fail then return fail; fi;
if SignPerm(gImage) = -1 then
# we found an odd permutation,
Expand Down Expand Up @@ -724,11 +756,18 @@ RECOG.ConstructSnAnIsomorphism := function(ri, n, stdGensAnWithMemory)
if not RECOG.SatisfiesSnPresentation(ri, n, b, h) then
return fail;
fi;
xis := RECOG.ConstructXiSn(n, b, h);
if n >= 11 then
xis := RECOG.ConstructXiSn(n, b, h);
fi;
for g in GeneratorsOfGroup(grp) do
gImage := RECOG.FindImageSn(ri, n, StripMemory(g),
b, h,
xis[1], xis[2]);
if n < 11 then
gImage := RECOG.FindImageSnSmallDegree(ri, n, StripMemory(g),
stdGensAn[1], stdGensAn[2], E);
else
gImage := RECOG.FindImageSn(ri, n, StripMemory(g),
b, h,
xis[1], xis[2]);
fi;
if gImage = fail then return fail; fi;
slp := RECOG.SLPforSn(n, gImage);
eval := ResultOfStraightLineProgram(slp, [h, b]);
Expand Down

0 comments on commit 5ae5367

Please sign in to comment.