# Elliptic Curves over Function Fields

This section involves elliptic curves with coefficients in a function field $k(C)$ where $C$ is a regular projective curve over some field $k$ (usually a number field or a finite field). The commands are largely parallel to those for elliptic curves over the rationals; one can compute local information (Tate’s algorithm and so forth), a minimal model, the $L$-function, the $2$-Selmer group, and the Mordell–Weil group. This goes in order of decreasing generality: Local information is available for curves over univariate function fields over any exact base field, while at the other extreme Mordell–Weil groups are available only for curves over rational function fields over finite fields for which the associated surface is a rational surface. The generality of many of the commands will be expanded in future releases.

- [An Overview of Relevant Theory](theory.md)

- [Local Computations](local.md)

  - [`BadPlaces(E): CrvEll → [ PlcFunElt ]`](local.md#function-badplaces-crvell)

  - [`Conductor(E): CrvEll → DivFunElt`](local.md#function-conductor-crvell)

  - [`LocalInformation(E, Pl): CrvEll[FldFun], PlcFunElt → Tup, CrvEll`](local.md#function-localinformation-crvell-fldfun-plcfunelt)

  - [`LocalInformation(E, f): CrvEll[FldFunRat], FldFunRatUElt → Tup, CrvEll`](local.md#function-localinformation-crvell-fldfunrat-fldfunratuelt)

  - [`LocalInformation(E): CrvEll → [ < Tup > ]`](local.md#function-localinformation-crvell)

  - [`KodairaSymbols(E): CrvEll → [ <SymKod, RngIntElt> ]`](local.md#function-kodairasymbols-crvell)

  - [`NumberOfComponents(K): SymKod → RngIntElt`](local.md#function-numberofcomponents-symkod)

  - [`MinimalModel(E): CrvEll[FldFunG] → CrvEll, MapIsoSch`](local.md#function-minimalmodel-crvell-fldfung)

  - [`MinimalDegreeModel(E): CrvEll[FldFunRat] → CrvEll, Map, Map`](local.md#function-minimaldegreemodel-crvell-fldfunrat)

  - [`IsConstantCurve(E): CrvEll[FldFunRat] → BoolElt, CrvEll`](local.md#function-isconstantcurve-crvell-fldfunrat)

  - [`TraceOfFrobenius(E, p): CrvEll[FldFunRat], RngElt → BoolElt, CrvEll`](local.md#function-traceoffrobenius-crvell-fldfunrat-rngelt)

- [Elliptic Curves of Given Conductor](ecsearch.md)

  - [`EllipticCurveSearch(N, Effort): [], RngIntElt → SeqEnum`](ecsearch.md#function-ellipticcurvesearch-rngintelt)

- [Heights](heights.md)

  - [`NaiveHeight(P): PtEll → FldPrElt`](heights.md#function-naiveheight-ptell)

  - [`Height(P): PtEll → FldRatElt`](heights.md#function-height-ptell)

  - [`LocalHeight(P, Pl): PtEll, PlcFunElt → FldPrElt`](heights.md#function-localheight-ptell-plcfunelt)

  - [`HeightPairing(P, Q): PtEll[FldFunG], PtEll[FldFunG] → FldRatElt`](heights.md#function-heightpairing-ptell-fldfung-ptell-fldfung)

  - [`HeightPairingMatrix(S): SeqEnum[PtEll[FldFunG]] → AlgMatElt`](heights.md#function-heightpairingmatrix-seqenum-ptell-fldfung)

  - [`HeightPairingLattice(S): [PtEll[FldFunG]] → AlgMatElt, Map`](heights.md#function-heightpairinglattice-ptell-fldfung)

  - [`Basis(S): [ PtEll ] → [ PtEll ], ModMatAlgElt`](heights.md#function-basis-ptell)

  - [`Basis(S, r, disc): SeqEnum, RngIntElt, RngIntElt → SeqEnum`](heights.md#function-basis-seqenum-rngintelt-rngintelt)

  - [`IsLinearlyDependent(points): [PtEll] → BoolElt, ModTupRngElt`](heights.md#function-islinearlydependent-ptell)

  - [`IsLinearlyIndependent(points): [PtEll] → BoolElt, ModTupRngElt`](heights.md#function-islinearlyindependent-ptell)

  - [`IndependentGenerators(points): [PtEll] → [PtEll]`](heights.md#function-independentgenerators-ptell)

- [The Torsion Subgroup](torsion.md)

  - [`TorsionSubgroup(E): CrvEll[FldFunG] → GrpAb, Map`](torsion.md#function-torsionsubgroup-crvell-fldfung)

  - [`TorsionBound(E, n): CrvEll[FldFunG], RngIntElt → RngIntElt`](torsion.md#function-torsionbound-crvell-fldfung-rngintelt)

  - [`TorsionBound(E, n, B): CrvEll[FldFunG], RngIntElt, RngIntElt → RngIntElt`](torsion.md#function-torsionbound-crvell-fldfung-rngintelt-rngintelt)

  - [`GeometricTorsionBound(E): CrvEll[FldFunG] → RngIntElt`](torsion.md#function-geometrictorsionbound-crvell-fldfung)

- [The Mordell–Weil Group](mordell-weil-group.md)

  - [`RankBounds(E): CrvEll[FldFunG] → RngIntElt, RngIntElt`](mordell-weil-group.md#function-rankbounds-crvell-fldfung)

  - [`RankBound(E): CrvEll[FldFunG] → RngIntElt`](mordell-weil-group.md#function-rankbound-crvell-fldfung)

  - [`MordellWeilGroup(E : parameters): CrvEll[FldFunRat] → GrpAb, Map`](mordell-weil-group.md#function-mordellweilgroup-crvell-fldfunrat)

  - [`MordellWeilLattice(E): CrvEll[FldFunRat] → Lat, Map`](mordell-weil-group.md#function-mordellweillattice-crvell-fldfunrat)

  - [`GeometricMordellWeilLattice(E): CrvEll[FldFunRat] → Lat, Map`](mordell-weil-group.md#function-geometricmordellweillattice-crvell-fldfunrat)

  - [`Generators(E): CrvEll[FldFunRat] → SeqEnum`](mordell-weil-group.md#function-generators-crvell-fldfunrat)

  - [`Example: rank2`](mordell-weil-group.md#example-ex-ee4c8d)

- [Two Descent](two-descent.md)

  - [`TwoSelmerGroup(E): CrvEll[FldFunG] → GrpAb, MapSch`](two-descent.md#function-twoselmergroup-crvell-fldfung)

  - [`TwoDescent(E): CrvEll[FldFunG] → SeqEnum[CrvHyp], List[MapSch]`](two-descent.md#function-twodescent-crvell-fldfung)

  - [`QuarticMinimize(f): RngMPolElt[FldFunRat] → RngMPolElt[FldFunRat]`](two-descent.md#function-quarticminimize-rngmpolelt-fldfunrat)

  - [`Points(C : parameters): CrvHyp → [Pt]`](two-descent.md#function-points-crvhyp)

  - [`PointsQI(C, H): Crv, RngIntElt → [Pt]`](two-descent.md#function-pointsqi-crv-rngintelt)

  - [`TwoIsogenySelmerGroups(E): CrvEll[FldFunG] → GrpAb, GrpAb, MapSch, MapSch`](two-descent.md#function-twoisogenyselmergroups-crvell-fldfung)

- [The $L$-function and Counting Points](Lfunction.md)

  - [`LFunction(E): CrvEll[FldFunRat] → RngUPolElt`](Lfunction.md#function-lfunction-crvell-fldfunrat)

  - [`LFunction(E, S): CrvEll[FldFunRat], <SeqEnum> → RngUPolElt`](Lfunction.md#function-lfunction-crvell-fldfunrat-seqenum)

  - [`LFunction(E, e): CrvEll[FldFunRat], RngIntElt → RngUPolElt`](Lfunction.md#function-lfunction-crvell-fldfunrat-rngintelt)

  - [`AnalyticRank(E): CrvEll[FldFunG] → RngIntElt`](Lfunction.md#function-analyticrank-crvell-fldfung)

  - [`AnalyticInformation(E): CrvEll[FldFunG] → Tup`](Lfunction.md#function-analyticinformation-crvell-fldfung)

  - [`AnalyticInformation(E, L): CrvEll[FldFunG], RngUPolElt → Tup`](Lfunction.md#function-analyticinformation-crvell-fldfung-rngupolelt)

  - [`AnalyticInformation(E, e): CrvEll[FldFunG], RngIntElt → Tup`](Lfunction.md#function-analyticinformation-crvell-fldfung-rngintelt)

  - [`Example: sha3`](Lfunction.md#example-ex-b7cb32)

  - [`Example: Rank2 Continued`](Lfunction.md#example-ex-f412e7)

  - [`NumberOfPointsOnSurface(E, e): CrvEll, RngIntElt → RngIntElt`](Lfunction.md#function-numberofpointsonsurface-crvell-rngintelt)

  - [`NumbersOfPointsOnSurface(E, e): CrvEll, RngIntElt → [ RngIntElt ], [ RngIntElt ]`](Lfunction.md#function-numbersofpointsonsurface-crvell-rngintelt)

  - [`BettiNumber(E, i): CrvEll, RngIntElt → RngIntElt`](Lfunction.md#function-bettinumber-crvell-rngintelt)

  - [`CharacteristicPolynomialFromTraces(traces): [ Fld ] → RngUPolElt`](Lfunction.md#function-characteristicpolynomialfromtraces-fld)

  - [`CharacteristicPolynomialFromTraces(traces, d, q, i): [ Fld ], RngIntElt, RngIntElt, RngIntElt → RngUPolElt, RngUPolElt`](Lfunction.md#function-characteristicpolynomialfromtraces-fld-rngintelt-rngintelt-rngintelt)

- [Action of Frobenius](frobenius-action.md)

  - [`Frobenius(P, q): PtEll[FldFunRat], RngIntElt → PtEll`](frobenius-action.md#function-frobenius-ptell-fldfunrat-rngintelt)

  - [`FrobeniusActionOnPoints(S, q : parameters): [ PtEll ], RngIntElt → AlgMatElt`](frobenius-action.md#function-frobeniusactiononpoints-ptell-rngintelt)

  - [`FrobeniusActionOnReducibleFiber(L): < Tup > → AlgMatElt`](frobenius-action.md#function-frobeniusactiononreduciblefiber-tup)

  - [`FrobeniusActionOnTrivialLattice(E): CrvEll → AlgMatElt`](frobenius-action.md#function-frobeniusactionontriviallattice-crvell)

- [Extended Examples](extended-examples.md)

  - [`Example: ellfunfld1`](extended-examples.md#example-ex-4e11bd)

  - [`Example: Reductionmodp`](extended-examples.md#example-ex-198933)

  - [`Example: L Functionbyhand`](extended-examples.md#example-ex-98b1c7)
