Skip to content

💡 Version 0.0.7#43

Merged
Antonio-JP merged 76 commits intodevelopfrom
elliptic
May 1, 2025
Merged

💡 Version 0.0.7#43
Antonio-JP merged 76 commits intodevelopfrom
elliptic

Conversation

@Antonio-JP
Copy link
Copy Markdown
Owner

Pull request including new results from paper "Effective computation of centralizers of ODOs".

This new version concludes the computation of Centralizers for linear differential operators $L$ as a $C[L]$-module, it begins the computations of the Burchnall-Chaundy ideals and also the study of what is called in the paper "level varieties".
It includes also a new notebook to showcase the examples in the paper and a new experiment to generate and study families of operators with no-trivial centralizers.

This version also includes the "elliptic" extensions for differential fields: an element $\eta$ is d-elliptic over a differential field $F$ if it is transcendental over $F$ and its derivative ($\eta'$) is algebraic over $F(\eta)$.

  * Added method to IndexBijection to iterate through specific sections
  * Method "as_polynomials" allows to transform objects to SageMath structures
  * Added more content for autoreduce sets from Kolchin's book
    - Method to compute H for an autoreduce set
    - Improved method partial_remainder
    - Fixed method remainder
    - Added method autoreduce to compute an autoreduce set from a given list.
    - Added method "comparative_rank".
  - Added method to eliminate variables.
  - Added three options to eliminate variables:
    * Algebraic elimination: as with dRes, we extend and do algebraic elimination.
    * Iterative: we do algebraic elimination iteratively.
    * Autoreduce: we use the autoreduce set generated from the system.
  * added method "is_characteristic_set"
  * Added a guard so Ranking only works with differential rings.
  * Changed "autoreduce" to "autoreduced".
  - Completed the first version of DElliptic_Field
  - Completed the first version of DElliptic_Element
  - Provided a UNiqueFactory for creating these extensions
  - Provided a full setup of conversions/coercions from usual SageMath structures
  - Added several tests that interacts with other structures of dalgebra (such us DifferentialPolynomialRing).
  - Now we use an Evaluation morphism
  - When given the images of the generators, a morphism is created and cached for the DPolynomialRing
  - The decision of the final parent is done on an static method of EvaluationMorphism
  - Adjusted the method "eval" in DPolynomial.
  - Fixed all LaTeX methods
  - Added method "conditions_to_zero"
  - Changed method _inv_ to __invert__
  - Fixed other typos
  - Now it allows to decide the output ring with more flexibility
  - Adapted the computation on "GetEquationsForSolution" to use this new feature.
  - Added an elliptic example.
  - Fixed several typos in other files
  - Added method to compute elimination ideal w.r.t. some variables that appear all linearly in the ideal.
  - Added code to notebook using this new piece of code into old examples.
  - Added a small ideal analysis in the method.
  - Allowed the import of "eliminate_linear_variables"
  - Added method __call__ to DElliptic_Elements
  - Used new improvement on some examples of the notebook.
  - Created method "GetEquationsForLevel", which computes solutions for a given template to be of fixed level "m".
  - This method uses GetEquationsForSolution and evaluates the last constant to 1.
  - Then we remove common solutions with previous cases.
  - Improved the ntoebook to include this new functionality
  - Now we remove solutions up to level 1 to guarantee it is "truly" a good example.
  - Changed the behavior of SolutionBranch: now we can get the full ideal that defines the Branch.
  - Now SolutionBranch compares the subsolutions by using the full ideal
  - Method "eliminate_linear_variables" improved logging
  - Fixed use of Factory for DElliptic extensions.
  - Improved efficiency of method "change_ring" in DPolynomialRing_Monoid.
  - Added as output of GetHierarchyLinearEquations the monomials used for getting the equations of the system.
  - Adjusted some methods and files that called GetHierarchyLinearEquations.
  - Created method GetCentralizer
  - Improved notebook with better examples
  - Fixed the output for order 0 congruent with n: before we returned 1, but "z[0]" should be instead.
  - Extended the notebook slightly
  - Bug detected when extending the system.
  - Added method "lcm_denominators" for computing the extension of the linear systems.
  - Fixed "eval" method for SolutionBranch.
  - Improve printing of SolutionBranch
  - Fixed substitutions when having zero arguments.
  * Fixed error when a row is emtpy in the linear system
  * Changed computation of ideal: now only 1 Gröbner basis is computed after getting all minors.
  * Changed the creation of the linear system: rows of zeros are removed (no information is provided by them)
  * Updated notebook with rational examples
  * Rearranged the structure of method "lcm_denominators"
  * Method "conditions_to_zero" set up as a property of all elements in DRings.
  * Method for lcm_denominators is now a property in DRings. Their elements can call it too.
  * Added method to DRings to extend linear system to systems in their constants for constant solutions (see "system_for_linear_solutions").
  * These changes mean that the method "extract" used in the commutator module is now obsolete: DRings now know how to extract their coefficients and how to get the final equations.
    - Remove the use of the argument "extract" in notebooks and modules.
  * Fixed construction of linear system from the hierarchies
  * Fixed evaluation of branches when no variables were left
  * Added some looging to method "system_for_constant_solutions"
  * Fixed conversion to DPolynomialRing when giving a zero.
Antonio-JP and others added 25 commits February 14, 2025 17:01
  * Improved Makefile to include new command to import data
  * Added script to git repository to import the data from `da_wilson`.
  * Added script from git repository to export the files to `da_wilson`.
  * Fixed setup.py: now data is properly added when installed.
  - In the centralizers script: the case "hyperbolic" was in reality "trigonometric".
  - Added the true hyperbolic case
  - Kept previous case as "trigonometric"
  - Added method to get the set J from the theory
  - Improve readability of methot GetHIerarchyLinearEquations
  - Added method reduce_as_module
  - Added method BC_ideal
  - Added method "dot" to represent the product as operators
  - Adapted the code for the Lie bracket
  - Added method "constant_ring"
  * Fixed error where tables were not properly created
  * Wrong structure on basis in BC_ideal (due to change in GetCentralizer
  * Added method "dict_to_point" for notebook.
  * Remove hyperbolic case n=3, m=11 from notebook
  * Updated version number
      * Fixed all warnings provided by pycodestyle-minimal
      * Fixed all errors from relint
      * Fixed _some_ errors from pytests
  * Also, created the doctest introduction to module dpolynomial
      * Fixed all test from doctests
@Antonio-JP Antonio-JP added enhancement New feature or request experiment Experiment proposed for the repository labels May 1, 2025
@Antonio-JP Antonio-JP requested a review from Copilot May 1, 2025 07:26
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This pull request adds new experimental results from the paper "Effective computation of centralizers of ODOs" and extends the framework to support elliptic extensions as well as advanced computations for Burchnall–Chaundy ideals and level varieties. Key changes include the addition of new result files (rows, report, matrix) for the elliptic cases and significant code refinements in several modules (logging, differential rings, differential polynomial systems, commutators) along with updated copyright headers and minor API adjustments.

Reviewed Changes

Copilot reviewed 165 out of 170 changed files in this pull request and generated no comments.

Show a summary per file
File Description
experiments/centralizers/results/*.md New markdown result files with experimental outcome lists and detailed reports.
dalgebra/logging/logging.py Refactored logging calls (switching from info to logger.log with custom level) and removed duplicate COUNTING_CALLS definition.
dalgebra/dpolynomial/dsystems.py Modified variable existence check and enforced conversion to Sage polynomials using the as_sage flag.
dalgebra/commutators/ideals.py Updated logging level usage (switching some info to debug) and adjusted the condition in repr for solution branches.
dalgebra/init.py Enhanced version retrieval with proper exception handling.

Files not reviewed (5)
  • Makefile: Language not supported
  • VERSION: Language not supported
  • experiments/almost_commuting/manage_data.sage: Language not supported
  • experiments/almost_commuting/script.sage: Language not supported
  • experiments/centralizers/results/.gitignore: Language not supported
Comments suppressed due to low confidence (4)

dalgebra/logging/logging.py:31

  • Good cleanup: the duplicate declaration of COUNTING_CALLS has been removed. Ensure that downstream code uses this centralized COUNTING_CALLS dictionary consistently.
COUNTING_CALLS : dict[str, int] = dict()

dalgebra/dpolynomial/dsystems.py:117

  • The check for variables now explicitly requires a non-empty collection, which clarifies intent. Confirm this does not unexpectedly filter out valid falsy inputs.
if (variables is not None and len(variables) > 0):

dalgebra/dpolynomial/dsystems.py:559

  • Forcing the conversion with 'as_sage=True' ensures uniform algebraic behavior; please verify this change aligns with the intended use in downstream computations.
equations = tuple(self.parent().as_polynomials(*self.equations(), as_sage=True))

dalgebra/commutators/ideals.py:361

  • [nitpick] Note the change from an 'and' condition to an 'or' condition for printing relations in the SolutionBranch repr. Verify that including a single nonzero generator now is intentional.
if self.__I.ngens() > 1 or self.__I.gens()[0] != 0:

@Antonio-JP Antonio-JP merged commit c862df2 into develop May 1, 2025
1 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request experiment Experiment proposed for the repository

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants