# Parametrization -- Rational parametrization of rational curves and related computations

## Description

Overview:

Parametrization is a package to compute rational parametrizations of rational curves defined over \mathbb{Q}.

Suppose C is a rational plane curve C of degree n defined over \mathbb{Q}.

We use the package AdjointIdeal to compute the adjoint ideal of C. (The package exports also all functions available in AdjointIdeal, e.g., geometricGenus.)

The corresponding linear system maps the curve birationally to a rational normal curve in \mathbb{P}^{n-2}.

Iterating the anticanonical map we give a projection of the rational normal curve to \mathbb{P}^{1} for n odd or to a conic C_2 in \mathbb{P}^{2} for n even.

In the case that n is even we test for the existence of a rational point on the conic and if so give a rational parametrization of the conic.

By inverting the birational map of C to \mathbb{P}^{1} or the conic we obtain a rational parametrization of C. If n is odd or C_2 has a rational point C is parametrized by \mathbb{P}^{1} otherwise by C_2.

The main focus of the algorithm is to avoid unnecessary choices to obtain a parametrization of small height.

For more theoretical details see J. Boehm: Rational parametrization of rational curves, http://www.math.uni-sb.de/ag/schreyer/jb/diplom%20janko%20boehm.pdf.

The package is work in progress, so there will be future improvements and more testing is necessary.

Key user functions:

parametrize -- This is the universal rational parametrization function, it works for plane rational curves, in particular conics, and rational normal curves.

testParametrization -- Test a parametrization.

rationalPointOnConic -- Test for a rational point on a conic and find it if it exists.

mapToRNC -- Map a plane rational curve to a rational normal curve.

Setup:

This package uses the package AdjointIdeal, so set up this first.

Place the file Parametrization.m2 somewhere into the M2 search path and install the package by doing

installPackage("Parametrization")

## Version

This documentation describes version 0.6 of Parametrization.

## Source code

The source code from which this documentation is derived is in the file Parametrization.m2. The auxiliary files accompanying it are in the directory Parametrization/.

## Exports

• Functions and commands
• Methods
• "chineseRemainder(List,List)" -- see chineseRemainder -- Solve simultaneous congruences.
• "invertBirationalMap(Ideal,Matrix)" -- see invertBirationalMap -- Computes the inverse of a birational map.
• "isomorphicProjectionOfRNC(Ideal)" -- see isomorphicProjectionOfRNC -- Parametrizing linear system of a rational normal curve.
• "legendreSymbol(ZZ,ZZ)" -- see legendreSymbol -- Compute the Legendresymbol.
• "mapToRNC(Ideal)" -- see mapToRNC -- Map plane rational curve to rational normal curve.
• "mapToRNC(Ideal,Ideal)" -- see mapToRNC -- Map plane rational curve to rational normal curve.
• "mapToRNC(Ideal,Matrix)" -- see mapToRNC -- Map plane rational curve to rational normal curve.
• "modularInverse(ZZ,ZZ)" -- see modularInverse -- Compute the inverse in Z/nZ.
• "modularPower(ZZ,ZZ,ZZ)" -- see modularPower -- Compute the modular power.
• "modularSquareRoot(ZZ,ZZ)" -- see modularSquareRoot -- Compute the modular square root.
• "parametrize(Ideal)" -- see parametrize -- Rational parametrization of rational curves.
• "parametrize(Ideal,Ideal)" -- see parametrize -- Rational parametrization of rational curves.
• "rationalPointOnConic(Ideal)" -- see rationalPointOnConic -- Rational point on a conic.
• "rParametrizeConic(Ideal)" -- see rParametrizeConic -- Compute a rational parametrization of a conic.
• "rParametrizePlaneCurve(Ideal,Ideal)" -- see rParametrizePlaneCurve -- Rational parametrization of rational plane curves.
• "rParametrizeRNC(Ideal)" -- see rParametrizeRNC -- Compute a rational parametrization of a rational normal curve.
• "testParametrization(Ideal,Matrix)" -- see testParametrization -- Test if parametrization.
• Symbols
• parametrizeConic -- Option whether to rationally parametrize conics.
• vb -- Option whether to print intermediate results.

## For the programmer

The object Parametrization is .