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

More improvements for braid groups involving permutations, and a 2-generator presentation #35985

Merged
merged 37 commits into from
Sep 10, 2023

Conversation

enriqueartal
Copy link
Contributor

This PR is a continuation of #35214.

  • Given an element of a symmetric group, the associated permutation braid can be constructed, added in _element_constructor.
  • The method _standard_lift_Tietze has been simplified (for a permutation) and now it gives a shortest word for the lift but not necesarily the smallest for the lexicographic order. The former code has been commented.
  • The method presentation2gens provides a presentation of the braid group with two generators. The general method epimorphism has been adapted to braid groups using this presentation and it is much faster.

📝 Checklist

  • The title is concise, informative, and self-explanatory.
  • The description explains in detail what this PR is about.
  • I have linked a relevant issue or discussion.
  • I have created tests covering the changes.
  • I have updated the documentation accordingly.

⌛ Dependencies

OUTPUT:

A permutation.
An element of the Coxeter group or an element of a symmetric group.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
An element of the Coxeter group or an element of a symmetric group.
An element of the Coxeter group ``W``.

Comment on lines 473 to 475
In = coxeter_matrix.index_set()
for ii, i in enumerate(In):
for j in In[ii+1:]:
Copy link
Collaborator

Choose a reason for hiding this comment

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

Please ignore (IMO stupid) suggestions regarding nonessential code style that moves it further from common mathematical notation.

Comment on lines 447 to 448
The image of ``self`` under the natural projection map to ``W``
as either a standard permutation or an element of a symmetric group.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Revert this change as the symmetric group is an example of the Coxeter group W and this extra (unnecessary) verbosity makes it more confusing.

Comment on lines 3429 to 3430
- ``isomorphism`` -- boolean (default ``False``). If ``True`` an isomorphism
from ``self`` and the isomorphic group and its inverse are provided
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
- ``isomorphism`` -- boolean (default ``False``). If ``True`` an isomorphism
from ``self`` and the isomorphic group and its inverse are provided
- ``isomorphism`` -- boolean (default: ``False``); if ``True``, then an isomorphism
from ``self`` and the isomorphic group and its inverse is also returned

@@ -3407,7 +3519,7 @@ def BraidGroup(n=None, names='s'):
- ``n`` -- integer or ``None`` (default). The number of
strands. If not specified the ``names`` are counted and the
group is assumed to have one more strand than generators.

+
Copy link
Collaborator

Choose a reason for hiding this comment

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

Please revert this entire change.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I do not understand this entire change. There was an extra + due to my fingers, removed.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Blanklines between inputs are unnecessary and evil IMO. I don't want to add them anywhere, especially where it wasn't before. (It also helps prevent merge conflicts as it is not where you are making changes. Many of your other changes fall under this too, but I don't disapprove of them.)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I reverted both changes, but actually in this file for most classes there is a blank line (not introduced by me)

@@ -3526,6 +3638,7 @@ class group of the punctured disk.
sage: A(x1^-1, s1)
x1*x2^-1*x1^-1
"""

Copy link
Collaborator

Choose a reason for hiding this comment

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

Remove; same as before.

Comment on lines 3471 to 3487
through the presentation of two gens for ``self``

INPUT:

- `H` -- Another group

EXAMPLES::

sage: B = BraidGroup(5)
sage: B.epimorphisms(SymmetricGroup(5))
[Generic morphism:
From: Braid group on 5 strands
To: Symmetric group of order 5! as a permutation group
Defn: s0 |--> (1,5)
s1 |--> (4,5)
s2 |--> (3,4)
s3 |--> (2,3)]
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
through the presentation of two gens for ``self``
INPUT:
- `H` -- Another group
EXAMPLES::
sage: B = BraidGroup(5)
sage: B.epimorphisms(SymmetricGroup(5))
[Generic morphism:
From: Braid group on 5 strands
To: Symmetric group of order 5! as a permutation group
Defn: s0 |--> (1,5)
s1 |--> (4,5)
s2 |--> (3,4)
s3 |--> (2,3)]
through the :meth:`two generator presentation
<presentation_two_generators>` of ``self``.
INPUT:
- `H` -- another group
EXAMPLES::
sage: B = BraidGroup(5)
sage: B.epimorphisms(SymmetricGroup(5))
[Generic morphism:
From: Braid group on 5 strands
To: Symmetric group of order 5! as a permutation group
Defn: s0 |--> (1,5)
s1 |--> (4,5)
s2 |--> (3,4)
s3 |--> (2,3)]

@enriqueartal enriqueartal changed the title More improvements for braid groups involving permuationsv, and a 2-generator presentation More improvements for braid groups involving permuations, and a 2-generator presentation Jul 27, 2023
@enriqueartal enriqueartal changed the title More improvements for braid groups involving permuations, and a 2-generator presentation More improvements for braid groups involving permutations, and a 2-generator presentation Jul 27, 2023
enriqueartal and others added 6 commits July 27, 2023 09:15
Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>
Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>
Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>
Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>
@enriqueartal
Copy link
Contributor Author

Now the method epimorphisms returns a list of generic morphisms. I guess it was the only choice when this method was created, but now group homomorphisms exist. I wonder if it would be better to change it. In that case some GAP functions would be accessible.

@tscrim
Copy link
Collaborator

tscrim commented Jul 28, 2023

It doesn't seem like the homspace knows how to make itself using the more specific class. I would put that off for another ticket.

@enriqueartal enriqueartal added this to the sage-10.2 milestone Aug 26, 2023
@enriqueartal enriqueartal requested a review from tscrim September 1, 2023 11:34
Copy link
Collaborator

@tscrim tscrim left a comment

Choose a reason for hiding this comment

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

Just a few more details. A number of your changes are not really useful (e.g., reordering the import statements in some arbitrary order (yes, I know it is alphabetical, but that is still an arbitrary choice)) that could create trivial conflicts with other changes, but it's already done. However, the stylistic changes will not get a positive review from me.

sage: c1 == b.permutation()
True

From a permutation it is also possible to recover the permutation braid::
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
From a permutation it is also possible to recover the permutation braid::
It also applies the canonical section to a permutation::

The current version implies a certain uniqueness that is simply not true. Consider $s^3$ versus $s$ for a simple transposition $s$.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I put another sentence. I really want to keep the expression permutation braid (or positive permutation braid) since is a common concept in braid group theory. Please check it.

@enriqueartal
Copy link
Contributor Author

I applied you comments. One should be reviewed again. Probably not now, by I think that in general epimorphisms should give group homomorphisms and not generic ones.

Copy link
Collaborator

@tscrim tscrim left a comment

Choose a reason for hiding this comment

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

Thank you. I am going to approve this PR; just make the one last change and then I will set this to a positive review.

Erase the period

Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>
@tscrim
Copy link
Collaborator

tscrim commented Sep 7, 2023

Thank you.

@github-actions
Copy link

github-actions bot commented Sep 7, 2023

Documentation preview for this PR (built with commit 29ca7a7; changes) is ready! 🎉

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.

3 participants