Basic Polynomial Algebra Subprograms (BPAS)  v. 1.791
BPASTriangularSet.hpp
1 
2 
3 #ifndef _BPAS_TRISET_H_
4 #define _BPAS_TRISET_H_
5 
6 #include "../Polynomial/BPASRecursivePolynomial.hpp"
7 
8 /**
9  * An abstract class defining the interface of a triangular set.
10  * A BPASTriangularSet is templated by a BPASRecursivelyViewedPolynomial with coefficients
11  * in a BPASField.
12  */
13 template <class Field, class RecursiveFieldPoly> // TODO: add Derived
15  private Derived_from<Field, BPASField<Field>>,
16  private Derived_from<RecursiveFieldPoly, BPASRecursivelyViewedPolynomial<Field,RecursiveFieldPoly>>
17 {
18  public:
19 
22 // virtual void copy(const BPASTriangularSet<Field,RecursiveFieldPoly>&) = 0;
23  virtual int numberOfVariables() const = 0;
24  virtual std::vector<Symbol> variables() const = 0;
25 
26  virtual RecursiveFieldPoly select(const Symbol&) const = 0;
27  virtual void lower(const Symbol&, BPASTriangularSet<Field,RecursiveFieldPoly>&) const = 0;
28  virtual void upper(const Symbol&, BPASTriangularSet<Field,RecursiveFieldPoly>&) const = 0;
29  virtual RecursiveFieldPoly pseudoDivide (const RecursiveFieldPoly&, std::vector<RecursiveFieldPoly>*, RecursiveFieldPoly*) const = 0;
30  virtual RecursiveFieldPoly normalForm (const RecursiveFieldPoly&, std::vector<RecursiveFieldPoly>*) const = 0;
31 };
32 
33 
34 #endif
An abstract class defining the interface of a triangular set.
Definition: BPASTriangularSet.hpp:14
An encapsulation of a mathematical symbol.
Definition: Symbol.hpp:23