# Heights

## `NaiveHeight(P): PtEll -> FldPrElt`

The naive $x$-coordinate height of a point $P$ on an elliptic curve over a function field $K$; in other words, the degree of the point $(x(P):1)$ on the projective line.

## `Height(P): PtEll -> FldRatElt`

The Néron–Tate height $\hat{h}(P)$ of the given point $P$ on an elliptic curve defined over a function field.

## `LocalHeight(P, Pl): PtEll, PlcFunElt -> FldPrElt`

Given a point $P$ on an elliptic curve defined over a function field $F$ and a place $Pl$ of the function field $F$, returns the local height $\lambda_{Pl}(P)$ at $Pl$ of $P$.

## `HeightPairing(P, Q): PtEll[FldFunG], PtEll[FldFunG] -> FldRatElt`

Returns the height pairing of the points $P$ and $Q$, defined as $\left<P,Q\right> = (\hat{h}(P+Q) - \hat{h}(P) - \hat{h}(Q))/2$ (where as usual $\hat{h}$ denotes the Néron–Tate height).

## `HeightPairingMatrix(S): SeqEnum[PtEll[FldFunG]] -> AlgMatElt`

Given a sequence $S$ of points $P_i$ on an elliptic curve defined over a function field, this function returns the matrix $(\left< P_i, P_j \right>)$, where $\left< , \right>$ is the height pairing.

## `HeightPairingLattice(S): [PtEll[FldFunG]] -> AlgMatElt, Map`

The height pairing lattice of a sequence of independent points on an elliptic curve defined over a function field.

## `Basis(S): [ PtEll ] -> [ PtEll ], ModMatAlgElt`

Given a sequence $S$ of points on an elliptic curve, returns a sequence of points that form a basis for the free part of the subgroup generated by the points in $S$. The second returned value is a Gram matrix for this basis with respect to the Néron–Tate pairing.

## `Basis(S, r, disc): SeqEnum, RngIntElt, RngIntElt -> SeqEnum`

Given a sequence $S$ of points on an elliptic curve, returns a sequence of independent points in the free part of the subgroup generated by $S$ such that these points generate a lattice of rank $r$ and discriminant $disc$. The answer is returned as soon as such a lattice has been found, ignoring any additional points in the given sequence.

## `IsLinearlyDependent(points): [PtEll] -> BoolElt, ModTupRngElt`

## `IsLinearlyIndependent(points): [PtEll] -> BoolElt, ModTupRngElt`

## `IndependentGenerators(points): [PtEll] -> [PtEll]`

These functions are available for elliptic curves over function fields, and behave the same way as for elliptic curves over the rationals.
