Public Member Functions | Private Member Functions | Private Attributes
CLeadingTerm Class Reference

#include <syzextra.h>

Public Member Functions

 CLeadingTerm (unsigned int label, const poly lt, const ring)
 
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' More...
 
bool DivisibilityCheck (const poly product, const unsigned long not_sev, const ring r) const
 
bool CheckLT (const ideal &L) const
 
poly lt () const
 
unsigned long sev () const
 
unsigned int label () const
 

Private Member Functions

 CLeadingTerm ()
 
 CLeadingTerm (const CLeadingTerm &)
 
void operator= (const CLeadingTerm &)
 

Private Attributes

const unsigned long m_sev
 not short exp. vector More...
 
const unsigned int m_label
 index in the main L[] + 1 More...
 
const poly m_lt
 the leading term itself L[label-1] More...
 

Detailed Description

Definition at line 261 of file syzextra.h.

Constructor & Destructor Documentation

◆ CLeadingTerm() [1/3]

CLeadingTerm::CLeadingTerm ( unsigned int  label,
const poly  lt,
const ring  R 
)

Definition at line 2068 of file syzextra.cc.

2068  :
2069  m_sev( p_GetShortExpVector(_lt, R) ), m_label( _label ), m_lt( _lt )
2070 #ifndef SING_NDEBUG
2071  , _R(R), m_lt_copy( myp_Head(_lt, true, R) ) // note that p_LmEqual only tests exponents!
2072 #endif
2073 {
2074 #ifndef SING_NDEBUG
2075  assume( pNext(m_lt_copy) == NULL );
2076 #endif
2077  assume( sev() == p_GetShortExpVector(lt(), R) );
2078 }
const unsigned int m_label
index in the main L[] + 1
Definition: syzextra.h:291
poly lt() const
Definition: syzextra.h:282
const poly m_lt
the leading term itself L[label-1]
Definition: syzextra.h:293
unsigned long sev() const
Definition: syzextra.h:283
const ring R
Definition: DebugPrint.cc:36
const unsigned long m_sev
not short exp. vector
Definition: syzextra.h:284
unsigned long p_GetShortExpVector(const poly p, const ring r)
Definition: p_polys.cc:4627
#define NULL
Definition: omList.c:10
#define pNext(p)
Definition: monomials.h:43
static FORCE_INLINE poly myp_Head(const poly p, const bool bIgnoreCoeff, const ring r)
Definition: syzextra.cc:456
assume(R !=NULL)

◆ CLeadingTerm() [2/3]

CLeadingTerm::CLeadingTerm ( )
private

◆ CLeadingTerm() [3/3]

CLeadingTerm::CLeadingTerm ( const CLeadingTerm )
private

Member Function Documentation

◆ CheckLT()

bool CLeadingTerm::CheckLT ( const ideal &  L) const

Definition at line 2205 of file syzextra.cc.

2206 {
2207 // for( int i = IDELEMS(L); i >= 0; --i) assume( pNext(L->m[i]) == NULL ); // ???
2208  return ( L->m[label()] == lt() );
2209 }
poly lt() const
Definition: syzextra.h:282
unsigned int label() const
Definition: syzextra.h:284

◆ DivisibilityCheck() [1/2]

bool CLeadingTerm::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'

Definition at line 2236 of file syzextra.cc.

2237 {
2238  assume ( !n_IsZero( pGetCoeff(lt()), r->cf ) );
2239  assume( sev() == p_GetShortExpVector(lt(), r) );
2240 
2241  assume( m != NULL );
2242  assume( t != NULL );
2243  assume ( !n_IsZero( pGetCoeff(m), r->cf ) );
2244  assume ( !n_IsZero( pGetCoeff(t), r->cf ) );
2245 
2246 // assume( p_GetComp(m, r) == 0 );
2247  assume( (p_GetComp(lt(), r) == p_GetComp(t, r)) || (p_GetComp(lt(), r) == 0) );
2248 
2249  p_Test(m, r);
2250  p_Test(t, r);
2251 // const int k = label();
2252 // assume( m_L->m[k] == p );
2253 
2254 #ifndef SING_NDEBUG
2255  assume( r == _R );
2256 #endif
2257 
2258  if (sev() & not_sev)
2259  return false;
2260 
2261  return _p_LmDivisibleByNoComp(lt(), m, t, r);
2262 // return p_LmShortDivisibleByNoComp(p, p_sev, product, not_sev, r);
2263 }
poly lt() const
Definition: syzextra.h:282
#define p_GetComp(p, r)
Definition: monomials.h:72
unsigned long sev() const
Definition: syzextra.h:283
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy ...
Definition: monomials.h:51
const ring r
Definition: syzextra.cc:208
int m
Definition: cfEzgcd.cc:119
static FORCE_INLINE BOOLEAN n_IsZero(number n, const coeffs r)
TRUE iff &#39;n&#39; represents the zero element.
Definition: coeffs.h:468
#define p_Test(p, r)
Definition: p_polys.h:160
unsigned long p_GetShortExpVector(const poly p, const ring r)
Definition: p_polys.cc:4627
static BOOLEAN _p_LmDivisibleByNoComp(const poly a, const poly b, const poly c, const ring r)
_p_LmDivisibleByNoComp for a | b*c
Definition: syzextra.cc:2159
#define NULL
Definition: omList.c:10
assume(R !=NULL)

◆ DivisibilityCheck() [2/2]

bool CLeadingTerm::DivisibilityCheck ( const poly  product,
const unsigned long  not_sev,
const ring  r 
) const

Definition at line 2211 of file syzextra.cc.

2212 {
2213  // may have no coeff yet
2214 // assume ( !n_IsZero( p_GetCoeff(product, r), r ) );
2215 
2216  assume ( !n_IsZero( pGetCoeff(lt()), r->cf ) );
2217  assume( sev() == p_GetShortExpVector(lt(), r) );
2218 
2219  assume( product != NULL );
2220  assume( (p_GetComp(lt(), r) == p_GetComp(product, r)) || (p_GetComp(lt(), r) == 0) );
2221 
2222 #ifndef SING_NDEBUG
2223  assume( r == _R );
2224 #endif
2225 
2226 // const int k = label();
2227 // assume( m_L->m[k] == p );
2228 
2229  return p_LmShortDivisibleByNoComp(lt(), sev(), product, not_sev, r);
2230 
2231 }
poly lt() const
Definition: syzextra.h:282
#define p_GetComp(p, r)
Definition: monomials.h:72
unsigned long sev() const
Definition: syzextra.h:283
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy ...
Definition: monomials.h:51
const ring r
Definition: syzextra.cc:208
static BOOLEAN p_LmShortDivisibleByNoComp(poly a, unsigned long sev_a, poly b, unsigned long not_sev_b, const ring r)
Definition: p_polys.h:1822
static FORCE_INLINE BOOLEAN n_IsZero(number n, const coeffs r)
TRUE iff &#39;n&#39; represents the zero element.
Definition: coeffs.h:468
unsigned long p_GetShortExpVector(const poly p, const ring r)
Definition: p_polys.cc:4627
#define NULL
Definition: omList.c:10
assume(R !=NULL)

◆ label()

unsigned int CLeadingTerm::label ( ) const
inline

Definition at line 284 of file syzextra.h.

284 { return m_label; };
const unsigned int m_label
index in the main L[] + 1
Definition: syzextra.h:291

◆ lt()

poly CLeadingTerm::lt ( ) const
inline

Definition at line 282 of file syzextra.h.

282 { return m_lt; };
const poly m_lt
the leading term itself L[label-1]
Definition: syzextra.h:293

◆ operator=()

void CLeadingTerm::operator= ( const CLeadingTerm )
private

◆ sev()

unsigned long CLeadingTerm::sev ( ) const
inline

Definition at line 283 of file syzextra.h.

283 { return m_sev; };
const unsigned long m_sev
not short exp. vector
Definition: syzextra.h:284

Field Documentation

◆ m_label

const unsigned int CLeadingTerm::m_label
private

index in the main L[] + 1

Definition at line 291 of file syzextra.h.

◆ m_lt

const poly CLeadingTerm::m_lt
private

the leading term itself L[label-1]

Definition at line 293 of file syzextra.h.

◆ m_sev

const unsigned long CLeadingTerm::m_sev
private

not short exp. vector

Definition at line 284 of file syzextra.h.


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