sagemath / sage

Main repository of SageMath
https://www.sagemath.org
Other
1.44k stars 481 forks source link

Direct Implementation of Chow Rings of Matroids #37987

Open 25shriya opened 6 months ago

25shriya commented 6 months ago

This Google Summer of Code project aims to build a custom class in SageMath for the Chow rings of matroids by using a result which explicitly computes a Gröbner basis for the same. This implementation would improve speed and provide many additional features to the class, resulting from the properties the basis of monomials of the Chow ring enjoys. Check relevant issue @tscrim

The Chow ring ideal is implemented as an abstract class (ChowRingIdeal). The ideal defined in this paper is implemented as a custom class (a subclass of MPolynomialIdeal and ChowRingIdeal). The groebner_basis() method has been rewritten and implemented based on Theorem 2.19 of the above paper.

The FY-presentation and atom-free presentation of the augmented Chow Ring Ideal are also implemented as concrete classes which similarly inherit from MPolynomialIdeal and ChowRingIdeal. The implementation of their groebner_basis() method is taken from this paper.

The new implementation of Chow rings is a custom class (a subclass of QuotientRing_generic). This initial version of the custom class takes the ideal from the subclasses of ChowRingIdeal. It also includes a basis() method that returns the monomial basis of the Chow ring given in the above two papers.

The next step would be implementing the Poincare duality and Hard Lefchetz properties. This would be done by implementing G-equivariant injective and bijective maps from Theorem 1.1 of this paper.

The initial version of ChowRingIdeal and ChowRing classes have been implemented with the final set of tests left to be passed. A challenging aspect of this project was translating the mathematics to Python code, and making it compatible with the pre-existing code.

The following PRs have been worked on as a part of this project:

  1. set_legend_options example
  2. _repr_ method update
  3. Addition of Chow ring ideal and Chow ring class
Puriva commented 6 months ago

what to know to contribute in it??