80 beginAction(
"Computing multigraded Hilbert-Poincare series.");
95 beginAction(
"Computing univariate Hilbert-Poincare series.");
162 (
"Computing primary decomposition from irreducible decomposition.");
199 tmp.encodedDual(*
it, lcm);
231 beginAction(
"Computing maximal staircase monomials.");
244 beginAction(
"Preparing to compute maximal standard monomials.");
254 beginAction(
"Ensuring specified point is divisible by lcm.");
255 vector<mpz_class> lcm;
258 for (
size_t var = 0; var < lcm.size(); ++var) {
259 if (lcm[var] >
point[var]) {
262 (
"The specified point to dualize on is not divisible by the "
263 "least common multiple of the minimal generators of the ideal.");
268 beginAction(
"Preparing to compute Alexander dual.");
279 vector<mpz_class> lcm;
298 beginAction(
"Computing associated primes from irreducible decomposition.");
303 for (
size_t var = 0; var <
varCount; ++var) {
337(
const vector<mpz_class>&
grading,
343 beginAction(
"Preparing to solve optimization program.");
352(
const vector<mpz_class>&
grading,
364 beginAction(
"Computing irreducible decomposition.");
383 (
"Turning off Independence splits as they are not supported\n"
384 "for optimization.");
391 (
"Bound simplification requires using the bound to eliminate\n"
392 "non-improving slices, which has been turned off. Am now turning\n"
441 if (lcm.isSquareFree())
void nameFactoryRegister(NameFactory< AbstractProduct > &factory)
Registers the string returned by ConcreteProduct::getStaticName() to a function that default-construc...
void setToZeroOne(TermTranslator &translator)
TermTranslator & getTranslator()
void addPurePowersAtInfinity()
auto_ptr< TermConsumer > makeTranslatedIdealConsumer(bool split=false)
void setIdealAndIdealOutput(const CommonParams ¶ms, const BigIdeal &input, BigTermConsumer &output)
Use given ideal and support ideal output.
auto_ptr< CoefTermConsumer > makeToUnivariatePolyConsumer()
const VarNames & getNames()
void readIdealAndSetOutput(const CommonParams ¶ms, const DataType &output)
Read input ideal and support specified kind of output.
void setIdealAndPolyOutput(const CommonParams ¶ms, const BigIdeal &input, CoefBigTermConsumer &output)
Use given ideal and support polynomial output.
auto_ptr< CoefTermConsumer > makeTranslatedPolyConsumer()
bool getPrintStatistics() const
Returns whether to print statistics on what the algorithm did to standard error after it has run.
bool getPrintDebug() const
Returns whether to print information about what the algorithm is doing to standard error as it runs.
The intention of this class is to describe the different kinds of mathematical structures that Frobby...
This is the super class of all facades.
void beginAction(const char *message)
Prints message to standard error if printing is turned on, and records the time when the action start...
void endAction()
Prints to standard error the time since the last call to beginAction.
Represents a monomial ideal with int exponents.
bool containsIdentity() const
void getLcm(Exponent *lcm) const
Sets lcm to the least common multiple of all generators.
void takeRadicalNoMinimize()
Replaces all generators with their support and does not remove any non-minimal generators this may pr...
Cont::const_iterator const_iterator
size_t getVarCount() const
OptimizeStrategy optimizes a function on the maximal standard monomials of a monomial ideal using bra...
BoundSetting
The values of BoundSetting indicate how to use the bound.
@ DoNotUseBound
Make no use of the bound.
@ UseBoundToEliminateAndSimplify
Eliminate non-improving slices and simplify slices by trying to generate non-improving slices that ar...
@ UseBoundToEliminate
Eliminate non-improving slices, achieving a branch-and-bound algorithm in place of the usual backtrac...
void computeAssociatedPrimes()
Compute the associated primes of the ideal.
void runSliceAlgorithmWithOptions(SliceStrategy &strategy)
void computeMultigradedHilbertSeries()
Compute the numerator of the multigraded Hilbert-Poincare series.
bool solveStandardProgram(const vector< mpz_class > &grading, mpz_class &value, bool reportAllSolutions)
Solve an optimization program over maximal standard monomials.
bool solveIrreducibleDecompositionProgram(const vector< mpz_class > &grading, mpz_class &optimalValue, bool reportAllSolutions)
Solve an optimization program over irreducible components.
bool isFirstComputation() const
CommonParamsHelper _common
void getLcmOfIdeal(vector< mpz_class > &lcm)
mpz_class computeDimension(bool codimension=false)
Compute the Krull dimension of ideal.
SliceFacade(const SliceParams ¶ms, const DataType &output)
void computeUnivariateHilbertSeries()
Compute the numerator of the univariate Hilbert-Poincare series.
auto_ptr< SplitStrategy > _split
void computePrimaryDecomposition()
Compute the unique "nicest" primary decomposition of the ideal.
bool solveProgram(const vector< mpz_class > &grading, mpz_class &optimalValue, bool reportAllSolutions)
void computeIrreducibleDecomposition(bool encode)
Compute the unique irredundant set of irreducible ideals whose intersection equals ideal.
void computeMaximalStaircaseMonomials()
Compute the maximal staircase monomials of the ideal.
void computeMaximalStandardMonomials()
Compute the maximal standard monomials of the ideal.
void produceEncodedIrrDecom(TermConsumer &consumer)
void computeAlexanderDual()
Compute the Alexander dual of the ideal.
bool getUseSimplification() const
Apply simplification to the state of the algorithm when possible.
void useIndependenceSplits(bool value)
bool getUseIndependenceSplits() const
void useBoundElimination(bool value)
bool getUseBoundSimplification() const
Returns whether to simplify slices by seeking to generate non-improving slices that are then eliminat...
bool getUseBoundElimination() const
Returns whether to use branch-and-bound to speed up Slice optimization computations by eliminating no...
This class describes the interface of a strategy object for the Slice Algorithm.
static auto_ptr< SplitStrategy > createStrategy(const string &prefix)
Returns the strategy whose name has the given prefix.
A wrapper for a SliceStrategy that collects statistics on what is going on, while delegating everythi...
This class is used to transfer terms one at a time from one part of the program to another,...
A TermGrader assigns a value, the degree, to each monomial.
const mpz_class & getExponent(size_t variable, Exponent exponent) const
This method translates from IDs to arbitrary precision integers.
void addPurePowersAtInfinity(Ideal &ideal) const
Adds a generator of the form v^e, e > 0, for any variable v where generator of that form is not alrea...
void dualize(const vector< mpz_class > &a)
Replaces var^v by var^(a[i] - v) except that var^0 is left alone.
void setInfinityPowersToZero(Ideal &ideal) const
The method addPurePowersAtInfinity adds high exponents that map to zero.
void decrement()
Replaces var^v by var^(v-1).
Term represents a product of variables which does not include a coefficient.
void displayNote(const string &msg)
Display msg to standard error in a way that indicates that this is something that the user should tak...
This file contains functions for printing strings to standard error.
void reportError(const string &errorMsg)