BigattiHilbertAlgorithm.h
Go to the documentation of this file.
/* Frobby: Software for monomial ideal computations.
Copyright (C) 2009 University of Aarhus
Contact Bjarke Hammersholt Roune for license information (www.broune.com)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
*/
#ifndef BIGATTI_HILBERT_ALGORITHM_GUARD
#define BIGATTI_HILBERT_ALGORITHM_GUARD
#include "TaskEngine.h"
#include "Ideal.h"
#include "ObjectCache.h"
#include "BigattiState.h"
#include "BigattiBaseCase.h"
#include "BigattiPivotStrategy.h"
#include "BigattiParams.h"
class CoefBigTermConsumer;
class Term;
class BigattiHilbertAlgorithm {
public:
BigattiHilbertAlgorithm(unique_ptr<Ideal> ideal,
const TermTranslator& translator,
const BigattiParams& params,
unique_ptr<BigattiPivotStrategy> pivot,
CoefBigTermConsumer& consumer);
void setPrintStatistics(bool value);
void setPrintDebug(bool value);
void setUseSimplification(bool value);
void setDoCanonicalOutput(bool value);
void setComputeUnivariate(bool value);
void run();
private:
void processState(unique_ptr<BigattiState> state);
void getPivot(BigattiState& state, size_t& var, Exponent& e);
void simplify(BigattiState& state);
void freeState(unique_ptr<BigattiState> state);
size_t _varCount;
const TermTranslator& _translator;
CoefBigTermConsumer* _consumer;
TaskEngine _tasks;
ObjectCache<BigattiState> _stateCache;
Term _tmp_processState_pivot;
Term _tmp_simplify_gcd;
BigattiBaseCase _baseCase;
unique_ptr<BigattiPivotStrategy> _pivot;
bool _computeUnivariate;
BigattiParams _params;
friend class BigattiState;
};
#endif
BigattiBaseCase.h
BigattiParams.h
BigattiPivotStrategy.h
BigattiState.h
Ideal.h
ObjectCache.h
TaskEngine.h
BigattiBaseCase
This class handles the base cases for the Hilbert-Poincare series by Bigatti et.al.
Definition BigattiBaseCase.h:33
BigattiHilbertAlgorithm::freeState
void freeState(unique_ptr< BigattiState > state)
Definition BigattiHilbertAlgorithm.cpp:125
BigattiHilbertAlgorithm::_pivot
unique_ptr< BigattiPivotStrategy > _pivot
Definition BigattiHilbertAlgorithm.h:70
BigattiHilbertAlgorithm::setDoCanonicalOutput
void setDoCanonicalOutput(bool value)
BigattiHilbertAlgorithm::_varCount
size_t _varCount
Definition BigattiHilbertAlgorithm.h:59
BigattiHilbertAlgorithm::setPrintStatistics
void setPrintStatistics(bool value)
BigattiHilbertAlgorithm::BigattiHilbertAlgorithm
BigattiHilbertAlgorithm(unique_ptr< Ideal > ideal, const TermTranslator &translator, const BigattiParams &params, unique_ptr< BigattiPivotStrategy > pivot, CoefBigTermConsumer &consumer)
Construct an object for running the Bigatti et.al.
Definition BigattiHilbertAlgorithm.cpp:27
BigattiHilbertAlgorithm::_consumer
CoefBigTermConsumer * _consumer
Definition BigattiHilbertAlgorithm.h:61
BigattiHilbertAlgorithm::_params
BigattiParams _params
Definition BigattiHilbertAlgorithm.h:73
BigattiHilbertAlgorithm::getPivot
void getPivot(BigattiState &state, size_t &var, Exponent &e)
BigattiHilbertAlgorithm::_tasks
TaskEngine _tasks
Definition BigattiHilbertAlgorithm.h:62
BigattiHilbertAlgorithm::setPrintDebug
void setPrintDebug(bool value)
BigattiHilbertAlgorithm::_baseCase
BigattiBaseCase _baseCase
Definition BigattiHilbertAlgorithm.h:68
BigattiHilbertAlgorithm::simplify
void simplify(BigattiState &state)
Definition BigattiHilbertAlgorithm.cpp:109
BigattiHilbertAlgorithm::_tmp_processState_pivot
Term _tmp_processState_pivot
Definition BigattiHilbertAlgorithm.h:65
BigattiHilbertAlgorithm::_tmp_simplify_gcd
Term _tmp_simplify_gcd
Definition BigattiHilbertAlgorithm.h:66
BigattiHilbertAlgorithm::_computeUnivariate
bool _computeUnivariate
Definition BigattiHilbertAlgorithm.h:72
BigattiHilbertAlgorithm::setComputeUnivariate
void setComputeUnivariate(bool value)
Definition BigattiHilbertAlgorithm.cpp:50
BigattiHilbertAlgorithm::_stateCache
ObjectCache< BigattiState > _stateCache
Definition BigattiHilbertAlgorithm.h:63
BigattiHilbertAlgorithm::run
void run()
Definition BigattiHilbertAlgorithm.cpp:54
BigattiHilbertAlgorithm::processState
void processState(unique_ptr< BigattiState > state)
Definition BigattiHilbertAlgorithm.cpp:75
BigattiHilbertAlgorithm::setUseSimplification
void setUseSimplification(bool value)
BigattiHilbertAlgorithm::BigattiState
friend class BigattiState
Definition BigattiHilbertAlgorithm.h:75
BigattiHilbertAlgorithm::_translator
const TermTranslator & _translator
Definition BigattiHilbertAlgorithm.h:60
BigattiParams
Definition BigattiParams.h:25
CoefBigTermConsumer
Definition CoefBigTermConsumer.h:29
ObjectCache
An ObjectCache keeps a cache of previously-used objects to cut down on the number of allocations.
Definition ObjectCache.h:35
TaskEngine
TaskEngine handles a list of tasks that are to be carried out.
Definition TaskEngine.h:40
TermTranslator
TermTranslator handles translation between terms whose exponents are infinite precision integers and ...
Definition TermTranslator.h:41
Term
Term represents a product of variables which does not include a coefficient.
Definition Term.h:49
Exponent
unsigned int Exponent
Definition stdinc.h:89