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)
 
 ~CLeadingTerm ()
 
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...
 
const ring _R
 
const poly m_lt_copy
 original copy of LEAD(lt) (only for debug!!!) More...
 

Detailed Description

Definition at line 260 of file syzextra.h.

Constructor & Destructor Documentation

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

Definition at line 2070 of file syzextra.cc.

2070  :
2071  m_sev( p_GetShortExpVector(_lt, R) ), m_label( _label ), m_lt( _lt )
2072 #ifndef SING_NDEBUG
2073  , _R(R), m_lt_copy( myp_Head(_lt, true, R) ) // note that p_LmEqual only tests exponents!
2074 #endif
2075 {
2076 #ifndef SING_NDEBUG
2077  assume( pNext(m_lt_copy) == NULL );
2078 #endif
2079  assume( sev() == p_GetShortExpVector(lt(), R) );
2080 }
const unsigned int m_label
index in the main L[] + 1
Definition: syzextra.h:290
assume(R!=NULL)
const poly m_lt
the leading term itself L[label-1]
Definition: syzextra.h:292
const poly m_lt_copy
original copy of LEAD(lt) (only for debug!!!)
Definition: syzextra.h:297
unsigned long sev() const
Definition: syzextra.cc:2098
const unsigned long m_sev
not short exp. vector
Definition: syzextra.h:287
unsigned long p_GetShortExpVector(const poly p, const ring r)
Definition: p_polys.cc:4559
#define NULL
Definition: omList.c:10
const ring _R
Definition: syzextra.h:295
#define R
Definition: sirandom.c:26
#define pNext(p)
Definition: monomials.h:43
poly lt() const
Definition: syzextra.cc:2091
static FORCE_INLINE poly myp_Head(const poly p, const bool bIgnoreCoeff, const ring r)
Definition: syzextra.cc:456
CLeadingTerm::~CLeadingTerm ( )

Definition at line 2083 of file syzextra.cc.

2084 {
2087 
2088  poly p = const_cast<poly>(m_lt_copy);
2089  p_Delete(&p, _R);
2090 }
return P p
Definition: myNF.cc:203
assume(R!=NULL)
const poly m_lt
the leading term itself L[label-1]
Definition: syzextra.h:292
const poly m_lt_copy
original copy of LEAD(lt) (only for debug!!!)
Definition: syzextra.h:297
const unsigned long m_sev
not short exp. vector
Definition: syzextra.h:287
static void p_Delete(poly *p, const ring r)
Definition: p_polys.h:850
unsigned long p_GetShortExpVector(const poly p, const ring r)
Definition: p_polys.cc:4559
#define p_LmEqual(p1, p2, r)
Definition: p_polys.h:1519
const ring _R
Definition: syzextra.h:295
polyrec * poly
Definition: hilb.h:10
CLeadingTerm::CLeadingTerm ( )
private
CLeadingTerm::CLeadingTerm ( const CLeadingTerm )
private

Member Function Documentation

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

Definition at line 2207 of file syzextra.cc.

2208 {
2209 // for( int i = IDELEMS(L); i >= 0; --i) assume( pNext(L->m[i]) == NULL ); // ???
2210  return ( L->m[label()] == lt() );
2211 }
unsigned int label() const
Definition: syzextra.cc:2105
poly lt() const
Definition: syzextra.cc:2091
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 2238 of file syzextra.cc.

2239 {
2240  assume ( !n_IsZero( p_GetCoeff(lt(), r), r ) );
2241  assume( sev() == p_GetShortExpVector(lt(), r) );
2242 
2243  assume( m != NULL );
2244  assume( t != NULL );
2245  assume ( !n_IsZero( p_GetCoeff(m, r), r ) );
2246  assume ( !n_IsZero( p_GetCoeff(t, r), r ) );
2247 
2248 // assume( p_GetComp(m, r) == 0 );
2249  assume( (p_GetComp(lt(), r) == p_GetComp(t, r)) || (p_GetComp(lt(), r) == 0) );
2250 
2251  p_Test(m, r);
2252  p_Test(t, r);
2253 // const int k = label();
2254 // assume( m_L->m[k] == p );
2255 
2256 #ifndef SING_NDEBUG
2257  assume( r == _R );
2258 #endif
2259 
2260  if (sev() & not_sev)
2261  return false;
2262 
2263  return _p_LmDivisibleByNoComp(lt(), m, t, r);
2264 // return p_LmShortDivisibleByNoComp(p, p_sev, product, not_sev, r);
2265 }
assume(R!=NULL)
#define p_GetComp(p, r)
Definition: monomials.h:72
unsigned long sev() const
Definition: syzextra.cc:2098
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 '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:4559
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:2161
#define NULL
Definition: omList.c:10
const ring _R
Definition: syzextra.h:295
#define p_GetCoeff(p, r)
Definition: monomials.h:57
poly lt() const
Definition: syzextra.cc:2091
bool CLeadingTerm::DivisibilityCheck ( const poly  product,
const unsigned long  not_sev,
const ring  r 
) const

Definition at line 2213 of file syzextra.cc.

2214 {
2215  // may have no coeff yet
2216 // assume ( !n_IsZero( p_GetCoeff(product, r), r ) );
2217 
2218  assume ( !n_IsZero( p_GetCoeff(lt(), r), r ) );
2219  assume( sev() == p_GetShortExpVector(lt(), r) );
2220 
2221  assume( product != NULL );
2222  assume( (p_GetComp(lt(), r) == p_GetComp(product, r)) || (p_GetComp(lt(), r) == 0) );
2223 
2224 #ifndef SING_NDEBUG
2225  assume( r == _R );
2226 #endif
2227 
2228 // const int k = label();
2229 // assume( m_L->m[k] == p );
2230 
2231  return p_LmShortDivisibleByNoComp(lt(), sev(), product, not_sev, r);
2232 
2233 }
assume(R!=NULL)
#define p_GetComp(p, r)
Definition: monomials.h:72
unsigned long sev() const
Definition: syzextra.cc:2098
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:1730
static FORCE_INLINE BOOLEAN n_IsZero(number n, const coeffs r)
TRUE iff 'n' represents the zero element.
Definition: coeffs.h:465
unsigned long p_GetShortExpVector(const poly p, const ring r)
Definition: p_polys.cc:4559
#define NULL
Definition: omList.c:10
const ring _R
Definition: syzextra.h:295
#define p_GetCoeff(p, r)
Definition: monomials.h:57
poly lt() const
Definition: syzextra.cc:2091
unsigned int CLeadingTerm::label ( ) const

Definition at line 2105 of file syzextra.cc.

2106 {
2109  return m_label;
2110 }
const unsigned int m_label
index in the main L[] + 1
Definition: syzextra.h:290
assume(R!=NULL)
const poly m_lt
the leading term itself L[label-1]
Definition: syzextra.h:292
const poly m_lt_copy
original copy of LEAD(lt) (only for debug!!!)
Definition: syzextra.h:297
const unsigned long m_sev
not short exp. vector
Definition: syzextra.h:287
unsigned long p_GetShortExpVector(const poly p, const ring r)
Definition: p_polys.cc:4559
#define p_LmEqual(p1, p2, r)
Definition: p_polys.h:1519
const ring _R
Definition: syzextra.h:295
poly CLeadingTerm::lt ( ) const

Definition at line 2091 of file syzextra.cc.

2092 {
2095  return m_lt;
2096 }
assume(R!=NULL)
const poly m_lt
the leading term itself L[label-1]
Definition: syzextra.h:292
const poly m_lt_copy
original copy of LEAD(lt) (only for debug!!!)
Definition: syzextra.h:297
const unsigned long m_sev
not short exp. vector
Definition: syzextra.h:287
unsigned long p_GetShortExpVector(const poly p, const ring r)
Definition: p_polys.cc:4559
#define p_LmEqual(p1, p2, r)
Definition: p_polys.h:1519
const ring _R
Definition: syzextra.h:295
void CLeadingTerm::operator= ( const CLeadingTerm )
private
unsigned long CLeadingTerm::sev ( ) const

Definition at line 2098 of file syzextra.cc.

2099 {
2102  return m_sev;
2103 }
assume(R!=NULL)
const poly m_lt
the leading term itself L[label-1]
Definition: syzextra.h:292
const poly m_lt_copy
original copy of LEAD(lt) (only for debug!!!)
Definition: syzextra.h:297
const unsigned long m_sev
not short exp. vector
Definition: syzextra.h:287
unsigned long p_GetShortExpVector(const poly p, const ring r)
Definition: p_polys.cc:4559
#define p_LmEqual(p1, p2, r)
Definition: p_polys.h:1519
const ring _R
Definition: syzextra.h:295

Field Documentation

const ring CLeadingTerm::_R
private

Definition at line 295 of file syzextra.h.

const unsigned int CLeadingTerm::m_label
private

index in the main L[] + 1

Definition at line 290 of file syzextra.h.

const poly CLeadingTerm::m_lt
private

the leading term itself L[label-1]

Definition at line 292 of file syzextra.h.

const poly CLeadingTerm::m_lt_copy
private

original copy of LEAD(lt) (only for debug!!!)

Definition at line 297 of file syzextra.h.

const unsigned long CLeadingTerm::m_sev
private

not short exp. vector

Definition at line 287 of file syzextra.h.


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