Macaulay2 Engine
Loading...
Searching...
No Matches
SchreyerFrame Class Reference

State container for the in-progress free resolution built by the F4 resolution engine. More...

#include <res-schreyer-frame.hpp>

Classes

struct  Level
 One homological level of the frame: the FrameElements living at that level plus the Schreyer order used to break ties among them. More...
struct  Frame
 The full frame: a vector of Levels indexed by homological degree. More...

Public Types

typedef SchreyerFrameTypes::FrameElement FrameElement
typedef SchreyerFrameTypes::PreElement PreElement

Public Member Functions

 SchreyerFrame (const ResPolyRing &R, int max_level, int numThreads, bool parallelizeByDegree)
 ~SchreyerFrame ()
const ResMonoidmonoid () const
const ResPolyRingring () const
const VectorArithmeticvectorArithmetic () const
ResMemoryBlock< res_monomial_word > & monomialBlock ()
void show (int len) const
long memoryUsage () const
void showMemoryUsage () const
bool debugCheckOrder (int lev) const
bool debugCheckOrderAll () const
M2_arrayint getBetti (int type)
void getBounds (int &loDegree, int &hiDegree, int &length) const
void insertLevelZero (res_packed_monomial monom, int degree, int maxdeglevel0)
bool insertLevelOne (res_packed_monomial monom, int degree, ResPolynomial &syzygy)
void endLevel ()
void start_computation (StopConditions &stop)
void insertBasic (int lev, res_packed_monomial monom, int degree)
void setSchreyerOrder (int lev)
component_index computeNextLevel ()
res_packed_monomial monomial (int lev, component_index component)
M2_arrayint getBettiFrame () const
void setBettiDisplays ()
int rank (int slanted_degree, int lev)
template<typename Gen>
int rankUsingSparseMatrix (Gen &D)
template<typename Gen>
int rankUsingDenseMatrix (Gen &D, bool transposed=true)
template<typename Gen>
int rankUsingDenseMatrixFlint (Gen &D, bool transposed=true)
bool computeFrame ()
void computeSyzygies (int slanted_degree, int maxlevel)
void computeRanks (int slanted_degree, int maxlevel)
BettiDisplay minimalBettiNumbers (bool stop_after_degree, int top_slanted_degree, int length_limit)
ResSchreyerOrderschreyerOrder (int lev)
const ResSchreyerOrderschreyerOrder (int lev) const
int maxLevel () const
std::vector< FrameElement > & level (int lev)
const std::vector< FrameElement > & level (int lev) const

Public Attributes

double timeMakeMatrix
double timeSortMatrix
double timeReorderMatrix
double timeGaussMatrix
double timeClearMatrix
double timeResetHashTable
double timeComputeRanks
double timeComputeSparseRanks

Private Types

enum  { Initializing , Frame , Matrices , Done }

Private Member Functions

int currentLevel () const
int degree (int lev, component_index component) const
void fillinSyzygies (int slanted_deg, int lev)
void computeRank (int slanted_degree, int lev)
PreElementcreateQuotientElement (res_packed_monomial m1, res_packed_monomial m)
component_index computeIdealQuotient (int lev, component_index begin, component_index elem)
component_index insertElements (int lev, component_index elem)

Private Attributes

const ResPolyRingmRing
Frame mFrame
ResMemoryBlock< res_monomial_wordmMonomialSpace
BettiDisplay mBettiNonminimal
BettiDisplay mBettiMinimal
BettiDisplay mComputationStatus
std::vector< std::pair< int, int > > mMinimalizeTODO
enum SchreyerFrame:: { ... }  mState
int mCurrentLevel
int mSlantedDegree
int mLoSlantedDegree
int mHiSlantedDegree
int mMaxLength
ResMemoryBlock< PreElementmPreElements
ResMemoryBlock< res_varpower_wordmVarpowers
int mMaxVPSize
std::unique_ptr< F4ResmComputer
int mNumThreads
bool mParallelizeByDegree

Friends

class F4Res

Detailed Description

State container for the in-progress free resolution built by the F4 resolution engine.

Note
AI-generated documentation. Verify against the source before relying on it.

Organises the resolution as a vector of Levels indexed by homological degree; each level holds a vector of FrameElements plus its ResSchreyerOrder for tie-breaking. The frame is grown incrementally: callers insertLevelZero / insertLevelOne / insertBasic to add generators, endLevel to finalise descendant slices, and computeNextLevel / computeFrame to push the computation forward. F4Res reads off the frame to build the Macaulay matrix for the next level, and minimalBettiNumbers produces a BettiDisplay directly from the level shapes without revisiting source polynomials. When built with TBB, the DependencyGraph is a friend so per-(level, slanted_degree) work cells can be scheduled in parallel.

Definition at line 152 of file res-schreyer-frame.hpp.


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