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
Improvements and corrections to QuotientRingElement #13697
Comments
comment:2
Attachment: improve_quotient_ring.patch.gz |
Author: Charles Bouillaguet |
comment:4
I'll rebase this patch and try to review it. |
rebase of Bouillaguet's patch |
comment:5
Attachment: trac_13697.patch.gz apply trac_13697.patch |
This comment has been minimized.
This comment has been minimized.
Branch: u/saraedum/ticket/13697 |
This comment has been minimized.
This comment has been minimized.
Branch pushed to git repo; I updated commit sha1. New commits:
|
Commit: |
comment:10
Your patch does not address all the questions in the Ticket summary. How do you want to proceed with this? Should we split this and move the issues to new tickets? |
comment:13
I ran into the following:
It would be nice if in this situation, the quotient ring could check if it is a domain, and if so, return |
Branch pushed to git repo; I updated commit sha1. New commits:
|
Changed keywords from none to sd86.5 |
The class
QuotientRingElement
, which implements the operations an element of the quotientR/I
of a ringR
by an idealI
, suffers from several problems and limitations. Most of these were uncovered while working on #13670 and #13675.While
QuotientRingElement
aims to be generic, it contains code dedicated to the case whereR
is a multivariate polynomial ring. In particular, the implementation of division first checks ifR
supports the computation of Groebner bases. This is not the proper way to go ; a special class should be created, following the approach taken for univariate polynomial quotient rings (PolynomialQuotientRing
,PolynomialQuotientRingElement
). We should createMPolynomialQuotientRing
andMPolynomialQuotientRingElement
, and host multivariate-polynomial-specific code here.The
is_unit()
function does almost nothing (it checks if its argument is a unit inR
). In the case of (multivariate) polynomial rings, an actual test can be implemented.The class lacks an
is_regular()
methods (that detects zero divisors).In the case of (multivariate) polynomial rings,
is_regular()
can be implemented.The interest of
is_regular()
is that division byx
should only be allowed ifx
is regular.The present implementation of division has problems. It contains multivariate-polynomial-specific code, which is bad. Furthermore, it allows division by zero-divisors, even tough the result is not defined :
In contrast, univariate polynomial rings behave more rigorously:
This raises the question of how we want division to proceed:
Clarifying all this would then open the possibility to have, for example, special code to deal with ideals given by a regular chain instead of a Groebner basis
Apply
Depends on #13670
Depends on #13671
Depends on #13675
Depends on #13714
Component: commutative algebra
Keywords: sd86.5
Author: Charles Bouillaguet
Branch/Commit: u/saraedum/ticket/13697 @
6276d0b
Issue created by migration from https://trac.sagemath.org/ticket/13697
The text was updated successfully, but these errors were encountered: