 |
My Project
UNKNOWN_GIT_VERSION
|
Go to the documentation of this file.
42 poly
leadmonom(
const poly
p,
const ring r,
const bool bSetZeroComp =
true);
47 poly
p_Tail(
const poly
p,
const ring r);
54 ideal
id_Tail(
const ideal
id,
const ring r);
72 typedef std::stack <sBucket_pt>
Base;
233 bool DivisibilityCheck(
const poly multiplier,
const poly t,
const unsigned long not_sev,
const ring r)
const;
240 inline unsigned long sev()
const {
return m_sev; };
327 typedef std::map<TCacheKey, TCacheValue, CCacheCompare>
TP2PCache;
374 if (syzLeads !=
NULL)
428 poly
ReduceTerm(poly multiplier, poly term4reduction, poly syztermCheck)
const;
533 static inline poly
ReduceTerm(poly multiplier, poly term4reduction, poly syztermCheck,
537 return syz.
ReduceTerm(multiplier, term4reduction, syztermCheck);
void operator=(const CReducerFinder &)
const ring m_rBaseRing
global base ring
unsigned long sev() const
poly _FindReducer(const poly product, const poly syzterm) const
just for testing via the wrapper below
const CReducerFinder m_div
Divisor finder.
ideal Compute1LeadingSyzygyTerms()
just leading terms
const poly m_lt
the leading term itself L[label-1]
const int OPT__HYBRIDNF
Use the usual NF's S-poly reduction while dropping lower order terms 2 means - smart selection!
SchreyerSyzygyComputation(const ideal idLeads, const ideal idTails, const SchreyerSyzygyComputationFlags setting)
Construct a global object for given input data (separated into leads & tails)
SBucketFactory m_sum_bucket_factory
used for simple summing up
CCacheCompare(const CCacheCompare &lhs)
void operator=(const SBucketFactory &)
SchreyerSyzygyComputationFlags(idhdl rootRingHdl)
CLCM(const ideal &L, const SchreyerSyzygyComputationFlags &flags)
friend class CDivisorEnumerator2
ideal m_LS
leading syzygy terms used for reducing syzygy tails
CReducerFinder m_checker
for checking tail-terms and makeing them irreducible (wrt m_LS!)
bool operator()(const TCacheKey &l, const TCacheKey &r) const
CLeadingTerm(const CLeadingTerm &)
poly TraverseTail(poly multiplier, poly tail) const
called only from above and from outside (for testing)
~SchreyerSyzygyComputation()
Destructor should not destruct the resulting m_syzLeads, m_syzTails.
const ideal m_idTails
input tails
void PrintStats() const
print statistics about the used heuristics
bool CheckLT(const ideal &L) const
static void _DestroyBucket(Bucket &bt)
we only expect empty buckets to be left at the end for destructor bt will be set to NULL
int status int void size_t count int const void size_t count const char int flags
ideal m_syzTails
output (syzygy) tails
bool DivisibilityCheck(const poly multiplier, const poly t, const unsigned long not_sev, const ring r) const
const bool OPT__PROT
TEST_OPT_PROT.
const unsigned int m_label
index in the main L[] + 1
CReducerFinder(const ideal L, const SchreyerSyzygyComputationFlags &flags)
goes over all leading terms
poly FindReducer(const poly multiplier, const poly monom, const poly syzterm, const CReducerFinder &checker) const
void nextSyzygyLayer() const
poly FindReducer(const poly product, const poly syzterm, const CReducerFinder &checker) const
poly SchreyerSyzygyNF(const poly syz_lead, poly syz_2=NULL) const
Main HybridNF == 1: poly reduce + LOT + LCM?
const ideal m_idLeads
input leading terms
SBucketFactory(const SBucketFactory &)
const int OPT__TAILREDSYZ
Reduce syzygy tails wrt the leading syzygy terms.
bool Check(const poly m) const
void ComputeLeadingSyzygyTerms(bool bComputeSecondTerms=true)
Computes Syz(leads) or only LEAD of it. The result is stored into m_syzLeads.
void putBucket(const Bucket &bt, const bool replace=false)
int PreProcessTerm(const poly t, CReducerFinder &syzChecker) const
is the term to be "preprocessed" as lower order term or lead to only reducible syzygies....
const int OPT__IGNORETAILS
ignore tails and compute the pure Schreyer frame
poly TraverseNF(const poly syz_lead, const poly syz_2=NULL) const
poly TraverseTail(poly multiplier, const int tail) const
High level caching function!!!
void ComputeSyzygy()
The main driver function: computes.
SchreyerSyzygyComputationFlags(const SchreyerSyzygyComputationFlags &attr)
Bucket getBucket(const ring r, const bool remove=true)
poly ReduceTerm(poly multiplier, poly term4reduction, poly syztermCheck) const
TODO: save shortcut (syz: |-.->) LM(m) * "t" -> ? ???
bool IsDivisible(const poly q) const
std::stack< sBucket_pt > Base
const int OPT__SYZCHECK
CheckSyzygyProperty: TODO.
poly ComputeImage(poly multiplier, const int tail) const
low level computation...
const int OPT__NOCACHING
no caching/stores/lookups
Computation attribute storage.
static Bucket _CreateBucket(const ring r)
inital allocation for new buckets
void operator=(const CLeadingTerm &)
SBucketFactory(const ring r)
ideal Compute2LeadingSyzygyTerms()
leading + second terms
CCacheCompare(const ring &r)
void ReadOffResult(ideal &syzL, ideal &syzT)
Read off the results while detaching them from this object NOTE: no copy!
unsigned int label() const
const unsigned long m_sev
not short exp. vector
CCacheCompare & operator=(const CCacheCompare &lhs)
Computing syzygies after Schreyer.
CReducerFinder(const CReducerFinder &)
SchreyerSyzygyComputation(const ideal idLeads, const ideal idTails, const ideal syzLeads, const SchreyerSyzygyComputationFlags setting)
Construct a global object for given input data (separated into leads & tails)
unsigned long m_stat[9]
Statistics: 0..3: as in SetUpTailTerms()::PreProcessTerm() // TODO!!?? 4: number of terms discarded d...
kBucket_pt m_spoly_bucket
for S-Polynomial reductions
int OPT__SYZNUMBER
Syzygy level (within a resolution)
void Initialize(const ideal L)
void SetUpTailTerms()
Convert the given ideal of tails into the internal representation (with reducers!) Preprocess m_idTai...
const unsigned int m_N
number of ring variables
ideal id_Copy(ideal h1, const ring r)
copy an ideal
const int OPT__DEBUG
output all the intermediate states
bool DivisibilityCheck(const poly product, const unsigned long not_sev, const ring r) const
std::vector< const CLeadingTerm * > TReducers
const CLCM m_lcm
Bitmask for variables occuring in leading terms.
friend class CDivisorEnumerator
std::map< TComponentKey, TReducers > CReducersHash
CLeadingTerm(unsigned int label, const poly lt, const ring)
ideal m_syzLeads
output (syzygy) leading terms (+2nd terms?)
const int OPT__TREEOUTPUT
output lifting tree