Open CameronBraunstein opened 1 year ago
First off, a general remark: with the advantage of hindsight, I now think a majority of src/Groups/directproducts.jl
is not how we should do things and should be removed; specifically anything dealing with the types DirectProductGroup
, SemidirectProductGroup
, WreathProductGroup
.
Alas, for now it is how it is, and the above does not help with the issue at hand. Let's look at the error:
ERROR: Error thrown by GAP: Error, Error thrown by GAP: Error, Not yet implemented in
Grepping for this message makes it clear that this comes from _common_parent_group
. Unfortunately we don't have a good backtrace here because this is Julia calling GAP calling Julia (and possibly a few more levels) and it only shows part of the backtrace (I'd love to improve this one day but it's difficult work, and just not a priority right now).
But we can make sure by changing the error message to verify that it's really the right place we are looking at.
Anyway, the GAP trace mentions ImagesRepresentative( map, g )
, so my guess here is that map
is "our" map and applying it fails... Let's test that theory in Julia:
julia> f(one(H))
ERROR: Error thrown by GAP: Error, Error thrown by GAP: Error, Not yet implemented in
...
Aha. Digging deeper:
julia> x = gen(H,1)
(1,2)
julia> AutN(hom(N,N,y->y^x))
ERROR: Error thrown by GAP: Error, Not yet implemented in
Digging yet deeper:
julia> phi = hom(N,N,y->y^x)
Group homomorphism from
Alt( [ 1 .. 5 ] )
to
Alt( [ 1 .. 5 ] )
julia> AutN(phi)
ERROR: Error thrown by GAP: Error, Not yet implemented in
So the problem is that this homomorphism you construct can not be converted into an automorphism. We can now proceed to debug this...
BEGIN INTERMISSION
However, it would be much better to directly construct the map as an automorphism. We already have a function inner_automorphism
but it is too limited here. We should have a variant of that which takes both a domain (group) and an element; perhaps named conjugator_automorphism
, matching GAP's ConjugatorAutomorphism
(which is used by inner_automorphism
). Perhaps you'd like to give it a go?
END INTERMISSION
Let's see if we can narrow down the error further:
julia> phi(one(N))
ERROR: Error thrown by GAP: Error, Not yet implemented in
...
julia> one(N)^x
ERROR: Not yet implemented
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:35
[2] _common_parent_group
@ ~/Projekte/OSCAR/Oscar.jl/src/Groups/GAPGroups.jl:265 [inlined]
[3] ^(x::PermGroupElem, y::PermGroupElem)
@ Oscar ~/Projekte/OSCAR/Oscar.jl/src/Groups/GAPGroups.jl:565
[4] top-level scope
@ REPL[50]:1
So the problem is that you are trying to conjugate an element of A5
by an element of S2
which is not well-defined in general ...
I will try to implement conjugator_automorphism
, thank you for the deep dive!
I would like to construct a semidirect product of $H=S(2)$ and $N=A(5)$. The semidirect_product function calls for a homomorphism $f:H\to Aut(N)$. I want to be sensible and map elements of H to the corresponding conjugation map. Unfortunately, when I try to construct this, I am getting GAP errors that I am unsure how to fix in my construction of f.
System