 |
My Project
debian-1:4.1.1-p2+ds-4build2
|
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);
57 void Sort_c_ds(
const ideal
id,
const ring r);
72 typedef std::stack <sBucket_pt>
Base;
224 bool Check(
const poly
m)
const;
239 bool DivisibilityCheck(
const poly multiplier,
const poly t,
const unsigned long not_sev,
const ring r)
const;
241 bool DivisibilityCheck(
const poly product,
const unsigned long not_sev,
const ring r)
const;
243 bool CheckLT(
const ideal & L )
const;
246 inline unsigned long sev()
const {
return m_sev; };
249 const unsigned long m_sev;
333 typedef std::map<TCacheKey, TCacheValue, CCacheCompare>
TP2PCache;
380 if (syzLeads !=
NULL)
424 poly
TraverseNF(
const poly syz_lead,
const poly syz_2 =
NULL)
const;
427 poly
TraverseTail(poly multiplier,
const int tail)
const;
434 poly
ReduceTerm(poly multiplier, poly term4reduction, poly syztermCheck)
const;
437 poly
ComputeImage(poly multiplier,
const int tail)
const;
541 static inline poly
ReduceTerm(poly multiplier, poly term4reduction, poly syztermCheck,
545 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)
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
~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
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
as DivisibilityCheck(multiplier * t, ...) for monomial 'm' and a module term 't'
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
void CleanUp()
Clean up all the accumulated data.
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
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.
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)
static void _DestroyBucket(Bucket &bt)
we only expect empty buckets to be left at the end for destructor bt will be set to NULL
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
std::vector< const CLeadingTerm * > TReducers
const CLCM m_lcm
Bitmask for variables occuring in leading terms.
std::map< TComponentKey, TReducers > CReducersHash
static Bucket _CreateBucket(const ring r)
inital allocation for new buckets
ideal m_syzLeads
output (syzygy) leading terms (+2nd terms?)
const int OPT__TREEOUTPUT
output lifting tree