Frobby  0.9.1
BigattiBaseCase.h
Go to the documentation of this file.
1 /* Frobby: Software for monomial ideal computations.
2  Copyright (C) 2009 University of Aarhus
3  Contact Bjarke Hammersholt Roune for license information (www.broune.com)
4 
5  This program is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 2 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program. If not, see http://www.gnu.org/licenses/.
17 */
18 #ifndef BIGATTI_BASE_CASE_GUARD
19 #define BIGATTI_BASE_CASE_GUARD
20 
21 class BigattiState;
22 class TermTranslator;
23 
24 #include "Term.h"
25 #include "Ideal.h"
26 #include "HashPolynomial.h"
27 #include "UniHashPolynomial.h"
28 #include <vector>
29 
34  public:
38  BigattiBaseCase(const TermTranslator& translator);
39 
43  bool genericBaseCase(const BigattiState& state);
44 
47  bool baseCase(const BigattiState& state);
48 
51  void output(bool plus, const Term& term);
52 
56  void feedOutputTo(CoefBigTermConsumer& consumer, bool inCanonicalOrder);
57 
60  void setPrintDebug(bool value);
61 
64  void setComputeUnivariate(bool value);
65 
67  size_t getTotalBaseCasesEver() const;
68 
73  size_t getTotalTermsOutputEver() const;
74 
77  size_t getTotalTermsInOutput() const;
78 
79  private:
82  bool simpleBaseCase(const BigattiState& state);
83 
84  bool univariateAllFaces(const BigattiState& state);
85 
94  void enumerateScarfComplex(const BigattiState& state, bool allFaces);
95 
96  vector<size_t> _maxCount;
98  mpz_class _tmp;
99 
103 
107 
110  struct State {
113  bool plus;
114  };
115 
118  vector<State> _states;
119 
123 
126 
129 
132 
134 };
135 
136 #endif
BigattiBaseCase::baseCase
bool baseCase(const BigattiState &state)
Returns true if state is a base case slice without considering genericity.
Definition: BigattiBaseCase.cpp:49
CoefBigTermConsumer
Definition: CoefBigTermConsumer.h:29
HashPolynomial
A sparse multivariate polynomial represented by a hash table mapping terms to coefficients.
Definition: HashPolynomial.h:42
BigattiBaseCase::_translator
const TermTranslator & _translator
Used to translate the output from ints.
Definition: BigattiBaseCase.h:125
Ideal::const_iterator
Cont::const_iterator const_iterator
Definition: Ideal.h:43
HashPolynomial.h
BigattiBaseCase::_printDebug
bool _printDebug
Definition: BigattiBaseCase.h:133
BigattiState
Definition: BigattiState.h:27
BigattiBaseCase::_maxCount
vector< size_t > _maxCount
Definition: BigattiBaseCase.h:96
BigattiBaseCase::getTotalBaseCasesEver
size_t getTotalBaseCasesEver() const
Returns the total number of base cases this object has seen.
Definition: BigattiBaseCase.cpp:124
Term.h
TermTranslator
TermTranslator handles translation between terms whose exponents are infinite precision integers and ...
Definition: TermTranslator.h:41
BigattiBaseCase::_tmp
mpz_class _tmp
Definition: BigattiBaseCase.h:98
BigattiBaseCase::setComputeUnivariate
void setComputeUnivariate(bool value)
Use the fine grading if value is false, otherwise grade each variable by the same variable t.
Definition: BigattiBaseCase.cpp:120
BigattiBaseCase::_computeUnivariate
bool _computeUnivariate
Use the fine grading if false, otherwise grade each variable by the same variable t.
Definition: BigattiBaseCase.h:122
BigattiBaseCase::State::pos
Ideal::const_iterator pos
Definition: BigattiBaseCase.h:112
BigattiBaseCase::simpleBaseCase
bool simpleBaseCase(const BigattiState &state)
Computes the Hilbert-Poincare series of state and returns true if state is a particularly simple and ...
Definition: BigattiBaseCase.cpp:139
BigattiBaseCase::_states
vector< State > _states
Used in enumerateScarfCompex.
Definition: BigattiBaseCase.h:118
BigattiBaseCase::setPrintDebug
void setPrintDebug(bool value)
Starts to print debug output on what happens if value is true.
Definition: BigattiBaseCase.cpp:116
Ideal.h
BigattiBaseCase::State
Used in enumerateScarfComplex and necessary to have here to define _states.
Definition: BigattiBaseCase.h:110
UniHashPolynomial
A sparse univariate polynomial represented by a hash table mapping terms to coefficients.
Definition: UniHashPolynomial.h:41
BigattiBaseCase::_totalBaseCasesEver
size_t _totalBaseCasesEver
For statistics.
Definition: BigattiBaseCase.h:128
BigattiBaseCase::feedOutputTo
void feedOutputTo(CoefBigTermConsumer &consumer, bool inCanonicalOrder)
Feed the output Hilbert-Poincare numerator polynomial computed so far to the consumer.
Definition: BigattiBaseCase.cpp:108
Term
Term represents a product of variables which does not include a coefficient.
Definition: Term.h:49
BigattiBaseCase::State::plus
bool plus
Definition: BigattiBaseCase.h:113
UniHashPolynomial.h
BigattiBaseCase::_outputMultivariate
HashPolynomial _outputMultivariate
The part of the finely graded Hilbert-Poincare numerator polynomial computed so far.
Definition: BigattiBaseCase.h:102
BigattiBaseCase::output
void output(bool plus, const Term &term)
Add +term or -term to the output polynomial when plus is true or false respectively.
Definition: BigattiBaseCase.cpp:86
BigattiBaseCase::_outputUnivariate
UniHashPolynomial _outputUnivariate
The part of the coarsely graded Hilbert-Poincare numerator polynomial computed so far.
Definition: BigattiBaseCase.h:106
BigattiBaseCase::enumerateScarfComplex
void enumerateScarfComplex(const BigattiState &state, bool allFaces)
The ideal in state must be weakly generic.
Definition: BigattiBaseCase.cpp:241
BigattiBaseCase::BigattiBaseCase
BigattiBaseCase(const TermTranslator &translator)
Initialize this object to handle the computation of Hilbert-Poincare series numerator polynomials in ...
Definition: BigattiBaseCase.cpp:25
BigattiBaseCase::getTotalTermsInOutput
size_t getTotalTermsInOutput() const
Returns the number of terms in the output polynomial right now.
Definition: BigattiBaseCase.cpp:132
BigattiBaseCase::State::term
Term term
Definition: BigattiBaseCase.h:111
BigattiBaseCase::univariateAllFaces
bool univariateAllFaces(const BigattiState &state)
Definition: BigattiBaseCase.cpp:168
BigattiBaseCase
This class handles the base cases for the Hilbert-Poincare series by Bigatti et.al.
Definition: BigattiBaseCase.h:33
BigattiBaseCase::_lcm
Term _lcm
Definition: BigattiBaseCase.h:97
BigattiBaseCase::getTotalTermsOutputEver
size_t getTotalTermsOutputEver() const
Returns the total number of terms this object has output.
Definition: BigattiBaseCase.cpp:128
BigattiBaseCase::_totalTermsOutputEver
size_t _totalTermsOutputEver
For statistics.
Definition: BigattiBaseCase.h:131
BigattiBaseCase::genericBaseCase
bool genericBaseCase(const BigattiState &state)
Returns ture if state is a base case slice while also considering genericity.
Definition: BigattiBaseCase.cpp:36