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

Update Zariski-van Kampen functions #35376

Merged
merged 256 commits into from
Sep 1, 2023
Merged

Conversation

enriqueartal
Copy link
Contributor

@enriqueartal enriqueartal commented Mar 28, 2023

📚 Description

This PR has been cleaned and I think it is ready for review. The main goal of this PR is to update, create and make faster some functions in zariski_vankampen.py. I describe here the functions created or modified and the reasons:

  • discrim: It applies now to a list or tuple of polynomials instead of a polynomial. Since only the zeroes of $\textrm{disc}_y f$ are needed, we compute (using @parallel) the discriminant of each polynomial and the pairwise resultants. Moreover the computations are not done in QQbar but in the number field of definition (only the roots are in QQbar). Some other functions are only changed to be applied to tuples or lists as roots_interval, roots_interval_cached, populate_roots_interval_cache, braid_in_segment.
  • orient_circuit: If we know that the circuit is convex a much faster and precise method is used.
  • voronoi_cells: It is a new function whose input is a corrected Voronoi diagram; the output is the graph of the diagram, the counterclock-wise boundary, a base point in the boundary, and the dual graph. It has been isolated for clarity.
  • fieldI: It is a new function whose function is the ground field F (a subfield of QQbar) and the output is the smallest subfield of QQbar containing F and I. Since the vertices of the Voronoi diagrams are Gauss rationals, it allows to express everything in a subfield of QQbar where computations are much faster than in QQbar.
  • populate_roots_interval_cache: We add a hack (inspired by the original braid_monodromy function to avoid some random fails when parallelizing.
  • braid_in_segment: We replace the complex numbers of the input by Gauss rational and we add as input a dictionnary precision to be recurrently used in order to increase the precision of the interval computations and avoid hangs of the original function.
  • geometric_basis: This function produces a geometric basis of the free group $\pi_1(\mathbb{C}\setminus\Delta;p)$ where $\Delta$ is the set of discriminant points; the elements of the basis are meridians around each point such that its product is the counterclockwise boundary of a big disk. The input is basically the output of voronoi_cells; there is a new method to produce such a basis since the previous one gave an error for some diagrams.
  • strand_components: This function adds a new feature. It applies to lists or tuples of polynomials and assign each strand of the braids to the index of the polynomial associated with this strand. It is not a hard computation and adds usefuel information that can be long (or impossible) to be retrieved once the braid monodromy is computed
  • braid_monodromy: The core of this function remains unchanged. The output includes now a dictionnary associating each strand to an element of an optional tuple of polynomials in the input.
  • conjugate_positive_form is an auxiliary function which processes the special braids appearing in the braid monodromy to make faster he computation of the fundamental group since the mapping class group action of the braid group on the free group can be very slow.
  • braid2rels: this is a separate function to return a minimal set of relations produced by the action of a braid on a free group.
  • fundamental_group_from_braid_mon. This function computes the fundamental group from braid monodromy
  • fundamental_group: This function admits the optional argument puiseux (braid2rels is used to get a smaller set of relations).
  • fundamental_group_arrangement. The input is a list of polynomials and, besides the fundamental group a dictionnary is given, associating to each factor some meridians of these components.
    The methods fundamental_group and braid_monodromy for affine curves have been adapted. A new class of arrangements of curves should be created to take advantage of the new features.
    Actually, in another branch I created a method fundamental_group for hyperplane arrangements which take care of the meridian of each hyperplane. I encountered some problems since the class of hyperplane arrangements ordered in a rigid way the meridians and I plan to create a class of ordered hyperplane arrangements to avoid this problem.
    What it is called a Puiseux presentation of the $\pi_1$ of the complement of an affine curve has the same homotopy type as this complement (as proved by Libgober).
    Tests and documentation have been updated (probably not enough).

Fixes #34415.

📝 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

@enriqueartal
Copy link
Contributor Author

The failed test quoted in #35376 (comment) was probably caused by a missing # optional - sirocco. The other failed tests that occur some times (cited in #35376 (comment)) appeared in last tests. I added a method sorted_presentation for finitely presented groups to avoid these issues. I request review again.

@github-actions
Copy link

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

@vbraun vbraun merged commit 81e4eba into sagemath:develop Sep 1, 2023
6 of 8 checks passed
vbraun pushed a commit to vbraun/sage that referenced this pull request Sep 2, 2023
    
<!-- ^^^^^
Please provide a concise, informative and self-explanatory title.
Don't put issue numbers in there, do this in the PR body below.
For example, instead of "Fixes sagemath#1234" use "Introduce new method to
calculate 1+1"
-->
<!-- Describe your changes here in detail -->

<!-- Why is this change required? What problem does it solve? -->
- Part of: sagemath#29705
- Cherry-picked from: sagemath#35095
<!-- 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.
- [ ] The description explains in detail what this PR is about.
- [x] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation accordingly.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on
- sagemath#12345: short description why this is a dependency
- sagemath#34567: ...
-->
- Depends on sagemath#35376 (merged here)

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#36102
Reported by: Matthias Köppe
Reviewer(s): David Coudert, Enrique Manuel Artal Bartolo, Kwankyu Lee, Matthias Köppe
vbraun pushed a commit to vbraun/sage that referenced this pull request Sep 4, 2023
    
<!-- ^^^^^
Please provide a concise, informative and self-explanatory title.
Don't put issue numbers in there, do this in the PR body below.
For example, instead of "Fixes sagemath#1234" use "Introduce new method to
calculate 1+1"
-->
<!-- Describe your changes here in detail -->

<!-- Why is this change required? What problem does it solve? -->
- Part of: sagemath#29705
- Cherry-picked from: sagemath#35095
<!-- 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.
- [ ] The description explains in detail what this PR is about.
- [x] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation accordingly.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on
- sagemath#12345: short description why this is a dependency
- sagemath#34567: ...
-->
- Depends on sagemath#35376 (merged here)

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#36102
Reported by: Matthias Köppe
Reviewer(s): David Coudert, Enrique Manuel Artal Bartolo, Kwankyu Lee, Matthias Köppe
vbraun pushed a commit to vbraun/sage that referenced this pull request Sep 5, 2023
    
<!-- ^^^^^
Please provide a concise, informative and self-explanatory title.
Don't put issue numbers in there, do this in the PR body below.
For example, instead of "Fixes sagemath#1234" use "Introduce new method to
calculate 1+1"
-->
<!-- Describe your changes here in detail -->

<!-- Why is this change required? What problem does it solve? -->
- Part of: sagemath#29705
- Cherry-picked from: sagemath#35095
<!-- 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.
- [ ] The description explains in detail what this PR is about.
- [x] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation accordingly.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on
- sagemath#12345: short description why this is a dependency
- sagemath#34567: ...
-->
- Depends on sagemath#35376 (merged here)

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#36102
Reported by: Matthias Köppe
Reviewer(s): David Coudert, Enrique Manuel Artal Bartolo, Kwankyu Lee, Matthias Köppe
vbraun pushed a commit to vbraun/sage that referenced this pull request Sep 10, 2023
<!-- ^^^^^
Please provide a concise, informative and self-explanatory title.
Don't put issue numbers in there, do this in the PR body below.
For example, instead of "Fixes sagemath#1234" use "Introduce new method to
calculate 1+1"
-->
<!-- Describe your changes here in detail -->

<!-- Why is this change required? What problem does it solve? -->
- Part of: sagemath#29705
- Cherry-picked from: sagemath#35095
<!-- 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.
- [ ] The description explains in detail what this PR is about.
- [x] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation accordingly.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on
- sagemath#12345: short description why this is a dependency
- sagemath#34567: ...
-->
- Depends on sagemath#35376 (merged here)

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->

URL: sagemath#36102
Reported by: Matthias Köppe
Reviewer(s): David Coudert, Enrique Manuel Artal Bartolo, Kwankyu Lee, Matthias Köppe
vbraun pushed a commit to vbraun/sage that referenced this pull request Sep 10, 2023
    
<!-- ^^^^^
Please provide a concise, informative and self-explanatory title.
Don't put issue numbers in there, do this in the PR body below.
For example, instead of "Fixes sagemath#1234" use "Introduce new method to
calculate 1+1"
-->
<!-- Describe your changes here in detail -->

<!-- Why is this change required? What problem does it solve? -->
- Part of: sagemath#29705
- Cherry-picked from: sagemath#35095
<!-- 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.
- [ ] The description explains in detail what this PR is about.
- [x] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation accordingly.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on
- sagemath#12345: short description why this is a dependency
- sagemath#34567: ...
-->
- Depends on sagemath#35376 (merged here)

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#36102
Reported by: Matthias Köppe
Reviewer(s): David Coudert, Enrique Manuel Artal Bartolo, Kwankyu Lee, Matthias Köppe
vbraun pushed a commit to vbraun/sage that referenced this pull request Apr 18, 2024
…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
vbraun pushed a commit to vbraun/sage that referenced this pull request Apr 20, 2024
…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
vbraun pushed a commit to vbraun/sage that referenced this pull request Apr 28, 2024
…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
vbraun pushed a commit to vbraun/sage that referenced this pull request May 2, 2024
…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
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.

Sirocco improvements: fix base number fields and braid monodromy of arrangements
4 participants