Public Member Functions | Private Attributes
CDivisorEnumerator Class Reference

TODO: More...

Public Member Functions

 CDivisorEnumerator (const CReducerFinder &self, const poly product)
 
bool Reset ()
 
const CLeadingTermCurrent () const
 
bool MoveNext ()
 
- Public Member Functions inherited from SchreyerSyzygyComputationFlags
 SchreyerSyzygyComputationFlags (idhdl rootRingHdl)
 
 SchreyerSyzygyComputationFlags (const SchreyerSyzygyComputationFlags &attr)
 
void nextSyzygyLayer () const
 

Private Attributes

const CReducerFinderm_reds
 
const poly m_product
 
const unsigned long m_not_sev
 
const long m_comp
 
CReducerFinder::CReducersHash::const_iterator m_itr
 
CReducerFinder::TReducers::const_iterator m_current
 
CReducerFinder::TReducers::const_iterator m_finish
 
bool m_active
 

Additional Inherited Members

- Data Fields inherited from SchreyerSyzygyComputationFlags
const int OPT__DEBUG
 output all the intermediate states More...
 
const int OPT__LEAD2SYZ
 ? More...
 
const int OPT__TAILREDSYZ
 Reduce syzygy tails wrt the leading syzygy terms. More...
 
const int OPT__HYBRIDNF
 Use the usual NF's S-poly reduction while dropping lower order terms 2 means - smart selection! More...
 
const int OPT__IGNORETAILS
 ignore tails and compute the pure Schreyer frame More...
 
int OPT__SYZNUMBER
 Syzygy level (within a resolution) More...
 
const int OPT__TREEOUTPUT
 output lifting tree More...
 
const int OPT__SYZCHECK
 CheckSyzygyProperty: TODO. More...
 
const bool OPT__PROT
 TEST_OPT_PROT. More...
 
const int OPT__NOCACHING
 no caching/stores/lookups More...
 
const ring m_rBaseRing
 global base ring More...
 

Detailed Description

TODO:

Definition at line 2270 of file syzextra.cc.

Constructor & Destructor Documentation

CDivisorEnumerator::CDivisorEnumerator ( const CReducerFinder self,
const poly  product 
)
inline

TODO: m_L should stay the same!!!

Definition at line 2284 of file syzextra.cc.

2284  :
2286  m_reds(self),
2287  m_product(product),
2289  m_comp(p_GetComp(product, m_rBaseRing)),
2290  m_itr(), m_current(), m_finish(),
2291  m_active(false)
2292  {
2293  assume( m_comp >= 0 );
2294  assume( m_reds.m_L != NULL ); /// TODO: m_L should stay the same!!!
2295 
2296  assume( product != NULL ); // may have no coeff yet :(
2297 // assume ( !n_IsZero( p_GetCoeff(product, m_rBaseRing), m_rBaseRing ) );
2298 #ifndef SING_NDEBUG
2299  if( OPT__DEBUG ) m_reds.Verify();
2300 #endif
2301  }
assume(R!=NULL)
#define p_GetComp(p, r)
Definition: monomials.h:72
const poly m_product
Definition: syzextra.cc:2274
const int OPT__DEBUG
output all the intermediate states
Definition: syzextra.h:204
CReducerFinder::TReducers::const_iterator m_current
Definition: syzextra.cc:2279
CReducerFinder::TReducers::const_iterator m_finish
Definition: syzextra.cc:2279
const CReducerFinder & m_reds
Definition: syzextra.cc:2273
unsigned long p_GetShortExpVector(const poly p, const ring r)
Definition: p_polys.cc:4559
#define NULL
Definition: omList.c:10
void Verify() const
Definition: syzextra.cc:2428
const unsigned long m_not_sev
Definition: syzextra.cc:2275
SchreyerSyzygyComputationFlags(idhdl rootRingHdl)
Definition: syzextra.cc:2034
const ring m_rBaseRing
global base ring
Definition: syzextra.h:241
ideal m_L
only for debug
Definition: syzextra.h:354
CReducerFinder::CReducersHash::const_iterator m_itr
Definition: syzextra.cc:2278
const long m_comp
Definition: syzextra.cc:2276

Member Function Documentation

const CLeadingTerm& CDivisorEnumerator::Current ( ) const
inline

Definition at line 2324 of file syzextra.cc.

2325  {
2326  assume( m_active );
2327  assume( m_current != m_finish );
2328 
2329  return *(*m_current);
2330  }
assume(R!=NULL)
CReducerFinder::TReducers::const_iterator m_current
Definition: syzextra.cc:2279
CReducerFinder::TReducers::const_iterator m_finish
Definition: syzextra.cc:2279
bool CDivisorEnumerator::MoveNext ( )
inline

Definition at line 2332 of file syzextra.cc.

2333  {
2334  assume( m_current != m_finish );
2335 
2336  if( m_active )
2337  ++m_current;
2338  else
2339  m_active = true; // for Current()
2340 
2341  // looking for the next good entry
2342  for( ; m_current != m_finish; ++m_current )
2343  {
2344  assume( Current().CheckLT( m_reds.m_L ) );
2345 
2346  if( Current().DivisibilityCheck(m_product, m_not_sev, m_rBaseRing) )
2347  {
2348 #ifndef SING_NDEBUG
2349  if( OPT__DEBUG )
2350  {
2351  Print("CDivisorEnumerator::MoveNext::est LS: q is divisible by LS[%d] !:((, diviser is: ", 1 + Current().label());
2352  dPrint(Current().lt(), m_rBaseRing, m_rBaseRing, 0);
2353  }
2354 #endif
2355 // m_active = true;
2356  assume( Current().CheckLT( m_reds.m_L ) );
2357  return true;
2358  }
2359  assume( Current().CheckLT( m_reds.m_L ) );
2360  }
2361 
2362  // the end... :(
2363  assume( m_current == m_finish );
2364 
2365  m_active = false;
2366  return false;
2367  }
#define Print
Definition: emacs.cc:83
assume(R!=NULL)
const poly m_product
Definition: syzextra.cc:2274
const CLeadingTerm & Current() const
Definition: syzextra.cc:2324
const int OPT__DEBUG
output all the intermediate states
Definition: syzextra.h:204
CReducerFinder::TReducers::const_iterator m_current
Definition: syzextra.cc:2279
CReducerFinder::TReducers::const_iterator m_finish
Definition: syzextra.cc:2279
const CReducerFinder & m_reds
Definition: syzextra.cc:2273
const unsigned long m_not_sev
Definition: syzextra.cc:2275
const ring m_rBaseRing
global base ring
Definition: syzextra.h:241
ideal m_L
only for debug
Definition: syzextra.h:354
void dPrint(const ideal id, const ring lmRing=currRing, const ring tailRing=currRing, const int nTerms=0)
prints an ideal, optionally with details
bool CDivisorEnumerator::Reset ( )
inline

Definition at line 2303 of file syzextra.cc.

2304  {
2305  m_active = false;
2306 
2307  m_itr = m_reds.m_hash.find(m_comp);
2308 
2309  if( m_itr == m_reds.m_hash.end() )
2310  return false;
2311 
2312  assume( m_itr->first == m_comp );
2313 
2314  m_current = (m_itr->second).begin();
2315  m_finish = (m_itr->second).end();
2316 
2317  if (m_current == m_finish)
2318  return false;
2319 
2320 // m_active = true;
2321  return true;
2322  }
assume(R!=NULL)
CReducersHash m_hash
Definition: syzextra.h:356
CReducerFinder::TReducers::const_iterator m_current
Definition: syzextra.cc:2279
CReducerFinder::TReducers::const_iterator m_finish
Definition: syzextra.cc:2279
const CReducerFinder & m_reds
Definition: syzextra.cc:2273
CReducerFinder::CReducersHash::const_iterator m_itr
Definition: syzextra.cc:2278
const long m_comp
Definition: syzextra.cc:2276

Field Documentation

bool CDivisorEnumerator::m_active
private

Definition at line 2281 of file syzextra.cc.

const long CDivisorEnumerator::m_comp
private

Definition at line 2276 of file syzextra.cc.

CReducerFinder::TReducers::const_iterator CDivisorEnumerator::m_current
private

Definition at line 2279 of file syzextra.cc.

CReducerFinder::TReducers::const_iterator CDivisorEnumerator::m_finish
private

Definition at line 2279 of file syzextra.cc.

CReducerFinder::CReducersHash::const_iterator CDivisorEnumerator::m_itr
private

Definition at line 2278 of file syzextra.cc.

const unsigned long CDivisorEnumerator::m_not_sev
private

Definition at line 2275 of file syzextra.cc.

const poly CDivisorEnumerator::m_product
private

Definition at line 2274 of file syzextra.cc.

const CReducerFinder& CDivisorEnumerator::m_reds
private

Definition at line 2273 of file syzextra.cc.


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