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

Intersection of cosets #4865

Closed
MathieuDutSik opened this issue Apr 17, 2022 · 3 comments
Closed

Intersection of cosets #4865

MathieuDutSik opened this issue Apr 17, 2022 · 3 comments

Comments

@MathieuDutSik
Copy link
Contributor

MathieuDutSik commented Apr 17, 2022

Let us take a group $G$, two subgroups $H_1$ and $H_2$ and $x_1,x_2\in G$ then the intersection $x_1H_1\cap x_2H_2$ is either empty of a coset $z H_1\cap H_2$.

The functionality for cosets in GAP appears deficient on several points.

The first problem is that the intersection is not recognized to be a coset.

gap> cos1:=RightCoset(SymmetricGroup([1..6]), (6,7,8));
gap> cos2:=RightCoset(SymmetricGroup([3..8]), (1,2,3));
gap> eInt:=Intersection(cos1, cos2);
[ (1,2,3)(6,7,8), (1,2,3)(5,7,8,6), (1,2,3)(4,5)(6,7,8), (1,2,3)(4,5,7,8,6), (1,2,3)(4,7,8,6,5), (1,2,3)(4,7,8,6), (1,2,3,4)(6,7,8), (1,2,3,4)(5,7,8,6),
  (1,2,3,4,5)(6,7,8), (1,2,3,4,5,7,8,6), (1,2,3,4,7,8,6,5), (1,2,3,4,7,8,6), (1,2,3,5,4)(6,7,8), (1,2,3,5,7,8,6,4), (1,2,3,5)(6,7,8), (1,2,3,5,7,8,6),
  (1,2,3,5)(4,7,8,6), (1,2,3,5,4,7,8,6), (1,2,3,7,8,6,5,4), (1,2,3,7,8,6,4), (1,2,3,7,8,6,5), (1,2,3,7,8,6), (1,2,3,7,8,6,4,5), (1,2,3,7,8,6)(4,5) ]

And one can check that indeed this is a coset even if GAP does not recognize it as such.

The second problem related to the first is that the code is horribly slow. For the special case of a permutation group, one would hope to use the same backtracking scheme as the one used for computing the intersection of subgroups that was recently merged, but it is unclear to me how to do this.

@MathieuDutSik
Copy link
Contributor Author

I found in the paper "Coset Intersection in Moderately Exponential Time" (L. Babai) some algorithms that allow to solve the problem. I am working on a PR for that problem.
However, in the end, there is an enumeration of RightCosets for H, H_1\cap H_2. Could there be a way to use an AscendingChain in order to speed up the computation. Babai gives in Section 3.4 some Propositions related to AscendingChains but I do not see how we could use them to make the enumeration faster.

@hulpke
Copy link
Contributor

hulpke commented Apr 19, 2022

Theer is no special function for intersecting cosets (and this is the first time someone asks for it) -- what happens is that element lists are written out and intersected.
Likely one could use tools (such as subgroup chains) to improve on this, if someone was interested in workoing on this problem.

@fingolfin
Copy link
Member

I think @MathieuDutSik resolved this nicely in his PR #4874 (but if you think there is more to be done, feel free to reopen this with a clarification or file a new issue)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants