# Quillen-Suslin

The Quillen-Suslin Theorem states that any projective module M over a polynomial ring k[x_1,\ldots,x_n] is free. Given a presentation of a projective module M by generators and relations, one would like to be able to compute a free generating set for M. Our goal is to begin implementing such an algorithm into a new package for Macaulay2.

• Logar, Alessandro; Sturmfels, Bernd, Algorithms for the Quillen-Suslin theorem. J. Algebra 145 (1992), no. 1, 231--239.
• An algorithm to compute such a generating set for a projective module has already been implemented in Maple, and the documentation for the Maple package can be found at:
• The author of this package also has some notes about the relevant algorithms, which can be found on pages 25-43 of the following PhD thesis:

## Accomplished During Workshop

• maxMinors - Compute the ideal of maximal minors of a given matrix.
• isProjective - Create function to test if a module is projective or not.
• isUnimodular - A function to test if a given matrix over R[x_1,...,x_n] is unimodular.
• computeFreeBasis - Create a function to compute a free basis of a projective module given a way to compute a particular unimodular matrix.
• applyRowShortcut - Given a unimodular row, implement the shortcut in Logar-Sturmfels (p233) and the one in Fabianska's dissertaion (pp 28-29).
• qsAlgorithmPID - Given a unimodular matrix over a PID, find a matrix U such that MU = (I 0).
• Description: Using the Smith normal form algorithm (implemented in Macaulay 2 already), one can compute invertible matrices F and G such that FMG is the Smith normal form of M, which is a diagonal matrix where the diagonal entries are elementary divisors. One way to get U is as follows: First set H_1 := the first q columns of G and H_2 := the last p-q columns of G, then take U':= (H_1 F | H_2). One can then use elementary column operations to guarantee that MU = (I 0).
• normalizationStep - Given a unimodular row over A = R[x_1,\ldots,x_n] with R a PID, create a change of variables so that one of the entries of f is monic in the last variable x_n.
• Description: If A = k[x_1,...,x_n], with k a field, then this can be achieved by using a theorem of Noether's.
• maximalIdealContaining - Given an ideal I of A = R[x_1,...,x_n] with R a PID, find a maximal ideal of A containing I.
• This is partly done thanks to Jason. We still need to implement this using Janet bases or something similar.
• Description: If k = complex numbers, then, given a set of generators I = (r_1,...,r_k) we can find a solution (a_1,...,a_n) to the system defined by {r_i = 0}. Then using the Nullstellensatz we know that m = (x_1-a_1,...,x_n-a_n) is a maximal ideal containing I. This seems to be more complicated over fields that are not algebraically closed, and even more complicated over Z. See the first section of A. Fabianska's dissertation.
• getLocalSolutions - gets local solutions.
• qsAlgorithm - Given an l x m unimodular matrix M over k[x_1,...,x_n], find a square unimodular matrix U such that MU = (I | 0).

## To Do List for after the Workshop

• horrocks (Branden, Brett) - Given a unimodular row f over R = (k[x_1,...x_n]_m)[t], use an inductive process and Suslin's Lemma to find a unimodular matrix U over R such that fU = (1 0 ... 0).
• Status: Done.
• suslinLemma (Branden, Brett) - Given a commutative ring R and polynomials f,g in B[y] with f(y) monic, deg(f) = s, deg(g) <= s-1, and one of the coefficients of g a unit in B, find a polynomial in the ideal (f,g) whose leading coefficient is 1.
• Status: Done.
• maximalIdealContaining (Hiro, Branden) - Given an ideal I of A = R[x_1,...,x_n] with R a PID, find a maximal ideal of A containing I.
• This is partly done thanks to Jason. We still need to implement this using Janet bases or something similar.
• Description: If k = complex numbers, then, given a set of generators I = (r_1,...,r_k) we can find a solution (a_1,...,a_n) to the system defined by {r_i = 0}. Then using the Nullstellensatz we know that m = (x_1-a_1,...,x_n-a_n) is a maximal ideal containing I. This seems to be more complicated over fields that are not algebraically closed, and even more complicated over Z. See the first section of A. Fabianska's dissertation.
• Status: Done.
• patch (Brett) - Given a set of local solutions to the unimodular row problem, use the patching process described in the Logar-Sturmfels paper to patch them together for a solution over the original polynomial ring.
• Status: Done.
• qsAlgorithmRow (Brett) - Given a unimodular row f over k[x_1,...,x_n], find a square unimodular matrix U such that fU = (1 0 ... 0).
• Input functions (all) - Create functions to convert input to the proper format; i.e. the map from F_0 to P, where P is the projective module. Place the functions in the input functions portion of the main file.