-
-
Notifications
You must be signed in to change notification settings - Fork 434
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
Comments
I didn't get it why do you want the result in that format because after all it is zero only, right ? @phul-ste |
@RuchitJagodara 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. |
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.) |
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.
I have corrected the code and now it is working fine. Please, review it, @phul-ste. |
@RuchitJagodara I wrote a modification suggestion in order to use kronecker_delta instead of powers of 0. Apart from that, everything seemed ok to me, |
@phul-ste, can you please review it again? I have made some changes as per your suggestions. |
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 _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
- 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
- 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
- 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
- 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
- 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
* 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 <clfrngrown@aol.com> * 36884: doctest formatting Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com> * 36884: replace copy Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com> * 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 <clfrngrown@aol.com> * src/sage/calculus/ode.pyx: constness fix for clang 16 * sage.rings: Modularization fixes for imports of power series * build/pkgs/normaliz/patches: Add Normaliz/Normaliz#412 * 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 <mkoeppe@math.ucdavis.edu> Co-authored-by: Dima Pasechnik <dima@pasechnik.info> Co-authored-by: Kwankyu Lee <ekwankyu@gmail.com> Co-authored-by: Frédéric Chapoton <chapoton@unistra.fr> Co-authored-by: dcoudert <david.coudert@inria.fr> Co-authored-by: Jukka Kohonen <jukka.kohonen@aalto.fi> Co-authored-by: RuchitJagodara <ruchit.jagodara@iitgn.ac.in> Co-authored-by: Release Manager <release@sagemath.org> Co-authored-by: Lorenz Panny <lorenz@yx7.cc> Co-authored-by: Travis Scrimshaw <tcscrims@gmail.com> Co-authored-by: Sebastian Oehms <47305845+soehms@users.noreply.github.com> Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com> Co-authored-by: Sebastian <seb.oehms@gmail.com> Co-authored-by: John Cremona <john.cremona@gmail.com> Co-authored-by: Heiko Knospe <heiko.knospe@fh-koeln.de> Co-authored-by: adrinospy <amanmoon099@gmail.com> Co-authored-by: Tobias Diez <code@tobiasdiez.com> Co-authored-by: Michael Orlitzky <michael@orlitzky.com>
Steps To Reproduce
If we run
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 turns0^n
into0
.Environment
Checklist
The text was updated successfully, but these errors were encountered: