Public Member Functions | Private Attributes
CDivisorEnumerator2 Class Reference

TODO: More...

Public Member Functions

 CDivisorEnumerator2 (const CReducerFinder &self, const poly m, const poly t)
 
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_multiplier
 
const poly m_term
 
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 2493 of file syzextra.cc.

Constructor & Destructor Documentation

CDivisorEnumerator2::CDivisorEnumerator2 ( const CReducerFinder self,
const poly  m,
const poly  t 
)
inline

Definition at line 2507 of file syzextra.cc.

2507  :
2509  m_reds(self),
2510  m_multiplier(m), m_term(t),
2513  m_itr(), m_current(), m_finish(),
2514  m_active(false)
2515  {
2516  assume( m_comp >= 0 );
2517  assume( m_reds.m_L != NULL );
2518  assume( m_multiplier != NULL );
2519  assume( m_term != NULL );
2520 
2521  assume( m != NULL );
2522  assume( t != NULL );
2525 
2526  p_Test(m, m_rBaseRing);
2527 
2528 // assume( p_GetComp(m_multiplier, m_rBaseRing) == 0 );
2529 #ifndef SING_NDEBUG
2530  if( OPT__DEBUG ) m_reds.Verify();
2531 #endif
2532  }
const unsigned long m_not_sev
Definition: syzextra.cc:2498
const CReducerFinder & m_reds
Definition: syzextra.cc:2496
CReducerFinder::TReducers::const_iterator m_current
Definition: syzextra.cc:2502
const long m_comp
Definition: syzextra.cc:2499
assume(R!=NULL)
#define p_GetComp(p, r)
Definition: monomials.h:72
const poly m_term
Definition: syzextra.cc:2497
const int OPT__DEBUG
output all the intermediate states
Definition: syzextra.h:204
CReducerFinder::CReducersHash::const_iterator m_itr
Definition: syzextra.cc:2501
int m
Definition: cfEzgcd.cc:119
static FORCE_INLINE BOOLEAN n_IsZero(number n, const coeffs r)
TRUE iff 'n' represents the zero element.
Definition: coeffs.h:465
#define p_Test(p, r)
Definition: p_polys.h:160
unsigned long p_GetShortExpVector(const poly p, const ring r)
Definition: p_polys.cc:4586
#define NULL
Definition: omList.c:10
void Verify() const
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
#define p_GetCoeff(p, r)
Definition: monomials.h:57
const poly m_multiplier
Definition: syzextra.cc:2497
CReducerFinder::TReducers::const_iterator m_finish
Definition: syzextra.cc:2502

Member Function Documentation

const CLeadingTerm& CDivisorEnumerator2::Current ( ) const
inline

Definition at line 2554 of file syzextra.cc.

2555  {
2556  assume( m_active );
2557  assume( m_current != m_finish );
2558 
2559  return *(*m_current);
2560  }
CReducerFinder::TReducers::const_iterator m_current
Definition: syzextra.cc:2502
assume(R!=NULL)
CReducerFinder::TReducers::const_iterator m_finish
Definition: syzextra.cc:2502
bool CDivisorEnumerator2::MoveNext ( )
inline

Definition at line 2562 of file syzextra.cc.

2563  {
2564  assume( m_current != m_finish );
2565 
2566  if( m_active )
2567  ++m_current;
2568  else
2569  m_active = true;
2570 
2571 
2572  // looking for the next good entry
2573  for( ; m_current != m_finish; ++m_current )
2574  {
2575  assume( Current().CheckLT( m_reds.m_L ) );
2576 
2577  if( Current().DivisibilityCheck(m_multiplier, m_term, m_not_sev, m_rBaseRing) )
2578  {
2579 #ifndef SING_NDEBUG
2580  if( OPT__DEBUG )
2581  {
2582  Print("CDivisorEnumerator::MoveNext::est LS: q is divisible by LS[%d] !:((, diviser is: ", 1 + Current().label());
2583  dPrint(Current().lt(), m_rBaseRing, m_rBaseRing, 0);
2584  }
2585 #endif
2586 // m_active = true;
2587  assume( Current().CheckLT( m_reds.m_L ) );
2588  return true;
2589 
2590  }
2591  assume( Current().CheckLT( m_reds.m_L ) );
2592  }
2593 
2594  // the end... :(
2595  assume( m_current == m_finish );
2596 
2597  m_active = false;
2598  return false;
2599  }
const unsigned long m_not_sev
Definition: syzextra.cc:2498
const CReducerFinder & m_reds
Definition: syzextra.cc:2496
CReducerFinder::TReducers::const_iterator m_current
Definition: syzextra.cc:2502
#define Print
Definition: emacs.cc:83
assume(R!=NULL)
const poly m_term
Definition: syzextra.cc:2497
const int OPT__DEBUG
output all the intermediate states
Definition: syzextra.h:204
const CLeadingTerm & Current() const
Definition: syzextra.cc:2554
const ring m_rBaseRing
global base ring
Definition: syzextra.h:241
ideal m_L
only for debug
Definition: syzextra.h:354
const poly m_multiplier
Definition: syzextra.cc:2497
CReducerFinder::TReducers::const_iterator m_finish
Definition: syzextra.cc:2502
void dPrint(const ideal id, const ring lmRing=currRing, const ring tailRing=currRing, const int nTerms=0)
prints an ideal, optionally with details
bool CDivisorEnumerator2::Reset ( )
inline

Definition at line 2534 of file syzextra.cc.

2535  {
2536  m_active = false;
2537 
2538  m_itr = m_reds.m_hash.find(m_comp);
2539 
2540  if( m_itr == m_reds.m_hash.end() )
2541  return false;
2542 
2543  assume( m_itr->first == m_comp );
2544 
2545  m_current = (m_itr->second).begin();
2546  m_finish = (m_itr->second).end();
2547 
2548  if (m_current == m_finish)
2549  return false;
2550 
2551  return true;
2552  }
const CReducerFinder & m_reds
Definition: syzextra.cc:2496
CReducerFinder::TReducers::const_iterator m_current
Definition: syzextra.cc:2502
const long m_comp
Definition: syzextra.cc:2499
assume(R!=NULL)
CReducerFinder::CReducersHash::const_iterator m_itr
Definition: syzextra.cc:2501
CReducersHash m_hash
Definition: syzextra.h:356
CReducerFinder::TReducers::const_iterator m_finish
Definition: syzextra.cc:2502

Field Documentation

bool CDivisorEnumerator2::m_active
private

Definition at line 2504 of file syzextra.cc.

const long CDivisorEnumerator2::m_comp
private

Definition at line 2499 of file syzextra.cc.

CReducerFinder::TReducers::const_iterator CDivisorEnumerator2::m_current
private

Definition at line 2502 of file syzextra.cc.

CReducerFinder::TReducers::const_iterator CDivisorEnumerator2::m_finish
private

Definition at line 2502 of file syzextra.cc.

CReducerFinder::CReducersHash::const_iterator CDivisorEnumerator2::m_itr
private

Definition at line 2501 of file syzextra.cc.

const poly CDivisorEnumerator2::m_multiplier
private

Definition at line 2497 of file syzextra.cc.

const unsigned long CDivisorEnumerator2::m_not_sev
private

Definition at line 2498 of file syzextra.cc.

const CReducerFinder& CDivisorEnumerator2::m_reds
private

Definition at line 2496 of file syzextra.cc.

const poly CDivisorEnumerator2::m_term
private

Definition at line 2497 of file syzextra.cc.


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