-
-
Notifications
You must be signed in to change notification settings - Fork 553
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
Retrieve more information of fundamental groups of plane curves #36768
Conversation
…ta_group as its method
merge conflict |
@vbraun: Commit enriqueartal@8bb020e solves the merge conflict but I am not sure if it is in the correct way. |
@tscrim @miguelmarco I repaired the merge conflicts due to the addition of new classes and the changes in |
Almost okay. You need to remove the (lazy) imports from |
I did not touch |
Finally I simplified |
This is probably “better,” thanks. |
sagemathgh-36768: Retrieve more information of fundamental groups of plane curves The goal of this PR is to add some features to the computation of fundamental groups of complements of the plane curves introduced in ``Sagemath`` by @miguelmarco and his optional package ``sirocco``. It also corrects a bug introduced in sagemath#35376 and cleans some code. We add the following information: given a tuple of curves we retrieve the information of meridians of each curve as words in the fundamental group, and also of the strands of the braid monodromy. We also add the possibility of excluding the vertical lines from the computation of braid monodromy (as far as there is no vertical asymptote) which makes its computation faster. To achieve this goal we introduce new classes `AffinePlaneCurveArrangements` and `ProjectivePlaneCurveArrangements`. For now, they serve only to compute the fundamental groups with the meridian information (and braid monodromy and strand information for the affine curves) but more methods may be constructed in the future. The structure of these classes follows the one of `HyperplaneArrangements`, with one difference, the order is important. This is why we also introduce the class of `OrderedHyperplaneArrangements`, where the fundamental group is computed. We have also introduce a new method for hyperplane arrangements, `jhyperplane_section`, in order to compute the fundamental group also for hyperplane arrangements and not only for line arrangements. These are the main changes: - schemes/curves/affine_curve.py - Introducion of some auxiliary new methods: `has_vertical_asymptote`, `is_vertical_line` - Small update of `fundamental_group` - schemes/curves/projective_curve.py. Some trivial cases were not considered in `fundamental_group`. - schemes/curves/plane_curve_arrangement.py. New file with the new classes. - schemes/curves/zariski_vankampen.py - For consistency some lists are converted into tuples. - Some functions take a new keyword to take into account the option of eliminating the vertical lines for the computation of the braid monodromy. - In `braid_in_segment`, correction of the bug introduced in the previous PR (the parameters must be in the number field embedded in `QQbar`). - The function `geometric_basis` has been changed for designed and to cover some cases where the former one failed. - A new function `vertical_lines_in_braidmon` to isolate vertical lines if needed. - The function `braid_monodromy` has been cleaned and now it takes into account the strand information. - - geometry/hyperplane_arrangement/arrangement.py - Introducion of the class of `OrderedHyperplaneArrangements`. The hyperplanes are not sorted in this class and the introduction order is respected. It forces to update some methods. - Five new methods for this new class: `hyperplane_section`, `affine_fundamental_group`, `affine_meridians`, `projective_fundamental_group`, and `projective_meridians`. <!-- Why is this change required? What problem does it solve? --> <!-- If this PR resolves an open issue, please link to it here. For example "Fixes sagemath#12345". --> <!-- If your change requires a documentation PR, please link it appropriately. --> ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> <!-- If your change requires a documentation PR, please link it appropriately --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> <!-- Feel free to remove irrelevant items. --> - [X] The title is concise, informative, and self-explanatory. - [X] The description explains in detail what this PR is about. - [X] I have created tests covering the changes. - [X] I have updated the documentation accordingly. URL: sagemath#36768 Reported by: Enrique Manuel Artal Bartolo Reviewer(s): Enrique Manuel Artal Bartolo, Frédéric Chapoton, Travis Scrimshaw
sagemathgh-36768: Retrieve more information of fundamental groups of plane curves The goal of this PR is to add some features to the computation of fundamental groups of complements of the plane curves introduced in ``Sagemath`` by @miguelmarco and his optional package ``sirocco``. It also corrects a bug introduced in sagemath#35376 and cleans some code. We add the following information: given a tuple of curves we retrieve the information of meridians of each curve as words in the fundamental group, and also of the strands of the braid monodromy. We also add the possibility of excluding the vertical lines from the computation of braid monodromy (as far as there is no vertical asymptote) which makes its computation faster. To achieve this goal we introduce new classes `AffinePlaneCurveArrangements` and `ProjectivePlaneCurveArrangements`. For now, they serve only to compute the fundamental groups with the meridian information (and braid monodromy and strand information for the affine curves) but more methods may be constructed in the future. The structure of these classes follows the one of `HyperplaneArrangements`, with one difference, the order is important. This is why we also introduce the class of `OrderedHyperplaneArrangements`, where the fundamental group is computed. We have also introduce a new method for hyperplane arrangements, `jhyperplane_section`, in order to compute the fundamental group also for hyperplane arrangements and not only for line arrangements. These are the main changes: - schemes/curves/affine_curve.py - Introducion of some auxiliary new methods: `has_vertical_asymptote`, `is_vertical_line` - Small update of `fundamental_group` - schemes/curves/projective_curve.py. Some trivial cases were not considered in `fundamental_group`. - schemes/curves/plane_curve_arrangement.py. New file with the new classes. - schemes/curves/zariski_vankampen.py - For consistency some lists are converted into tuples. - Some functions take a new keyword to take into account the option of eliminating the vertical lines for the computation of the braid monodromy. - In `braid_in_segment`, correction of the bug introduced in the previous PR (the parameters must be in the number field embedded in `QQbar`). - The function `geometric_basis` has been changed for designed and to cover some cases where the former one failed. - A new function `vertical_lines_in_braidmon` to isolate vertical lines if needed. - The function `braid_monodromy` has been cleaned and now it takes into account the strand information. - - geometry/hyperplane_arrangement/arrangement.py - Introducion of the class of `OrderedHyperplaneArrangements`. The hyperplanes are not sorted in this class and the introduction order is respected. It forces to update some methods. - Five new methods for this new class: `hyperplane_section`, `affine_fundamental_group`, `affine_meridians`, `projective_fundamental_group`, and `projective_meridians`. <!-- Why is this change required? What problem does it solve? --> <!-- If this PR resolves an open issue, please link to it here. For example "Fixes sagemath#12345". --> <!-- If your change requires a documentation PR, please link it appropriately. --> ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> <!-- If your change requires a documentation PR, please link it appropriately --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> <!-- Feel free to remove irrelevant items. --> - [X] The title is concise, informative, and self-explanatory. - [X] The description explains in detail what this PR is about. - [X] I have created tests covering the changes. - [X] I have updated the documentation accordingly. URL: sagemath#36768 Reported by: Enrique Manuel Artal Bartolo Reviewer(s): Enrique Manuel Artal Bartolo, Frédéric Chapoton, Travis Scrimshaw
merge conflict |
@vbraun I reverted the all.py with new classes to try to avoid conflicts. |
@enriqueartal Do you think it would be possible (and reasonable) to squash at least the commits down? It would help keep the history a bit more clean for future debugging purposes. It's okay to leave it be if it's too much trouble. |
I agree with you, 148 are too much and plenty of them are only typos. What would be the best way? |
I would first do a rebase on develop (this should get rid of any merge commit) and then an interactive rebase to squash some of the commits down. Although the first step might be annoying having to deal with conflicts (again). |
I will try tomorrow with some help |
sagemathgh-36768: Retrieve more information of fundamental groups of plane curves The goal of this PR is to add some features to the computation of fundamental groups of complements of the plane curves introduced in ``Sagemath`` by @miguelmarco and his optional package ``sirocco``. It also corrects a bug introduced in sagemath#35376 and cleans some code. We add the following information: given a tuple of curves we retrieve the information of meridians of each curve as words in the fundamental group, and also of the strands of the braid monodromy. We also add the possibility of excluding the vertical lines from the computation of braid monodromy (as far as there is no vertical asymptote) which makes its computation faster. To achieve this goal we introduce new classes `AffinePlaneCurveArrangements` and `ProjectivePlaneCurveArrangements`. For now, they serve only to compute the fundamental groups with the meridian information (and braid monodromy and strand information for the affine curves) but more methods may be constructed in the future. The structure of these classes follows the one of `HyperplaneArrangements`, with one difference, the order is important. This is why we also introduce the class of `OrderedHyperplaneArrangements`, where the fundamental group is computed. We have also introduce a new method for hyperplane arrangements, `jhyperplane_section`, in order to compute the fundamental group also for hyperplane arrangements and not only for line arrangements. These are the main changes: - schemes/curves/affine_curve.py - Introducion of some auxiliary new methods: `has_vertical_asymptote`, `is_vertical_line` - Small update of `fundamental_group` - schemes/curves/projective_curve.py. Some trivial cases were not considered in `fundamental_group`. - schemes/curves/plane_curve_arrangement.py. New file with the new classes. - schemes/curves/zariski_vankampen.py - For consistency some lists are converted into tuples. - Some functions take a new keyword to take into account the option of eliminating the vertical lines for the computation of the braid monodromy. - In `braid_in_segment`, correction of the bug introduced in the previous PR (the parameters must be in the number field embedded in `QQbar`). - The function `geometric_basis` has been changed for designed and to cover some cases where the former one failed. - A new function `vertical_lines_in_braidmon` to isolate vertical lines if needed. - The function `braid_monodromy` has been cleaned and now it takes into account the strand information. - - geometry/hyperplane_arrangement/arrangement.py - Introducion of the class of `OrderedHyperplaneArrangements`. The hyperplanes are not sorted in this class and the introduction order is respected. It forces to update some methods. - Five new methods for this new class: `hyperplane_section`, `affine_fundamental_group`, `affine_meridians`, `projective_fundamental_group`, and `projective_meridians`. <!-- Why is this change required? What problem does it solve? --> <!-- If this PR resolves an open issue, please link to it here. For example "Fixes sagemath#12345". --> <!-- If your change requires a documentation PR, please link it appropriately. --> ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> <!-- If your change requires a documentation PR, please link it appropriately --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> <!-- Feel free to remove irrelevant items. --> - [X] The title is concise, informative, and self-explanatory. - [X] The description explains in detail what this PR is about. - [X] I have created tests covering the changes. - [X] I have updated the documentation accordingly. URL: sagemath#36768 Reported by: Enrique Manuel Artal Bartolo Reviewer(s): Enrique Manuel Artal Bartolo, Frédéric Chapoton, Travis Scrimshaw
This week is quite complicated and I am afraid to do not squash the commits correctly. |
You can push a copy of this branch as a backup (and use as a comparison with |
sagemathgh-37128: Save and load finitely presented groups coming from libgap groups <!-- Describe your changes here in detail --> At this point it is not possible to load a saved finitely presented group that comes from a libgap group, see an example in sagemath#37061 One possible cause is the use of a general `__reduce__` method for free groups. At least, adding such a method allows to load free groups or finitely presented groups obtained from a libgap group using `wrapFreeGroup` or `wrapFpGroup`. It fixes sagemath#37061 and it would simplify some code in sagemath#36768 With these changes, free and finitely presented groups, included libgap groups, can be pickled. ### 📝 Checklist - [X] The title is concise, informative, and self-explanatory. - [X] The description explains in detail what this PR is about. - [X] I have linked a relevant issue or discussion. - [X] I have created tests covering the changes. - [X] I have updated the documentation accordingly. URL: sagemath#37128 Reported by: Enrique Manuel Artal Bartolo Reviewer(s): Enrique Manuel Artal Bartolo, Travis Scrimshaw
sagemathgh-37128: Save and load finitely presented groups coming from libgap groups <!-- Describe your changes here in detail --> At this point it is not possible to load a saved finitely presented group that comes from a libgap group, see an example in sagemath#37061 One possible cause is the use of a general `__reduce__` method for free groups. At least, adding such a method allows to load free groups or finitely presented groups obtained from a libgap group using `wrapFreeGroup` or `wrapFpGroup`. It fixes sagemath#37061 and it would simplify some code in sagemath#36768 With these changes, free and finitely presented groups, included libgap groups, can be pickled. ### 📝 Checklist - [X] The title is concise, informative, and self-explanatory. - [X] The description explains in detail what this PR is about. - [X] I have linked a relevant issue or discussion. - [X] I have created tests covering the changes. - [X] I have updated the documentation accordingly. URL: sagemath#37128 Reported by: Enrique Manuel Artal Bartolo Reviewer(s): Enrique Manuel Artal Bartolo, Travis Scrimshaw
The goal of this PR is to add some features to the computation of fundamental groups of complements of the plane curves introduced in
Sagemath
by @miguelmarco and his optional packagesirocco
. It also corrects a bug introduced in #35376 and cleans some code.We add the following information: given a tuple of curves we retrieve the information of meridians of each curve as words in the fundamental group, and also of the strands of the braid monodromy. We also add the possibility of excluding the vertical lines from the computation of braid monodromy (as far as there is no vertical asymptote) which makes its computation faster.
To achieve this goal we introduce new classes
AffinePlaneCurveArrangements
andProjectivePlaneCurveArrangements
. For now, they serve only to compute the fundamental groups with the meridian information (and braid monodromy and strand information for the affine curves) but more methods may be constructed in the future. The structure of these classes follows the one ofHyperplaneArrangements
, with one difference, the order is important. This is why we also introduce the class ofOrderedHyperplaneArrangements
, where the fundamental group is computed. We have also introduce a new method for hyperplane arrangements,jhyperplane_section
, in order to compute the fundamental group also for hyperplane arrangements and not only for line arrangements.These are the main changes:
has_vertical_asymptote
,is_vertical_line
fundamental_group
fundamental_group
.braid_in_segment
, correction of the bug introduced in the previous PR (the parameters must be in the number field embedded inQQbar
).geometric_basis
has been changed for designed and to cover some cases where the former one failed.vertical_lines_in_braidmon
to isolate vertical lines if needed.braid_monodromy
has been cleaned and now it takes into account the strand information.OrderedHyperplaneArrangements
. The hyperplanes are not sorted in this class and the introduction order is respected. It forces to update some methods.hyperplane_section
,affine_fundamental_group
,affine_meridians
,projective_fundamental_group
, andprojective_meridians
.📝 Checklist