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

Laurent polynomials, Fitting ideals and characteristic varieties #6

Closed
wants to merge 24 commits into from

Conversation

enriqueartal
Copy link
Owner

@enriqueartal enriqueartal commented Sep 30, 2023

Recently in sagemath#36128 (already in develop) characteristic varieties of finitely presented fundamental groups were introduced. Its computation is based on Fitting ideals of Laurent polynomial matrices. In sagemath#36299, Fitting ideals were implemented for generic rings with some improvements for PID and polynomial rings.

There are two original goals in this PR: to improve the output of characteristic varieties and to use the cited implementation. In order to make computations faster, the implementation of Fitting ideals should apply to Laurent polynomial rings and for this goal, several changes should be applied to Laurent polynomials in Sagemath.

I am not sure if a deeper change should be made, since I applied only the changes I needed for the above goal:

  • src/sage/groups/finitely_presented.py:
    • Changes in fitting_ideals.
  • src/sage/matrix/matrix2.py: Style changes.
  • src/sage/matrix/matrix_laurent_mpolynomial_dense.pyx: This is a new file to create the class Matrix_laurent_mpolynomial_dense.
    • A method laurent_matrix_reduction to obtain a matrix of polynomials where the variables are non common factors for neither the rows nor the columns.
    • A methord _fitting_ideal to use the same method for matrices of polynomials.
  • src/sage/matrix/matrix__mpolynomial_dense.pyx: Style changes.

The main changes are for Laurent polynomials to avoid errors in the above implementations.

  • src/sage/rings/polynomials/laurent_polynomial.pyx:
    • Style changes.
    • Create xgcd needed for inverse_mod.
    • Create inverse_mod.
    • Create divides, I copied the code for polynomials with minor changes.
  • src/sage/rings/polynomials/laurent_polynomial_ideal.py:
    • Style changes.
    • Changes in hint keyword in __init__, the previous code create issues, e.g., impossible to sum ideals of univariate Laurent polynomial rings. They involve changes in doctests for hint
    • Changes in __contains__ since __reduce__ is different for univariate and multivaraite case.
    • Create gens_reduced.
    • Changes in polynomial_ideal to deal differently if uni- and multi-variate.
  • src/sage/rings/polynomials/laurent_polynomial_mpair.py:
    • Style changes.
    • Create divides, I copied the code for polynomials with minor changes.
  • src/sage/rings/polynomials/laurent_polynomial_ring.py:
    • Style changes.
    • Some TestSuite's applied to domains as base_rings; the corresponding TestSuite's for polynomials also failed if applied to polynomial rings.
  • src/sage/rings/polynomials/laurent_polynomial_ring_base.py:
    • Style changes.
    • Implement is_noetherian.
  • src/sage/rings/polynomials/polynomial_element.pyx: Style changes.

📝 Checklist

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

⌛ Dependencies

enriqueartal pushed a commit that referenced this pull request Jul 25, 2024
sagemathgh-38380: CI: Remove `centos-7`
    
<!-- ^ Please provide a concise and informative title. -->
<!-- ^ Don't put issue numbers in the title, do this in the PR
description below. -->
<!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method
to calculate 1 + 2". -->
<!-- v Describe your changes below in detail. -->
<!-- v Why is this change required? What problem does it solve? -->
<!-- v If this PR resolves an open issue, please link to it here. For
example, "Fixes sagemath#12345". -->

EOL 2024-06-30, CI now fails https://github.com/mkoeppe/sage/actions/run
s/9970528956/job/27549649531#step:11:66
```
#6 [with-system-packages 2/4] RUN yum install -y centos-release-scl
#6 0.267 Loaded plugins: fastestmirror, ovl
#6 0.357 Determining fastest mirrors
#6 0.867 Could not retrieve mirrorlist http://mirrorlist.centos.org/?rel
ease=7&arch=x86_[64](https://github.com/mkoeppe/sage/actions/runs/997052
8956/job/27549649531#step:11:65)&repo=os&infra=container error was
#6 0.867 14: curl#6 - "Could not resolve host: mirrorlist.centos.org;
Unknown error"
```

### 📝 Checklist

<!-- Put an `x` in all the boxes that apply. -->

- [x] The title is concise and informative.
- [x] 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 and checked the documentation
preview.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on. For example,
-->
<!-- - sagemath#12345: short description why this is a dependency -->
<!-- - sagemath#34567: ... -->
    
URL: sagemath#38380
Reported by: Matthias Köppe
Reviewer(s): Frédéric Chapoton
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

Successfully merging this pull request may close these issues.

1 participant