# isRankAtLeast -- determines if the matrix has rank at least a number

## Synopsis

• Usage:
isRankAtLeast(n1, M1)
• Inputs:
• Optional inputs:
• DetStrategy => ..., default value Rank, DetStrategy is a strategy for allowing the user to choose how determinants (or rank), is computed
• MaxMinors => ..., default value null, an option to control depth of search
• PointOptions => ..., default value {Strategy => Default, Homogeneous => false, Replacement => Binomial, ExtendField => true, PointCheckAttempts => 0, DecompositionStrategy => Decompose, NumThreadsToUse => 1, DimensionFunction => dim, Verbose => false}, options to pass to functions in the package RandomPoints
• Strategy => ..., default value new OptionTable from {Points => 0, Random => 0, GRevLexLargest => 0, LexSmallestTerm => 25, LexLargest => 0, LexSmallest => 25, GRevLexSmallestTerm => 25, RandomNonzero => 0, GRevLexSmallest => 25}, strategies for choosing submatrices
• Threads => ..., default value 1
• Verbose => ..., default value false
• Outputs:

## Description

This function tries to quickly determine whether the matrix has a given rank. isRankAtLeast calls getSubmatrixOfRank. If that function finds a submatrix of a certain rank, this returns true. If that function fails to find a submatrix of a certain rank, this simply calls rank. To control the number of times getSubmatrixOfRank considers submatrices, use the option MaxMinors.

 i1 : R = QQ[x,y]; i2 : M = matrix{{x,y,2,0,2*x+y}, {0,0,1,0,x}, {x,y,0,0,y}}; 3 5 o2 : Matrix R <--- R i3 : rank M o3 = 2 i4 : isRankAtLeast(2, M) o4 = true i5 : isRankAtLeast(3, M) o5 = false

The option Threads can be used allow the function use multiple threads of execution. If allowableThreads is above 2 and Threads is set above 1, then this function will try to simultaneously compute the rank of the matrix while looking for a submatrix of a certain rank.