Basic Polynomial Algebra Subprograms (BPAS)
v. 1.791

A class for handling regular chains of arbitrary dimension. More...
#include <regularchain.hpp>
Public Member Functions  
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 zerodimensional 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 rvalue zerodimensional regular chain as input. More...  
RegularChain (RegularChain< Field, RecursivePoly > &&a)  
Move constructor. More...  
RegularChain (TriangularSet< Field, RecursivePoly > &&a)  
Move constructor taking an rvalue 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 zerodimensional regular chain. More...  
RegularChain< Field, RecursivePoly > &  operator= (const RegularChain< Field, RecursivePoly > &a) 
Assignment operator =. More...  
RegularChain< Field, RecursivePoly > &  operator= (const TriangularSet< Field, RecursivePoly > &a) 
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...  
RegularChain< Field, RecursivePoly > &  operator= (ZeroDimensionalRegularChain< Field, RecursivePoly > &&a) 
Move assignment operator = taking an rvalue zerodimensional 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) 
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 = imposed by abstract class BPASRegularChain. 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== (const RegularChain< Field, RecursivePoly > &a) const 
Identity operator ==. More...  
bool  operator!= (const RegularChain< Field, RecursivePoly > &a) const 
Negated identity operator !=. More...  
int  numberOfVariables () const 
Get the number of (potentially algebraic) variables in the current object. 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...  
std::vector< Symbol >  variables () const 
Get the (potentially algebriac) variable names in decreasing order. 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 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...  
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< Symbol >  variables () const 
Get the variable names in decreasing order. More...  
std::vector< Symbol >  mainVariables () const 
Get the algebraic variables. More...  
std::vector< Symbol >  transcendentalVariables () const 
Get the transcendentalVariables variables. More...  
std::vector< Symbol >  allVariables () 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 nonalgebraic 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 pseudoremainder, the pseudoquotients 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...  
Static Public Member Functions  
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...  
Friends  
void  triangularizeTask (const RegularChain< Field, RecursivePoly > &rc, std::vector< RecursivePoly > &polys, bool lazardDecompose, int heightBound, TaskScheduler *tasks, std::shared_ptr< SynchronizedWriteVector< RegularChain< Field, RecursivePoly >>> results) 
void  intersectOne (int j, const RegularChain< Field, RecursivePoly > &T, const RecursivePoly &p, int lazardDecompose, int heightBound, SynchronizedWriteVector< RegularChain< Field, RecursivePoly >> &) 
A class for handling regular chains of arbitrary dimension.
A RegularChain contains polynomials of type BPASRecursivelyViewedPolynomial, which have coefficients in a BPASField.
RegularChain< Field, RecursivePoly >::RegularChain  (  ) 
Default constructor: creates an empty regular chain of variable size with empty list of transcendentals.
RegularChain< Field, RecursivePoly >::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.
xs  The variable names 
RegularChain< Field, RecursivePoly >::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.
xs  The variable names 
ts  The transcendental variable names 
RegularChain< Field, RecursivePoly >::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.
p  The polynomial to add 
RegularChain< Field, RecursivePoly >::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.
p  The polynomial to add 
ts  The transcendental variable names 
RegularChain< Field, RecursivePoly >::RegularChain  (  const std::vector< RecursivePoly >  polys  ) 
Construct a fixed regular chain containing the polynomials in polys.
It is assumed that the polynomials in polys form a valid regular chain.
polys  a list of recursively viewed polynomials. 
RegularChain< Field, RecursivePoly >::RegularChain  (  const ZeroDimensionalRegularChain< Field, RecursivePoly > &  a  ) 
Copy constructor taking a zerodimensional regular chain as input.
a  A zerodimensional regular chain 
RegularChain< Field, RecursivePoly >::RegularChain  (  const RegularChain< Field, RecursivePoly > &  a  ) 
Copy constructor.
a  A regular chain 
RegularChain< Field, RecursivePoly >::RegularChain  (  const TriangularSet< Field, RecursivePoly > &  a  ) 
Copy constructor taking a triangular set as input, assuming that the triangular set is a regular chain.
a  A triangular set 
RegularChain< Field, RecursivePoly >::RegularChain  (  ZeroDimensionalRegularChain< Field, RecursivePoly > &&  a  ) 
Move constructor taking an rvalue zerodimensional regular chain as input.
a  An rvalue reference zerodimensional regular chain 
RegularChain< Field, RecursivePoly >::RegularChain  (  RegularChain< Field, RecursivePoly > &&  a  ) 
Move constructor.
a  An rvalue reference regular chain 
RegularChain< Field, RecursivePoly >::RegularChain  (  TriangularSet< Field, RecursivePoly > &&  a  ) 
Move constructor taking an rvalue triangular set as input, assuming that the triangular set is a regular chain.
a  An rvalue reference triangular set 
RegularChain< Field, RecursivePoly >::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.
vs  rvalue reference to variables of the regular chain 
avs  rvalue reference to algebraic variables of the regular chain 
tvs  rvalue reference to transcendental variables of the regular chain 
polys  rvalue reference to polynomials of the regular chain 
tsm  whether the regular chain is variable or fixed 
c  characteristic of the regular chain 
bool RegularChain< Field, RecursivePoly >::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.
polys  a vector of recursively viewed polynomials 

static 
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.
rc1  the first regular chain 
rc1  the second regular chain 

static 
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.
rc1  the first regular chain 
rc1  the second regular chain 

static 
Construct a set of regular chains from an input triangular set by triangularizing the elements of the input.
T  A triangular set 
std::vector<RegularChain<Field,RecursivePoly> > 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 precisely, this routine computes the intersection of the varieties of the input polynomial and the current regular chain, expressed as a set of regular chains.
p  a recursively viewed polynomial 
bool RegularChain< Field, RecursivePoly >::isInRadicalSaturatedIdeal  (  const RecursivePoly &  p  )  const 
Find out if the input polynomial is in the radical saturated ideal of the current regular chain.
p  a recursively viewed polynomial 
bool RegularChain< Field, RecursivePoly >::isInSaturatedIdeal  (  const RecursivePoly &  p  )  const 
Find out if the input polynomial is in the saturated ideal of the current regular chain.
p  a recursively viewed polynomial 
bool RegularChain< Field, RecursivePoly >::isInSaturatedIdeal  (  const RecursivePoly &  p, 
RecursivePoly &  redp  
)  const 
Find out if the input polynomial is in the saturated ideal of the current regular chain.
and return the reduced input polynomial.
p  a recursively viewed polynomial 
bool RegularChain< Field, RecursivePoly >::isInSaturatedIdealMinimal  (  const RecursivePoly &  p  )  const 
Efficiently find out if the input polynomial is in the saturated ideal of the current regular chain.
p  a recursively viewed polynomial 
bool RegularChain< Field, RecursivePoly >::isIteratedResultantZeroModular  (  const RecursivePoly &  p  )  const 
Using a modular method determine if the iterated resultant of p and this regular chain is zero or not.
p  a recursively viewed polynomial 
bool RegularChain< Field, RecursivePoly >::isRegular  (  const RecursivePoly &  p  )  const 
Find out if the input polynomial is regular modulo the saturated ideal of the current regular chain.
p  a recursively viewed polynomial 

inline 
Find out if the regular chain is known to be squarefree.

virtual 
Returns the regular chain consisting of polynomials with main variable strictly less than s.
s  symbol of the main variable of specified element of the regular chain 
ts  The returned regular chain 
Implements BPASTriangularSet< Field, RecursivePoly >.
Reimplemented in ZeroDimensionalRegularChain< Field, RecursivePoly >.
void RegularChain< Field, RecursivePoly >::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.
s  symbol of the main variable of specified element of the regular chain 

inlinevirtual 
Get the number of (potentially algebraic) variables in the current object.
Implements BPASTriangularSet< Field, RecursivePoly >.
Reimplemented in ZeroDimensionalRegularChain< Field, RecursivePoly >.
bool RegularChain< Field, RecursivePoly >::operator!=  (  const RegularChain< Field, RecursivePoly > &  a  )  const 
Negated identity operator !=.
a  A regular chain 
RegularChain<Field,RecursivePoly> 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.
p  A recursively viewed polynomial 
RegularChain<Field,RecursivePoly> 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.
p  A regular chain 
RegularChain<Field,RecursivePoly>& 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.
p  A recursively viewed polynomial 
RegularChain<Field,RecursivePoly>& 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.
p  A regular chain 
RegularChain<Field,RecursivePoly>& RegularChain< Field, RecursivePoly >::operator=  (  const ZeroDimensionalRegularChain< Field, RecursivePoly > &  a  ) 
Assignment operator = for a zerodimensional regular chain.
a  A regular chain 
RegularChain<Field,RecursivePoly>& RegularChain< Field, RecursivePoly >::operator=  (  const RegularChain< Field, RecursivePoly > &  a  ) 
Assignment operator =.
a  A regular chain 

overridevirtual 
Assignment operator = imposed by abstract class BPASTriangularSet.
a  A triangular set 
Implements BPASTriangularSet< Field, RecursivePoly >.
Reimplemented in ZeroDimensionalRegularChain< Field, RecursivePoly >.

overridevirtual 
Assignment operator = imposed by abstract class BPASRegularChain.
a  A regular chain 
Implements BPASRegularChain< Field, RecursivePoly >.
Reimplemented in ZeroDimensionalRegularChain< Field, RecursivePoly >.
RegularChain<Field,RecursivePoly>& RegularChain< Field, RecursivePoly >::operator=  (  ZeroDimensionalRegularChain< Field, RecursivePoly > &&  a  ) 
Move assignment operator = taking an rvalue zerodimensional regular chain as input.
a  An rvalue reference zerodimensional regular chain 
RegularChain<Field,RecursivePoly>& RegularChain< Field, RecursivePoly >::operator=  (  RegularChain< Field, RecursivePoly > &&  a  ) 
Move assignment operator =.
a  An rvalue reference regular chain 

overridevirtual 
Move assignment operator = imposed by abstract class BPASTriangularSet.
a  An rvalue reference triangular set 
Implements BPASTriangularSet< Field, RecursivePoly >.
Reimplemented in ZeroDimensionalRegularChain< Field, RecursivePoly >.

overridevirtual 
Move assignment operator = imposed by abstract class BPASRegularChain.
a  An rvalue reference regular chain 
Implements BPASRegularChain< Field, RecursivePoly >.
Reimplemented in ZeroDimensionalRegularChain< Field, RecursivePoly >.
bool RegularChain< Field, RecursivePoly >::operator==  (  const RegularChain< Field, RecursivePoly > &  a  )  const 
Identity operator ==.
a  A regular chain 
int RegularChain< Field, RecursivePoly >::options  (  )  const 
Get the encoded options of the regular chain, a bitwise or of RegularChainOption values.
void RegularChain< Field, RecursivePoly >::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.
nVars  number of variables 
nAlgVars  number of algebraic variables 
nTrcVars  number of transcendental variables 
nTerms  number of terms in each polynomial 
coefBound  bound on the coefficient size 
pSparsity  sparsity of the polynomial in the term separation sense 
includeNeg  whether to include negative coefficients 
void RegularChain< Field, RecursivePoly >::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.
nVars  number of variables 
nAlgVars  number of algebraic variables 
nTrcVars  number of transcendental variables 
maxDegs  maximum degrees among the full list of variables 
coefBound  bound on the coefficient size 
pSparsity  sparsity of the polynomial in the term separation sense 
includeNeg  whether to include negative coefficients 
std::vector<PolyChainPair<RecursivePoly,RegularChain<Field,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.
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.
p  a recursively viewed polynomial 
q  a recursively viewed polynomial 
v  the common main variable of p and q 
src  the subresultant chain of p and q 
std::vector<PolyChainPair<RecursivePoly,RegularChain<Field,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.
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.
p  a recursively viewed polynomial 

static 
Remove redundancy from the input list of regular chains.
lrc  a list of regular chains 

inlinevirtual 
Select the polynomial in the current object with main variable s, if it exists.
s  a symbol 
Implements BPASTriangularSet< Field, RecursivePoly >.
Reimplemented in ZeroDimensionalRegularChain< Field, RecursivePoly >.
void RegularChain< Field, RecursivePoly >::setOptions  (  int  opts  ) 
Set the encoded options of the regular chain.
opts  bitwise or of RegularChainOption values 
std::vector<RegularChain<Field,RecursivePoly> > 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.
p  a recursively viewed polynomial such that init(p) is regular modulo the saturated ideal of the current object 
v  the main variable of p 
options  a bitwise or of RegularChainOption values (default assume that T+p is a regular chain, where T is the current object) 
std::vector<RegularChain<Field,RecursivePoly> > 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.
F  a vector of recursively viewed polynomials 
type  a flag to determine what strategy to use (type = 0 processes tasks as they are generated, type = 1 process by level of the tree of chains generted in the decomposition process) 

virtual 
Returns the regular chain consisting of polynomials with main variable strictly greater than s.
s  symbol of the main variable of specified element of the regular chain 
ts  The returned regular chain 
Implements BPASTriangularSet< Field, RecursivePoly >.
Reimplemented in ZeroDimensionalRegularChain< Field, RecursivePoly >.

inlinevirtual 
Get the (potentially algebriac) variable names in decreasing order.
Implements BPASTriangularSet< Field, RecursivePoly >.
Reimplemented in ZeroDimensionalRegularChain< Field, RecursivePoly >.