# RandomRationalPoints -- Obtain random points in a variety

## Description

RandomRationalPointsFind random points inside a variety.

This package provides tools for quickly finding a point (rational, or over a field extension) in the vanishing set of an ideal. The search is highly customizable. This package also includes tools for finding submatrices of a given rank at some point. Furthermore, it provides tools for generic projections and producing collections of linear forms with specified properties.
Core functions:

Acknowledgements:

The authors would like to thank David Eisenbud and Mike Stillman for useful conversations and comments on the development of this package. The authors began work on this package at the virtual Cleveland 2020 Macaulay2 workshop.

## Version

This documentation describes version 1.3 of RandomRationalPoints.

## Source code

The source code from which this documentation is derived is in the file RandomRationalPoints.m2.

## Exports

• Functions and commands
• Methods
• "extendIdealByNonZeroMinor(ZZ,Matrix,Ideal)" -- see extendIdealByNonZeroMinor -- extends the ideal to aid finding singular locus
• "findANonZeroMinor(ZZ,Matrix,Ideal)" -- see findANonZeroMinor -- finds a non-vanishing minor at some randomly chosen point
• "genericProjection(Ideal)" -- see genericProjection -- finds a random (somewhat) generic projection of the ring or ideal
• "genericProjection(Ring)" -- see genericProjection -- finds a random (somewhat) generic projection of the ring or ideal
• "genericProjection(ZZ,Ideal)" -- see genericProjection -- finds a random (somewhat) generic projection of the ring or ideal
• "genericProjection(ZZ,Ring)" -- see genericProjection -- finds a random (somewhat) generic projection of the ring or ideal
• "getRandomLinearForms(Ring,List)" -- see getRandomLinearForms -- retrieve a list of random degree 1 and 0 forms of specified types
• "projectionToHypersurface(Ideal)" -- see projectionToHypersurface -- Generic projection to a hypersurface
• "projectionToHypersurface(Ring)" -- see projectionToHypersurface -- Generic projection to a hypersurface
• "randomCoordinateChange(Ring)" -- see randomCoordinateChange -- produce linear automorphism of the ring
• "randomPoints(Ideal)" -- see randomPoints -- a function to find random points in a variety.
• "randomPoints(ZZ,Ideal)" -- see randomPoints -- a function to find random points in a variety.
• Symbols
• Codimension -- an option to specify the codimension so as not to compute it
• ExtendField -- an option used to specify if extending the finite field is permissible here
• "MinorPointAttempts" -- see findANonZeroMinor -- finds a non-vanishing minor at some randomly chosen point
• IntersectionAttempts -- an option which controls how many linear intersections are attempted when looking for rational points
• MaxCoordinatesToReplace -- The maximum number of coordinates to turn into non-monomial functions when calling {\tt randomCoordinateChange}
• MaxCoordinatesToTrivialize -- the number of coordinates to set to random values when doing a linear intersection
• NumThreadsToUse -- number of threads the the function will use in a brute force search for a point
• PointCheckAttempts -- Number of times the the function will search for a point
• ProjectionAttempts -- Number of projection trials using in randomPoints when doing generic projection
• "BruteForce" -- see randomPoints(...,Strategy=>...) -- values for the option Strategy when calling randomPoints
• "Default" -- see randomPoints(...,Strategy=>...) -- values for the option Strategy when calling randomPoints
• "GenericProjection" -- see randomPoints(...,Strategy=>...) -- values for the option Strategy when calling randomPoints
• "HybridProjectionIntersection" -- see randomPoints(...,Strategy=>...) -- values for the option Strategy when calling randomPoints
• "LinearIntersection" -- see randomPoints(...,Strategy=>...) -- values for the option Strategy when calling randomPoints
• "Full" -- see Replacement -- When changing coordinates, whether to replace variables by general degre 1 forms or binomials
• Replacement -- When changing coordinates, whether to replace variables by general degre 1 forms or binomials

## For the programmer

The object RandomRationalPoints is .