"Source: Text/Commut/PMod.text";
"Line: 2711";
"Date: Thu Sep 25 14:47:46 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Commut/PMod.text, line: 2711
// Example: H119E14 ()
print "Example: H119E14";
ei := GetEchoInput();
SetEchoInput(true);
K := GF(101);
R<x,y,z,t> := PolynomialRing(GF(101),4,"grevlex");
v := [1,1,1,1,1,1,2,2];
// generate the base random relations with appropriate linear and quadratic
// entries using the Random function for multivariate polynomials.
rels := [[Random(i,R,0): j in [1..3]] : i in v];
Matrix(8,3,[TotalDegree(e) : e in &cat(rels)]);
// get the quotient module
F := RModule(R,3);
M := quo<F|rels>;
res := MinimalFreeResolution(M);
BettiTable(res);
mat :=  Matrix(BoundaryMap(res,2));
Nrows(mat); Ncols(mat);
u := [1,1,2,2,2,2,2,2];
mat := Matrix(R,[ri : i in [1..11] |
         &and[(ri[j] eq 0) or (TotalDegree(ri[j]) eq u[j]):
            j in [1..8]] where ri is Eltseq(mat[i])]);
Nrows(mat); Ncols(mat);
Matrix(8,8,[TotalDegree(m) :m in Eltseq(mat)]); 
mat1 := Matrix(R,6,8,[Random(K) : i in [1..48]]);
matc := mat1*mat;
F1 := EModule(R,[2-x : x in u]);
syz := SyzygyModule(sub<F1|RowSequence(matc)>);
B := MinimalBasis(syz);
#B;
assert $1 eq 1;
I := ideal<R|Eltseq(B[1])>;
Dimension(I); Degree(I);
OC := QuotientModule(I);
BettiTable(MinimalFreeResolution(OC));
SetEchoInput(ei);
