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

Symbolic power of a nilpotent matrix is zero #36838

Closed
2 tasks done
phul-ste opened this issue Dec 7, 2023 · 6 comments · Fixed by #36845
Closed
2 tasks done

Symbolic power of a nilpotent matrix is zero #36838

phul-ste opened this issue Dec 7, 2023 · 6 comments · Fixed by #36845
Labels
Milestone

Comments

@phul-ste
Copy link

phul-ste commented Dec 7, 2023

Steps To Reproduce

If we run

Z=matrix([[0,1],[0,0]])
n=var('n')
Zn=Z^n;Zn

we get the null matrix.

Expected Behavior

I would have expected a result like
matrix([0^n,n*0^(n-1)],[0,0^n]])
to see that the matrix is not automatically zero for small n.

Actual Behavior

The actual result is
matrix([[0,0],[0,0]])

Additional Information

I highly suspect that it is caused by the .simplify_full() method which turns 0^n into 0.

Environment

- **OS**: Ubuntu 20.04
- **Sage Version**: 9.0
- Jupyter Notebook

Checklist

  • I have searched the existing issues for a bug report that matches the one I want to file, without success.
  • I have read the documentation and troubleshoot guide
@phul-ste phul-ste added the t: bug label Dec 7, 2023
@RuchitJagodara
Copy link
Contributor

I didn't get it why do you want the result in that format because after all it is zero only, right ? @phul-ste

@phul-ste
Copy link
Author

phul-ste commented Dec 9, 2023

@RuchitJagodara
It is not zero for small values of n.
If the 0^n=0 only fails for $n=0$, the failure is more significant for nilpotent matrices.

In fact, the problem arose with students in a practical class given by a colleague of mine. There was an exact formula for some matrices (e.g. matrix([1,1],[0,1]]) ) while for some nilpotent matrix, the brutal limit case result was given.
(and this is part of some trust issues on sage's results from the aforementioned colleague that I had recently convinced to try an opensource software)

@RuchitJagodara
Copy link
Contributor

Hmm... Got it. Thank you for the clarification, @phul-ste. I will try to solve this as soon as possible. (This type of bug/error is very rare because as soon as someone reports it, it gets resolved. It's good to see that people are trying out open-source softwares.)

RuchitJagodara added a commit to RuchitJagodara/sage that referenced this issue Dec 9, 2023
This fixes sagemath#36838. Here, I have added a condition to check whether
mk=0 or not. Because whenever mk=0 we should give mk^(n-i) (i.e. 0^(n-i))
instead of only 0 considering (n-i) can be equal to zero and in this
case 0^(n-i) will be more accurate than only 0.
@RuchitJagodara
Copy link
Contributor

I have corrected the code and now it is working fine. Please, review it, @phul-ste.

@phul-ste
Copy link
Author

@RuchitJagodara I wrote a modification suggestion in order to use kronecker_delta instead of powers of 0.
(Hoping I am doing it right, I have never developed neither reviewed anything before)

Apart from that, everything seemed ok to me,
Thank you

@RuchitJagodara
Copy link
Contributor

@phul-ste, can you please review it again? I have made some changes as per your suggestions.

dimpase pushed a commit to RuchitJagodara/sage that referenced this issue Dec 13, 2023
This fixes sagemath#36838. Here, I have added a condition to check whether
mk=0 or not. Because whenever mk=0 we should give mk^(n-i) (i.e. 0^(n-i))
instead of only 0 considering (n-i) can be equal to zero and in this
case 0^(n-i) will be more accurate than only 0.
vbraun pushed a commit to vbraun/sage that referenced this issue Dec 21, 2023
    
- Changed _matrix_power_symbolic function to consider mk=0 case
- Changed the _matrix_power_symbolic function to handle all the cases
- Created tests covering the changes

This PR improves the answer given by _matrix_power_symbolic() function,
which involves finding the symbolic power of a matrix, and also gives
more precise answer on evalution. eg, before, when we were evaluating
the zeroth power of a matrix sometimes it was giving wrong answer like
below,
```python
        sage: n = var("n")
        sage: A = matrix(ZZ, [[1,-1], [-1,1]])
        sage: An = A^(n)
        [ 1/2*2^n -1/2*2^n]
        [-1/2*2^n  1/2*2^n]
        sage: An({n:0})
        [ 1/2 -1/2]
        [-1/2  1/2]
```
Here, for n=0, it is not giving an identity matrix which is wrong, but
after the change it will give answer as below,
```python
        sage: n = var("n")
        sage: A = matrix(ZZ, [[1,-1], [-1,1]])
        sage: An = A^(n)
        [ 1/2*2^(2*n + 1) + 1/2*kronecker_delta(0, 2*n + 1) -1/2*2^(2*n
+ 1) + 1/2*kronecker_delta(0, 2*n + 1)]
        [-1/2*2^(2*n + 1) + 1/2*kronecker_delta(0, 2*n + 1)  1/2*2^(2*n
+ 1) + 1/2*kronecker_delta(0, 2*n + 1)]
        sage: An({n:0})
        [1 0]
        [0 1]
```

Also, This patch fixes sagemath#36838 . The function, _matrix_power_symbolic()
was giving symbolic power
of a nilpotent matrix as a null matrix but the correct answer should be
represented
in the form of kronecker_delta() function. In the case of mk=0,
simplifying only binomial
term should work because afterall the form 0^(n-i) should be simplifed
to kronecker_delta() function and no further simplification is needed.
And in every other case it is simplifying whole term so it will handle
all other cases.
<!-- ^^^^^
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. -->

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

### ⌛ 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! -->
None
    
URL: sagemath#36845
Reported by: Ruchit Jagodara
Reviewer(s): Dima Pasechnik, phul-ste, Ruchit Jagodara
vbraun pushed a commit to vbraun/sage that referenced this issue Dec 22, 2023
    
- Changed _matrix_power_symbolic function to consider mk=0 case
- Changed the _matrix_power_symbolic function to handle all the cases
- Created tests covering the changes

This PR improves the answer given by _matrix_power_symbolic() function,
which involves finding the symbolic power of a matrix, and also gives
more precise answer on evalution. eg, before, when we were evaluating
the zeroth power of a matrix sometimes it was giving wrong answer like
below,
```python
        sage: n = var("n")
        sage: A = matrix(ZZ, [[1,-1], [-1,1]])
        sage: An = A^(n)
        [ 1/2*2^n -1/2*2^n]
        [-1/2*2^n  1/2*2^n]
        sage: An({n:0})
        [ 1/2 -1/2]
        [-1/2  1/2]
```
Here, for n=0, it is not giving an identity matrix which is wrong, but
after the change it will give answer as below,
```python
        sage: n = var("n")
        sage: A = matrix(ZZ, [[1,-1], [-1,1]])
        sage: An = A^(n)
        [ 1/2*2^(2*n + 1) + 1/2*kronecker_delta(0, 2*n + 1) -1/2*2^(2*n
+ 1) + 1/2*kronecker_delta(0, 2*n + 1)]
        [-1/2*2^(2*n + 1) + 1/2*kronecker_delta(0, 2*n + 1)  1/2*2^(2*n
+ 1) + 1/2*kronecker_delta(0, 2*n + 1)]
        sage: An({n:0})
        [1 0]
        [0 1]
```

Also, This patch fixes sagemath#36838 . The function, _matrix_power_symbolic()
was giving symbolic power
of a nilpotent matrix as a null matrix but the correct answer should be
represented
in the form of kronecker_delta() function. In the case of mk=0,
simplifying only binomial
term should work because afterall the form 0^(n-i) should be simplifed
to kronecker_delta() function and no further simplification is needed.
And in every other case it is simplifying whole term so it will handle
all other cases.
<!-- ^^^^^
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. -->

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

### ⌛ 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! -->
None
    
URL: sagemath#36845
Reported by: Ruchit Jagodara
Reviewer(s): Dima Pasechnik, phul-ste, Ruchit Jagodara
vbraun pushed a commit to vbraun/sage that referenced this issue Dec 23, 2023
    
- Changed _matrix_power_symbolic function to consider mk=0 case
- Changed the _matrix_power_symbolic function to handle all the cases
- Created tests covering the changes

This PR improves the answer given by _matrix_power_symbolic() function,
which involves finding the symbolic power of a matrix, and also gives
more precise answer on evalution. eg, before, when we were evaluating
the zeroth power of a matrix sometimes it was giving wrong answer like
below,
```python
        sage: n = var("n")
        sage: A = matrix(ZZ, [[1,-1], [-1,1]])
        sage: An = A^(n)
        [ 1/2*2^n -1/2*2^n]
        [-1/2*2^n  1/2*2^n]
        sage: An({n:0})
        [ 1/2 -1/2]
        [-1/2  1/2]
```
Here, for n=0, it is not giving an identity matrix which is wrong, but
after the change it will give answer as below,
```python
        sage: n = var("n")
        sage: A = matrix(ZZ, [[1,-1], [-1,1]])
        sage: An = A^(n)
        [ 1/2*2^(2*n + 1) + 1/2*kronecker_delta(0, 2*n + 1) -1/2*2^(2*n
+ 1) + 1/2*kronecker_delta(0, 2*n + 1)]
        [-1/2*2^(2*n + 1) + 1/2*kronecker_delta(0, 2*n + 1)  1/2*2^(2*n
+ 1) + 1/2*kronecker_delta(0, 2*n + 1)]
        sage: An({n:0})
        [1 0]
        [0 1]
```

Also, This patch fixes sagemath#36838 . The function, _matrix_power_symbolic()
was giving symbolic power
of a nilpotent matrix as a null matrix but the correct answer should be
represented
in the form of kronecker_delta() function. In the case of mk=0,
simplifying only binomial
term should work because afterall the form 0^(n-i) should be simplifed
to kronecker_delta() function and no further simplification is needed.
And in every other case it is simplifying whole term so it will handle
all other cases.
<!-- ^^^^^
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. -->

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

### ⌛ 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! -->
None
    
URL: sagemath#36845
Reported by: Ruchit Jagodara
Reviewer(s): Dima Pasechnik, phul-ste, Ruchit Jagodara
vbraun pushed a commit to vbraun/sage that referenced this issue Dec 24, 2023
    
- Changed _matrix_power_symbolic function to consider mk=0 case
- Changed the _matrix_power_symbolic function to handle all the cases
- Created tests covering the changes

This PR improves the answer given by _matrix_power_symbolic() function,
which involves finding the symbolic power of a matrix, and also gives
more precise answer on evalution. eg, before, when we were evaluating
the zeroth power of a matrix sometimes it was giving wrong answer like
below,
```python
        sage: n = var("n")
        sage: A = matrix(ZZ, [[1,-1], [-1,1]])
        sage: An = A^(n)
        [ 1/2*2^n -1/2*2^n]
        [-1/2*2^n  1/2*2^n]
        sage: An({n:0})
        [ 1/2 -1/2]
        [-1/2  1/2]
```
Here, for n=0, it is not giving an identity matrix which is wrong, but
after the change it will give answer as below,
```python
        sage: n = var("n")
        sage: A = matrix(ZZ, [[1,-1], [-1,1]])
        sage: An = A^(n)
        [ 1/2*2^(2*n + 1) + 1/2*kronecker_delta(0, 2*n + 1) -1/2*2^(2*n
+ 1) + 1/2*kronecker_delta(0, 2*n + 1)]
        [-1/2*2^(2*n + 1) + 1/2*kronecker_delta(0, 2*n + 1)  1/2*2^(2*n
+ 1) + 1/2*kronecker_delta(0, 2*n + 1)]
        sage: An({n:0})
        [1 0]
        [0 1]
```

Also, This patch fixes sagemath#36838 . The function, _matrix_power_symbolic()
was giving symbolic power
of a nilpotent matrix as a null matrix but the correct answer should be
represented
in the form of kronecker_delta() function. In the case of mk=0,
simplifying only binomial
term should work because afterall the form 0^(n-i) should be simplifed
to kronecker_delta() function and no further simplification is needed.
And in every other case it is simplifying whole term so it will handle
all other cases.
<!-- ^^^^^
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. -->

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

### ⌛ 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! -->
None
    
URL: sagemath#36845
Reported by: Ruchit Jagodara
Reviewer(s): Dima Pasechnik, phul-ste, Ruchit Jagodara
vbraun pushed a commit to vbraun/sage that referenced this issue Dec 25, 2023
- Changed _matrix_power_symbolic function to consider mk=0 case
- Changed the _matrix_power_symbolic function to handle all the cases
- Created tests covering the changes

This PR improves the answer given by _matrix_power_symbolic() function,
which involves finding the symbolic power of a matrix, and also gives
more precise answer on evalution. eg, before, when we were evaluating
the zeroth power of a matrix sometimes it was giving wrong answer like
below,
```python
        sage: n = var("n")
        sage: A = matrix(ZZ, [[1,-1], [-1,1]])
        sage: An = A^(n)
        [ 1/2*2^n -1/2*2^n]
        [-1/2*2^n  1/2*2^n]
        sage: An({n:0})
        [ 1/2 -1/2]
        [-1/2  1/2]
```
Here, for n=0, it is not giving an identity matrix which is wrong, but
after the change it will give answer as below,
```python
        sage: n = var("n")
        sage: A = matrix(ZZ, [[1,-1], [-1,1]])
        sage: An = A^(n)
        [ 1/2*2^(2*n + 1) + 1/2*kronecker_delta(0, 2*n + 1) -1/2*2^(2*n
+ 1) + 1/2*kronecker_delta(0, 2*n + 1)]
        [-1/2*2^(2*n + 1) + 1/2*kronecker_delta(0, 2*n + 1)  1/2*2^(2*n
+ 1) + 1/2*kronecker_delta(0, 2*n + 1)]
        sage: An({n:0})
        [1 0]
        [0 1]
```

Also, This patch fixes sagemath#36838 . The function, _matrix_power_symbolic()
was giving symbolic power
of a nilpotent matrix as a null matrix but the correct answer should be
represented
in the form of kronecker_delta() function. In the case of mk=0,
simplifying only binomial
term should work because afterall the form 0^(n-i) should be simplifed
to kronecker_delta() function and no further simplification is needed.
And in every other case it is simplifying whole term so it will handle
all other cases.
<!-- ^^^^^
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. -->

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

### ⌛ 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! -->
None

URL: sagemath#36845
Reported by: Ruchit Jagodara
Reviewer(s): Dima Pasechnik, phul-ste, Ruchit Jagodara
vbraun pushed a commit to vbraun/sage that referenced this issue Dec 26, 2023
    
- Changed _matrix_power_symbolic function to consider mk=0 case
- Changed the _matrix_power_symbolic function to handle all the cases
- Created tests covering the changes

This PR improves the answer given by _matrix_power_symbolic() function,
which involves finding the symbolic power of a matrix, and also gives
more precise answer on evalution. eg, before, when we were evaluating
the zeroth power of a matrix sometimes it was giving wrong answer like
below,
```python
        sage: n = var("n")
        sage: A = matrix(ZZ, [[1,-1], [-1,1]])
        sage: An = A^(n)
        [ 1/2*2^n -1/2*2^n]
        [-1/2*2^n  1/2*2^n]
        sage: An({n:0})
        [ 1/2 -1/2]
        [-1/2  1/2]
```
Here, for n=0, it is not giving an identity matrix which is wrong, but
after the change it will give answer as below,
```python
        sage: n = var("n")
        sage: A = matrix(ZZ, [[1,-1], [-1,1]])
        sage: An = A^(n)
        [ 1/2*2^(2*n + 1) + 1/2*kronecker_delta(0, 2*n + 1) -1/2*2^(2*n
+ 1) + 1/2*kronecker_delta(0, 2*n + 1)]
        [-1/2*2^(2*n + 1) + 1/2*kronecker_delta(0, 2*n + 1)  1/2*2^(2*n
+ 1) + 1/2*kronecker_delta(0, 2*n + 1)]
        sage: An({n:0})
        [1 0]
        [0 1]
```

Also, This patch fixes sagemath#36838 . The function, _matrix_power_symbolic()
was giving symbolic power
of a nilpotent matrix as a null matrix but the correct answer should be
represented
in the form of kronecker_delta() function. In the case of mk=0,
simplifying only binomial
term should work because afterall the form 0^(n-i) should be simplifed
to kronecker_delta() function and no further simplification is needed.
And in every other case it is simplifying whole term so it will handle
all other cases.
<!-- ^^^^^
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. -->

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

### ⌛ 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! -->
None
    
URL: sagemath#36845
Reported by: Ruchit Jagodara
Reviewer(s): Dima Pasechnik, phul-ste, Ruchit Jagodara
@vbraun vbraun closed this as completed in afa6a7c Dec 26, 2023
@mkoeppe mkoeppe added this to the sage-10.3 milestone Dec 26, 2023
bodnalev added a commit to bodnalev/sage that referenced this issue Jan 3, 2024
* build/pkgs/referencing/dependencies: Add missing dep

* add :wikipedia:`Cycle Index Theorem etc

as explained in my comments on the PR

* Fixes for reviewer comments

* fix linter

* Implement fallback mechanism of default latex engine

* fix qepcad doctest

This test started to fail on Sage 10.3.beta2

* Small edit

* adding line breaks ad suggested

* fix doctest warnings in src/sage/interfaces/

* some ruff fixes (UP034 and UP039 codes) and error links in categories

* ruff auto-fixing several details in combinat folder

* more fixes

* some ruff fixes and error links in the graphs folder

* removed 'arb' which popped up in deps

* sage.env, sage.misc.package: Use SAGE_LOCAL_SPKG_INST to avoid clash with SAGE_SPKG_INST set by sage-spkg

* fix warnings in coxeter_group.py

* fix warnings in coxeter_group.py

* Default engine is computed lazily

* fix warnings in coxeter.pyx

* fix doctest warnings in src/sage/game_theory/gambit_docs.py

* fix doctest warnings in src/sage/game_theory/parser.py

* ruff UP details and links to errors in doc in geometry folder

* fix doctest warnings in src/sage/game_theory/normal_form_game.py

* document&test corner case, empty domain without constraints

* Documented that sagemath#36527 causes erroneous results & how to avoid

* fix doctest warnings in src/sage/categories/finite_complex_reflection_groups.py

* fix doctest warnings in src/sage/coding/ag_code_decoders.pyx

* fix doctest warnings in src/sage/plot/graphics.py

* oops, correct workaround

* fix doctest warnings in src/sage/quadratic_forms/ternary_qf

* various fixes in quadratic_forms (ruff, pep8, error links, etc)

* Small language fixes; for brevity move one example to tests

* png() uses the default engine

* suggested details

* suggested details

* Changed _matrix_power_symbolic function to condier mk=0 case

This fixes sagemath#36838. Here, I have added a condition to check whether
mk=0 or not. Because whenever mk=0 we should give mk^(n-i) (i.e. 0^(n-i))
instead of only 0 considering (n-i) can be equal to zero and in this
case 0^(n-i) will be more accurate than only 0.

* Changed the _matrix_power_symbolic function to handle all the cases

This change handles all the errors which were occuring in previous
commit and this commit handles the case of mx=0 very effectively.

* Created tests covering the changes

Created tests covering the changes and checking whether the
trac:`36838` is fixed or not.

* Give more precise answer by using kroncker_delta function

Instead of returning 0^(n-i), it would be more precise if
we reutrn value of  kroncker_delta function, it will be helpful when
we try to evaluate the final matrix using the value of n.

* Rewriting tests for the PR

Changed the final answer given by test of this PR.

* Correct answers of the doctest for _matrix_power_symbolic function

Changed the answer of doctest  according to new changes.

* Corrected the doctest

Corrected the doctest and improved some code styles, which were not
correct according to guidelines for python coding for sage.

* Modified the doctest and changed the comment

Updated the old doctests which were failing before and updated the comment
to make it more readable.

* Corrected lint errors

* use file-level tag in src/sage/libs/coxeter/coxeter.pyx

* use file-level tag in src/sage/libs/coxeter/coxeter_group.py

* build/pkgs/*/distros: Remove quotes, change to one package per line

git grep -l \" build/pkgs/*/distros* | xargs sed -i.bak '/^"/s/"//g'

git grep -l -E '^([^# ]+) +([^# ][^#]+)(#.*)' build/pkgs/*/distros/*.txt | xargs sed -E -i.bak $'s/^([^# ]+) +([^# ][^#]+)(#.*)?/\\3\\\n\\1\\\n\\2/'

git grep -l -E '^([^# ]+) +([^# ][^#]+)' build/pkgs/*/distros/*.txt | xargs sed -E -i.bak $'s/^([^# ]+) +([^# ][^#]+)/\\1\\\n\\2/'

git grep -l -E ' +$' build/pkgs/*/distros/*.txt | xargs sed -E -i.bak 's/[ ]+$//'

* build/bin/sage-print-system-package-command: Shell-quote the packages

* fix precision issue for 𝑗=0 and ℓ=3

* build/bin/sage-get-system-packages: Substitute PYTHON_MINOR here

* build/bin/write-dockerfile.sh: Shell-quote system packages

* src/doc/bootstrap: Use sage-get-system-packages so that ENABLE_SYSTEM_SITEPACKAGES is respected

* sage-spkg-info, src/doc/bootstrap: Wrap command lines

* Current engine is dependent on the user's system

* Document the format of system package files

* src/doc/bootstrap: Wrap more narrowly

* Addressing reviewer comments.

* build/bin/sage-print-system-package-command: Simplify

* src/doc/bootstrap: Remove unused variable

* src/doc/bootstrap: Parallelize generation of SPKG.rst files

* build/bin/sage-spkg-info: Restore lost blank output line

* build/bin/sage-spkg-info: Fix and improve RST markup

* 36884: issue reference

Co-authored-by: Travis Scrimshaw <[email protected]>

* 36884: doctest formatting

Co-authored-by: Travis Scrimshaw <[email protected]>

* 36884: replace copy

Co-authored-by: Travis Scrimshaw <[email protected]>

* adding corolla-related methods to free pre-Lie algebras

* 36884: new list loop_crossings

* build/pkgs/_bootstrap/distros/fedora.txt: Remove outdated comment

* tox.ini: Add local-macports

* Add macports.txt

* build/pkgs/_prereq/distros: Update file comments

* build/bin/sage-print-system-package-command: Handle macports install

* tox.ini (local-macports-optlocal): Use sudo

* build/bin/sage-print-system-package-command (macports): Handle setup-build-env

* build/bin/sage-guess-package-system: Detect macports

* tox.ini: Add configuration factors macports-python{3.8,3.9}

* build/bin/sage-print-system-package-command (macports): Recommend FC as configure arg, not environment variable

This is so that the presence of the environment variable at 'make' time
does not break the build when the compiler is not actually present.

* tox.ini (macports): Pass FC as configure argument; add variants macports-gcc_{spkg,9,10,11}

* tox.ini (macports): Fix up use of ALL_EXTRA_SAGE_PACKAGES

* tox.ini (local-macports): Update macports base version to 2.7.2

* build/pkgs/gfortran/distros/macports.txt: Switch to gcc11

* tox.ini (macports): By default use FC=gfortran-mp-11

* build/bin/sage-print-system-package-command (macports): Also update to gcc11 here

* WIP

* tox.ini (macports): Remove variants that tried to use real gcc

* build/pkgs/libgd/distros/macports.txt: Disable

* build/pkgs/python3/distros/macports.txt: Use python310

* Disable more broken macports packages

* build/bin/sage-print-system-package-command [macports]: Do not describe variants that do not work

* tox.ini (macports): Set CPATH, LIBRARY_PATH

* build/pkgs/pari/distros/macports.txt: Disable

* tox.ini (macports): Use isysroot

* build/bin/sage-print-system-package-command (macports): Update use of print_shell_command

* build/pkgs/_bootstrap/distros/macports.txt: One package per line

* tox.ini: Add macports-python3.12

* revert some "a -> an" changes

* Updated SageMath version to 10.3.beta3

* Remove a redundant comment

* build/pkgs/e_antic: Update to 2.0.0

* sage.{coding,combinat}: Update # needs

* sage.combinat.root_system: Update # needs

* sage.combinat: Update # needs

* sage.combinat: Update # needs

* sage -fixdoctests src/sage/combinat

* sage.rings: Update # needs

* sage.rings: Update # needs

* sage.rings: Update # needs

* sage -fixdoctests src/sage/rings

* src/sage/rings/power_series_ring.py: Fix import

* Remove empty doctest lines

* sage.rings: Break an import cycle

* sage.rings.continued_fraction: Make imports from sage.combinat.words lazy

* sage.{categories,rings}: Modularization fixes for imports

* Remove uses of sage.PACKAGE.all...

* pkgs/sagemath-{flint,symbolics}: Fixups

* Massive modularization fixes

* Remove uses of sage.PACKAGE.all... (fixup)

* pkgs/sagemath-gap: Move reflection_group, weyl_group here from sagemath-modules

* suggested changes, arigato !

* refresh the doc about coercion and test the given example

* reverted changes and added self.is_dead(warn_only=True)

* fixing one bug in the use of valuation

* suggested detail

* add interface to nauty's genktreeg

* 36884: treat no loops first

Co-authored-by: Travis Scrimshaw <[email protected]>

* src/sage/calculus/ode.pyx: constness fix for clang 16

* sage.rings: Modularization fixes for imports of power series

* build/pkgs/normaliz/patches: Add https://github.com/Normaliz/Normaliz/issues/412\#issuecomment-1862036237

* src/sage/rings/finite_rings/element_ntl_gf2e.pyx: Fix test for libgap element

* Fixing some details.

* build/pkgs/normaliz/spkg-install.in: Override FLINT configure test

* build/pkgs/_prereq/distros/conda.txt: Pin compilers until sagemath#36840 is fixed

* build/pkgs/{normaliz,pynormaliz}: Add patchlevel to trigger build of pynormaliz in 'CI Linux incremental'

* change build/pkgs/nauty/spkg-configure.m4

* details fixed in cfinite_sequence.py

* update comment in build/pkgs/nauty/spkg-configure.m4

* src/sage/tests/gap_packages.py: Normalize package names to lower case in doctest

* suggested changes

* build/pkgs/furo/spkg-install.in: Remove

* remove one doctest, fix the other

* add some # optional - nauty tags

* some details in multi_polynomial base

* use # needs nauty

* suggested change in src/sage/features/nauty.py

* src/sage/doctest/forker.py: Use JobClient(use_cysignals=True)

* src/sage/doctest/forker.py: Do not mask ImportError while calling JobClient

* build/pkgs/gnumake_tokenpool: Update to 0.0.4

* build/pkgs/gnumake_tokenpool/install-requires.txt: require >= 0.0.4

* sage.plot: Update # needs

* sage.plot: Update # needs

* Add # needs

* sage -fixdoctests src/sage/plot

* src/sage/plot/arc.py: Fix # needs

* sage.plot: Doctest cosmetics (copied from sagemath#35095)

* src/sage/plot/plot3d/list_plot3d.py: Fix up

* src/sage/misc/replace_dot_all.py: Update doctest output

* src/sage/plot/plot.py: Fix Warning: Variable 'x' referenced here was set only in doctest marked '# long time, needs sage.symbolic'

* src/sage/doctest/sources.py: Use file-level doctest tags for the virtual doctest; fixes Warning: Variable 'sig_on_count' referenced here was set only ...

* build/pkgs/ninja_build: support samurai version scheme

Samurai is a C99 ninja implementation with an almost-compatible
version scheme, except that it has only two version components
instead of the three that ninja has. We update the "sed" call
used to parse the version number out of `ninja --version` so
that it can parse a samurai version too.

This should only matter on systems where (for example) /usr/bin/ninja
points to samurai. That's not typical, but it recently became possible
to do on Gentoo in an "official" way.

* src/sage/combinat/permutation.py: Fix # needs

* src/sage/combinat/root_system/non_symmetric_macdonald_polynomials.py: Fix # needs

* Addressing review comments for detecting subtypes.

* Updated SageMath version to 10.3.beta4

---------

Co-authored-by: Matthias Koeppe <[email protected]>
Co-authored-by: Dima Pasechnik <[email protected]>
Co-authored-by: Kwankyu Lee <[email protected]>
Co-authored-by: Frédéric Chapoton <[email protected]>
Co-authored-by: dcoudert <[email protected]>
Co-authored-by: Jukka Kohonen <[email protected]>
Co-authored-by: RuchitJagodara <[email protected]>
Co-authored-by: Release Manager <[email protected]>
Co-authored-by: Lorenz Panny <[email protected]>
Co-authored-by: Travis Scrimshaw <[email protected]>
Co-authored-by: Sebastian Oehms <[email protected]>
Co-authored-by: Travis Scrimshaw <[email protected]>
Co-authored-by: Sebastian <[email protected]>
Co-authored-by: John Cremona <[email protected]>
Co-authored-by: Heiko Knospe <[email protected]>
Co-authored-by: adrinospy <[email protected]>
Co-authored-by: Tobias Diez <[email protected]>
Co-authored-by: Michael Orlitzky <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants