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

analytic_rank crashes #1234

Closed
zimmermann6 opened this issue Nov 21, 2007 · 12 comments
Closed

analytic_rank crashes #1234

zimmermann6 opened this issue Nov 21, 2007 · 12 comments

Comments

@zimmermann6
Copy link

Maybe the following is not feasible, but analytic_rank could crash smoothly.

sage: d=100032426715415089/251987961355200625
sage: E = EllipticCurve([0, -d^3+5*d^2, 0, -8*d^5+8*d^4, 4*d^8-8*d^7+4*d^6])
sage: F = E.minimal_model()
sage: F.analytic_rank(algorithm='cremona')
<type 'exceptions.RuntimeError'>: Error: '  *** elltors: precision too low in torsell.

sage: F.analytic_rank(algorithm='rubinstein')
<type 'exceptions.TypeError'>: unable to convert x (= 6.90579e+20 and is too large) to an integer

sage: F.analytic_rank(algorithm='sympow')
sympow 1.018 RELEASE  (c) Mark Watkins --- see README and COPYING for details
**ERROR** c4 invariant is too large

From John Cremona: the "cremona" version just wraps a gp script, which
needs to have sufficient precision even for ellinit() to work ok here.
Unfortunately this call will run in its own gp session, and it is not
possible for the user to set the precision. (I found the same while
running a lot of examples through Denis Simon's gp scripts). The
solution is to change the wrapper to have a precision parameter, with
some reasonable default for backwards compatibility, which gets passes
through to gp.

Component: algebraic geometry

Issue created by migration from https://trac.sagemath.org/ticket/1234

@JohnCremona
Copy link
Member

comment:1

NB I think that all functions which wrap gp scripts should have the ability to set various gp defaults before the scripts are run. Notably the real precision (which is the culprit above), but also in other cases.

This should be easy but tedious -- is there anywhere a list of which functions operate by running a gp script?

jec

@sagetrac-mabshoff sagetrac-mabshoff mannequin modified the milestones: sage-2.10, sage-2.9.1 Dec 18, 2007
@sagetrac-mabshoff
Copy link
Mannequin

sagetrac-mabshoff mannequin commented Feb 15, 2008

comment:3

Still an issue with Sage 2.10.2.alpha0.

Cheers,

Michael

@JohnCremona
Copy link
Member

comment:4

I can only speak for the first of these, begin responsible for the gp script which computes analytic rank.

This curve has conductor N=690579402364042119390 which is vastly too big for the analytic rank algorithm anyway (it requires the computation of O(sqrt(N)) terms of the L-series).

Also relevant here is that my analytic rank gp code is old. When Magma adopted it, it was vastly improved (by Mark Watkins), which means that for several years I have not used my own gp program at all, let alone developed it. For this curve, I don't think even Magma would succeed in computing its analytic rank.

@sagetrac-mabshoff
Copy link
Mannequin

sagetrac-mabshoff mannequin commented Jun 26, 2008

comment:5

What shall we do about this ticket?

Thoughts?

Cheers,

Michael

@JohnCremona
Copy link
Member

comment:6

Replying to @sagetrac-mabshoff:

What shall we do about this ticket?

Thoughts?

Cheers,

Michael

Given the fundamental problem that computing the analytic rank increases rapidly with the conductor N (I think it is sqrt(N)), one solution would be to impose a (carefully-chosen but necessarily somewhat arbitrary) cutoff N_max, so that asking for the analytic rank of a curve of conductor>N_max would result in an error.

One way to implement this would be to have N_max a parameter to the analytic rank function, with a default value of (say) 10^6 or 10^7. (I would have to do some experiments to decide on a sensible value). The docstring could explain that the user is allowed to increase this but warn that it may take (effectively) for ever.

@JohnCremona
Copy link
Member

comment:7

PS The vale of N_max would presumably be different for the different algorithms supported (sympow, lcalc, etc). I was only thing of the "cremona" algorithm. I also note that the docstring claims that lcalc is the most efficient, but cremona is the default -- that was not my decision!

@williamstein
Copy link
Contributor

Attachment: trac_1234.patch.gz

@williamstein
Copy link
Contributor

comment:8

The attached patch cleans up the exceptions raised, as requested. Also, in the (default) case where Cremona's gp script is used, the precision is automatically doubled until it doesn't fail. I also start the precision at 16 rather than the default, since it will get automatically double if necessary, and it's about 3 times faster usually by using this smaller precision to start:

BEFORE:
sage: E = EllipticCurve('5077a')
sage: time E.analytic_rank()
CPU times: user 0.01 s, sys: 0.01 s, total: 0.02 s
Wall time: 0.21 s


AFTER:
sage: E = EllipticCurve('5077a')
sage: time E.analytic_rank()
CPU times: user 0.02 s, sys: 0.00 s, total: 0.02 s
Wall time: 0.06 s


and another

BEFORE:
sage: time elliptic_curves.rank(4)[0].analytic_rank()
CPU times: user 0.01 s, sys: 0.00 s, total: 0.01 s
Wall time: 0.50 s
4

AFTER:
sage: time elliptic_curves.rank(4)[0].analytic_rank()
CPU times: user 0.01 s, sys: 0.00 s, total: 0.01 s
Wall time: 0.33 s
4

@JohnCremona
Copy link
Member

comment:9

Review: excellent and well done. Applies cleanly to 3.3.alpha0 and all tests in elliptic_curves pass.

Suggestion: I see that for EllipticCurve([1234567,89101112]) which has conductor 61928339435779485920, sympow and rubinstein know they are beaten and quit, while cremona just takes a long time (I did not wait). It might be a good idea to work out a sensible conductor limit for my gp script and have sage only call the script if under that (perhaps with a parameter to allow users to override it). But that would depend on many factors (speed of machine etc), and this patch should not be delayed because of that.

Pass!

@JohnCremona JohnCremona changed the title analytic_rank crashes [with positive review] analytic_rank crashes Jan 22, 2009
@zimmermann6
Copy link
Author

comment:10

I also was testing the patch, but John was faster than me. Just a comment: it would be better to capitalize
people names (rubinstein -> Rubinstein, weierstrass -> Weierstrass), at least in the documentation
(for the options, it might involve too much work).

@JohnCremona
Copy link
Member

comment:11

Replying to @zimmermann6:

I also was testing the patch, but John was faster than me. Just a comment: it would be better to capitalize
people names (rubinstein -> Rubinstein, weierstrass -> Weierstrass), at least in the documentation
(for the options, it might involve too much work).

I agree with capitalization in documentation; for parameters it would probably be best to allow either.

@sagetrac-mabshoff sagetrac-mabshoff mannequin changed the title [with positive review] analytic_rank crashes analytic_rank crashes Jan 22, 2009
@sagetrac-mabshoff
Copy link
Mannequin

sagetrac-mabshoff mannequin commented Jan 23, 2009

comment:13

Merged in Sage 3.3.alpha1

Cheers,

Michael

@sagetrac-mabshoff sagetrac-mabshoff mannequin modified the milestones: sage-3.4.1, sage-3.3 Jan 23, 2009
@sagetrac-mabshoff sagetrac-mabshoff mannequin closed this as completed Jan 23, 2009
dimpase added a commit that referenced this issue Feb 14, 2023
…5126)

<!-- ^^^^^
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 #1234" use "Introduce new method to
calculate 1+1"
-->
### 📚 Description

<!-- Describe your changes here in detail -->
<!-- Why is this change required? What problem does it solve? -->
`fedora-33-maximal` fails because one of our optional packages is
missing.
https://github.com/mkoeppe/sage/actions/runs/4158995778/jobs/7212691967
We fix it by ignoring the absence of packages for this configuration,
like we do for earlier versions of `fedora`.
<!-- If it resolves an open issue, please link to the issue here. For
example "Closes #1337" -->

### 📝 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! -->

- [x] I have made sure that the title is self-explanatory and the
description concisely explains the PR.
- [ ] I have linked an issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation accordingly.

### ⌛ Dependencies
<!-- List all open pull requests that this PR logically depends on -->
<!--
- #xyz: short description why this is a dependency
- #abc: ...
-->
vbraun pushed a commit to vbraun/sage that referenced this issue May 24, 2024
    
<!-- ^^^^^
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 -->
For this upgrade we tighten the check for GMP so that 6.2.1 is accepted
but 6.2.0 is rejected. For example `ubuntu-focal-standard` brings 6.2.0,
we accept it, and then FLINT complains:
https://github.com/mkoeppe/flint2/actions/runs/7718792281/job/2104079370
6#step:11:5395

We also change the upper bound on system `flint` accepted by
`configure`. Closes sagemath#37838.

<!-- 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.
- [ ] 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#37484
- Depends on sagemath#37495 (merged and reverted here)
- Depends on sagemath#37570 (merged here)
- Depends on sagemath#37351 (merged here)
- Depends on sagemath#37726 (merged here to resolve merge conflict)

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#37203
Reported by: Matthias Köppe
Reviewer(s): Kwankyu Lee, Matthias Köppe
vbraun pushed a commit to vbraun/sage that referenced this issue May 24, 2024
…H Actions: run `ruff-minimal`

    
<!-- ^^^^^
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 -->

`./sage -tox` and the GH Actions "Lint" workflow now additionally run
`ruff-minimal`.

The "Lint" workflow outputs GitHub annotations for view in the "Files
changed" tab, as pioneered in sagemath#36512 (see screenshot there). Demo:
https://github.com/sagemath/sage/pull/37456/files

We use the built-in capability of ruff to output via
`RUFF_OUTPUT_FORMAT=github` (no problem matcher is needed; see
https://github.com/ChartBoost/ruff-
action/issues/7#issuecomment-1887780308). (This has been adopted in the
revised sagemath#36512.)

sagemath#36512 (comment) is
marked "disputed" because it builds upon the
sagemath#36503, which bundles a
controversial design choice, as explained in sagemath#37452.

In further contrast to sagemath#36512, we do not remove the pycodestyle-minimal
run from the "Lint" workflow. This can be done in a follow-up, once we
have gained the necessary experience with the new linter (see previous
info request in
sagemath#36512 (comment)).
Hence I am marking sagemath#36512 not as a "duplicate" but as "pending"; and
"disputed" because of its dependency on the "disputed" sagemath#36503. @roed314
@vbraun

And in further contrast to sagemath#36512, the minimal ruff configuration used
by the CI can be used locally with `./sage -tox -e ruff-minimal` and
also runs as part of the default tests in `./sage -tox`.

Authors: @mkoeppe, @tobiasdiez (credit for the first version of the
minimal ruff configuration taken from sagemath#36512, now regenerated)

<!-- 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 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#37452

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#37453
Reported by: Matthias Köppe
Reviewer(s): Frédéric Chapoton, Kwankyu Lee, Matthias Köppe
vbraun pushed a commit to vbraun/sage that referenced this issue May 27, 2024
    
<!-- ^^^^^
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? -->
<!-- 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. -->

This PR aims to implement Drinfeld modular forms into SageMath. These
special types of modular forms live in the function field theory and are
linked with Drinfeld modules.

#### Definitions

Without going too much into the details, we give some definitions and
insight of what is going on here. Let $K = \mathbb{F}_q(T)$ together
with the $1/T$-adic norm and $A = \mathbb{F}_q[T]$. We define
$K\_{\infty} = \mathbb{F}_q((1/T))$ be the completion of $K$ and let
$\mathbb{C}\_{\infty}$ be the completion of an algebraic closure of
$K\_{\infty}$. In this specific setting, the *Drinfeld period domain* of
rank $r$ is

$$
\Omega^r(\mathbb{C}\_{\infty}) := \lbrace (w_1, \ldots, w_{r-1}, 1)\in
\mathbb{C}\_{\infty}^r : \text{the }w_i \text{'s are
}K\_{\infty}\text{-linearly independant} \rbrace.
$$

(this period domain is to be seen as the analogue of the complex upper
half plane)

So, for each $w = (w_1, \ldots, w_{r-1}, 1)\in
\Omega^r(\mathbb{C}\_{\infty})$, we have an associated $A$-lattice (i.e.
a discrete projective $A$-module of rank r): $\Lambda_w = A w_1 + \ldots
A w_{r-1} + A$.

The analytic theory of Drinfeld modules tells us that, for each such
$w$, there exist a Drinfeld module

$$
\phi^w_T : T \mapsto T + g\_1(w) \tau + \ldots + g\_{r-1}(w) \tau^{r-1}
+ g\_r(w) \tau^r
$$

associated with this lattice. This association is what we call the
universal Drinfeld module over $\Omega^r(\mathbb{C}\_{\infty})$. We see
the coefficients as functions $g_i : \Omega^r(\mathbb{C}\_{\infty})
\rightarrow \mathbb{C}\_{\infty}$. These functions satisfy modular
transformation property under the action of the group
$\mathrm{GL}_r(A)$:

$$
g_i(\gamma(w)) = j(\gamma, w)^i g_i(w)
$$

where $j$ is some automorphic factor.

The ring of Drinfeld modular forms for $\mathrm{GL}_r(A)$ is

$$
\mathcal{M}\_{\bullet} = \mathbb{C}\_{\infty}[g_1, \ldots g_{r-1}, g_r].
$$

#### Implementations details

In this implementation, we create a new parent `DrinfeldModularForms`
which represents the polynomial ring $K[g_1,\ldots, g_{r-1}, g_r]$ and a
new element class `DrinfeldModularFormsElement`. Then, for arbitrary
rank, we only see a Drinfeld modular form symbolically as a multivariate
polynomial in $g_1, \ldots, g_r$, the coefficients forms. In the special
case when the rank is two, we aim to implement algorithms for computing
the expansion at infinity of any Drinfeld modular forms. These
expansions are analogues of the usual $q$-expansion of classcial modular
forms. This will be achieved via the Lopez-Petrov nonstandard expansion
theory.

We note that this implementation was initially done as a pip-installable
package:

https://davidayotte.github.io/drinfeld_modular_forms

This work has been an ongoing project for almost two years now and since
the addition of Drinfeld modules in SageMath, the author has seen an
interest in the implementation of Drinfeld modular forms to SageMath. In
the rank two case, the ability to compute their expansion at infinity
shows some interesting computational properties of these objects.

We are aware that this is a quite specialized topic, so we aim to make
this implementation as convivial as possible for the user and well
documented. Any comments and suggestions are welcome!

CC: @xcaruso @kryzar @ymusleh

### 📝 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 linked a relevant issue or discussion.
- [x] I have created tests covering the changes.
- [x] 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#36538
Reported by: David Ayotte
Reviewer(s): Antoine Leudière, David Ayotte, Xavier Caruso
vbraun pushed a commit to vbraun/sage that referenced this issue May 29, 2024
    
<!-- ^^^^^
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? -->
<!-- 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. -->

This PR aims to implement Drinfeld modular forms into SageMath. These
special types of modular forms live in the function field theory and are
linked with Drinfeld modules.

#### Definitions

Without going too much into the details, we give some definitions and
insight of what is going on here. Let $K = \mathbb{F}_q(T)$ together
with the $1/T$-adic norm and $A = \mathbb{F}_q[T]$. We define
$K\_{\infty} = \mathbb{F}_q((1/T))$ be the completion of $K$ and let
$\mathbb{C}\_{\infty}$ be the completion of an algebraic closure of
$K\_{\infty}$. In this specific setting, the *Drinfeld period domain* of
rank $r$ is

$$
\Omega^r(\mathbb{C}\_{\infty}) := \lbrace (w_1, \ldots, w_{r-1}, 1)\in
\mathbb{C}\_{\infty}^r : \text{the }w_i \text{'s are
}K\_{\infty}\text{-linearly independant} \rbrace.
$$

(this period domain is to be seen as the analogue of the complex upper
half plane)

So, for each $w = (w_1, \ldots, w_{r-1}, 1)\in
\Omega^r(\mathbb{C}\_{\infty})$, we have an associated $A$-lattice (i.e.
a discrete projective $A$-module of rank r): $\Lambda_w = A w_1 + \ldots
A w_{r-1} + A$.

The analytic theory of Drinfeld modules tells us that, for each such
$w$, there exist a Drinfeld module

$$
\phi^w_T : T \mapsto T + g\_1(w) \tau + \ldots + g\_{r-1}(w) \tau^{r-1}
+ g\_r(w) \tau^r
$$

associated with this lattice. This association is what we call the
universal Drinfeld module over $\Omega^r(\mathbb{C}\_{\infty})$. We see
the coefficients as functions $g_i : \Omega^r(\mathbb{C}\_{\infty})
\rightarrow \mathbb{C}\_{\infty}$. These functions satisfy modular
transformation property under the action of the group
$\mathrm{GL}_r(A)$:

$$
g_i(\gamma(w)) = j(\gamma, w)^i g_i(w)
$$

where $j$ is some automorphic factor.

The ring of Drinfeld modular forms for $\mathrm{GL}_r(A)$ is

$$
\mathcal{M}\_{\bullet} = \mathbb{C}\_{\infty}[g_1, \ldots g_{r-1}, g_r].
$$

#### Implementations details

In this implementation, we create a new parent `DrinfeldModularForms`
which represents the polynomial ring $K[g_1,\ldots, g_{r-1}, g_r]$ and a
new element class `DrinfeldModularFormsElement`. Then, for arbitrary
rank, we only see a Drinfeld modular form symbolically as a multivariate
polynomial in $g_1, \ldots, g_r$, the coefficients forms. In the special
case when the rank is two, we aim to implement algorithms for computing
the expansion at infinity of any Drinfeld modular forms. These
expansions are analogues of the usual $q$-expansion of classcial modular
forms. This will be achieved via the Lopez-Petrov nonstandard expansion
theory.

We note that this implementation was initially done as a pip-installable
package:

https://davidayotte.github.io/drinfeld_modular_forms

This work has been an ongoing project for almost two years now and since
the addition of Drinfeld modules in SageMath, the author has seen an
interest in the implementation of Drinfeld modular forms to SageMath. In
the rank two case, the ability to compute their expansion at infinity
shows some interesting computational properties of these objects.

We are aware that this is a quite specialized topic, so we aim to make
this implementation as convivial as possible for the user and well
documented. Any comments and suggestions are welcome!

CC: @xcaruso @kryzar @ymusleh

### 📝 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 linked a relevant issue or discussion.
- [x] I have created tests covering the changes.
- [x] 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#36538
Reported by: David Ayotte
Reviewer(s): Antoine Leudière, David Ayotte, Xavier Caruso
vbraun pushed a commit to vbraun/sage that referenced this issue May 31, 2024
    
<!-- ^^^^^
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? -->
<!-- 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. -->

This PR aims to implement Drinfeld modular forms into SageMath. These
special types of modular forms live in the function field theory and are
linked with Drinfeld modules.

#### Definitions

Without going too much into the details, we give some definitions and
insight of what is going on here. Let $K = \mathbb{F}_q(T)$ together
with the $1/T$-adic norm and $A = \mathbb{F}_q[T]$. We define
$K\_{\infty} = \mathbb{F}_q((1/T))$ be the completion of $K$ and let
$\mathbb{C}\_{\infty}$ be the completion of an algebraic closure of
$K\_{\infty}$. In this specific setting, the *Drinfeld period domain* of
rank $r$ is

$$
\Omega^r(\mathbb{C}\_{\infty}) := \lbrace (w_1, \ldots, w_{r-1}, 1)\in
\mathbb{C}\_{\infty}^r : \text{the }w_i \text{'s are
}K\_{\infty}\text{-linearly independant} \rbrace.
$$

(this period domain is to be seen as the analogue of the complex upper
half plane)

So, for each $w = (w_1, \ldots, w_{r-1}, 1)\in
\Omega^r(\mathbb{C}\_{\infty})$, we have an associated $A$-lattice (i.e.
a discrete projective $A$-module of rank r): $\Lambda_w = A w_1 + \ldots
A w_{r-1} + A$.

The analytic theory of Drinfeld modules tells us that, for each such
$w$, there exist a Drinfeld module

$$
\phi^w_T : T \mapsto T + g\_1(w) \tau + \ldots + g\_{r-1}(w) \tau^{r-1}
+ g\_r(w) \tau^r
$$

associated with this lattice. This association is what we call the
universal Drinfeld module over $\Omega^r(\mathbb{C}\_{\infty})$. We see
the coefficients as functions $g_i : \Omega^r(\mathbb{C}\_{\infty})
\rightarrow \mathbb{C}\_{\infty}$. These functions satisfy modular
transformation property under the action of the group
$\mathrm{GL}_r(A)$:

$$
g_i(\gamma(w)) = j(\gamma, w)^i g_i(w)
$$

where $j$ is some automorphic factor.

The ring of Drinfeld modular forms for $\mathrm{GL}_r(A)$ is

$$
\mathcal{M}\_{\bullet} = \mathbb{C}\_{\infty}[g_1, \ldots g_{r-1}, g_r].
$$

#### Implementations details

In this implementation, we create a new parent `DrinfeldModularForms`
which represents the polynomial ring $K[g_1,\ldots, g_{r-1}, g_r]$ and a
new element class `DrinfeldModularFormsElement`. Then, for arbitrary
rank, we only see a Drinfeld modular form symbolically as a multivariate
polynomial in $g_1, \ldots, g_r$, the coefficients forms. In the special
case when the rank is two, we aim to implement algorithms for computing
the expansion at infinity of any Drinfeld modular forms. These
expansions are analogues of the usual $q$-expansion of classcial modular
forms. This will be achieved via the Lopez-Petrov nonstandard expansion
theory.

We note that this implementation was initially done as a pip-installable
package:

https://davidayotte.github.io/drinfeld_modular_forms

This work has been an ongoing project for almost two years now and since
the addition of Drinfeld modules in SageMath, the author has seen an
interest in the implementation of Drinfeld modular forms to SageMath. In
the rank two case, the ability to compute their expansion at infinity
shows some interesting computational properties of these objects.

We are aware that this is a quite specialized topic, so we aim to make
this implementation as convivial as possible for the user and well
documented. Any comments and suggestions are welcome!

CC: @xcaruso @kryzar @ymusleh

### 📝 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 linked a relevant issue or discussion.
- [x] I have created tests covering the changes.
- [x] 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#36538
Reported by: David Ayotte
Reviewer(s): Antoine Leudière, David Ayotte, Xavier Caruso
vbraun pushed a commit to vbraun/sage that referenced this issue Jun 10, 2024
…`sage.features`: Remove deprecated methods

    
<!-- ^^^^^
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? -->
<!-- If this PR resolves an open issue, please link to it here. For
example "Fixes sagemath#12345". -->
- Fixes sagemath#35255

Removes methods deprecated in:
- sagemath#31292 (2022)
- sagemath#33114 (2022)
<!-- 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#37312
Reported by: Matthias Köppe
Reviewer(s): Kwankyu Lee
vbraun pushed a commit to vbraun/sage that referenced this issue Jun 16, 2024
    
<!-- ^^^^^
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 -->

We provide an implementation of Specht modules for the Ariki-Koike
algebra $H_{r,n}(q,u)$ over a field (more generally, a commutative ring
with $q^k u_i - u_j$ for all applicable $i, j,k$ are invertible). To
help ease the construction, we add an additional optional argument to
the AK algebra constructor to have the base ring convert to the fraction
field.

<!-- 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 linked a relevant issue or discussion.
- [x] I have created tests covering the changes.
- [x] 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#36980
Reported by: Travis Scrimshaw
Reviewer(s): Matthias Köppe, Travis Scrimshaw
vbraun pushed a commit to vbraun/sage that referenced this issue Jun 16, 2024
…`sage.features`: Remove deprecated methods

    
<!-- ^^^^^
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? -->
<!-- If this PR resolves an open issue, please link to it here. For
example "Fixes sagemath#12345". -->
- Fixes sagemath#35255

Removes methods deprecated in:
- sagemath#31292 (2022)
- sagemath#33114 (2022)
<!-- 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#37312
Reported by: Matthias Köppe
Reviewer(s): Kwankyu Lee
vbraun pushed a commit to vbraun/sage that referenced this issue Jun 16, 2024
…pkg_collect.m4`, `sage-spkg-info` through `sage --package properties`, `sage-get-system-packages`

    
<!-- ^^^^^
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 -->

Using the command `sage --package properties` added in
sagemath#37018, we eliminate some direct
references to `build/pkgs/` from various scripts and reduce code
duplication in reading SPKG metadata.

Using other `sage --package` commands, we also simplify the code for
`bootstrap -s` and `bootstrap -D`.

Review instructions: Note that there are changes to the
`bootstrap`-generated file `m4/sage_spkg_configures.m4`:
- The macro `SAGE_SPKG_COLLECT_INIT` is now called explicitly, with an
argument (the full list of packages).
- Lines such as `m4_define([SPKG_INSTALL_REQUIRES_exceptiongroup],
[['exceptiongroup; python_version<\"3.11\"',]])dnl` are added for use by
the macro `SAGE_PYTHON_PACKAGE_CHECK` (replacing direct access to
`version_requirements.txt` files)

<!-- 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". -->
This is:
- Split out from sagemath#36740
<!-- 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 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#37430
Reported by: Matthias Köppe
Reviewer(s): Julian Rüth, Kwankyu Lee, Matthias Köppe, Tobias Diez
vbraun pushed a commit to vbraun/sage that referenced this issue Jun 16, 2024
    
<!-- ^^^^^
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 -->

We provide an implementation of Specht modules for the Ariki-Koike
algebra $H_{r,n}(q,u)$ over a field (more generally, a commutative ring
with $q^k u_i - u_j$ for all applicable $i, j,k$ are invertible). To
help ease the construction, we add an additional optional argument to
the AK algebra constructor to have the base ring convert to the fraction
field.

<!-- 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 linked a relevant issue or discussion.
- [x] I have created tests covering the changes.
- [x] 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#36980
Reported by: Travis Scrimshaw
Reviewer(s): Matthias Köppe, Travis Scrimshaw
vbraun pushed a commit to vbraun/sage that referenced this issue Jun 16, 2024
…`sage.features`: Remove deprecated methods

    
<!-- ^^^^^
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? -->
<!-- If this PR resolves an open issue, please link to it here. For
example "Fixes sagemath#12345". -->
- Fixes sagemath#35255

Removes methods deprecated in:
- sagemath#31292 (2022)
- sagemath#33114 (2022)
<!-- 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#37312
Reported by: Matthias Köppe
Reviewer(s): Kwankyu Lee
vbraun pushed a commit to vbraun/sage that referenced this issue Jun 17, 2024
    
<!-- ^^^^^
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 -->

We provide an implementation of Specht modules for the Ariki-Koike
algebra $H_{r,n}(q,u)$ over a field (more generally, a commutative ring
with $q^k u_i - u_j$ for all applicable $i, j,k$ are invertible). To
help ease the construction, we add an additional optional argument to
the AK algebra constructor to have the base ring convert to the fraction
field.

<!-- 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 linked a relevant issue or discussion.
- [x] I have created tests covering the changes.
- [x] 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#36980
Reported by: Travis Scrimshaw
Reviewer(s): Matthias Köppe, Travis Scrimshaw
vbraun pushed a commit to vbraun/sage that referenced this issue Jun 17, 2024
…`sage.features`: Remove deprecated methods

    
<!-- ^^^^^
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? -->
<!-- If this PR resolves an open issue, please link to it here. For
example "Fixes sagemath#12345". -->
- Fixes sagemath#35255

Removes methods deprecated in:
- sagemath#31292 (2022)
- sagemath#33114 (2022)
<!-- 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#37312
Reported by: Matthias Köppe
Reviewer(s): Kwankyu Lee
vbraun pushed a commit to vbraun/sage that referenced this issue Jun 17, 2024
…pkg_collect.m4`, `sage-spkg-info` through `sage --package properties`, `sage-get-system-packages`

    
<!-- ^^^^^
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 -->

Using the command `sage --package properties` added in
sagemath#37018, we eliminate some direct
references to `build/pkgs/` from various scripts and reduce code
duplication in reading SPKG metadata.

Using other `sage --package` commands, we also simplify the code for
`bootstrap -s` and `bootstrap -D`.

Review instructions: Note that there are changes to the
`bootstrap`-generated file `m4/sage_spkg_configures.m4`:
- The macro `SAGE_SPKG_COLLECT_INIT` is now called explicitly, with an
argument (the full list of packages).
- Lines such as `m4_define([SPKG_INSTALL_REQUIRES_exceptiongroup],
[['exceptiongroup; python_version<\"3.11\"',]])dnl` are added for use by
the macro `SAGE_PYTHON_PACKAGE_CHECK` (replacing direct access to
`version_requirements.txt` files)

<!-- 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". -->
This is:
- Split out from sagemath#36740
<!-- 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 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#37430
Reported by: Matthias Köppe
Reviewer(s): Julian Rüth, Kwankyu Lee, Matthias Köppe, Tobias Diez
vbraun pushed a commit to vbraun/sage that referenced this issue Jul 20, 2024
…ensional Lie algebra representation

    
<!-- ^^^^^
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 -->

The goal of this PR is to implement the BGG resolution of a finite
dimensional simple Lie algebra representation $L_{\lambda}$. In order to
implement this, we need to implement a number of features:

- Simple modules (this does not assume finite dimensional).
- Dual modules in BGG category $\mathcal{O}$.
- Fix embeddings of Verma modules sagemath#36793.
- Improve construction of elements of free abelian monoids when strings
are indices.
- Move `to_root_vector()` to a method of fundamental weights and cache
the inverse Cartan matrix.
- Add `is_dominant_weight()` method to weight lattice realization
elements.
- Add `is_verma_dominant()` to define a dominant weight in the sense of
the Humphreys 2008 reference, which means the Verma module is projective
(that is, maximal in its dot action orbit).
- Add the category of `FiniteDimensionalKacMoodyAlgebras`.
- `@cache_in_parent_method` marked `weak_le` for Coxeter groups.
- Subclass of PBW bases for semisimple Lie algebras.

We also add methods to compute the contravariant form of a Verma module
and add tester methods for them being simple or projective.

It is possible to split this up into smaller parts, but it is natural
for them to go together given the final goal.

One major TODO is to speed up the computation of the bases of the simple
modules. The main place to optimize this would be to improve the
multiplication of the PBW basis code, which for finite dimensional Lie
algebras (not necessarily semisimple), this could be improved by using
the fixed basis order and using the monomials as vectors to avoid lots
of calls for getting the sort order and comparing. In particular, the
triangular sorting order for the Chevalley basis implementation has
error messages being raised (and caught) for comparing the roots and
coroots. This will be done at some point on a separate PR.

<!-- 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 linked a relevant issue or discussion.
- [x] I have created tests covering the changes.
- [x] 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#37297
Reported by: Travis Scrimshaw
Reviewer(s): Matthias Köppe, Travis Scrimshaw
vbraun pushed a commit to vbraun/sage that referenced this issue Jul 20, 2024
    
<!-- ^^^^^
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 -->
Our Mathics package is outdated (and also the interface shows test
failures in CI - e.g. in https://github.com/sagemath/sage/actions/runs/7
894201915/job/21638423818#step:14:3279)

Trying to update Mathics reveals more dependencies, include scikit-image
and llvm-lite.

Here we reduce it to a "pip" package to simplify maintenance of the
package on our side.

The latest released version 6.0.4 fails to install in Sage because of
rigid version constraints.

We are using the current HEAD version (7.0.0dev), which includes
- Mathics3/mathics-core#1014
- Mathics3/mathics-core#1034

<!-- 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.
- [ ] 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#37395
Reported by: Matthias Köppe
Reviewer(s): Matthias Köppe, Sebastian Oehms
vbraun pushed a commit to vbraun/sage that referenced this issue Jul 31, 2024
    
<!-- ^^^^^
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 -->

Continuation of sagemath#23712

Author: @dimpase, @tornaria, @aikrahguzar

<!-- 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". -->
Resolves sagemath#23712
<!-- 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#36969
Reported by: Matthias Köppe
Reviewer(s): aikrahguzar, Matthias Köppe
vbraun pushed a commit to vbraun/sage that referenced this issue Aug 2, 2024
    
<!-- ^^^^^
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 -->

Continuation of sagemath#23712

Author: @dimpase, @tornaria, @aikrahguzar

<!-- 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". -->
Resolves sagemath#23712
<!-- 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#36969
Reported by: Matthias Köppe
Reviewer(s): aikrahguzar, Matthias Köppe
vbraun pushed a commit to vbraun/sage that referenced this issue Aug 2, 2024
…ltiprocessing,threads`

    
<!-- ^^^^^
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? -->
<!-- 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. -->
- Partially addresses sagemath#36539

### 📝 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#37010
Reported by: Matthias Köppe
Reviewer(s): Kwankyu Lee
vbraun pushed a commit to vbraun/sage that referenced this issue Aug 2, 2024
…ages

    
<!-- ^^^^^
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 -->
Vote: https://groups.google.com/g/sage-devel/c/MIU-xo9b7pc
Vote (redo): https://groups.google.com/g/sage-devel/c/lPLoA7zaoyg

Fixes sagemath#31110

<!-- 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.
- [ ] 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#37301
Reported by: Matthias Köppe
Reviewer(s): Kwankyu Lee
vbraun pushed a commit to vbraun/sage that referenced this issue Aug 3, 2024
    
<!-- ^^^^^
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 -->

Continuation of sagemath#23712

Author: @dimpase, @tornaria, @aikrahguzar

<!-- 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". -->
Resolves sagemath#23712
<!-- 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#36969
Reported by: Matthias Köppe
Reviewer(s): aikrahguzar, Matthias Köppe
vbraun pushed a commit to vbraun/sage that referenced this issue Aug 3, 2024
…ltiprocessing,threads`

    
<!-- ^^^^^
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? -->
<!-- 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. -->
- Partially addresses sagemath#36539

### 📝 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#37010
Reported by: Matthias Köppe
Reviewer(s): Kwankyu Lee
vbraun pushed a commit to vbraun/sage that referenced this issue Aug 3, 2024
…ages

    
<!-- ^^^^^
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 -->
Vote: https://groups.google.com/g/sage-devel/c/MIU-xo9b7pc
Vote (redo): https://groups.google.com/g/sage-devel/c/lPLoA7zaoyg

Fixes sagemath#31110

<!-- 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.
- [ ] 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: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#37301
Reported by: Matthias Köppe
Reviewer(s): Kwankyu Lee
vbraun pushed a commit to vbraun/sage that referenced this issue Aug 27, 2024
    
<!-- ^^^^^
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"
-->

See https://groups.google.com/g/sage-devel/c/fOTkNoU02Oo/m/j116LUouBwAJ

This upgrade includes doctest changes needed for compatibility with
SymPy 1.13.

This PR is also used by SymPy CI to keep track of compatibility between
SymPy and Sage:
https://github.com/sympy/sympy/blob/master/.github/workflows/ci-sage.yml
https://github.com/sympy/sympy/actions/runs/6724078875/job/18275557828
    
URL: sagemath#36641
Reported by: Oscar Benjamin
Reviewer(s): Oscar Benjamin
vbraun pushed a commit to vbraun/sage that referenced this issue Aug 27, 2024
…TRAINT=$SAGE_ROOT/constraints_pkgs.txt`

    
<!-- ^^^^^
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 -->
This is aimed at the intermediate level, for users who wish to build a
set of distribution packages as supplied in `pkgs/` but without using
the wheelhouse infrastructure of Sage-the-distribution.

Documentation included in the files.

It can also be tested using new tox environments defined in
`pkgs/sagemath-standard/tox.ini`, and is tested on GH Actions:
https://github.com/mkoeppe/sage/actions/workflows/ci-linux-
incremental.yml?query=branch%3Aconstraints_pkgs
- this also provides the missing automatic test for the **sagemath-
standard** distribution built out of `pkgs/sagemath-standard/`

Marked as critical because it is hoped to ease the adoption of
modularized distribution packages by downstream packagers.

<!-- 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.
- [ ] 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: ...
-->

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

- Depends on sagemath#38515 (merged here)
- Depends on sagemath#38500 (merged here)
    
URL: sagemath#37434
Reported by: Matthias Köppe
Reviewer(s): François Bissey, Kwankyu Lee, Matthias Köppe
vbraun pushed a commit to vbraun/sage that referenced this issue Aug 28, 2024
    
<!-- ^^^^^
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"
-->

See https://groups.google.com/g/sage-devel/c/fOTkNoU02Oo/m/j116LUouBwAJ

This upgrade includes doctest changes needed for compatibility with
SymPy 1.13.

This PR is also used by SymPy CI to keep track of compatibility between
SymPy and Sage:
https://github.com/sympy/sympy/blob/master/.github/workflows/ci-sage.yml
https://github.com/sympy/sympy/actions/runs/6724078875/job/18275557828
    
URL: sagemath#36641
Reported by: Oscar Benjamin
Reviewer(s): Oscar Benjamin
vbraun pushed a commit to vbraun/sage that referenced this issue Aug 28, 2024
…TRAINT=$SAGE_ROOT/constraints_pkgs.txt`

    
<!-- ^^^^^
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 -->
This is aimed at the intermediate level, for users who wish to build a
set of distribution packages as supplied in `pkgs/` but without using
the wheelhouse infrastructure of Sage-the-distribution.

Documentation included in the files.

It can also be tested using new tox environments defined in
`pkgs/sagemath-standard/tox.ini`, and is tested on GH Actions:
https://github.com/mkoeppe/sage/actions/workflows/ci-linux-
incremental.yml?query=branch%3Aconstraints_pkgs
- this also provides the missing automatic test for the **sagemath-
standard** distribution built out of `pkgs/sagemath-standard/`

Marked as critical because it is hoped to ease the adoption of
modularized distribution packages by downstream packagers.

<!-- 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.
- [ ] 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: ...
-->

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

- Depends on sagemath#38515 (merged here)
- Depends on sagemath#38500 (merged here)
    
URL: sagemath#37434
Reported by: Matthias Köppe
Reviewer(s): François Bissey, Kwankyu Lee, Matthias Köppe
vbraun pushed a commit to vbraun/sage that referenced this issue Sep 16, 2024
…base

    
<!-- ^^^^^
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"
-->
### 📚 Description

Building the large Cremona database fails like this on an x86_64 Fedora
Rawhide machine.  (I captured the output from an old sagemath 9.6 build,
but the same error occurs with sagemath 9.7.)
```
Inserting allgens.90000-99999
Committing...
Traceback (most recent call last):
  File "/builddir/build/BUILD/sage-9.6/cremona.sage.py", line 10, in
<module>
    c._init_from_ftpdata('ecdata-2019-10-29')
  File "/builddir/build/BUILDROOT/sagemath-9.6-
4.fc38.x86_64/usr/lib64/python3.11/site-
packages/sage/databases/cremona.py", line 1397, in _init_from_ftpdata
    self.vacuum()
  File "/builddir/build/BUILDROOT/sagemath-9.6-
4.fc38.x86_64/usr/lib64/python3.11/site-
packages/sage/databases/sql_db.py", line 2180, in vacuum
    self.__connection__.execute('VACUUM')
sqlite3.OperationalError: cannot VACUUM from within a transaction
```
The issue is a missing database commit, which this PR adds.

<!-- Describe your changes here in detail -->
<!-- Why is this change required? What problem does it solve? -->
<!-- If it resolves an open issue, please link to the issue here. For
example "Closes sagemath#1337" -->

### 📝 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! -->

- [x] I have made sure that the title is self-explanatory and the
description concisely explains the PR.
- [ ] I have linked an issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation accordingly.

### ⌛ Dependencies
<!-- List all open pull requests that this PR logically depends on -->
<!--
- #xyz: short description why this is a dependency
- #abc: ...
-->
    
URL: sagemath#35050
Reported by: Jerry James
Reviewer(s): Vincent Macri
vbraun pushed a commit to vbraun/sage that referenced this issue Sep 19, 2024
…base

    
<!-- ^^^^^
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"
-->
### 📚 Description

Building the large Cremona database fails like this on an x86_64 Fedora
Rawhide machine.  (I captured the output from an old sagemath 9.6 build,
but the same error occurs with sagemath 9.7.)
```
Inserting allgens.90000-99999
Committing...
Traceback (most recent call last):
  File "/builddir/build/BUILD/sage-9.6/cremona.sage.py", line 10, in
<module>
    c._init_from_ftpdata('ecdata-2019-10-29')
  File "/builddir/build/BUILDROOT/sagemath-9.6-
4.fc38.x86_64/usr/lib64/python3.11/site-
packages/sage/databases/cremona.py", line 1397, in _init_from_ftpdata
    self.vacuum()
  File "/builddir/build/BUILDROOT/sagemath-9.6-
4.fc38.x86_64/usr/lib64/python3.11/site-
packages/sage/databases/sql_db.py", line 2180, in vacuum
    self.__connection__.execute('VACUUM')
sqlite3.OperationalError: cannot VACUUM from within a transaction
```
The issue is a missing database commit, which this PR adds.

<!-- Describe your changes here in detail -->
<!-- Why is this change required? What problem does it solve? -->
<!-- If it resolves an open issue, please link to the issue here. For
example "Closes sagemath#1337" -->

### 📝 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! -->

- [x] I have made sure that the title is self-explanatory and the
description concisely explains the PR.
- [ ] I have linked an issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation accordingly.

### ⌛ Dependencies
<!-- List all open pull requests that this PR logically depends on -->
<!--
- #xyz: short description why this is a dependency
- #abc: ...
-->
    
URL: sagemath#35050
Reported by: Jerry James
Reviewer(s): Vincent Macri
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants