Macaulay2 Engine
Loading...
Searching...
No Matches
polyquotient.hpp File Reference

PolyRingQuotient — polynomial ring modulo an ideal whose Groebner basis is known. More...

#include "engine-includes.hpp"
#include "poly.hpp"
#include "polyring.hpp"
#include "qring.hpp"
#include "ringelem.hpp"

Go to the source code of this file.

Classes

class  PolyRingQuotient
 PolyRingFlat subclass for quotients R / I of a polynomial ring by an ideal. More...

Detailed Description

PolyRingQuotient — polynomial ring modulo an ideal whose Groebner basis is known.

Note
AI-generated documentation. Verify against the source before relying on it.

Declares the concrete PolyRingFlat subclass for R / I (sibling of PolyRing from poly.hpp — both inherit directly from PolyRingFlat, not from each other), where R is the ambient ring and I is a polynomial ideal carried in a QRingInfo bookkeeping struct (declared in qring.hpp). QRingInfo keeps the defining ideal's generators twice — as Nterm* for ring-element arithmetic and as gbvector* for GB-internal reduction — so multiplication, inversion, and every other operation in the quotient finishes with a reduction against the stored GB without having to convert representations on each call. The class overrides normal_form to delegate to qinfo_->normal_form, plus make_gb(g) (build a GB for the principal ideal (g) inside the quotient) and ann(a, b) (return h with h * a in (b)).

Built from M2 by R = k[xs]; I = ideal(...); Q = R/I; the factory rejects trivial ideals (returns the ambient R unchanged) and routes through PolynomialRing to wire up the resulting PolyRingQuotient into the engine's ring hierarchy.

See also
poly.hpp
qring.hpp
polyring.hpp

Definition in file polyquotient.hpp.