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:
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 ofMPolynomialIdeal
andChowRingIdeal
). Thegroebner_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
andChowRingIdeal
. The implementation of theirgroebner_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 ofChowRingIdeal
. It also includes abasis()
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
andChowRing
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:
_repr_
method update