Macaulay2 Engine
Loading...
Searching...
No Matches
res-f4.hpp File Reference

F4Res — F4-style matrix-reduction worker over a SchreyerFrame. More...

Go to the source code of this file.

Classes

class  F4Res
 F4-style engine that computes one (level, degree) slice of a free resolution into the host SchreyerFrame. More...
struct  F4Res::Row
 One row of the Macaulay matrix built by F4Res::construct. More...

Detailed Description

F4Res — F4-style matrix-reduction worker over a SchreyerFrame.

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

Declares the per-cell algorithm class F4ResComputation invokes to advance the resolution one (level, degree) step at a time. construct(lev, degree) reads the frame's pending syzygies into one matrix and collects the matching tail-reducers from lower levels and earlier degrees into a second matrix sharing the same columns; the column set is the union of monomials at level lev - 2 reachable from those rows, sorted by Schreyer order, and the hashtable MonomialHashTable<ResMonomialsWithComponent> mHashTable keys those monomials back to their column index. gaussReduce row-reduces the S-pair matrix against the reducer matrix via the shared VectorArithmetic backend, and the resulting echelon rows are written back into the frame as new syzygies. The matrices live in two parallel std::vector<Row>mReducers (the square reducer matrix) and mSPairs (one row per element at this (lev, degree)) — where each Row carries mLeadTerm / mComponents / mCoeffs. Monomials at this cell live in MonomialMemorySpace mMonomSpace2 and are freed in bulk between cells.

Construction calls processMonomialProduct (creates or looks up a column for m*n with skew-sign tracking) and findDivisor (which reducer covers a given monomial) before loadRow / reorderColumns / makeMatrix / gaussReduce snap the matrix together. F4Res holds a reference to its SchreyerFrame rather than owning it, so the frame outlives any single reduction; friend class ResColumnsSorter gives the column-sorting helper access to the column-index map. construct(lev, degree) requires that both (lev, degree-1) and (lev-1, degree-1) are already complete, but not (lev-1, degree) (per the in-source NOTE comment). Sibling of f4/f4.hpp for the commutative F4.

See also
res-schreyer-frame.hpp
res-f4-computation.hpp
res-poly-ring.hpp
f4/f4.hpp
VectorArithmetic.hpp

Definition in file res-f4.hpp.