# elementary -- Elementary moves are used to reduce the target of a syzygy matrix

## Synopsis

• Usage:
g= elementary(f,k,m)
• Inputs:
• f, , whose target degrees are in ascending order
• k, an integer, whose value is strictly less than the number of rows of f
• m, an integer, positive
• Outputs:
• g, , obtained from f by adding random multiples of the last row by polynomials in the first m variables to the k preceding rows, and then deleting the last row.

## Description

Factors out a general element, reducing the rank of f. More precisely, the routine adds random multiples of the last row, whose coefficients are polynomials in the first m variables, to the k preceding rows and drops the last row. For this to be effective, the target degrees of f must be in ascending order.

This is a fundamental operation in the theory of basic elements, see D. Eisenbud and E. G. Evans, Basic elements: theorems from algebraic k-theory, Bulletin of the AMS, 78, No.4, 1972, 546-549.

Here is a basic example:

 i1 : kk=ZZ/32003 o1 = kk o1 : QuotientRing i2 : S=kk[a..d] o2 = S o2 : PolynomialRing i3 : M=matrix{{a,0,0,0},{0,b,0,0},{0,0,c,0},{0,0,0,d}} o3 = | a 0 0 0 | | 0 b 0 0 | | 0 0 c 0 | | 0 0 0 d | 4 4 o3 : Matrix S <--- S i4 : elementary(M,0,1)-- since k=0, this command simply eliminates the last row of M. o4 = | a 0 0 0 | | 0 b 0 0 | | 0 0 c 0 | 3 4 o4 : Matrix S <--- S

Here is a more involved example. This is also how this function is used within the package.

 i5 : kk=ZZ/32003 o5 = kk o5 : QuotientRing i6 : S=kk[a..d] o6 = S o6 : PolynomialRing i7 : I=ideal(a^2,b^3,c^4, d^5) 2 3 4 5 o7 = ideal (a , b , c , d ) o7 : Ideal of S i8 : F=res I 1 4 6 4 1 o8 = S <-- S <-- S <-- S <-- S <-- 0 0 1 2 3 4 5 o8 : ChainComplex i9 : M=image F.dd_3 o9 = image {5} | c4 d5 0 0 | {6} | -b3 0 d5 0 | {7} | a2 0 0 d5 | {7} | 0 -b3 -c4 0 | {8} | 0 a2 0 -c4 | {9} | 0 0 a2 b3 | 6 o9 : S-module, submodule of S i10 : f=matrix gens M o10 = {5} | c4 d5 0 0 | {6} | -b3 0 d5 0 | {7} | a2 0 0 d5 | {7} | 0 -b3 -c4 0 | {8} | 0 a2 0 -c4 | {9} | 0 0 a2 b3 | 6 4 o10 : Matrix S <--- S i11 : fascending=transpose sort(transpose f, DegreeOrder=>Descending) -- this is f with rows sorted so that the degrees are ascending. o11 = {5} | c4 d5 0 0 | {6} | -b3 0 d5 0 | {7} | 0 -b3 -c4 0 | {7} | a2 0 0 d5 | {8} | 0 a2 0 -c4 | {9} | 0 0 a2 b3 | 6 4 o11 : Matrix S <--- S i12 : g=elementary(fascending,1,1) --k=1, so add random multiples of the last row to the preceding row o12 = {5} | c4 d5 0 0 | {6} | -b3 0 d5 0 | {7} | 0 -b3 -c4 0 | {7} | a2 0 0 d5 | {8} | 0 a2 107a3 107ab3-c4 | 5 4 o12 : Matrix S <--- S i13 : g1=elementary(fascending,1,3) o13 = {5} | c4 d5 0 0 | {6} | -b3 0 d5 0 | {7} | 0 -b3 -c4 0 | {7} | a2 0 0 d5 | {8} | 0 a2 4376a3-5570a2b+3187a2c 4376ab3-5570b4+3187b3c-c4 | 5 4 o13 : Matrix S <--- S

This method is called by evansGriffith.

## Ways to use elementary :

• "elementary(Matrix,ZZ,ZZ)"

## For the programmer

The object elementary is .