Frobby  0.9.5
Public Member Functions | Private Member Functions | Private Attributes | List of all members
SliceFacade Class Reference

A facade for operations on monomial ideals using the Slice Algorithm. More...

#include <SliceFacade.h>

Inheritance diagram for SliceFacade:
Facade

Public Member Functions

 SliceFacade (const SliceParams &params, const DataType &output)
 
 SliceFacade (const SliceParams &params, const BigIdeal &ideal, BigTermConsumer &consumer)
 
 SliceFacade (const SliceParams &params, const BigIdeal &ideal, CoefBigTermConsumer &consumer)
 
 ~SliceFacade ()
 
void computeMultigradedHilbertSeries ()
 Compute the numerator of the multigraded Hilbert-Poincare series. More...
 
void computeUnivariateHilbertSeries ()
 Compute the numerator of the univariate Hilbert-Poincare series. More...
 
void computeIrreducibleDecomposition (bool encode)
 Compute the unique irredundant set of irreducible ideals whose intersection equals ideal. More...
 
mpz_class computeDimension (bool codimension=false)
 Compute the Krull dimension of ideal. More...
 
void computeDimension (mpz_class &dimension)
 Compute the dimension of ideal. More...
 
void computePrimaryDecomposition ()
 Compute the unique "nicest" primary decomposition of the ideal. More...
 
void computeMaximalStaircaseMonomials ()
 Compute the maximal staircase monomials of the ideal. More...
 
void computeMaximalStandardMonomials ()
 Compute the maximal standard monomials of the ideal. More...
 
void computeAlexanderDual (const vector< mpz_class > &point)
 Compute the Alexander dual of the ideal. More...
 
void computeAlexanderDual ()
 Compute the Alexander dual of the ideal. More...
 
void computeAssociatedPrimes ()
 Compute the associated primes of the ideal. More...
 
bool solveStandardProgram (const vector< mpz_class > &grading, mpz_class &value, bool reportAllSolutions)
 Solve an optimization program over maximal standard monomials. More...
 
bool solveIrreducibleDecompositionProgram (const vector< mpz_class > &grading, mpz_class &optimalValue, bool reportAllSolutions)
 Solve an optimization program over irreducible components. More...
 

Private Member Functions

void produceEncodedIrrDecom (TermConsumer &consumer)
 
bool solveProgram (const vector< mpz_class > &grading, mpz_class &optimalValue, bool reportAllSolutions)
 
bool isFirstComputation () const
 
void takeRadical ()
 
void getLcmOfIdeal (vector< mpz_class > &lcm)
 
void runSliceAlgorithmWithOptions (SliceStrategy &strategy)
 

Private Attributes

SliceParams _params
 
CommonParamsHelper _common
 
auto_ptr< SplitStrategy_split
 

Additional Inherited Members

- Protected Member Functions inherited from Facade
 Facade (bool printActions)
 Constructs a facade that prints out what it is doing if printActions is true. More...
 
virtual ~Facade ()
 
void printMessage (const char *message)
 Prints message to standard error if printing is turned on. More...
 
void beginAction (const char *message)
 Prints message to standard error if printing is turned on, and records the time when the action started. More...
 
void endAction ()
 Prints to standard error the time since the last call to beginAction. More...
 
bool isPrintingActions () const
 Returns true if printing actions. More...
 

Detailed Description

A facade for operations on monomial ideals using the Slice Algorithm.

Definition at line 44 of file SliceFacade.h.

Constructor & Destructor Documentation

◆ SliceFacade() [1/3]

SliceFacade::SliceFacade ( const SliceParams params,
const DataType output 
)

Definition at line 50 of file SliceFacade.cpp.

◆ SliceFacade() [2/3]

SliceFacade::SliceFacade ( const SliceParams params,
const BigIdeal ideal,
BigTermConsumer consumer 
)

Definition at line 57 of file SliceFacade.cpp.

◆ SliceFacade() [3/3]

SliceFacade::SliceFacade ( const SliceParams params,
const BigIdeal ideal,
CoefBigTermConsumer consumer 
)

Definition at line 66 of file SliceFacade.cpp.

◆ ~SliceFacade()

SliceFacade::~SliceFacade ( )

Definition at line 75 of file SliceFacade.cpp.

Member Function Documentation

◆ computeAlexanderDual() [1/2]

void SliceFacade::computeAlexanderDual ( )

Compute the Alexander dual of the ideal.

The point to dualize on is the least common multiple of the minimal generators of the ideal.

The output monomials are provided in arbitrary order.

Definition at line 275 of file SliceFacade.cpp.

◆ computeAlexanderDual() [2/2]

void SliceFacade::computeAlexanderDual ( const vector< mpz_class > &  point)

Compute the Alexander dual of the ideal.

The output monomials are provided in arbitrary order.

It is an error if any minimal generator of ideal does not divide point. It is acceptable for a non-minimal generator to not divide point.

Parameters
pointThe point to dualize on.

Definition at line 250 of file SliceFacade.cpp.

◆ computeAssociatedPrimes()

void SliceFacade::computeAssociatedPrimes ( )

Compute the associated primes of the ideal.

These are represented as generators of an ideal and are provided in arbitrary order.

Todo:
Add a bool encode option to choose between output as actual ideals or as it is being done now.

Definition at line 286 of file SliceFacade.cpp.

◆ computeDimension() [1/2]

mpz_class SliceFacade::computeDimension ( bool  codimension = false)

Compute the Krull dimension of ideal.

By convention, this is -1 if ideal is generated by the identity. Compute the codimension if the codimension is true, which is the number of variables in the ambient ring minus the dimension.

Definition at line 114 of file SliceFacade.cpp.

◆ computeDimension() [2/2]

void SliceFacade::computeDimension ( mpz_class &  dimension)

Compute the dimension of ideal.

This is defined as the dimension of the zero set of the ideal. The ideal generated by the identity has the special property of having an empty zero set, and we define that to have dimension -1.

Todo:

Nope, it is the Krull dimension. although that may be the same. Fix this doc.

why are there two dimension methods?

◆ computeIrreducibleDecomposition()

void SliceFacade::computeIrreducibleDecomposition ( bool  encode)

Compute the unique irredundant set of irreducible ideals whose intersection equals ideal.

If encode is false, then each irreducible component is output as a separate ideal, which is only supported when writing to a file. If encode is true, then each irreducible component is provided as a term, where missing pure powers are encoded as a zero exponent.

The irreducible components are provided in arbitrary order.

Parameters
encodeSpecifies whether to encode the irreducible component as monomials.
Todo:
Check whether encode being false is really only supported for writing to a file. If so, fix it and update this documention.

Definition at line 109 of file SliceFacade.cpp.

◆ computeMaximalStaircaseMonomials()

void SliceFacade::computeMaximalStaircaseMonomials ( )

Compute the maximal staircase monomials of the ideal.

A monomial m is a staircase monomial if it belongs to the ideal, while the monomial m : (x_1 ... x_n) does not. A monomial m is a maximal staircase monomial if m is a staircase monomial and m * x_i is not for every variable x_i.

The output monomials are provided in arbitrary order.

Definition at line 229 of file SliceFacade.cpp.

◆ computeMaximalStandardMonomials()

void SliceFacade::computeMaximalStandardMonomials ( )

Compute the maximal standard monomials of the ideal.

A monomial m is a standard monomial if it does not belong to the ideal. A monomial m is a maximal standard monomial if it is standard and m * x_i is not standard for every variable x_i. The output monomials are provided in arbitrary order.

Definition at line 241 of file SliceFacade.cpp.

◆ computeMultigradedHilbertSeries()

void SliceFacade::computeMultigradedHilbertSeries ( )

Compute the numerator of the multigraded Hilbert-Poincare series.

This series is the sum of all monomials not in the ideal.

The multigraded Hilbert-Poincare series can be written as a single fraction with a polynomial as the numerator and the product of (1-x) as the denominator where x varies over all the variable in the ambient ring. It is this numerator that is computed.

Definition at line 78 of file SliceFacade.cpp.

◆ computePrimaryDecomposition()

void SliceFacade::computePrimaryDecomposition ( )

Compute the unique "nicest" primary decomposition of the ideal.

This is defined as the primary decomposition where each primary component is the intersection of the irreducible components with that same support.

Each primary component is provided as a separate ideal in arbitrary order.

Definition at line 150 of file SliceFacade.cpp.

◆ computeUnivariateHilbertSeries()

void SliceFacade::computeUnivariateHilbertSeries ( )

Compute the numerator of the univariate Hilbert-Poincare series.

This is defined as the multivariate Hilbert-Poincare series where every variable has been substituted with the same single variable t. See the documentation for computeMultigradedHilbertSeries() for more information.

The terms of the output polynomial are provided in ascending order according to exponent.

Definition at line 93 of file SliceFacade.cpp.

◆ getLcmOfIdeal()

void SliceFacade::getLcmOfIdeal ( vector< mpz_class > &  lcm)
private

Definition at line 455 of file SliceFacade.cpp.

◆ isFirstComputation()

bool SliceFacade::isFirstComputation ( ) const
private

Definition at line 429 of file SliceFacade.cpp.

◆ produceEncodedIrrDecom()

void SliceFacade::produceEncodedIrrDecom ( TermConsumer consumer)
private

Definition at line 362 of file SliceFacade.cpp.

◆ runSliceAlgorithmWithOptions()

void SliceFacade::runSliceAlgorithmWithOptions ( SliceStrategy strategy)
private

Definition at line 467 of file SliceFacade.cpp.

◆ solveIrreducibleDecompositionProgram()

bool SliceFacade::solveIrreducibleDecompositionProgram ( const vector< mpz_class > &  grading,
mpz_class &  optimalValue,
bool  reportAllSolutions 
)

Solve an optimization program over irreducible components.

The optimization program being solved is

maximize $\textrm{v} * \textrm{grading}$ subject to v encoding an irreducible component of the ideal.

Parameters
gradingThe vector to optimize.
optimalValueWill be set to the value of the program, if any.
reportAllSolutionsOutput all optimal solutions if true, otherwise report some single optimal solution if there is one.
Returns
true if there are any irreducible components.

Definition at line 336 of file SliceFacade.cpp.

◆ solveProgram()

bool SliceFacade::solveProgram ( const vector< mpz_class > &  grading,
mpz_class &  optimalValue,
bool  reportAllSolutions 
)
private

Definition at line 375 of file SliceFacade.cpp.

◆ solveStandardProgram()

bool SliceFacade::solveStandardProgram ( const vector< mpz_class > &  grading,
mpz_class &  value,
bool  reportAllSolutions 
)

Solve an optimization program over maximal standard monomials.

The optimization program being solved is

maximize $\textrm{v} * \textrm{grading}$ subject to $x ^ \textrm{v}$ being a maximal standard monomial of the ideal.

Parameters
gradingThe vector to optimize.
valueWill be set to the value of the program, if any.
reportAllSolutionsOutput all optimal solutions if true, otherwise report some optimal solution if there are any.
Returns
true if there are any maximal standard monomials.

Definition at line 351 of file SliceFacade.cpp.

◆ takeRadical()

void SliceFacade::takeRadical ( )
private

Definition at line 433 of file SliceFacade.cpp.

Member Data Documentation

◆ _common

CommonParamsHelper SliceFacade::_common
private

Definition at line 224 of file SliceFacade.h.

◆ _params

SliceParams SliceFacade::_params
private

Definition at line 223 of file SliceFacade.h.

◆ _split

auto_ptr<SplitStrategy> SliceFacade::_split
private

Definition at line 225 of file SliceFacade.h.


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