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

add special objects for subgroup transversals #3216

Merged
merged 3 commits into from
Jan 23, 2024

Conversation

ThomasBreuer
Copy link
Member

Use GAP's IsRightTransversalRep objects instead of "unpacking" the transversal in Oscar.

Currently the PositionCanonical functionality from GAP is not available for the left/right transversals.
This means that Oscar does not support to "act on the transversal" in the sense of GAP.

resolves #3197

Use GAP's `IsRightTransversalRep` objects instead of
"unpacking" the transversal in Oscar.

Currently the `PositionCanonical` functionality from GAP
is not available for the left/right transversals.
This means that Oscar does not support to "act on the transversal"
in the sense of GAP.
- in `find_transformation`,
  request only `AbstractVector{PermGroupElem}` not `Vector{PermGroupElem}`,
  since the argument may be a `SubgroupTransversal` object

- fix a doctest

- do not install an `eltype` method for `SubgroupTransversal{S, T, E}`,
  since there is already one for the supertype `Vector{E}`
(The return value is now immutable;
`push!`, `append!` etc. do no longer work for it.)
@fingolfin
Copy link
Member

OK great!

Now the next thing on my wish list is that right_cosets returns a G-set, so that I can rewrite the following example from the book:

G = dihedral_group(6)
U = sub(G, [g for g in gens(G) if order(g) == 2])[1]
r = right_cosets(G, U)
perm([findfirst(isequal(c*G[1]), r) for c in r])  # get action of G[1] on the cosets in r

to instead use this in the last line:

permutation(r, G[1])

I can kind of fudge it right now but only by using the undocumented Oscar.GSetByElements directly:

x = Oscar.GSetByElements(G, *, r; closed=true)
permutation(x, G[1])

@fingolfin fingolfin merged commit fd33278 into oscar-system:master Jan 23, 2024
21 of 22 checks passed
@ThomasBreuer ThomasBreuer deleted the TB_SubgroupTransversal branch January 23, 2024 09:41
@ThomasBreuer
Copy link
Member Author

@fingolfin
Currently you could also use the documented gset(G, *, r, closed = true), and then call permutation or action_homomorphism.

But this is of course not what one wants, the idea is to create a new G-set type that stores a right_transversal object instead of the explicit vector of coset objects, and to change right_cosets to return such a G-set.
(Then the return value of right_cosets will no longer be a vector. Currently right_cosets seems to be not used anywhere, this change is perhaps acceptable.)

ooinaruhugh pushed a commit to ooinaruhugh/Oscar.jl that referenced this pull request Feb 15, 2024
Use GAP's `IsRightTransversalRep` objects instead of
"unpacking" the transversal in Oscar.

Currently the `PositionCanonical` functionality from GAP
is not available for the left/right transversals.
This means that Oscar does not support to "act on the transversal"
in the sense of GAP.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants