next | previous | forward | backward | up | index | toc

# RationalPoints2 -- Find the rational points on a variety

## Description

RationalPoints2 is a package for enumerating rational points on a variety defined by an ideal of a polynomial ring. The main function is rationalPoints. Over a finite field it will list all the rational points. Over a number field it can find all points of a 0-dimensional ideal in its splitting field, and all points with bounded height for a positive dimensional ideal. The package also provides some utility functions related to field extensions, which allow the computation of rational points with prescribed coefficient field.

An example over a finite field.

 i1 : ZZ/2[x,y,z]; rationalPoints(ideal(y^2*z+y*z^2-x^3-x*z^2), Projective=>true) o2 = {(1 : 0 : 1), (1 : 1 : 1), (0 : 1 : 0), (0 : 1 : 1), (0 : 0 : 1)} o2 : List

An example over a number field: we enumerate the rational points on the unit circle with bounded height.

 i3 : QQ[x,y]; rationalPoints(ideal(x^2+y^2-1), Bound=>5) 3 4 3 4 4 3 4 o4 = {{0, -1}, {1, 0}, {-1, 0}, {0, 1}, {-, - -}, {- -, - -}, {-, - -}, {- -, 5 5 5 5 5 5 5 ------------------------------------------------------------------------ 3 4 3 4 3 3 4 3 4 - -}, {-, -}, {- -, -}, {-, -}, {- -, -}} 5 5 5 5 5 5 5 5 5 o4 : List

And an example of a 0-dimensional ideal.

 i5 : QQ[x,y]; I = ideal(x^2+1,y^2-2); o6 : Ideal of QQ[x..y] i7 : rationalPoints(I, Verbose=>true) -- the following polynomials do not split -- x^2-2 o7 = {} o7 : List i8 : rationalPoints(I, Split=>true, Verbose=>true) -- base change to the field QQ[a]/(a^2-2) -- base change to the field QQ[a]/(a^4+1) 2 3 2 3 2 3 2 3 o8 = {{a , a - a}, {-a , a - a}, {a , - a + a}, {-a , - a + a}} o8 : List

## Caveat

Currently the functionality of positive dimensional ideals over number fields other than QQ depends on Sage (an algorithm by Doyle–Krumm for enumerating field elements with bounded height).

• Jieao Song

## Version

This documentation describes version 0.5 of RationalPoints2.

## Source code

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

## Exports

• Types
• Functions and commands
• baseChange -- Perform base change for field extensions
• charpoly -- Characteristic and minimal polynomials over the prime field
• minpoly -- see charpoly -- Characteristic and minimal polynomials over the prime field
• extField -- Define field extensions
• setPariSize -- see extField -- Define field extensions
• splittingField -- see extField -- Define field extensions
• globalHeight -- Multiplicative height function
• hermiteNormalForm -- Compute the Hermite normal form of a fractional ideal in a number field
• integers -- Compute a basis for the integers of a number field
• rationalPoints -- Find the rational points on a variety
• zeros -- List the zeros of a polynomial
• Methods
• baseChange(InexactFieldFamily,Number) -- see baseChange -- Perform base change for field extensions
• baseChange(InexactFieldFamily,RingElement) -- see baseChange -- Perform base change for field extensions
• baseChange(Number,Ideal) -- see baseChange -- Perform base change for field extensions
• baseChange(Number,Number) -- see baseChange -- Perform base change for field extensions
• baseChange(Number,RingElement) -- see baseChange -- Perform base change for field extensions
• baseChange(Ring,Ideal) -- see baseChange -- Perform base change for field extensions
• baseChange(Ring,Number) -- see baseChange -- Perform base change for field extensions
• baseChange(Ring,RingElement) -- see baseChange -- Perform base change for field extensions
• charpoly(Number) -- see charpoly -- Characteristic and minimal polynomials over the prime field
• charpoly(RingElement) -- see charpoly -- Characteristic and minimal polynomials over the prime field
• minpoly(Number) -- see charpoly -- Characteristic and minimal polynomials over the prime field
• minpoly(Ring) -- see charpoly -- Characteristic and minimal polynomials over the prime field
• minpoly(RingElement) -- see charpoly -- Characteristic and minimal polynomials over the prime field
• extField(List) -- see extField -- Define field extensions
• extField(Ring,List) -- see extField -- Define field extensions
• extField(Ring,RingElement) -- see extField -- Define field extensions
• extField(RingElement) -- see extField -- Define field extensions
• splittingField(Ring,RingElement) -- see extField -- Define field extensions
• splittingField(RingElement) -- see extField -- Define field extensions
• globalHeight(List) -- see globalHeight -- Multiplicative height function
• hermiteNormalForm(List) -- see hermiteNormalForm -- Compute the Hermite normal form of a fractional ideal in a number field
• hermiteNormalForm(RingElement) -- see hermiteNormalForm -- Compute the Hermite normal form of a fractional ideal in a number field
• discriminant(Ring) -- see integers -- Compute a basis for the integers of a number field
• integers(Ring) -- see integers -- Compute a basis for the integers of a number field
• ProjectivePoint == ProjectivePoint -- see ProjectivePoint -- Class of a projective point
• ring(ProjectivePoint) -- see ProjectivePoint -- Class of a projective point
• rationalPoints(Ideal) -- see rationalPoints -- Find the rational points on a variety
• rationalPoints(Ring,Ideal) -- see rationalPoints -- Find the rational points on a variety
• zeros(Ring,RingElement) -- see zeros -- List the zeros of a polynomial
• zeros(RingElement) -- see zeros -- List the zeros of a polynomial
• Symbols
• Amount -- see rationalPoints -- Find the rational points on a variety
• Bound -- see rationalPoints -- Find the rational points on a variety
• KeepAll -- see rationalPoints -- Find the rational points on a variety
• Split -- see rationalPoints -- Find the rational points on a variety

## For the programmer

The object RationalPoints2 is .

### Menu

#### Utility functions for handling field extensions and number fields

• baseChange -- Perform base change for field extensions
• extField -- Define field extensions
• charpoly -- Characteristic and minimal polynomials over the prime field
• integers -- Compute a basis for the integers of a number field
• hermiteNormalForm -- Compute the Hermite normal form of a fractional ideal in a number field