Basic Polynomial Algebra Subprograms (BPAS)  v. 1.652
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

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 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== (ZeroDimensionalRegularChain< Field, RecursivePoly > &a)
Identity operator ==. More...

bool operator!= (ZeroDimensionalRegularChain< Field, RecursivePoly > &a)
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 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= (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+ (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== (RegularChain< Field, RecursivePoly > &a)
Identity operator ==. More...

bool operator!= (RegularChain< Field, RecursivePoly > &a)
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 isKnownToBeSquareFree () const
Find out if the regular chain is known to be squarefree. More...

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...

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)
Compute a triangular decomposition of the list of input polynomials. More...

std::vector< RegularChain< 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, RegularChain< 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, RegularChain< Field, RecursivePoly > > > regularGCD (const RecursivePoly &p, const RecursivePoly &q, const Symbol &v, const SubResultantChain< RecursivePoly, RecursivePoly > &src) 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, 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...

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)

TriangularSet< Field, RecursivePoly > & operator+= (const RecursivePoly &p)

bool operator== (TriangularSet< Field, RecursivePoly > &a)
Identity operator ==. More...

bool operator!= (TriangularSet< Field, RecursivePoly > &a)
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...

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 usePrimitiveFactorization=true, 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...

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 std::vector< RegularChain< Field, RecursivePoly > > removeRedundantChains (const std::vector< RegularChain< Field, RecursivePoly >> &lrc)
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.

## ◆ ZeroDimensionalRegularChain() [1/9]

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/9]

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
 ps the transcendental variable names

## ◆ ZeroDimensionalRegularChain() [3/9]

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
 p a recursively viewed polynomial with only one variable

## ◆ ZeroDimensionalRegularChain() [4/9]

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
 p a recursively viewed polynomial ts the transcendental variable names

## ◆ ZeroDimensionalRegularChain() [5/9]

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

Copy constructor.

Parameters
 a a zero-dimensional regular chain

## ◆ ZeroDimensionalRegularChain() [6/9]

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
 a a regular chain

## ◆ ZeroDimensionalRegularChain() [7/9]

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

Move constructor.

Parameters
 a an r-value reference zero-dimensional regular chain

## ◆ ZeroDimensionalRegularChain() [8/9]

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
 a an r-value reference regular chain

## ◆ ZeroDimensionalRegularChain() [9/9]

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
 vs variables of the zero-dimensional regular chain avs algebraic variables of the zero-dimensional regular chain tvs transcendental variables of the zero-dimensional regular chain polys polynomials of the zero-dimensional regular chain tsm whether the zero-dimensional regular chain is variable or fixed c characteristic of the zero-dimensional regular chain

## ◆ intersect()

template<class Field, class RecursivePoly>
 std::vector > 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
 p a 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
 s a 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 > > 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
 p a 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
 s symbol of the main variable of specified element of the regular chain ts The returned regular chain

Reimplemented from RegularChain< Field, RecursivePoly >.

## ◆ mainVariables()

template<class Field, class RecursivePoly>
 std::vector 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!= ( ZeroDimensionalRegularChain< Field, RecursivePoly > & a )

Negated identity operator !=.

Parameters
 a A triangular set

## ◆ operator+() [1/2]

template<class Field, class RecursivePoly>
 ZeroDimensionalRegularChain 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
 p a recursively viewed polynomial

## ◆ operator+() [2/2]

template<class Field, class RecursivePoly>
 ZeroDimensionalRegularChain 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
 p a regular chain

## ◆ operator+=() [1/2]

template<class Field, class RecursivePoly>
 ZeroDimensionalRegularChain& 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
 p a recursively viewed polynomial

## ◆ operator+=() [2/2]

template<class Field, class RecursivePoly>
 ZeroDimensionalRegularChain& 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
 p a recursively viewed polynomial

## ◆ operator=() [1/8]

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

Assignment operator =.

Parameters
 a a triangular set

## ◆ operator=() [2/8]

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

Assignment operator = imposed by abstract class BPASTriangularSet.

Parameters
 a a triangular set

Reimplemented from RegularChain< Field, RecursivePoly >.

## ◆ operator=() [3/8]

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

Assignment operator = imposed by abstract class BPASRegularChain.

Parameters
 a a regular chain

Reimplemented from RegularChain< Field, RecursivePoly >.

## ◆ operator=() [4/8]

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

Assignment operator = imposed by abstract class BPASZeroDimensionalRegularChain.

Parameters
 a a zero-dimensional regular chain

## ◆ operator=() [5/8]

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

Move assignment operator = imposed by class ZeroDimensionalRegularChain.

Parameters
 a a zero-dimensional regular chain

## ◆ operator=() [6/8]

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

Move assignment operator = imposed by abstract class BPASTriangularSet.

Parameters
 a a triangular set

Reimplemented from RegularChain< Field, RecursivePoly >.

## ◆ operator=() [7/8]

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

Move assignment operator =.

Parameters

Reimplemented from RegularChain< Field, RecursivePoly >.

## ◆ operator=() [8/8]

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

Move assignment operator = imposed by abstract class BPASZeroDimensionalRegularChain.

Parameters
 a a zero-dimensional regular chain

## ◆ operator==()

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

Identity operator ==.

Parameters
 a A triangular set

## ◆ polynomials()

template<class Field, class RecursivePoly>
 std::vector 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
 nVars number of variables = number of algebraic variables nTrcVars number of transcendental variables nTerms maximum number of terms in the polynomials coefBound maximum coefficient size pSparsity sparsity of the polynomials includeNeg whether 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
 nVars number of variables = number of algebraic variables nTrcVars number of transcendental variables maxDegs maximum degrees among the full list of variables coefBound maximum coefficient size pSparsity sparsity of the polynomials includeNeg whether to include negative coefficients

## ◆ regularGCD()

template<class Field, class RecursivePoly>
 std::vector > > 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
 p a recursively viewed polynomial q a recursively viewed polynomial v common main variable of f and g

## ◆ regularize()

template<class Field, class RecursivePoly>
 std::vector > > 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
 p a recursively viewed polynomial

## ◆ regularizeInitial()

template<class Field, class RecursivePoly>
 std::vector > > 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.

Parameters
 p a 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
 s a symbol

Reimplemented from RegularChain< Field, RecursivePoly >.

## ◆ transcendentalVariables()

template<class Field, class RecursivePoly>
 std::vector 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
 s symbol of the main variable of specified element of the regular chain ts The returned regular chain

Reimplemented from RegularChain< Field, RecursivePoly >.

## ◆ variables()

template<class Field, class RecursivePoly>
 std::vector 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: