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

Missing hom method between WeylGroup and GAPGroup #4462

Open
TWiedemann opened this issue Jan 13, 2025 · 2 comments
Open

Missing hom method between WeylGroup and GAPGroup #4462

TWiedemann opened this issue Jan 13, 2025 · 2 comments
Labels
enhancement New feature or request topic: groups

Comments

@TWiedemann
Copy link
Contributor

Similar to #4460, but for WeylGroup.

Setup:

julia> G = symmetric_group(3)
Sym(3)

julia> W = weyl_group(:A, 2)
Weyl group for root system defined by Cartan matrix [2 -1; -1 2]

julia> gen_G = [ cperm(G, [1,2]), cperm(G, [2,3]) ]
2-element Vector{PermGroupElem}:
 (1,2)
 (2,3)

julia> gen_W = gens(W)
2-element Vector{WeylGroupElem}:
 s1
 s2

It should be possible to define a homomorphism between G and W by lists of generators, but currently it is not:

julia> hom(W, G, gen_W, gen_G)
ERROR: MethodError: no method matching hom(::WeylGroup, ::PermGroup, ::Vector{WeylGroupElem}, ::Vector{PermGroupElem})
The function `hom` exists, but no method is defined for this combination of argument types.

Closest candidates are:
  hom(::Oscar.GAPGroup, ::Oscar.GAPGroup, ::Vector, ::Vector; check)
   @ Oscar ~/.julia/packages/Oscar/5kSAT/src/Groups/homomorphisms.jl:120
  hom(::AbstractVariety, ::AbstractVariety, ::Vector, ::Any; inclusion, symbol)
   @ Oscar ~/.julia/packages/Oscar/5kSAT/experimental/IntersectionTheory/src/Main.jl:278
  hom(::Oscar.MPolyLocRing, ::NCRing, ::Any, ::Vector; check)
   @ Oscar ~/.julia/packages/Oscar/5kSAT/src/AlgebraicGeometry/Schemes/AffineSchemes/Morphisms/Methods.jl:226
  ...

Stacktrace:
 [1] top-level scope
   @ REPL[7]:1

julia> hom(G, W, gen_G, gen_W)
ERROR: MethodError: no method matching hom(::PermGroup, ::WeylGroup, ::Vector{PermGroupElem}, ::Vector{WeylGroupElem})
The function `hom` exists, but no method is defined for this combination of argument types.

Closest candidates are:
  hom(::Oscar.GAPGroup, ::Oscar.GAPGroup, ::Vector, ::Vector; check)
   @ Oscar ~/.julia/packages/Oscar/5kSAT/src/Groups/homomorphisms.jl:120
  hom(::AbstractVariety, ::AbstractVariety, ::Vector, ::Any; inclusion, symbol)
   @ Oscar ~/.julia/packages/Oscar/5kSAT/experimental/IntersectionTheory/src/Main.jl:278
  hom(::Oscar.MPolyLocRing, ::NCRing, ::Any, ::Vector; check)
   @ Oscar ~/.julia/packages/Oscar/5kSAT/src/AlgebraicGeometry/Schemes/AffineSchemes/Morphisms/Methods.jl:226
  ...

Stacktrace:
 [1] top-level scope
   @ REPL[8]:1
@TWiedemann TWiedemann added the enhancement New feature or request label Jan 13, 2025
@fingolfin
Copy link
Member

One way to deal with this now that we have isomorphisms into GAP fp and perm groups would be to implement hom(G::WeylGroup, H::Group, ...) and hom(H::Group, G::WeylGroup, ...) by first constructing an isomorphism between G and a GAP group G2, then use hom(G2,H) resp. hom(H,G2), and compose that suitably with the iso.

I hope (but did not test) that this will handle images and preimages of elements; hopefully also kernel can be computed, isinjective / issurjective tested, images and preimages of subgroups () and more.

But this is a bit of a bandaid, on the long run we need to revise how we implement group homs in OSCAR and perhaps switch to something a bit closer to what GAP does.

@fingolfin
Copy link
Member

Aha, see also issue #4474

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request topic: groups
Projects
None yet
Development

No branches or pull requests

3 participants