Basic Polynomial Algebra Subprograms (BPAS)  v. 1.791
Public Member Functions | List of all members
ZeroDimensionalRegularChain< Field, RecursivePoly > Class Template Reference

A class for handling regular chains in dimension zero. More...

#include <zerodimensionalregularchain.hpp>

The $\texttt{ZeroDimensionalRegularChain}$ class handles the special case of regular chains of dimension zero (where there are the same number of equations as variables in the chain). The zero sets of zero-dimensional regular chains are therefore sets of points. Because zero-dimensional regular chains are particular kinds of regular chains, the $\texttt{ZeroDimensionalRegularChain}$ class inherits from the $\texttt{RegularChain}$ class. This special case allows for specialized algorithms that are more efficient than those needed for positive dimension, as well as being of mathematical interest in its own right, as we discuss briefly below. Specialized versions of $\texttt{intersect}$ and $\texttt{regularize}$ are provided by $\texttt{ZeroDimensionalRegularChain}$ , which behave in precisely the same way as the arbitrary dimension routines, except that the underlying regular chain has $\texttt{ZeroDimensionalRegularChain}$ type. The usage of these routines is illustrated below. More... (pdf)
Simplified semantic inheritance diagram for ZeroDimensionalRegularChain< Field, RecursivePoly >:
- Full inheritance diagram for ZeroDimensionalRegularChain< Field, RecursivePoly >:
[legend]

Public Member Functions

std::vector< ZeroDimensionalRegularChain< Field, RecursivePoly > > _intersect (const RecursivePoly &p) const
 Compute the common solutions of the input polynomial and the current regular chain. More...
 
std::vector< PolyChainPair< RecursivePoly, ZeroDimensionalRegularChain< Field, RecursivePoly > > > _regularGCD (const RecursivePoly &p, const RecursivePoly &q, const Symbol &v)
 Compute the gcd of two input polynomials p and q modulo the saturated ideal of the current object. More...
 
std::vector< PolyChainPair< RecursivePoly, ZeroDimensionalRegularChain< Field, RecursivePoly > > > _regularize (const RecursivePoly &p) const
 Compute a decomposition of the current object such that on each component the input polynomial is either zero or regular modulo the saturated ideal of that component. More...
 
 ZeroDimensionalRegularChain ()
 Default constructor: creates an empty "zero-dimensional" regular chain with variable size with empty list of transcendentals. More...
 
 ZeroDimensionalRegularChain (const std::vector< Symbol > &ps)
 Construct an empty zero-dimensional regular chain of variable size with variables given by xs with empty list of transcendentals. More...
 
 ZeroDimensionalRegularChain (const RecursivePoly &p)
 Construct a zero-dimensional regular chain of variable size containing a univariate polynomial p with empty list of transcendentals. More...
 
 ZeroDimensionalRegularChain (const RecursivePoly &p, const std::vector< Symbol > &ts)
 Construct a variable zero-dimensional regular chain containing p, such that the supplied list of transcendental variable names includes all of the variables in p except its main variable, which becomes the only algebraic variable of the chain. More...
 
 ZeroDimensionalRegularChain (const std::vector< RecursivePoly > polys)
 Construct a fixed zero-dimensional regular chain containing the polynomials in polys. More...
 
 ZeroDimensionalRegularChain (const ZeroDimensionalRegularChain< Field, RecursivePoly > &a)
 Copy constructor. More...
 
 ZeroDimensionalRegularChain (const RegularChain< Field, RecursivePoly > &a, int options=0)
 Copy constructor taking a regular chain as input. More...
 
 ZeroDimensionalRegularChain (ZeroDimensionalRegularChain< Field, RecursivePoly > &&a)
 Move constructor. More...
 
 ZeroDimensionalRegularChain (RegularChain< Field, RecursivePoly > &&a, int options=0)
 Move constructor taking a regular chain as input. More...
 
 ZeroDimensionalRegularChain (const std::vector< Symbol > &&vs, const std::vector< Symbol > &&avs, const std::vector< Symbol > &&tvs, const std::vector< RecursivePoly > &&ts, TriangularSetMode tsm, const mpz_class &c)
 Computational constructor: creates a triangular set given all the data. More...
 
ZeroDimensionalRegularChain< Field, RecursivePoly > & operator= (const ZeroDimensionalRegularChain< Field, RecursivePoly > &a)
 Assignment operator =. More...
 
BPASTriangularSet< Field, RecursivePoly > & operator= (const BPASTriangularSet< Field, RecursivePoly > &a) override
 Assignment operator = imposed by abstract class BPASTriangularSet. More...
 
BPASRegularChain< Field, RecursivePoly > & operator= (const BPASRegularChain< Field, RecursivePoly > &a) override
 Assignment operator = imposed by abstract class BPASRegularChain. More...
 
BPASZeroDimensionalRegularChain< Field, RecursivePoly > & operator= (const BPASZeroDimensionalRegularChain< Field, RecursivePoly > &a) override
 Assignment operator = imposed by abstract class BPASZeroDimensionalRegularChain. More...
 
ZeroDimensionalRegularChain< Field, RecursivePoly > & operator= (ZeroDimensionalRegularChain< Field, RecursivePoly > &&a)
 Move assignment operator = imposed by class ZeroDimensionalRegularChain. More...
 
BPASTriangularSet< Field, RecursivePoly > & operator= (BPASTriangularSet< Field, RecursivePoly > &&a) override
 Move assignment operator = imposed by abstract class BPASTriangularSet. More...
 
BPASRegularChain< Field, RecursivePoly > & operator= (BPASRegularChain< Field, RecursivePoly > &&a) override
 Move assignment operator =. More...
 
BPASZeroDimensionalRegularChain< Field, RecursivePoly > & operator= (BPASZeroDimensionalRegularChain< Field, RecursivePoly > &&a) override
 Move assignment operator = imposed by abstract class BPASZeroDimensionalRegularChain. More...
 
ZeroDimensionalRegularChain< Field, RecursivePoly > operator+ (const RecursivePoly &p) const
 Add operator +: Adds a polynomial p to a zero-dimensional regular chain and returns a new zero-dimensional regular chain, assuming that the main variable of p is neither algebraic nor transcendental, p contains no other non-transcendental variables, and that init(p) is regular modulo the saturated ideal of the current object. More...
 
ZeroDimensionalRegularChain< Field, RecursivePoly > & operator+= (const RecursivePoly &p)
 Add assignment operator +=: Adds a polynomial p to a zero-dimensional regular chain, assuming that the main variable of p is neither algebraic nor transcendental, p contains no other non-transcendental variables, and that init(p) is regular modulo the saturated ideal of the current object. More...
 
ZeroDimensionalRegularChain< Field, RecursivePoly > operator+ (const RegularChain< Field, RecursivePoly > &T) const
 Add operator +: Adds the polynomials of an input regular chain to the current object and returns a new zero-dimensional regular chain, assuming that the result of the addition is both a regular chain and zero-dimensional. More...
 
ZeroDimensionalRegularChain< Field, RecursivePoly > & operator+= (const RegularChain< Field, RecursivePoly > &T)
 Add assignment operator +=: Adds the polynomials of an input regular chain to the current object, assuming that the result of the addition is both a regular chain and zero-dimensional. More...
 
bool operator== (const ZeroDimensionalRegularChain< Field, RecursivePoly > &a) const
 Identity operator ==. More...
 
bool operator!= (const ZeroDimensionalRegularChain< Field, RecursivePoly > &a) const
 Negated identity operator !=. More...
 
int numberOfVariables () const
 Get the number of (potentially algebraic) variables. More...
 
int numberOfAlgebraicVariables () const
 Get the number of algebraic variables in the current object. More...
 
int numberOfTranscendentalVariables () const
 Get the number of transcendental variables in the current object. More...
 
std::vector< Symbolvariables () const
 Get the (potentially algebraic) variable names for the current object in decreasing order. More...
 
std::vector< SymbolmainVariables () const
 Get algebraic variables in the current object. More...
 
std::vector< SymboltranscendentalVariables () const
 Get transcendental variables in the current object. More...
 
bool isAlgebraic (const Symbol &s) const
 Find out if the input symbol is an algebraic variable of the current object. More...
 
bool isEmpty () const
 Find out if the current object is the empty chain. More...
 
std::vector< RecursivePoly > polynomials () const
 Get the list of polynomials in the current object. More...
 
RecursivePoly select (const Symbol &s) const
 Select the polynomial in the current object with main variable s, if it exists. More...
 
void lower (const Symbol &s, BPASTriangularSet< Field, RecursivePoly > &ts) const
 Returns the zero-dimensional regular chain consisting of polynomials with main variable strictly less than s. More...
 
void upper (const Symbol &s, BPASTriangularSet< Field, RecursivePoly > &ts) const
 Returns the regular chain consisting of polynomials with main variable strictly greater than s. More...
 
std::vector< ZeroDimensionalRegularChain< Field, RecursivePoly > > intersect (const RecursivePoly &p) const
 Compute the common solutions of the input polynomial and the current regular chain. More...
 
std::vector< PolyChainPair< RecursivePoly, ZeroDimensionalRegularChain< Field, RecursivePoly > > > regularize (const RecursivePoly &p) const
 Compute a decomposition of the current object such that on each component the input polynomial is either zero or regular modulo the saturated ideal of that component. More...
 
std::vector< PolyChainPair< RecursivePoly, ZeroDimensionalRegularChain< Field, RecursivePoly > > > regularizeInitial (const RecursivePoly &p) const
 Compute a decomposition of the current object such that on each component the initial of the input polynomial is either zero or regular modulo the saturated ideal of that component. More...
 
std::vector< BoolChainPair< ZeroDimensionalRegularChain< Field, RecursivePoly > > > isInvertible (const RecursivePoly &p) const
 Determine whether a recursively viewed polynomial is invertible with respect to the current regular chain. More...
 
std::vector< PolyChainPair< RecursivePoly, ZeroDimensionalRegularChain< Field, RecursivePoly > > > regularGCD (const RecursivePoly &p, const RecursivePoly &q, const Symbol &v)
 Compute the gcd of two input polynomials p and q modulo the saturated ideal of the current object. More...
 
void randomZeroDimensionalRegularChain (int nVars, int nTrcVars, int nTerms, unsigned long int coefBound, int pSparsity, bool includeNeg)
 Generate a random zero-dimensional regular chain based on the number of terms of the polynomials of the chain. More...
 
void randomZeroDimensionalRegularChain (int nVars, int nTrcVars, std::vector< int > maxDegs, unsigned long int coefBound, double pSparsity, bool includeNeg)
 Generate a random zero-dimensional regular chain based on a list of maximum degrees of variables in the polynomials in the chain. More...
 
- Public Member Functions inherited from RegularChain< Field, RecursivePoly >
 RegularChain ()
 Default constructor: creates an empty regular chain of variable size with empty list of transcendentals. More...
 
 RegularChain (const std::vector< Symbol > &xs)
 Construct an empty fixed variable list regular chain in the decreasingly ordered variables given by xs with empty list of transcendentals. More...
 
 RegularChain (const std::vector< Symbol > &xs, const std::vector< Symbol > &ts)
 Construct an empty fixed variable list regular chain in the decreasingly ordered variables given by xs and list of transcendentals given by ts. More...
 
 RegularChain (const RecursivePoly &p)
 Construct a variable regular chain containing p, such that the variables of p are treated as algebraic, with empty list of transcendentals. More...
 
 RegularChain (const RecursivePoly &p, const std::vector< Symbol > &ts)
 Construct a variable regular chain containing p, such that the variables in ts are treated as transcendental, while any remaining variables of p are treated as algebraic. More...
 
 RegularChain (const std::vector< RecursivePoly > polys)
 Construct a fixed regular chain containing the polynomials in polys. More...
 
 RegularChain (const ZeroDimensionalRegularChain< Field, RecursivePoly > &a)
 Copy constructor taking a zero-dimensional regular chain as input. More...
 
 RegularChain (const RegularChain< Field, RecursivePoly > &a)
 Copy constructor. More...
 
 RegularChain (const TriangularSet< Field, RecursivePoly > &a)
 Copy constructor taking a triangular set as input, assuming that the triangular set is a regular chain. More...
 
 RegularChain (ZeroDimensionalRegularChain< Field, RecursivePoly > &&a)
 Move constructor taking an r-value zero-dimensional regular chain as input. More...
 
 RegularChain (RegularChain< Field, RecursivePoly > &&a)
 Move constructor. More...
 
 RegularChain (TriangularSet< Field, RecursivePoly > &&a)
 Move constructor taking an r-value triangular set as input, assuming that the triangular set is a regular chain. More...
 
 RegularChain (const std::vector< Symbol > &&vs, const std::vector< Symbol > &&avs, const std::vector< Symbol > &&tvs, const std::vector< RecursivePoly > &&ts, TriangularSetMode tsm, const mpz_class &c)
 Computational constructor: creates a regular chain given all the data. More...
 
RegularChain< Field, RecursivePoly > & operator= (const ZeroDimensionalRegularChain< Field, RecursivePoly > &a)
 Assignment operator = for a zero-dimensional regular chain. More...
 
RegularChain< Field, RecursivePoly > & operator= (const RegularChain< Field, RecursivePoly > &a)
 Assignment operator =. More...
 
RegularChain< Field, RecursivePoly > & operator= (const TriangularSet< Field, RecursivePoly > &a)
 
RegularChain< Field, RecursivePoly > & operator= (ZeroDimensionalRegularChain< Field, RecursivePoly > &&a)
 Move assignment operator = taking an r-value zero-dimensional regular chain as input. More...
 
RegularChain< Field, RecursivePoly > & operator= (RegularChain< Field, RecursivePoly > &&a)
 Move assignment operator =. More...
 
RegularChain< Field, RecursivePoly > & operator= (TriangularSet< Field, RecursivePoly > &&a)
 
RegularChain< Field, RecursivePoly > operator+ (const RecursivePoly &p) const
 Add operator +: Adds a polynomial to a regular chain and returns a new regular chain, assuming that the main variable of p is above any in the current object and that init(p) is regular modulo the saturated ideal of the current object. More...
 
RegularChain< Field, RecursivePoly > & operator+= (const RecursivePoly &p)
 Add assignment operator +=: Adds a polynomial to a regular chain, assuming that the main variable of p is above any in the current object and that init(p) is regular modulo the saturated ideal of the current object. More...
 
RegularChain< Field, RecursivePoly > operator+ (const RegularChain< Field, RecursivePoly > &T) const
 Add operator +: Adds a regular chain to a regular chain and returns a new regular chain, assuming that the input is above the current object and the result of adding the chains is a regular chain. More...
 
RegularChain< Field, RecursivePoly > & operator+= (const RegularChain< Field, RecursivePoly > &T)
 Add assignment operator +=: Adds a regular chain to a regular chain, assuming that the input is above the current object and the result adding the chains is a regular chain. More...
 
bool operator== (const RegularChain< Field, RecursivePoly > &a) const
 Identity operator ==. More...
 
bool operator!= (const RegularChain< Field, RecursivePoly > &a) const
 Negated identity operator !=. More...
 
int options () const
 Get the encoded options of the regular chain, a bitwise or of RegularChainOption values. More...
 
void setOptions (int opts)
 Set the encoded options of the regular chain. More...
 
bool isSquareFree () const
 Find out if the regular chain is known to be squarefree. More...
 
bool isSaturatedIdealPrime () const
 
bool isInSaturatedIdealMinimal (const RecursivePoly &p) const
 Efficiently find out if the input polynomial is in the saturated ideal of the current regular chain. More...
 
bool isInSaturatedIdealMinimal_inner (const RecursivePoly &p) const
 
bool isInSaturatedIdeal (const RecursivePoly &p) const
 Find out if the input polynomial is in the saturated ideal of the current regular chain. More...
 
bool isInSaturatedIdeal (const RecursivePoly &p, RecursivePoly &redp) const
 Find out if the input polynomial is in the saturated ideal of the current regular chain. More...
 
bool isInRadicalSaturatedIdeal (const RecursivePoly &p) const
 Find out if the input polynomial is in the radical saturated ideal of the current regular chain. More...
 
bool isRegular (const RecursivePoly &p) const
 Find out if the input polynomial is regular modulo the saturated ideal of the current regular chain. More...
 
bool isIteratedResultantZeroModular (const RecursivePoly &p) const
 Using a modular method determine if the iterated resultant of p and this regular chain is zero or not. More...
 
void lowerSlice (const Symbol &s)
 Destructively converts the current object into lower(s) by changing the set of (potentially algebraic) variables to be only those below s in the variable order. More...
 
std::vector< RegularChain< Field, RecursivePoly > > triangularize (const std::vector< RecursivePoly > &F, bool lazardDecompose=false, int type=0)
 Compute a triangular decomposition of the list of input polynomials. More...
 
std::vector< RegularChain< Field, RecursivePoly > > intersect (const RecursivePoly &p, bool lazardDecompose=false, int heightBound=0) const
 Compute the common solutions of the input polynomial and the current regular chain. More...
 
std::vector< PolyChainPair< RecursivePoly, RegularChain< Field, RecursivePoly > > > regularize (const RecursivePoly &p, bool lazardDecompose=false, int heightBound=0) const
 Compute a decomposition of the current object such that on each component the input polynomial is either zero or regular modulo the saturated ideal of that component. More...
 
std::vector< PolyChainPair< RecursivePoly, RegularChain< Field, RecursivePoly > > > regularGCD (const RecursivePoly &p, const RecursivePoly &q, const Symbol &v, const SubResultantChain< RecursivePoly, RecursivePoly > &src, bool lazardDecompose=false, int heightBound=0) const
 Compute the gcd of two input polynomials p and q modulo the saturated ideal of the current object. More...
 
std::vector< RegularChain< Field, RecursivePoly > > squareFreePart (const RecursivePoly &p, const Symbol &v, bool lazardDecompose=false, int heightBound=0, int options=ASSUME_REGULAR) const
 A routine that decomposes the regular chain formed from the current object and an input polynomial into a set of squarefree regular chains. More...
 
void randomRegularChain (int nVars, int nAlgVars, int nTrcVars, int nTerms, unsigned long int coefBound, int pSparsity, bool includeNeg)
 Generate a random regular chain based on the number of terms of the polynomials in the chain. More...
 
void randomRegularChain (int nVars, int nAlgVars, int nTrcVars, std::vector< int > maxDegs, unsigned long int coefBound, double pSparsity, bool includeNeg)
 Generate a random regular chain based on a list of maximum degrees of variables in the polynomials in the chain. More...
 
bool cleanSet (std::vector< RecursivePoly > &polys) const
 Reduce the polynomials of the input vector modulo the saturated ideal of the current object and detect any obvious inconsistency among the set. More...
 
- Public Member Functions inherited from TriangularSet< Field, RecursivePoly >
 TriangularSet ()
 Default constructor: creates an empty triangular set of variable size with empty list of transcendentals. More...
 
 TriangularSet (const std::vector< Symbol > &xs)
 Construct an empty triangular set of fixed size in the s decreasingly ordered variables given by xs with empty list of transcendentals. More...
 
 TriangularSet (const std::vector< Symbol > &xs, const std::vector< Symbol > &ts)
 Construct an empty triangular set of fixed size in the s decreasingly ordered variables given by xs and list of transcendentals given by ts. More...
 
 TriangularSet (const RecursivePoly &p)
 Construct a variable triangular set containing p, such that the variables of p are treated as (potentially algebraic) variables, with empty list of transcendentals. More...
 
 TriangularSet (const RecursivePoly &p, const std::vector< Symbol > &ts)
 Construct a variable triangular set containing p, such that the variables in ts are treated as transcendental, while any remaining variables of p are treated as (potentially algebraic) variables. More...
 
 TriangularSet (const TriangularSet< Field, RecursivePoly > &a)
 Copy constructor. More...
 
 TriangularSet (TriangularSet< Field, RecursivePoly > &&a)
 Copy constructor. More...
 
 TriangularSet (const std::vector< Symbol > &&vs, const std::vector< Symbol > &&avs, const std::vector< Symbol > &&tvs, const std::vector< RecursivePoly > &&ts, TriangularSetMode tsm, const mpz_class &c)
 Move constructor. More...
 
 ~TriangularSet ()
 Deconstructor. More...
 
bool isEmpty () const
 Copy an object derived from abstract BPASTriangularSet class to type of current object. More...
 
bool isConstantPolynomial (const RecursivePoly &p) const
 Tests if the polynomial is constant relative to the TriangularSet, i.e., whether it is and element of the Field or its only variables are transcendental. More...
 
TriangularSet< Field, RecursivePoly > & operator= (const TriangularSet< Field, RecursivePoly > &a)
 Assignment operator =. More...
 
BPASTriangularSet< Field, RecursivePoly > & operator= (const BPASTriangularSet< Field, RecursivePoly > &a) override
 Assignment operator =. More...
 
TriangularSet< Field, RecursivePoly > & operator= (TriangularSet< Field, RecursivePoly > &&a)
 Move assignment operator =. More...
 
BPASTriangularSet< Field, RecursivePoly > & operator= (BPASTriangularSet< Field, RecursivePoly > &&a) override
 Move assignment operator =. More...
 
TriangularSet< Field, RecursivePoly > operator+ (const RecursivePoly &p)
 Add operator +. More...
 
TriangularSet< Field, RecursivePoly > & operator+= (const RecursivePoly &p)
 Add assignment operator +=. More...
 
bool operator== (const TriangularSet< Field, RecursivePoly > &a) const
 Identity operator ==. More...
 
bool operator!= (const TriangularSet< Field, RecursivePoly > &a) const
 Negated identity operator !=. More...
 
int numberOfVariables () const
 Get the number of variables. More...
 
int size () const
 Get the size of the triangular set. More...
 
int numberOfAlgebraicVariables () const
 Get the number of algebraic variables. More...
 
int numberOfTranscendentalVariables () const
 Get the number of transcendental variables. More...
 
std::vector< Symbolvariables () const
 Get the variable names in decreasing order. More...
 
std::vector< SymbolmainVariables () const
 Get the algebraic variables. More...
 
std::vector< SymboltranscendentalVariables () const
 Get the transcendentalVariables variables. More...
 
std::vector< SymbolallVariables () const
 Get the list of variables followed by the transcendental variables. More...
 
bool isAlgebraic (const Symbol &s) const
 Determine if the input variable s is algebraic, i.e., if the triangular set contains a polynomial with s its as leading variable. More...
 
bool isStronglyNormalized () const
 Return true if the triangular set is strongly normalized, i.e., the initals of all polynomials are in the Field; return false otherwise. More...
 
std::vector< RecursivePoly > polynomials () const
 Get the vector of polynoials in the triangular set. More...
 
int dimension () const
 Return the dimension of the triangular set (understood in terms of the space of (potentially algebraic) variables). More...
 
int dimensionLower (Symbol v) const
 Return the dimension of the triangular set lower(v) (understood in terms of the space of (potentially algebraic) variables). More...
 
int codimension () const
 Return the codimension of the triangular set (understood in terms of the space of (potentially algebraic) variables). More...
 
bool canComputeInDimensionZero (const RecursivePoly &p, bool excludeMainVariable=false) const
 Test to determine whether the triangular set can be treated as zero dimensional, i.e., whether the triangular set becomes zero dimensional when all non-algebraic variables are removed and whether the polynomial p contains only algebraic variables. More...
 
bool isZeroDimensionalMathematically () const
 Test to determine if only algebraic variables (aside from transcendentals) appear in the polynomials of the triangular set. More...
 
RecursivePoly select (const Symbol &s) const
 Select a polynomial given the leading variable; if no such polynomial, 0 is returned. More...
 
void makePrimitive ()
 Replace each polynomial of the triangular set with its primitive part. More...
 
void lower (const Symbol &s, BPASTriangularSet< Field, RecursivePoly > &ts) const
 Returns the triangular set consisting of polynomials with main variable strictly less than s. More...
 
void upper (const Symbol &s, BPASTriangularSet< Field, RecursivePoly > &ts) const
 Returns the triangular set consisting of polynomials with main variable strictly greater than s. More...
 
void cutChain (const TriangularSet< Field, RecursivePoly > &T, const Symbol &v, TriangularSet< Field, RecursivePoly > &Tlv, RecursivePoly &Tv, TriangularSet< Field, RecursivePoly > &Tgv) const
 Cut an input triangular set at the symbol v, returning the subchain below v, the polynomial with main variable v and the subchain above v. More...
 
void cutChain (const Symbol &v, RecursivePoly &Tv, TriangularSet< Field, RecursivePoly > &Tgv) const
 Cut the current object at the symbol v, returning the polynomial with main variable v and the subchain above v. More...
 
void cutChain (const Symbol &v, TriangularSet< Field, RecursivePoly > &Tlv, RecursivePoly &Tv) const
 Cut the current object at the symbol v, returning the subchain below v and the polynomial with main variable v. More...
 
RecursivePoly pseudoDivide (const RecursivePoly &p, std::vector< RecursivePoly > *quo=NULL, RecursivePoly *c=NULL) const
 Pseudo division: return the pseudo-remainder, the pseudo-quotients and c such that c*p = ∑(q_i T_i) + r. More...
 
RecursivePoly normalForm (const RecursivePoly &p, std::vector< RecursivePoly > *Q=NULL) const
 Return the normalForm of the input polynomial modulo the triangular set in the sense of Groebner basis. More...
 
RecursivePoly reduce (const RecursivePoly &p) const
 Reduce the input polynomial modulo the triangular set. More...
 
RecursivePoly reduce (const RecursivePoly &p, RecursivePoly &c, bool takeMainPrimitivePart=false, bool onlyInDimZero=false) const
 returns r such that c*r = p modulo sat(T) such that c has no algebraic variables, and c is returned as an input parameter. More...
 
RecursivePoly randomTriangularSetPolynomial (std::vector< Symbol > variables, int algVar, std::vector< Symbol > transcendentalVariables, int nTerms, unsigned long int coefBound, int pSparsity, bool includeNeg)
 Generate a random triangular set polynomial based on its number of terms. More...
 
RecursivePoly randomTriangularSetPolynomial (std::vector< Symbol > variables, int algVar, std::vector< Symbol > transcendentalVariables, std::vector< int > maxDegs, unsigned long int coefBound, double pSparsity, bool includeNeg)
 Generate a random triangular set polynomial based on its maximum degrees in its variables. More...
 
void randomTriangularSet (int nVars, int nAlgVars, int nTrcVars, int nTerms, unsigned long int coefBound, int pSparsity, bool includeNeg)
 Generate a random triangular set based on the number of terms of its polynomials. More...
 
void randomStronglyNormalizedTriangularSet (int nVars, int nAlgVars, int nTrcVars, int nTerms, unsigned long int coefBound, int pSparsity, bool includeNeg)
 Generate a random strongly normalized triangular set based on the number of terms in its polynomials. More...
 
void display ()
 Display the triangular set. More...
 
ExpressionTree convertToExpressionTree () const
 Convert a triangular set to an expression tree (array of its polynomials). More...
 

Additional Inherited Members

- Static Public Member Functions inherited from RegularChain< Field, RecursivePoly >
static std::vector< RegularChain< Field, RecursivePoly > > constructChains (const TriangularSet< Field, RecursivePoly > &T)
 Construct a set of regular chains from an input triangular set by triangularizing the elements of the input. More...
 
static bool compareCertifiedNoSplit (const RegularChain< Field, RecursivePoly > &rc1, const RegularChain< Field, RecursivePoly > &rc2)
 Determine whether or not the quasicomponent of the first regular chain is contained in the quasicomponent of the second using a certified method that returns true if the first is contained in the second and false if not. More...
 
static bool compareHeuristicNoSplit (const RegularChain< Field, RecursivePoly > &rc1, const RegularChain< Field, RecursivePoly > &rc2)
 Determine whether or not the quasicomponent of the first regular chain is contained in the quasicomponent of the second using a heuristic method that returns true when the first is contained in the second and false when no conclusion is possible. More...
 
static void removeRedundantChains (const std::vector< RegularChain< Field, RecursivePoly >> &lrc, std::vector< RegularChain< Field, RecursivePoly >> &results)
 Remove redundancy from the input list of regular chains. More...
 

Detailed Description

template<class Field, class RecursivePoly>
class ZeroDimensionalRegularChain< Field, RecursivePoly >

A class for handling regular chains in dimension zero.

A ZeroDimensionalRegularChain contains polynomials of type BPASRecursivelyViewedPolynomial, which have coefficients in a BPASField.

Constructor & Destructor Documentation

◆ ZeroDimensionalRegularChain() [1/10]

template<class Field, class RecursivePoly>
ZeroDimensionalRegularChain< Field, RecursivePoly >::ZeroDimensionalRegularChain ( )

Default constructor: creates an empty "zero-dimensional" regular chain with variable size with empty list of transcendentals.

Parameters

◆ ZeroDimensionalRegularChain() [2/10]

template<class Field, class RecursivePoly>
ZeroDimensionalRegularChain< Field, RecursivePoly >::ZeroDimensionalRegularChain ( const std::vector< Symbol > &  ps)

Construct an empty zero-dimensional regular chain of variable size with variables given by xs with empty list of transcendentals.

Parameters
psthe transcendental variable names

◆ ZeroDimensionalRegularChain() [3/10]

template<class Field, class RecursivePoly>
ZeroDimensionalRegularChain< Field, RecursivePoly >::ZeroDimensionalRegularChain ( const RecursivePoly &  p)

Construct a zero-dimensional regular chain of variable size containing a univariate polynomial p with empty list of transcendentals.

Parameters
pa recursively viewed polynomial with only one variable

◆ ZeroDimensionalRegularChain() [4/10]

template<class Field, class RecursivePoly>
ZeroDimensionalRegularChain< Field, RecursivePoly >::ZeroDimensionalRegularChain ( const RecursivePoly &  p,
const std::vector< Symbol > &  ts 
)

Construct a variable zero-dimensional regular chain containing p, such that the supplied list of transcendental variable names includes all of the variables in p except its main variable, which becomes the only algebraic variable of the chain.

Parameters
pa recursively viewed polynomial
tsthe transcendental variable names

◆ ZeroDimensionalRegularChain() [5/10]

template<class Field, class RecursivePoly>
ZeroDimensionalRegularChain< Field, RecursivePoly >::ZeroDimensionalRegularChain ( const std::vector< RecursivePoly >  polys)

Construct a fixed zero-dimensional regular chain containing the polynomials in polys.

Note
: It is assumed that the polynomials in polys form a valid zero-dimensional regular chain.
Parameters
polysa list of recursively viewed polynomials.

◆ ZeroDimensionalRegularChain() [6/10]

template<class Field, class RecursivePoly>
ZeroDimensionalRegularChain< Field, RecursivePoly >::ZeroDimensionalRegularChain ( const ZeroDimensionalRegularChain< Field, RecursivePoly > &  a)

Copy constructor.

Parameters
aa zero-dimensional regular chain

◆ ZeroDimensionalRegularChain() [7/10]

template<class Field, class RecursivePoly>
ZeroDimensionalRegularChain< Field, RecursivePoly >::ZeroDimensionalRegularChain ( const RegularChain< Field, RecursivePoly > &  a,
int  options = 0 
)

Copy constructor taking a regular chain as input.

Note that this routine allow the construction of fixed zero-dimensional regular chains that are technically positive-dimensional because the polynomials above the maximum algebraic variable are zero. This is allowed to optimize the performance of routines in the RegularChain class.

Parameters
aa regular chain

◆ ZeroDimensionalRegularChain() [8/10]

template<class Field, class RecursivePoly>
ZeroDimensionalRegularChain< Field, RecursivePoly >::ZeroDimensionalRegularChain ( ZeroDimensionalRegularChain< Field, RecursivePoly > &&  a)

Move constructor.

Parameters
aan r-value reference zero-dimensional regular chain

◆ ZeroDimensionalRegularChain() [9/10]

template<class Field, class RecursivePoly>
ZeroDimensionalRegularChain< Field, RecursivePoly >::ZeroDimensionalRegularChain ( RegularChain< Field, RecursivePoly > &&  a,
int  options = 0 
)

Move constructor taking a regular chain as input.

Note that this routine allow the construction of fixed zero-dimensional regular chains that are technically positive-dimensional because the polynomials above the maximum algebraic variable are zero. This is allowed to optimize the performance of routines in the RegularChain class.

Parameters
aan r-value reference regular chain

◆ ZeroDimensionalRegularChain() [10/10]

template<class Field, class RecursivePoly>
ZeroDimensionalRegularChain< Field, RecursivePoly >::ZeroDimensionalRegularChain ( const std::vector< Symbol > &&  vs,
const std::vector< Symbol > &&  avs,
const std::vector< Symbol > &&  tvs,
const std::vector< RecursivePoly > &&  ts,
TriangularSetMode  tsm,
const mpz_class &  c 
)

Computational constructor: creates a triangular set given all the data.

Parameters
vsrvalue reference to variables of the zero-dimensional regular chain
avsrvalue reference to algebraic variables of the zero-dimensional regular chain
tvsrvalue reference to transcendental variables of the zero-dimensional regular chain
polysrvalue reference to polynomials of the zero-dimensional regular chain
tsmwhether the zero-dimensional regular chain is variable or fixed
ccharacteristic of the zero-dimensional regular chain

Member Function Documentation

◆ _intersect()

template<class Field, class RecursivePoly>
std::vector<ZeroDimensionalRegularChain<Field,RecursivePoly> > ZeroDimensionalRegularChain< Field, RecursivePoly >::_intersect ( const RecursivePoly &  p) const

Compute the common solutions of the input polynomial and the current regular chain.

More precisely, this routine computes the intersection of the varieties of the input polynomial and the current zero-dimensional regular chain, expressed as a set of zero-dimensional regular chains.

Parameters
pa recursively viewed polynomial

◆ _regularGCD()

template<class Field, class RecursivePoly>
std::vector<PolyChainPair<RecursivePoly,ZeroDimensionalRegularChain<Field,RecursivePoly> > > ZeroDimensionalRegularChain< Field, RecursivePoly >::_regularGCD ( const RecursivePoly &  p,
const RecursivePoly &  q,
const Symbol v 
)

Compute the gcd of two input polynomials p and q modulo the saturated ideal of the current object.

The result is a list of pairs (g_i,T_i) of polynomials g_i and regular chains T_i, where g_i is gcd(p,q) modulo the saturated ideal of T_i.

Parameters
pa recursively viewed polynomial
qa recursively viewed polynomial
vcommon main variable of f and g

◆ _regularize()

template<class Field, class RecursivePoly>
std::vector<PolyChainPair<RecursivePoly,ZeroDimensionalRegularChain<Field,RecursivePoly> > > ZeroDimensionalRegularChain< Field, RecursivePoly >::_regularize ( const RecursivePoly &  p) const

Compute a decomposition of the current object such that on each component the input polynomial is either zero or regular modulo the saturated ideal of that component.

If the polynomial is zero, (0, T_i) is returned; if the polynomial is regular, (p_i, T_i), is returned, where p_i is equivalent to p modulo the saturated ideal of T_i.

Parameters
pa recursively viewed polynomial

◆ intersect()

template<class Field, class RecursivePoly>
std::vector<ZeroDimensionalRegularChain<Field,RecursivePoly> > ZeroDimensionalRegularChain< Field, RecursivePoly >::intersect ( const RecursivePoly &  p) const

Compute the common solutions of the input polynomial and the current regular chain.

More precisely, this routine computes the intersection of the varieties of the input polynomial and the current zero-dimensional regular chain, expressed as a set of zero-dimensional regular chains.

Parameters
pa recursively viewed polynomial

◆ isAlgebraic()

template<class Field, class RecursivePoly>
bool ZeroDimensionalRegularChain< Field, RecursivePoly >::isAlgebraic ( const Symbol s) const
inline

Find out if the input symbol is an algebraic variable of the current object.

Parameters
sa symbol

◆ isEmpty()

template<class Field, class RecursivePoly>
bool ZeroDimensionalRegularChain< Field, RecursivePoly >::isEmpty ( ) const
inline

Find out if the current object is the empty chain.

Parameters

◆ isInvertible()

template<class Field, class RecursivePoly>
std::vector<BoolChainPair<ZeroDimensionalRegularChain<Field,RecursivePoly> > > ZeroDimensionalRegularChain< Field, RecursivePoly >::isInvertible ( const RecursivePoly &  p) const

Determine whether a recursively viewed polynomial is invertible with respect to the current regular chain.

More precisely, compute a splitting consisting of pairs (b_i,T_i) such that b_i is true if f is invertible modulo T_i and b_i is false if f is zero modulo T_i.

Parameters
pa recursively viewed polynomial

◆ lower()

template<class Field, class RecursivePoly>
void ZeroDimensionalRegularChain< Field, RecursivePoly >::lower ( const Symbol s,
BPASTriangularSet< Field, RecursivePoly > &  ts 
) const
virtual

Returns the zero-dimensional regular chain consisting of polynomials with main variable strictly less than s.

NB: the type of the returned object is always a ZeroDimensionalRegularChain, since the lower chain is always genuinely zero-dimensional; however, if the current object is a variable zero-dimensional regular chain, the returned object really is zero-dimensional, in the sense that all variables are algebraic, but if the current object is a fixed type, then the chain may only be morally zero-dimensional in the sense that all variables below some variable are algebraic but the chain has non-algebraic variables.

Parameters
ssymbol of the main variable of specified element of the regular chain
tsThe returned regular chain

Reimplemented from RegularChain< Field, RecursivePoly >.

◆ mainVariables()

template<class Field, class RecursivePoly>
std::vector<Symbol> ZeroDimensionalRegularChain< Field, RecursivePoly >::mainVariables ( ) const
inline

Get algebraic variables in the current object.

Parameters

◆ numberOfAlgebraicVariables()

template<class Field, class RecursivePoly>
int ZeroDimensionalRegularChain< Field, RecursivePoly >::numberOfAlgebraicVariables ( ) const
inline

Get the number of algebraic variables in the current object.

Parameters

◆ numberOfTranscendentalVariables()

template<class Field, class RecursivePoly>
int ZeroDimensionalRegularChain< Field, RecursivePoly >::numberOfTranscendentalVariables ( ) const
inline

Get the number of transcendental variables in the current object.

Parameters

◆ numberOfVariables()

template<class Field, class RecursivePoly>
int ZeroDimensionalRegularChain< Field, RecursivePoly >::numberOfVariables ( ) const
inlinevirtual

Get the number of (potentially algebraic) variables.

This can only be different than the number of algebraic variables for fixed zero-dimensional regular chains.

Parameters

Reimplemented from RegularChain< Field, RecursivePoly >.

◆ operator!=()

template<class Field, class RecursivePoly>
bool ZeroDimensionalRegularChain< Field, RecursivePoly >::operator!= ( const ZeroDimensionalRegularChain< Field, RecursivePoly > &  a) const

Negated identity operator !=.

Parameters
aA triangular set

◆ operator+() [1/2]

template<class Field, class RecursivePoly>
ZeroDimensionalRegularChain<Field,RecursivePoly> ZeroDimensionalRegularChain< Field, RecursivePoly >::operator+ ( const RecursivePoly &  p) const

Add operator +: Adds a polynomial p to a zero-dimensional regular chain and returns a new zero-dimensional regular chain, assuming that the main variable of p is neither algebraic nor transcendental, p contains no other non-transcendental variables, and that init(p) is regular modulo the saturated ideal of the current object.

Parameters
pa recursively viewed polynomial

◆ operator+() [2/2]

template<class Field, class RecursivePoly>
ZeroDimensionalRegularChain<Field,RecursivePoly> ZeroDimensionalRegularChain< Field, RecursivePoly >::operator+ ( const RegularChain< Field, RecursivePoly > &  T) const

Add operator +: Adds the polynomials of an input regular chain to the current object and returns a new zero-dimensional regular chain, assuming that the result of the addition is both a regular chain and zero-dimensional.

Parameters
pa regular chain

◆ operator+=() [1/2]

template<class Field, class RecursivePoly>
ZeroDimensionalRegularChain<Field,RecursivePoly>& ZeroDimensionalRegularChain< Field, RecursivePoly >::operator+= ( const RecursivePoly &  p)

Add assignment operator +=: Adds a polynomial p to a zero-dimensional regular chain, assuming that the main variable of p is neither algebraic nor transcendental, p contains no other non-transcendental variables, and that init(p) is regular modulo the saturated ideal of the current object.

Parameters
pa recursively viewed polynomial

◆ operator+=() [2/2]

template<class Field, class RecursivePoly>
ZeroDimensionalRegularChain<Field,RecursivePoly>& ZeroDimensionalRegularChain< Field, RecursivePoly >::operator+= ( const RegularChain< Field, RecursivePoly > &  T)

Add assignment operator +=: Adds the polynomials of an input regular chain to the current object, assuming that the result of the addition is both a regular chain and zero-dimensional.

Parameters
pa recursively viewed polynomial

◆ operator=() [1/8]

template<class Field, class RecursivePoly>
ZeroDimensionalRegularChain<Field,RecursivePoly>& ZeroDimensionalRegularChain< Field, RecursivePoly >::operator= ( const ZeroDimensionalRegularChain< Field, RecursivePoly > &  a)

Assignment operator =.

Parameters
aa triangular set

◆ operator=() [2/8]

template<class Field, class RecursivePoly>
BPASTriangularSet<Field,RecursivePoly>& ZeroDimensionalRegularChain< Field, RecursivePoly >::operator= ( const BPASTriangularSet< Field, RecursivePoly > &  a)
overridevirtual

Assignment operator = imposed by abstract class BPASTriangularSet.

Parameters
aa triangular set

Reimplemented from RegularChain< Field, RecursivePoly >.

◆ operator=() [3/8]

template<class Field, class RecursivePoly>
BPASRegularChain<Field,RecursivePoly>& ZeroDimensionalRegularChain< Field, RecursivePoly >::operator= ( const BPASRegularChain< Field, RecursivePoly > &  a)
overridevirtual

Assignment operator = imposed by abstract class BPASRegularChain.

Parameters
aa regular chain

Reimplemented from RegularChain< Field, RecursivePoly >.

◆ operator=() [4/8]

template<class Field, class RecursivePoly>
BPASZeroDimensionalRegularChain<Field,RecursivePoly>& ZeroDimensionalRegularChain< Field, RecursivePoly >::operator= ( const BPASZeroDimensionalRegularChain< Field, RecursivePoly > &  a)
overridevirtual

Assignment operator = imposed by abstract class BPASZeroDimensionalRegularChain.

Parameters
aa zero-dimensional regular chain

Implements BPASZeroDimensionalRegularChain< Field, RecursivePoly >.

◆ operator=() [5/8]

template<class Field, class RecursivePoly>
ZeroDimensionalRegularChain<Field,RecursivePoly>& ZeroDimensionalRegularChain< Field, RecursivePoly >::operator= ( ZeroDimensionalRegularChain< Field, RecursivePoly > &&  a)

Move assignment operator = imposed by class ZeroDimensionalRegularChain.

Parameters
aa zero-dimensional regular chain

◆ operator=() [6/8]

template<class Field, class RecursivePoly>
BPASTriangularSet<Field,RecursivePoly>& ZeroDimensionalRegularChain< Field, RecursivePoly >::operator= ( BPASTriangularSet< Field, RecursivePoly > &&  a)
overridevirtual

Move assignment operator = imposed by abstract class BPASTriangularSet.

Parameters
aa triangular set

Reimplemented from RegularChain< Field, RecursivePoly >.

◆ operator=() [7/8]

template<class Field, class RecursivePoly>
BPASRegularChain<Field,RecursivePoly>& ZeroDimensionalRegularChain< Field, RecursivePoly >::operator= ( BPASRegularChain< Field, RecursivePoly > &&  a)
overridevirtual

Move assignment operator =.

Parameters
aa BPASRegularChain

Reimplemented from RegularChain< Field, RecursivePoly >.

◆ operator=() [8/8]

template<class Field, class RecursivePoly>
BPASZeroDimensionalRegularChain<Field,RecursivePoly>& ZeroDimensionalRegularChain< Field, RecursivePoly >::operator= ( BPASZeroDimensionalRegularChain< Field, RecursivePoly > &&  a)
overridevirtual

Move assignment operator = imposed by abstract class BPASZeroDimensionalRegularChain.

Parameters
aa zero-dimensional regular chain

Implements BPASZeroDimensionalRegularChain< Field, RecursivePoly >.

◆ operator==()

template<class Field, class RecursivePoly>
bool ZeroDimensionalRegularChain< Field, RecursivePoly >::operator== ( const ZeroDimensionalRegularChain< Field, RecursivePoly > &  a) const

Identity operator ==.

Parameters
aA triangular set

◆ polynomials()

template<class Field, class RecursivePoly>
std::vector<RecursivePoly> ZeroDimensionalRegularChain< Field, RecursivePoly >::polynomials ( ) const
inline

Get the list of polynomials in the current object.

Parameters

◆ randomZeroDimensionalRegularChain() [1/2]

template<class Field, class RecursivePoly>
void ZeroDimensionalRegularChain< Field, RecursivePoly >::randomZeroDimensionalRegularChain ( int  nVars,
int  nTrcVars,
int  nTerms,
unsigned long int  coefBound,
int  pSparsity,
bool  includeNeg 
)

Generate a random zero-dimensional regular chain based on the number of terms of the polynomials of the chain.

Parameters
nVarsnumber of variables = number of algebraic variables
nTrcVarsnumber of transcendental variables
nTermsmaximum number of terms in the polynomials
coefBoundmaximum coefficient size
pSparsitysparsity of the polynomials
includeNegwhether to include negative coefficients

◆ randomZeroDimensionalRegularChain() [2/2]

template<class Field, class RecursivePoly>
void ZeroDimensionalRegularChain< Field, RecursivePoly >::randomZeroDimensionalRegularChain ( int  nVars,
int  nTrcVars,
std::vector< int >  maxDegs,
unsigned long int  coefBound,
double  pSparsity,
bool  includeNeg 
)

Generate a random zero-dimensional regular chain based on a list of maximum degrees of variables in the polynomials in the chain.

Parameters
nVarsnumber of variables = number of algebraic variables
nTrcVarsnumber of transcendental variables
maxDegsmaximum degrees among the full list of variables
coefBoundmaximum coefficient size
pSparsitysparsity of the polynomials
includeNegwhether to include negative coefficients

◆ regularGCD()

template<class Field, class RecursivePoly>
std::vector<PolyChainPair<RecursivePoly,ZeroDimensionalRegularChain<Field,RecursivePoly> > > ZeroDimensionalRegularChain< Field, RecursivePoly >::regularGCD ( const RecursivePoly &  p,
const RecursivePoly &  q,
const Symbol v 
)

Compute the gcd of two input polynomials p and q modulo the saturated ideal of the current object.

The result is a list of pairs (g_i,T_i) of polynomials g_i and regular chains T_i, where g_i is gcd(p,q) modulo the saturated ideal of T_i.

Parameters
pa recursively viewed polynomial
qa recursively viewed polynomial
vcommon main variable of f and g

◆ regularize()

template<class Field, class RecursivePoly>
std::vector<PolyChainPair<RecursivePoly,ZeroDimensionalRegularChain<Field,RecursivePoly> > > ZeroDimensionalRegularChain< Field, RecursivePoly >::regularize ( const RecursivePoly &  p) const

Compute a decomposition of the current object such that on each component the input polynomial is either zero or regular modulo the saturated ideal of that component.

If the polynomial is zero, (0, T_i) is returned; if the polynomial is regular, (p_i, T_i), is returned, where p_i is equivalent to p modulo the saturated ideal of T_i.

Parameters
pa recursively viewed polynomial

◆ regularizeInitial()

template<class Field, class RecursivePoly>
std::vector<PolyChainPair<RecursivePoly,ZeroDimensionalRegularChain<Field,RecursivePoly> > > ZeroDimensionalRegularChain< Field, RecursivePoly >::regularizeInitial ( const RecursivePoly &  p) const

Compute a decomposition of the current object such that on each component the initial of the input polynomial is either zero or regular modulo the saturated ideal of that component.

If the initial is zero, (0, T_i) is returned; if the initial is regular, (p_i, T_i), is returned, where p_i is equivalent to p modulo the saturated ideal of T_i and p_i is reduced modulo Sat(T_i).

Parameters
pa recursively viewed polynomial

◆ select()

template<class Field, class RecursivePoly>
RecursivePoly ZeroDimensionalRegularChain< Field, RecursivePoly >::select ( const Symbol s) const
inlinevirtual

Select the polynomial in the current object with main variable s, if it exists.

Parameters
sa symbol

Reimplemented from RegularChain< Field, RecursivePoly >.

◆ transcendentalVariables()

template<class Field, class RecursivePoly>
std::vector<Symbol> ZeroDimensionalRegularChain< Field, RecursivePoly >::transcendentalVariables ( ) const
inline

Get transcendental variables in the current object.

Parameters

◆ upper()

template<class Field, class RecursivePoly>
void ZeroDimensionalRegularChain< Field, RecursivePoly >::upper ( const Symbol s,
BPASTriangularSet< Field, RecursivePoly > &  ts 
) const
virtual

Returns the regular chain consisting of polynomials with main variable strictly greater than s.

The type of the returned object is always a RegularChain, since the upper chain can be genuinely positive dimensional.

Parameters
ssymbol of the main variable of specified element of the regular chain
tsThe returned regular chain

Reimplemented from RegularChain< Field, RecursivePoly >.

◆ variables()

template<class Field, class RecursivePoly>
std::vector<Symbol> ZeroDimensionalRegularChain< Field, RecursivePoly >::variables ( ) const
inlinevirtual

Get the (potentially algebraic) variable names for the current object in decreasing order.

This can only be different from the list of algebraic variable names for fixed zero-dimensional regular chains.

Parameters

Reimplemented from RegularChain< Field, RecursivePoly >.


The documentation for this class was generated from the following files: