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

F4ResComputation — top-level Schreyer-frame F4 free-resolution driver. More...

#include "res-poly-ring.hpp"
#include "polyring.hpp"
#include "comp-res.hpp"
#include <memory>

Go to the source code of this file.

Classes

class  F4ResComputation
 ResolutionComputation subclass that drives the F4 resolution engine (SchreyerFrame + F4Res) from the engine-side API. More...

Functions

ResolutionComputationcreateF4Res (const Matrix *m, int max_level, int strategy, int numThreads, bool parallelizeByDegree)

Detailed Description

F4ResComputation — top-level Schreyer-frame F4 free-resolution driver.

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

Declares the ResolutionComputation subclass that owns a SchreyerFrame, walks it homological level by level, and reports Betti tables / free modules / differential matrices back to the M2 interpreter. The constructor is private; the friend factory createF4Res(groebnerBasisMatrix, max_level, strategy, numThreads, parallelizeByDegree) is the only entry point and requires the input matrix to already be a Gröbner basis with respect to the chosen monomial order. minimal_betti(slanted_degree_limit, length_limit) returns the minimal Betti numbers within those caps, and the two get_mutable_matrix overloads (whole-level and (slanted_degree, level)-cell) expose Macaulay-matrix data without forcing the full resolution to complete.

Two Ring-flavoured pointers thread through the implementation: a const PolynomialRing& mOriginalRing (the user-facing ring) and a std::unique_ptr<ResPolyRing> mRing (the resolution-tuned ring from res-poly-ring.hpp); the split mirrors the legacy PolynomialRing / GBRing separation on the GB side. Only length_limit and degree_limit from Computation's stop conditions are honoured (stop_conditions_ok() returns true unconditionally with a comment explaining why). parallelizeByDegree is plumbed through to the SchreyerFrame constructor as a single on/off flag — when true, minimalBettiNumbers builds and runs the DependencyGraph; when false, it falls back to the serial computeRanks path.

See also
comp-res.hpp
res-poly-ring.hpp
res-schreyer-frame.hpp
res-f4.hpp
res-dep-graph.hpp

Definition in file res-f4-computation.hpp.