carl
24.04
Computer ARithmetic Library
|
A general class for Groebner Basis calculation. More...
#include <GBProcedure.h>
Public Member Functions | |
GBProcedure () | |
GBProcedure (const GBProcedure &old) | |
virtual | ~GBProcedure ()=default |
GBProcedure & | operator= (const GBProcedure &rhs) |
bool | inputEmpty () const |
Check whether a polynomial is scheduled to be added to the Groebner basis. More... | |
size_t | nrOrigGenerators () const |
The number of polynomials which were originally added to the GB. More... | |
void | addPolynomial (const Polynomial &p) |
Add a polynmomial which is added to the groebner basis during the next calculate call. More... | |
bool | basisis_constant () const |
Checks whether the current representants of the GB contain a constant polynomial. More... | |
std::list< Polynomial > | listBasisPolynomials () const |
const std::vector< Polynomial > & | getBasisPolynomials () const |
void | printScheduledPolynomials (bool breakLines=true, bool printReasons=true, std::ostream &os=std::cout) const |
void | reset () |
Remove all polynomials from the Groebner basis. More... | |
const Ideal< Polynomial > & | getIdeal () const |
Get the ideal which encodes the GB. More... | |
void | calculate () |
Calculate the Groebner basis of the current GB union the scheduled polynomials. More... | |
std::list< std::pair< BitVector, BitVector > > | reduceInput () |
Reduce the input polynomials using the other input polynomials and the current Groebner basis. More... | |
Private Member Functions | |
void | reduceGB () |
Private Attributes | |
std::shared_ptr< Ideal< Polynomial > > | mGb |
The ideal represented by the current elements of the Groebner basis. More... | |
std::list< Polynomial > | mInputScheduled |
The polynomials which are added during the next call for calculate. More... | |
std::vector< Polynomial > | mOrigGenerators |
The input polynomials. More... | |
std::vector< size_t > | mOrigGeneratorsIndices |
Indices of the input polynomials. More... | |
A general class for Groebner Basis calculation.
It is parameterized not only in the type of polynomial to be used, but also in the concrete procedure to be used, and the way polynomials should be added to this procedure.
Please notice that this class is designed to support incremental calls. Therefore, it holds a queue with the polynomials which are added. Only upon calling the calculate method, these polynoimials are added to the actual groebner basis.
Moreover, we can
Definition at line 45 of file GBProcedure.h.
|
inline |
Definition at line 59 of file GBProcedure.h.
|
inline |
Definition at line 70 of file GBProcedure.h.
|
virtualdefault |
|
inlinevirtual |
Add a polynmomial which is added to the groebner basis during the next calculate call.
p | The polynomial to be added. |
Implements carl::AbstractGBProcedure< Polynomial >.
Definition at line 116 of file GBProcedure.h.
|
inline |
Checks whether the current representants of the GB contain a constant polynomial.
Definition at line 126 of file GBProcedure.h.
|
inlinevirtual |
Calculate the Groebner basis of the current GB union the scheduled polynomials.
Implements carl::AbstractGBProcedure< Polynomial >.
Definition at line 194 of file GBProcedure.h.
|
inline |
Definition at line 144 of file GBProcedure.h.
|
inlinevirtual |
Get the ideal which encodes the GB.
Implements carl::AbstractGBProcedure< Polynomial >.
Definition at line 186 of file GBProcedure.h.
|
inline |
Check whether a polynomial is scheduled to be added to the Groebner basis.
Definition at line 98 of file GBProcedure.h.
|
inline |
Definition at line 135 of file GBProcedure.h.
|
inline |
The number of polynomials which were originally added to the GB.
Definition at line 107 of file GBProcedure.h.
|
inline |
|
inline |
Definition at line 149 of file GBProcedure.h.
|
inlineprivate |
|
inlinevirtual |
Reduce the input polynomials using the other input polynomials and the current Groebner basis.
Implements carl::AbstractGBProcedure< Polynomial >.
Definition at line 216 of file GBProcedure.h.
|
inlinevirtual |
Remove all polynomials from the Groebner basis.
Implements carl::AbstractGBProcedure< Polynomial >.
Definition at line 176 of file GBProcedure.h.
|
private |
The ideal represented by the current elements of the Groebner basis.
Definition at line 49 of file GBProcedure.h.
|
private |
The polynomials which are added during the next call for calculate.
Definition at line 51 of file GBProcedure.h.
|
private |
The input polynomials.
Definition at line 53 of file GBProcedure.h.
|
private |
Indices of the input polynomials.
Definition at line 55 of file GBProcedure.h.