 Basic Polynomial Algebra Subprograms (BPAS)  v. 1.791
TriangularSet< Field, RecursivePoly > Class Template Reference

A triangular set templated by a multivariate polynomial over a field. More...

#include <triangularset.hpp>

The $\texttt{TriangularSet}$ class is a container class for handing triangular sets, i.e. , sets of polynomials of $\mathbb{K}[x_1,\ldots,x_n]$, with \mathbb{K} a field, and variable ordering $x_1<\cdots x_n$, with pairwise distinct main variables. This class is intended mainly to support the regular chain classes. For the notions of a regular chain and a triangular set see https://en.wikipedia.org/wiki/Regular_chain and https://en.wikipedia.org/wiki/Wu%27s_method_of_characteristic_set#Triangular_set and as the references therein. More... (pdf)
Simplified semantic inheritance diagram for TriangularSet< Field, RecursivePoly >: Full inheritance diagram for TriangularSet< Field, RecursivePoly >:
[legend]

## Public Member Functions

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

## Friends

std::ostream & operator<< (std::ostream &out, const TriangularSet< Field, RecursivePoly > &a)
Overload stream operator << for triangular sets. More...

## Detailed Description

### template<class Field, class RecursivePoly> class TriangularSet< Field, RecursivePoly >

A triangular set templated by a multivariate polynomial over a field.

The field should be a BPASField and the multivariate polynomial should be recursively viewed, as in BPASRecursivelyViewedPolynomial.

## ◆ TriangularSet() [1/8]

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

Default constructor: creates an empty triangular set of variable size with empty list of transcendentals.

Parameters

## ◆ TriangularSet() [2/8]

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

Parameters
 xs The variable names

## ◆ TriangularSet() [3/8]

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

Parameters
 xs The variable names ts The transcendental variable names

## ◆ TriangularSet() [4/8]

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

Parameters
 p The recursively viewed polynomial to add

## ◆ TriangularSet() [5/8]

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

Parameters
 p The recursively viewed polynomial to add ts The transcendental variable names

## ◆ TriangularSet() [6/8]

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

Copy constructor.

Parameters
 a A triangular set

## ◆ TriangularSet() [7/8]

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

Copy constructor.

Parameters
 a A regular chain Copy constructor a A zero dimensional regular chain Move constructor. a An r-value triangular set

## ◆ TriangularSet() [8/8]

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

Parameters
 a An r-value regular chain Move constructor a An r-value zero dimensional regular chain Computational constructor: creates a triangular set given all the data. vs rvalue reference to variables of the triangular set avs rvalue reference to algebraic variables of the triangular set tvs rvalue reference to transcendental variables of the triangular set polys rvalue reference to polynomials of the triangular set tsm whether the triangular set is variable or fixed c characteristic of the triangular set

## ◆ ~TriangularSet()

template<class Field, class RecursivePoly>
 TriangularSet< Field, RecursivePoly >::~TriangularSet ( )

Deconstructor.

Parameters

## ◆ allVariables()

template<class Field, class RecursivePoly>
 std::vector TriangularSet< Field, RecursivePoly >::allVariables ( ) const

Get the list of variables followed by the transcendental variables.

Parameters

## ◆ canComputeInDimensionZero()

template<class Field, class RecursivePoly>
 bool TriangularSet< Field, RecursivePoly >::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.

Parameters
 p a recursively viewed polynomial p (optional) flag to exclude the main variable of p when determining whether it contains only algebraic variables (default false)

## ◆ codimension()

template<class Field, class RecursivePoly>
 int TriangularSet< Field, RecursivePoly >::codimension ( ) const
inline

Return the codimension of the triangular set (understood in terms of the space of (potentially algebraic) variables).

Parameters

## ◆ convertToExpressionTree()

template<class Field, class RecursivePoly>
 ExpressionTree TriangularSet< Field, RecursivePoly >::convertToExpressionTree ( ) const
inline

Convert a triangular set to an expression tree (array of its polynomials).

Parameters

## ◆ cutChain() [1/3]

template<class Field, class RecursivePoly>
 void TriangularSet< Field, RecursivePoly >::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.

Parameters
 T a triangular set v a symbol Tlv the subchain of T below v Tv the recursively viewed polynomial with main variable v, if it exists Tgv the subchain of T above v

## ◆ cutChain() [2/3]

template<class Field, class RecursivePoly>
 void TriangularSet< Field, RecursivePoly >::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.

Parameters
 v a symbol Tv the recursively viewed polynomial with main variable v, if it exists Tgv the subchain of the current object above v

## ◆ cutChain() [3/3]

template<class Field, class RecursivePoly>
 void TriangularSet< Field, RecursivePoly >::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.

Parameters
 v a symbol Tlv the subchain of the current object below v Tv the recursively viewed polynomial with main variable v, if it exists

## ◆ dimension()

template<class Field, class RecursivePoly>
 int TriangularSet< Field, RecursivePoly >::dimension ( ) const
inline

Return the dimension of the triangular set (understood in terms of the space of (potentially algebraic) variables).

Parameters

## ◆ dimensionLower()

template<class Field, class RecursivePoly>
 int TriangularSet< Field, RecursivePoly >::dimensionLower ( Symbol v ) const
inline

Return the dimension of the triangular set lower(v) (understood in terms of the space of (potentially algebraic) variables).

Parameters

## ◆ display()

template<class Field, class RecursivePoly>
 void TriangularSet< Field, RecursivePoly >::display ( )

Display the triangular set.

Parameters

## ◆ isAlgebraic()

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

Determine if the input variable s is algebraic, i.e., if the triangular set contains a polynomial with s its as leading variable.

Parameters
 s the input variable

## ◆ isConstantPolynomial()

template<class Field, class RecursivePoly>
 bool TriangularSet< Field, RecursivePoly >::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.

Parameters
 p a recursively viewed polynomial

## ◆ isEmpty()

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

Copy an object derived from abstract BPASTriangularSet class to type of current object.

Parameters
 ts triangular set to copy Tests if the TriangularSet is empty.

## ◆ isStronglyNormalized()

template<class Field, class RecursivePoly>
 bool TriangularSet< Field, RecursivePoly >::isStronglyNormalized ( ) const
inline

Return true if the triangular set is strongly normalized, i.e., the initals of all polynomials are in the Field; return false otherwise.

Parameters

## ◆ isZeroDimensionalMathematically()

template<class Field, class RecursivePoly>
 bool TriangularSet< Field, RecursivePoly >::isZeroDimensionalMathematically ( ) const

Test to determine if only algebraic variables (aside from transcendentals) appear in the polynomials of the triangular set.

Parameters

## ◆ lower()

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

Returns the triangular set consisting of polynomials with main variable strictly less than s.

Parameters
 s symbol of the main variable of specified element of the triangular set ts The returned triangular set

Implements BPASTriangularSet< Field, RecursivePoly >.

## ◆ mainVariables()

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

Get the algebraic variables.

Parameters

## ◆ makePrimitive()

template<class Field, class RecursivePoly>
 void TriangularSet< Field, RecursivePoly >::makePrimitive ( )

Replace each polynomial of the triangular set with its primitive part.

Parameters

## ◆ normalForm()

template<class Field, class RecursivePoly>
 RecursivePoly TriangularSet< Field, RecursivePoly >::normalForm ( const RecursivePoly & p, std::vector< RecursivePoly > * Q = NULL ) const
virtual

Return the normalForm of the input polynomial modulo the triangular set in the sense of Groebner basis.

Parameters
 p innput recursively viewed polynomial Q (optional) the array of quotient

Implements BPASTriangularSet< Field, RecursivePoly >.

## ◆ numberOfAlgebraicVariables()

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

Get the number of algebraic variables.

Parameters

## ◆ numberOfTranscendentalVariables()

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

Get the number of transcendental variables.

Parameters

## ◆ numberOfVariables()

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

Get the number of variables.

Parameters

Implements BPASTriangularSet< Field, RecursivePoly >.

## ◆ operator!=()

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

Negated identity operator !=.

Parameters
 a A triangular set

## ◆ operator+()

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

Adds a polynomial to a triangular set and returns a new triangular set.

Parameters
 p A recursively viewed polynomial

## ◆ operator+=()

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

Adds a polynomial to a triangular set.

Parameters
 p A recursively viewed polynomial

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

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

Assignment operator =.

Parameters
 a A triangular set

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

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

Assignment operator =.

Parameters
 a A triangular set

Implements BPASTriangularSet< Field, RecursivePoly >.

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

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

Move assignment operator =.

Parameters
 a A triangular set

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

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

Move assignment operator =.

Parameters
 a A triangular set

Implements BPASTriangularSet< Field, RecursivePoly >.

## ◆ operator==()

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

Identity operator ==.

Parameters
 a A triangular set

## ◆ polynomials()

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

Get the vector of polynoials in the triangular set.

Parameters

## ◆ pseudoDivide()

template<class Field, class RecursivePoly>
 RecursivePoly TriangularSet< Field, RecursivePoly >::pseudoDivide ( const RecursivePoly & p, std::vector< RecursivePoly > * quo = NULL, RecursivePoly * c = NULL ) const
virtual

Pseudo division: return the pseudo-remainder, the pseudo-quotients and c such that c*p = ∑(q_i T_i) + r.

Parameters
 p an input recursively viewed polynomial quo (optional) the array of quotients c (optional) the constant multiplied to the input polynomial

Implements BPASTriangularSet< Field, RecursivePoly >.

## ◆ randomStronglyNormalizedTriangularSet()

template<class Field, class RecursivePoly>
 void TriangularSet< Field, RecursivePoly >::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.

Parameters
 nVars number of variables nAlgVars number of algebraic variables nTrcVars number of transcendental variables nTerms number of terms in the polynomial coefBound maximum size of the coefficients pSparsity sparsity of the polynomial includeNeg whether to include negative coefficients

## ◆ randomTriangularSet()

template<class Field, class RecursivePoly>
 void TriangularSet< Field, RecursivePoly >::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.

Parameters
 nVars number of variables nAlgVars number of algebraic variables nTrcVars number of transcendental variables nTerms number of terms in the polynomial coefBound maximum size of the coefficients pSparsity sparsity of the polynomial includeNeg whether to include negative coefficients

## ◆ randomTriangularSetPolynomial() [1/2]

template<class Field, class RecursivePoly>
 RecursivePoly TriangularSet< Field, 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.

Parameters
 variables variables of the triangular set algVar index of the algebraic variable transcendentalVariables transcendental variables of the triangular set nTerms number of terms in the polynomial coefBound maximum size of the coefficients pSparsity sparsity of the polynomial includeNeg whether to include negative coefficients

## ◆ randomTriangularSetPolynomial() [2/2]

template<class Field, class RecursivePoly>
 RecursivePoly TriangularSet< Field, 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.

Parameters
 variables variables of the triangular set algVar index of the algebraic variable transcendentalVariables transcendental variables of the triangular set maxDegs vector of maximum degrees among the set of variables coefBound maximum size of the coefficients pSparsity proportional sparsity of the polynomial includeNeg whether to include negative coefficients

## ◆ reduce() [1/2]

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

Reduce the input polynomial modulo the triangular set.

Parameters
 p input recursively viewed polynomial

## ◆ reduce() [2/2]

template<class Field, class RecursivePoly>
 RecursivePoly TriangularSet< Field, 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.

Parameters
 p input recursively viewed polynomial c returned value of the content of p modulo sat(T) usePrimitiveFactorization (optional) whether to use primitive factorization to compute c (default true) onlyInDimZero (optional) only perform the reduction if the canComputeInDimensionZero(p) is true (default false)

## ◆ select()

template<class Field, class RecursivePoly>
 RecursivePoly TriangularSet< Field, RecursivePoly >::select ( const Symbol & s ) const
virtual

Select a polynomial given the leading variable; if no such polynomial, 0 is returned.

Parameters

Implements BPASTriangularSet< Field, RecursivePoly >.

## ◆ size()

template<class Field, class RecursivePoly>
 int TriangularSet< Field, RecursivePoly >::size ( ) const
inline

Get the size of the triangular set.

Parameters

## ◆ transcendentalVariables()

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

Get the transcendentalVariables variables.

Parameters

## ◆ upper()

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

Returns the triangular set consisting of polynomials with main variable strictly greater than s.

Parameters
 s symbol of the main variable of specified element of the triangular set ts The returned triangular set

Implements BPASTriangularSet< Field, RecursivePoly >.

## ◆ variables()

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

Get the variable names in decreasing order.

Parameters

Implements BPASTriangularSet< Field, RecursivePoly >.

## ◆ operator<<

template<class Field, class RecursivePoly>
 std::ostream& operator<< ( std::ostream & out, const TriangularSet< Field, RecursivePoly > & a )
friend

Overload stream operator << for triangular sets.

Parameters
 out Stream object a A triangular set

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