Skip to content

Commit

Permalink
Fix failed Projection for Perm Wreath Product constructed with hom
Browse files Browse the repository at this point in the history
Add bugfix test
  • Loading branch information
FriedrichRober authored and fingolfin committed Jan 7, 2022
1 parent a0bc576 commit 6560408
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
8 changes: 7 additions & 1 deletion lib/gprdperm.gi
Original file line number Diff line number Diff line change
Expand Up @@ -861,7 +861,7 @@ local info, proj, H, degI, degK, constPoints, projFunc;
proj:=ActionHomomorphism(W,info.components,OnSets,"surjective");
# Primitive Action, tuple (t_1, ..., t_degI) corresponds
# to point Sum_{i=1}^degI t_i * degK ^ (i - 1)
else
elif IsBound(info.productType) and info.productType=true then
degI := info.degI;
degK := NrMovedPoints(info.groups[1]);
# constPoints correspond to [1, 1, ...] and the one-vectors with a 2 in each position,
Expand Down Expand Up @@ -895,6 +895,12 @@ local info, proj, H, degI, degK, constPoints, projFunc;
return PermList(topImages);
end;
proj := GroupHomomorphismByFunction(W, info.groups[2], projFunc);
else # weird cases where we use `hom` for the construction of the wreath product
H:=info.groups[2];
proj:=List(info.basegens,i->One(H));
proj:=GroupHomomorphismByImagesNC(W,H,
Concatenation(info.basegens,info.hgens),
Concatenation(proj,GeneratorsOfGroup(H)));
fi;
SetKernelOfMultiplicativeGeneralMapping(proj,info.base);

Expand Down
16 changes: 16 additions & 0 deletions tst/testbugfix/2022-01-05-WreathProduct-With-Hom-Projection.tst
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Projection of Perm Wreath Product constructed with optional hom argument #4727
gap> K := SymmetricGroup(3);;
gap> H := SymmetricGroup(5);;
gap> P := SymmetricGroup(7);;
gap> hom := GroupHomomorphismByImages(H, P, [(1,2), (1,2,3,4,5)], [(2,3), (2,3,4,5,6)]);;
gap> G := WreathProduct(K, H, hom);;
gap> g := (4,13,16,10,8)(5,14,17,12,7,6,15,18,11,9)(19,20);;
gap> g ^ Projection(G);
(1,4,5,3,2)
gap> g := (1,3,2)(4,13,9,6,14,7)(5,15,8)(10,18,11,16,12,17);;
gap> g ^ Projection(G);
(1,4,2)(3,5)
gap> g := (1,2,3) ^ Embedding(G, 1) * (1,2) ^ Embedding(G, 4) * (1,2) ^ Embedding(G, 6) * (1,4)(2,3) ^ Embedding(G, 8);
(1,2,3)(4,13)(5,14)(6,15)(7,10,8,11)(9,12)(16,17)
gap> g ^ Projection(G);
(1,4)(2,3)

0 comments on commit 6560408

Please sign in to comment.