SliceFacade Class Reference
The Facade Module

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

`#include <SliceFacade.h>`

Inheritance diagram for SliceFacade:

## 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.
void | computeUnivariateHilbertSeries ()
| Compute the numerator of the univariate Hilbert-Poincare series.
void | computeIrreducibleDecomposition (bool encode)
| Compute the unique irredundant set of irreducible ideals whose intersection equals ideal.
mpz_class | computeDimension (bool codimension=false)
| Compute the Krull dimension of ideal.
void | computeDimension (mpz_class &dimension)
| Compute the dimension of ideal.
void | computePrimaryDecomposition ()
| Compute the unique "nicest" primary decomposition of the ideal.
void | computeMaximalStaircaseMonomials ()
| Compute the maximal staircase monomials of the ideal.
void | computeMaximalStandardMonomials ()
| Compute the maximal standard monomials of the ideal.
void | computeAlexanderDual (const vector< mpz_class > &point)
| Compute the Alexander dual of the ideal.
void | computeAlexanderDual ()
| Compute the Alexander dual of the ideal.
void | computeAssociatedPrimes ()
| Compute the associated primes of the ideal.
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.

## 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
unique_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.
virtual | ~Facade ()
void | printMessage (const char *message)
| Prints message to standard error if printing is turned on.
void | beginAction (const char *message)
| Prints message to standard error if printing is turned on, and records the time when the action started.
void | endAction ()
| Prints to standard error the time since the last call to beginAction.
bool | isPrintingActions () const
| Returns true if printing actions.

## 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

  point | The 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

  encode | Specifies 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 subject to `v` encoding an irreducible component of the ideal.

Parameters

  grading | The vector to optimize.
  optimalValue | Will be set to the value of the program, if any.
  reportAllSolutions | Output 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 subject to being a maximal standard monomial of the ideal.

Parameters

  grading | The vector to optimize.
  value | Will be set to the value of the program, if any.
  reportAllSolutions | Output 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

unique_ptr<SplitStrategy> SliceFacade::_split

private

Definition at line 225 of file SliceFacade.h.

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

- src/SliceFacade.h
- src/SliceFacade.cpp