17 #ifndef FROBBY_INCLUSION_GUARD
18 #define FROBBY_INCLUSION_GUARD
25 extern const char*
const version;
32 class FrobbyIdealHelper;
40 Ideal(
size_t variableCount);
96 virtual void consume(mpz_ptr* exponentVector) = 0;
134 virtual void consume(
const mpz_t coefficient, mpz_ptr* exponentVector) = 0;
163 const mpz_t* reflectionMonomial,
168 const Ideal& reflectionMonomial,
This class provides a way to get monomial ideals as output from Frobby one generator at a time.
virtual void idealBegin(size_t varCount)
Called before output of a monomial ideal.
virtual ~IdealConsumer()
The provided implementation does nothing.
virtual void idealEnd()
Called after output of a monomial ideal.
virtual void consume(mpz_ptr *exponentVector)=0
For output of a generator of the ideal.
Ideal & operator=(const Ideal &ideal)
Ideal(size_t variableCount)
FrobbyImpl::FrobbyIdealHelper * _data
void addExponent(const mpz_t exponent)
Call addExponent once for each variable to add a term one exponent at a time.
This class provides a way to get polynomials as output from Frobby one term at a time.
virtual void polynomialBegin(size_t varCount)
Called before output of a polynomial.
virtual ~PolynomialConsumer()
The provided implementation does nothing.
virtual void polynomialEnd()
Called after output of a polynomial.
virtual void consume(const mpz_t coefficient, mpz_ptr *exponentVector)=0
For output of a term of the polynomial.
The namespace FrobbyImpl is for internal use inside Frobby only.
The namespace Frobby contains the public interface of Frobby.
void dimension(const Ideal &ideal, mpz_t dim)
Compute the Krull dimension of a monomial ideal.
bool alexanderDual(const Ideal &ideal, const mpz_t *reflectionMonomial, IdealConsumer &consumer)
Compute the Alexander dual of ideal using the point reflectionMonomial.
void irreducibleDecompositionAsIdeals(const Ideal &ideal, IdealConsumer &consumer)
Compute the irreducible decomposition of ideal.
void codimension(const Ideal &ideal, mpz_t codim)
Compute the codimension of a monomial ideal.
void associatedPrimes(const Ideal &ideal, IdealConsumer &consumer)
Compute the associated primes of the ideal.
void univariateHilbertPoincareSeries(const Ideal &ideal, PolynomialConsumer &consumer)
Compute the univariate Hilbert-Poincare series of ideal.
bool solveStandardMonomialProgram(const Ideal &ideal, const mpz_t *l, IdealConsumer &consumer)
Solve the optimization program.
bool irreducibleDecompositionAsMonomials(const Ideal &ideal, IdealConsumer &consumer)
Compute the irreducible decomposition of ideal, and encode each irreducible component as a monomial.
void maximalStandardMonomials(const Ideal &ideal, IdealConsumer &consumer)
Compute the maximal standard monomials of ideal.
void primaryDecomposition(const Ideal &ideal, IdealConsumer &consumer)
Compute the canonical primary decomposition of a monomial ideal.
void multigradedHilbertPoincareSeries(const Ideal &ideal, PolynomialConsumer &consumer)
Compute the multigraded Hilbert-Poincare series of ideal.
const char *const version