# findANonZeroMinor -- finds a non-vanishing minor at some randomly chosen point

## Synopsis

• Usage:
findANonZeroMinor(n,M,I)
• Inputs:
• I, an ideal, in a polynomial ring over QQ or ZZ/p for p prime
• M, , over the polynomial ring
• n, an integer, the size of the minors to consider
• Optional inputs:
• Strategy => , default value Default, to specify which strategy to use when calling randomPoints
• Verbose => , default value false, set to true for verbose output
• Homogeneous => , default value false, controls if the computations are homogeneous (in calls to randomPoints)
• MinorPointAttempts => an integer, default value 5, how many points to check the rank of the matrix at
• DimensionFunction => , default value dim, specify a custom dimension function, such as the default dimViaBezout or the Macaulay2 function dim
• DecompositionStrategy => ..., default value null, control how ideals of points are factored into minimal primes
• ExtendField => ..., default value true, an option used to specify if extending the finite field is permissible here
• NumThreadsToUse => ..., default value 1, number of threads the the function will use in a brute force search for a point
• PointCheckAttempts => ..., default value 0, Number of times the the function will search for a point
• Replacement => ..., default value Binomial, When changing coordinates, whether to replace variables by general degre 1 forms, binomials, etc.
• Outputs:
• , The functions outputs the following: 1. randomly chosen point $P$ in $V(I)$, 2. the indexes of the columns of $M$ that stay linearly independent upon plugging $P$ into $M$, 3. the indices of the linearly independent rows of the matrix extracted from $M$ using (2), 4. a random $n\times n$ submatrix of $M$ that has full rank at $P$.

## Description

Given an ideal, a matrix, an integer and a user defined Strategy, this function uses the randomPoints function to find a point in $V(I)$. Then it plugs the point in the matrix and tries to find a non-zero minor of size equal to the given integer. It outputs the point and also one of the submatrices of interest along with the column and row indices that were used sequentially.

 i1 : R = ZZ/5[x,y,z]; i2 : I = ideal(random(3,R)-2, random(2,R)); o2 : Ideal of R i3 : M = jacobian(I); 3 2 o3 : Matrix R <--- R i4 : findANonZeroMinor(2,M,I) o4 = ({-2, 0, 2}, {0, 1}, {0, 1}, {1} | -2z -x2-2y2+2xz+2z2 |) {1} | 2z xy-y2-2yz-2z2 | o4 : Sequence

The option MinorPointAttempts is how many points to attempt before giving up.