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

make isomorphism(PcGroup, A) for infinite abelian A work #4319

Merged
merged 1 commit into from
Nov 15, 2024

Conversation

ThomasBreuer
Copy link
Member

The documentation claimed that this is not supported, but in fact GAP's pcp groups can deal with this case.

The code looks horrible,
due to the fact that GAP supports the decomposition of elements in abelian groups w.r.t. independent generators only for special such generating sets.
(This happens for abelian permutation groups.)

Note that this is generic code.
Perhaps we should add special methods for the case that we ask for a FPGroup or a PcGroup, then also the functions for computing (pre)images can be more efficient.

resolves #4318

The documentation claimed that this is not supported,
but in fact GAP's pcp groups can deal with this case.

The code looks horrible,
due to the fact that GAP supports the decomposition
of elements in abelian groups w.r.t. independent generators
only for special such generating sets.
(This happens for abelian permutation groups.)

Note that this is generic code.
Perhaps we should add special methods for the case that we ask for
a `FPGroup` or a `PcGroup`, then also the functions for computing
(pre)images can be more efficient.
Copy link

codecov bot commented Nov 15, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 84.49%. Comparing base (499f7ce) to head (042e707).
Report is 3 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #4319   +/-   ##
=======================================
  Coverage   84.49%   84.49%           
=======================================
  Files         645      645           
  Lines       85589    85592    +3     
=======================================
+ Hits        72321    72325    +4     
+ Misses      13268    13267    -1     
Files with missing lines Coverage Δ
src/Groups/homomorphisms.jl 91.41% <100.00%> (+0.24%) ⬆️

if 0 in exponents
GapG = GAP.Globals.AbelianPcpGroup(length(exponents), GapObj(exponents; recursive = true))
G = PcGroup(GapG)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For Pcp groups the given exponents actually do correspond 1-1 to the given exponent vector.

On the other hand IndependentGeneratorsOfAbelianGroup output looks horrible:

gap> G:=AbelianPcpGroup([3,0,3,9,15]);
Pcp-group with orders [ 3, 0, 3, 9, 15 ]
gap> gens:=GeneratorsOfGroup(G);
[ g1, g2, g3, g4, g5 ]
gap> List(gens, Order);
[ 3, infinity, 3, 9, 15 ]
gap> IndependentGeneratorsOfAbelianGroup(G);
[ g2*g3^2*g4, g1, g3*g5^5, g4^6*g5^10, g5^6, g4^5*g5^10 ]

So I think we should avoid IndependentGeneratorsOfAbelianGroup and IndependentGeneratorExponents for pcp groups.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is what I meant when I wrote that special methods for FPGroup and PcGroup would make sense.

@fingolfin fingolfin merged commit 14fc59c into oscar-system:master Nov 15, 2024
29 checks passed
@ThomasBreuer ThomasBreuer deleted the TB_iso_infinite_abelian branch November 15, 2024 20:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Error converting infinite abelian group to PcGroup
2 participants