# Elliptic Curves over ${\mathbb{Q}}$ and Number Fields

- [Introduction](intro.md)

- [Curves over the Rationals](intro-2.md)

  - [Local Invariants](intro-2.md#local-invariants)

    - [`Conductor(E): CrvEll → RngIntElt`](intro-2.md#function-conductor-crvell)

    - [`BadPrimes(E): CrvEll → [ RngIntElt ]`](intro-2.md#function-badprimes-crvell)

    - [`TamagawaNumber(E, p): CrvEll, RngIntElt → RngIntElt`](intro-2.md#function-tamagawanumber-crvell-rngintelt)

    - [`TamagawaNumbers(E): CrvEll → [ RngIntElt ]`](intro-2.md#function-tamagawanumbers-crvell)

    - [`LocalInformation(E, p): CrvEll, RngIntElt → <RngIntElt, RngIntElt, RngIntElt, RngIntElt, SymKod, BoolElt>, CrvEll`](intro-2.md#function-localinformation-crvell-rngintelt)

    - [`LocalInformation(E): CrvEll → [ Tup ]`](intro-2.md#function-localinformation-crvell)

    - [`ReductionType(E, p): CrvEll, RngIntElt → MonStgElt`](intro-2.md#function-reductiontype-crvell-rngintelt)

    - [`TraceOfFrobeniusDirect(E, p): CrvEll, RngIntElt → RngIntElt`](intro-2.md#function-traceoffrobeniusdirect-crvell-rngintelt)

    - [`TracesOfFrobenius(E, B): CrvEll, RngIntElt → SeqEnum`](intro-2.md#function-tracesoffrobenius-crvell-rngintelt)

    - [`Example: Frobenius Traces`](intro-2.md#example-ex-eca3aa)

  - [Kodaira Symbols](intro-2.md#kodaira-symbols)

    - [`KodairaSymbol(E, p): CrvEll, RngIntElt → SymKod`](intro-2.md#function-kodairasymbol-crvell-rngintelt)

    - [`KodairaSymbols(E): CrvEll → [ SymKod ]`](intro-2.md#function-kodairasymbols-crvell)

    - [`KodairaSymbol(s): MonStgElt → SymKod`](intro-2.md#function-kodairasymbol-monstgelt)

    - [`h eq k: SymKod, SymKod → BoolElt`](intro-2.md#operation-op-eq-symkod-symkod)

    - [`h ne k: SymKod, SymKod → BoolElt`](intro-2.md#operation-op-ne-symkod-symkod)

    - [`Example: Kodaira`](intro-2.md#example-ex-c22679)

  - [Complex Multiplication](intro-2.md#complex-multiplication)

    - [`HasComplexMultiplication(E): CrvEll → BoolElt, RngIntElt`](intro-2.md#function-hascomplexmultiplication-crvell)

  - [Isogenous Curves](intro-2.md#isogenous-curves)

    - [`IsogenousCurves(E): CrvEll[FldRat] → SeqEnum, RngIntElt`](intro-2.md#function-isogenouscurves-crvell-fldrat)

    - [`FaltingsHeight(E): CrvEll[FldRat] → FldReElt`](intro-2.md#function-faltingsheight-crvell-fldrat)

    - [`StableFaltingsHeight(E): CrvEll[FldRat] → FldReElt`](intro-2.md#function-stablefaltingsheight-crvell-fldrat)

    - [`Example: Isog Curves`](intro-2.md#example-ex-17c07d)

  - [Heights and Height Pairing](intro-2.md#heights-and-height-pairing)

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

    - [`WeilHeight(P): PtEll → FldPrElt`](intro-2.md#function-weilheight-ptell)

    - [`Height(P: parameters): PtEll → NFldComElt`](intro-2.md#function-height-ptell)

    - [`CanonicalHeight(P: parameters): PtEll → NFldComElt`](intro-2.md#function-canonicalheight-ptell)

    - [`LocalHeight(P, p): PtEll, RngIntElt → FldComElt`](intro-2.md#function-localheight-ptell-rngintelt)

    - [`HeightPairing(P, Q: parameters): PtEll, PtEll → FldComElt`](intro-2.md#function-heightpairing-ptell-ptell)

    - [`HeightPairingMatrix(S: parameters): [PtEll] → AlgMat`](intro-2.md#function-heightpairingmatrix-ptell)

    - [`HeightPairingMatrix(E: parameters): CrvEll → AlgMat`](intro-2.md#function-heightpairingmatrix-crvell)

    - [`Regulator(S): [ PtEll ] → FldComElt`](intro-2.md#function-regulator-ptell)

    - [`Regulator(E): CrvEll → FldComElt`](intro-2.md#function-regulator-crvell)

    - [`Example: Fun With Heights`](intro-2.md#example-ex-d6c540)

    - [`SilvermanBound(H): SetPtEll → FldPrElt`](intro-2.md#function-silvermanbound-setptell)

    - [`SilvermanBound(E): CrvEll → FldPrElt`](intro-2.md#function-silvermanbound-crvell)

    - [`SiksekBound(H: parameters): SetPtEll → FldPrElt`](intro-2.md#function-siksekbound-setptell)

    - [`SiksekBound(E: parameters): CrvEll → FldPrElt`](intro-2.md#function-siksekbound-crvell)

    - [`Example: Bounds`](intro-2.md#example-ex-0bdc03)

    - [`IsLinearlyIndependent(P, Q): PtEll, PtEll → BoolElt, ModTupElt`](intro-2.md#function-islinearlyindependent-ptell-ptell)

    - [`IsLinearlyIndependent(S): [ PtEll ] → BoolElt, ModTupElt`](intro-2.md#function-islinearlyindependent-ptell)

    - [`ReducedBasis(S): [ PtEll ] → [ PtEll ]`](intro-2.md#function-reducedbasis-ptell)

    - [`Example: Linear Independence`](intro-2.md#example-ex-ce19b5)

    - [`pAdicHeight(P, p): PtEll, RngIntElt → FldPadElt`](intro-2.md#function-padicheight-ptell-rngintelt)

    - [`pAdicRegulator(S, p): [PtEll], RngIntElt → FldPadElt`](intro-2.md#function-padicregulator-ptell-rngintelt)

    - [`EisensteinTwo(E, p): CrvEll, RngIntElt → FldPadElt`](intro-2.md#function-eisensteintwo-crvell-rngintelt)

    - [`FrobeniusMatrix(E, p): CrvEll, RngIntElt → Mtrx`](intro-2.md#function-frobeniusmatrix-crvell-rngintelt)

    - [`Example: Padic Height`](intro-2.md#example-ex-1e7aba)

  - [Heegner Points](intro-2.md#heegner-points)

    - [`HeegnerPoint(E : parameters): CrvEll → BoolElt, PtEll`](intro-2.md#function-heegnerpoint-crvell)

    - [`HeegnerPoint(C : parameters): CrvHyp → BoolElt, PtHyp`](intro-2.md#function-heegnerpoint-crvhyp)

    - [`HeegnerPoint(f : parameters): RngUPolElt → BoolElt, PtHyp`](intro-2.md#function-heegnerpoint-rngupolelt)

    - [`HeegnerPoint(C : parameters): Crv → BoolElt, Pt`](intro-2.md#function-heegnerpoint-crv)

    - [`ModularParametrization(E, z, B : parameters): CrvEll[FldRat], FldComElt, RngIntElt → FldComElt`](intro-2.md#function-modularparametrization-crvell-fldrat-fldcomelt-rngintelt)

    - [`ModularParametrisation(E, z, B : parameters): CrvEll[FldRat], FldComElt, RngIntElt → FldComElt`](intro-2.md#function-modularparametrisation-crvell-fldrat-fldcomelt-rngintelt)

    - [`ModularParametrization(E, z : parameters): CrvEll[FldRat], FldComElt → FldComElt`](intro-2.md#function-modularparametrization-crvell-fldrat-fldcomelt)

    - [`ModularParametrisation(E, z : parameters): CrvEll[FldRat], FldComElt → FldComElt`](intro-2.md#function-modularparametrisation-crvell-fldrat-fldcomelt)

    - [`ModularParametrization(E, Z, B : parameters): CrvEll[FldRat], [FldComElt], RngIntElt → [FldComElt]`](intro-2.md#function-modularparametrization-crvell-fldrat-fldcomelt-rngintelt-2)

    - [`ModularParametrisation(E, Z, B : parameters): CrvEll[FldRat], [FldComElt], RngIntElt → [FldComElt]`](intro-2.md#function-modularparametrisation-crvell-fldrat-fldcomelt-rngintelt-2)

    - [`ModularParametrization(E, Z : parameters): CrvEll[FldRat], [FldComElt] → [FldComElt]`](intro-2.md#function-modularparametrization-crvell-fldrat-fldcomelt-2)

    - [`ModularParametrisation(E, Z : parameters): CrvEll[FldRat], [FldComElt] → [FldComElt]`](intro-2.md#function-modularparametrisation-crvell-fldrat-fldcomelt-2)

    - [`ModularParametrization(E, f, B : parameters): CrvEll[FldRat], QuadBinElt, RngIntElt → FldComElt`](intro-2.md#function-modularparametrization-crvell-fldrat-quadbinelt-rngintelt)

    - [`ModularParametrisation(E, f, B : parameters): CrvEll[FldRat], QuadBinElt, RngIntElt → FldComElt`](intro-2.md#function-modularparametrisation-crvell-fldrat-quadbinelt-rngintelt)

    - [`ModularParametrization(E, f : parameters): CrvEll[FldRat], QuadBinElt → FldComElt`](intro-2.md#function-modularparametrization-crvell-fldrat-quadbinelt)

    - [`ModularParametrisation(E, f : parameters): CrvEll[FldRat], QuadBinElt → FldComElt`](intro-2.md#function-modularparametrisation-crvell-fldrat-quadbinelt)

    - [`ModularParametrization(E, F, B : parameters): CrvEll[FldRat], [QuadBinElt], RngIntElt → [FldComElt]`](intro-2.md#function-modularparametrization-crvell-fldrat-quadbinelt-rngintelt-2)

    - [`ModularParametrisation(E, F, B : parameters): CrvEll[FldRat], [QuadBinElt], RngIntElt → [FldComElt]`](intro-2.md#function-modularparametrisation-crvell-fldrat-quadbinelt-rngintelt-2)

    - [`ModularParametrization(E, F : parameters): CrvEll[FldRat], [QuadBinElt] → [FldComElt]`](intro-2.md#function-modularparametrization-crvell-fldrat-quadbinelt-2)

    - [`ModularParametrisation(E, F : parameters): CrvEll[FldRat], [QuadBinElt] → [FldComElt]`](intro-2.md#function-modularparametrisation-crvell-fldrat-quadbinelt-2)

    - [`HeegnerDiscriminants(E,lo,hi): CrvEll[FldRat], RngIntElt, RngIntElt → SeqEnum`](intro-2.md#function-heegnerdiscriminants-crvell-fldrat-rngintelt-rngintelt)

    - [`HeegnerForms(E,D : parameters): CrvEll[FldRat], RngIntElt → SeqEnum`](intro-2.md#function-heegnerforms-crvell-fldrat-rngintelt)

    - [`HeegnerForms(N,D : parameters): RngIntElt, RngIntElt → SeqEnum`](intro-2.md#function-heegnerforms-rngintelt-rngintelt)

    - [`ManinConstant(E): CrvEll[FldRat] → RngIntElt`](intro-2.md#function-maninconstant-crvell-fldrat)

    - [`HeegnerTorsionElement(E, Q): CrvEll[FldRat], RngIntElt → PtEll`](intro-2.md#function-heegnertorsionelement-crvell-fldrat-rngintelt)

    - [`HeegnerPoints(E, D : parameters): CrvEll[FldRat], RngIntElt → Tup, PtEll`](intro-2.md#function-heegnerpoints-crvell-fldrat-rngintelt)

    - [`Example: Heegner`](intro-2.md#example-ex-f2bb35)

    - [`Example: Heegner2`](intro-2.md#example-ex-350bc4)

    - [`Example: Heegner3`](intro-2.md#example-ex-24a537)

    - [`Example: Heegner4`](intro-2.md#example-ex-6e096b)

    - [`Example: Heegner5`](intro-2.md#example-ex-339f1a)

  - [Analytic Information](intro-2.md#analytic-information)

    - [`Periods(E: parameters): CrvEll → [ FldComElt ]`](intro-2.md#function-periods-crvell)

    - [`Periods(E, k): CrvEll, RngIntElt → [ FldComElt ]`](intro-2.md#function-periods-crvell-rngintelt)

    - [`EllipticCurveFromPeriods(om: parameters): [ FldComElt ] → CrvEll`](intro-2.md#function-ellipticcurvefromperiods-fldcomelt)

    - [`RealPeriod(E: parameters): CrvEll → FldReElt`](intro-2.md#function-realperiod-crvell)

    - [`EllipticExponential(E, z): CrvEll, FldComElt → [ FldComElt ]`](intro-2.md#function-ellipticexponential-crvell-fldcomelt)

    - [`EllipticExponential(E, k, z): CrvEll, RngIntElt, FldComElt → [ FldComElt ]`](intro-2.md#function-ellipticexponential-crvell-rngintelt-fldcomelt)

    - [`EllipticExponential(E, S): CrvEll, [ FldRat ] → [ FldComElt ]`](intro-2.md#function-ellipticexponential-crvell-fldrat)

    - [`EllipticLogarithm(P): PtEll[FldRat] → FldComElt`](intro-2.md#function-ellipticlogarithm-ptell-fldrat)

    - [`EllipticLogarithm(P, k): PtEll[FldNum], RngIntElt → FldComElt`](intro-2.md#function-ellipticlogarithm-ptell-fldnum-rngintelt)

    - [`EllipticLogarithm(E, S): CrvEll, [ FldComElt ] → FldComElt`](intro-2.md#function-ellipticlogarithm-crvell-fldcomelt)

    - [`pAdicEllipticLogarithm(P, p: parameters): PtEll, RngIntElt → FldLocElt`](intro-2.md#function-padicellipticlogarithm-ptell-rngintelt)

    - [`Example: Ell Exp`](intro-2.md#example-ex-ca5786)

    - [`Example: Ellexp Nf`](intro-2.md#example-ex-bd92df)

    - [`RootNumber(E): CrvEll → RngIntElt`](intro-2.md#function-rootnumber-crvell)

    - [`RootNumber(E, p): CrvEll, RngIntElt → RngIntElt`](intro-2.md#function-rootnumber-crvell-rngintelt)

    - [`AnalyticRank(E): CrvEll → RngIntElt, FldReElt`](intro-2.md#function-analyticrank-crvell)

    - [`ConjecturalRegulator(E): CrvEll → FldReElt, RngIntElt`](intro-2.md#function-conjecturalregulator-crvell)

    - [`ConjecturalRegulator(E, v): CrvEll, FldReElt → FldReElt`](intro-2.md#function-conjecturalregulator-crvell-fldreelt)

    - [`Example: Analytic Rank`](intro-2.md#example-ex-293403)

    - [`Example: Conjectural Regulator`](intro-2.md#example-ex-6c18ce)

    - [`ModularDegree(E): CrvEll → RngIntElt`](intro-2.md#function-modulardegree-crvell)

    - [`Example: Mod Deg`](intro-2.md#example-ex-d0adbe)

  - [Integral and $S$-integral Points](intro-2.md#integral-and-s-integral-points)

    - [`IntegralPoints(E): CrvEll[FldRat] → [ PtEll ]`](intro-2.md#function-qintegralpoints)

    - [`SIntegralPoints(E, S): CrvEll, SeqEnum → [ PtEll ]`](intro-2.md#function-sintegralpoints-crvell-seqenum)

    - [`Example: Integral Points`](intro-2.md#example-ex-5cfac6)

    - [`Example: S Integral Points`](intro-2.md#example-ex-406509)

    - [`IntegralQuarticPoints(Q): [ RngIntElt ] → [ SeqEnum ]`](intro-2.md#function-integralquarticpoints-rngintelt)

    - [`IntegralQuarticPoints(Q, P): [ RngIntElt ], [ RngIntElt ] → [ SeqEnum ]`](intro-2.md#function-integralquarticpoints-rngintelt-rngintelt)

    - [`SIntegralQuarticPoints(Q, S): [ RngIntElt ], [ RngIntElt ] → [ SeqEnum ]`](intro-2.md#function-sintegralquarticpoints-rngintelt-rngintelt)

    - [`Example: Integral Points Sequence`](intro-2.md#example-ex-8d65c5)

    - [`SIntegralLjunggrenPoints(Q, S): [ RngIntElt ], [ RngIntElt ] → [ SeqEnum ]`](intro-2.md#function-sintegralljunggrenpoints-rngintelt-rngintelt)

    - [`SIntegralDesbovesPoints(Q, S): [ RngIntElt ], [ RngIntElt ] → [ SeqEnum ]`](intro-2.md#function-sintegraldesbovespoints-rngintelt-rngintelt)

    - [`Example: Desboves`](intro-2.md#example-ex-1bb564)

  - [Elliptic Curve Database](intro-2.md#elliptic-curve-database)

    - [`EllipticCurveDatabase(: parameters) → DB`](intro-2.md#function-ellipticcurvedatabase)

    - [`CremonaDatabase(: parameters) → DB`](intro-2.md#function-cremonadatabase)

    - [`SetBufferSize(D, n): DB, RngIntElt`](intro-2.md#function-setbuffersize-db-rngintelt)

    - [`LargestConductor(D): DB → RngIntElt`](intro-2.md#function-largestconductor-db)

    - [`ConductorRange(D): DB → RngIntElt, RngIntElt`](intro-2.md#function-conductorrange-db)

    - [`# D: DB → RngIntElt`](intro-2.md#operation-operation-db-rngintelt)

    - [`NumberOfCurves(D): DB → RngIntElt`](intro-2.md#function-numberofcurves-db)

    - [`NumberOfCurves(D, N): DB, RngIntElt → RngIntElt`](intro-2.md#function-numberofcurves-db-rngintelt)

    - [`NumberOfCurves(D, N, i): DB, RngIntElt, RngIntElt → RngIntElt`](intro-2.md#function-numberofcurves-db-rngintelt-rngintelt)

    - [`NumberOfIsogenyClasses(D, N): DB, RngIntElt → RngIntElt`](intro-2.md#function-numberofisogenyclasses-db-rngintelt)

    - [`EllipticCurve(D, N, I, J): DB, RngIntElt, RngIntElt, RngIntElt → CrvEll`](intro-2.md#function-ellipticcurve-db-rngintelt-rngintelt-rngintelt)

    - [`EllipticCurve(D, N, S, J): DB, RngIntElt, MonStgElt, RngIntElt → CrvEll`](intro-2.md#function-ellipticcurve-db-rngintelt-monstgelt-rngintelt)

    - [`EllipticCurve(D, S): DB, MonStgElt → CrvEll`](intro-2.md#function-ellipticcurve-db-monstgelt)

    - [`EllipticCurve(S): MonStgElt → CrvEll`](intro-2.md#function-ellipticcurve-monstgelt)

    - [`Random(D): DB → CrvEll`](intro-2.md#function-random-db)

    - [`CremonaReference(D, E): DB, CrvEll → MonStgElt`](intro-2.md#function-cremonareference-db-crvell)

    - [`CremonaReference(E): CrvEll → MonStgElt`](intro-2.md#function-cremonareference-crvell)

    - [`Example: ecdb1`](intro-2.md#example-ex-d41275)

    - [`EllipticCurves(D, N, I): DB, RngIntElt, RngIntElt → [ CrvEll ]`](intro-2.md#function-ellipticcurves-db-rngintelt-rngintelt)

    - [`EllipticCurves(D, N, S): DB, RngIntElt, MonStgElt → [ CrvEll ]`](intro-2.md#function-ellipticcurves-db-rngintelt-monstgelt)

    - [`EllipticCurves(D, N): DB, RngIntElt → [ CrvEll ]`](intro-2.md#function-ellipticcurves-db-rngintelt)

    - [`EllipticCurves(D, S): DB, MonStgElt → [ CrvEll ]`](intro-2.md#function-ellipticcurves-db-monstgelt)

    - [`EllipticCurves(D): DB → [ CrvEll ]`](intro-2.md#function-ellipticcurves-db)

    - [`Example: ecdb2`](intro-2.md#example-ex-850f6b)

- [Curves over Number Fields](over_anf.md)

  - [Local Invariants](over_anf.md#local-invariants)

    - [`Conductor(E): CrvEll → RngOrdIdl`](over_anf.md#function-conductor-crvell-2)

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

    - [`BadPlaces(E, L): CrvEll, FldNum → SeqEnum`](over_anf.md#function-badplaces-crvell-fldnum)

    - [`LocalInformation(E, P): CrvEll, RngOrdIdl → Tup, CrvEll`](over_anf.md#function-localinformation-crvell-rngordidl)

    - [`LocalInformation(E): CrvEll → [ Tup ]`](over_anf.md#function-localinformation-crvell-2)

    - [`Reduction(E, p): CrvEll, RngOrdIdl → CrvEll, Map`](over_anf.md#function-reduction-crvell-rngordidl)

  - [Complex Multiplication](over_anf.md#complex-multiplication)

    - [`HasComplexMultiplication(E): CrvEll → BoolElt, RngIntElt`](over_anf.md#function-hascomplexmultiplication-crvell-2)

  - [Heights](over_anf.md#heights)

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

    - [`Height(P : parameters): PtEll → FldPrElt`](over_anf.md#function-height-ptell-2)

    - [`HeightPairingMatrix(P : parameters): [PtEll] → AlgMatElt`](over_anf.md#function-heightpairingmatrix-ptell-2)

    - [`LocalHeight(P, Pl : parameters): PtEll, PlcNumElt → FldPrElt`](over_anf.md#function-localheight-ptell-plcnumelt)

    - [`HeightDifferenceBounds(E): CrvEll → FldReElt, FldReElt`](over_anf.md#function-heightdifferencebounds-crvell)

    - [`HeightDifferenceLowerBound(E): CrvEll → FldReElt`](over_anf.md#function-heightdifferencelowerbound-crvell)

    - [`HeightDifferenceUpperBound(E): CrvEll → FldReElt`](over_anf.md#function-heightdifferenceupperbound-crvell)

    - [`CPSHeightBounds(E): CrvEll → FldReElt, FldReElt`](over_anf.md#function-cpsheightbounds-crvell)

    - [`SilvermanHeightBounds(E): CrvEll → FldReElt, FldReElt`](over_anf.md#function-silvermanheightbounds-crvell)

  - [Integral Points](over_anf.md#integral-points)

    - [`IntegralPoints(E): CrvEll[FldNum] → [ PtEll ]`](over_anf.md#function-integralpoints-crvell-fldnum)

  - [Elliptic Curve Chabauty](over_anf.md#elliptic-curve-chabauty)

    - [`Chabauty(MWmap, Ecov): Map, MapSch → SetEnum, RngIntElt`](over_anf.md#function-chabauty-map-mapsch)

    - [`Chabauty(MWmap, Ecov, p): Map, MapSch, RngIntElt → RngIntElt, SetEnum, RngIntElt, Tup`](over_anf.md#function-chabauty-map-mapsch-rngintelt)

    - [`Example: E Cchabauty`](over_anf.md#example-ex-73eaae)

  - [Auxiliary Functions for Etale Algebras](over_anf.md#auxiliary-functions-for-etale-algebras)

    - [`AbsoluteAlgebra(A): RngUPolRes → SetCart, Map`](over_anf.md#function-absolutealgebra-rngupolres)

    - [`pSelmerGroup(A, p, S): RngUPolRes, RngIntElt, SetEnum[RngOrdIdl] → GrpAb, Map`](over_anf.md#function-pselmergroup-rngupolres-rngintelt-setenum-rngordidl)

    - [`LocalTwoSelmerMap(P): RngOrdIdl → Map`](over_anf.md#function-localtwoselmermap-rngordidl)

    - [`LocalTwoSelmerMap(A, P): RngUPolRes, RngOrdIdl → Map, SeqEnum`](over_anf.md#function-localtwoselmermap-rngupolres-rngordidl)

    - [`Example: Selmer Etale`](over_anf.md#example-ex-bd3f0b)

  - [Analytic Information](over_anf.md#analytic-information)

    - [`RootNumber(E, P): CrvEll, RngOrdIdl → RngIntElt`](over_anf.md#function-rootnumber-crvell-rngordidl)

    - [`RootNumber(E): CrvEll → RngIntElt`](over_anf.md#function-rootnumber-crvell-2)

    - [`AnalyticRank(E): CrvEll → RngIntElt, FldReElt`](over_anf.md#function-analyticrank-crvell-2)

    - [`ConjecturalRegulator(E): CrvEll → FldReElt, RngIntElt`](over_anf.md#function-conjecturalregulator-crvell-2)

    - [`ConjecturalSha(E, Pts): CrvEll, SeqEnum[PtEll] → FldReElt`](over_anf.md#function-conjecturalsha-crvell-seqenum-ptell)

  - [Elliptic Curves of Given Conductor](over_anf.md#elliptic-curves-of-given-conductor)

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

    - [`EllipticCurveWithGoodReductionSearch(S, Effort): Set, RngIntElt → SeqEnum`](over_anf.md#function-ellipticcurvewithgoodreductionsearch-set-rngintelt)

    - [`EllipticCurveWithGoodReductionSearch(N, Effort): RngOrdIdl, RngIntElt → SeqEnum`](over_anf.md#function-ellipticcurvewithgoodreductionsearch-rngordidl-rngintelt)

- [Curves over $p$-adic Fields](over_pad.md)

  - [Local Invariants](over_pad.md#local-invariants)

    - [`Conductor(E): CrvEll → FldPadElt`](over_pad.md#function-conductor-crvell-3)

    - [`LocalInformation(E): CrvEll → Tup, CrvEll`](over_pad.md#function-localinformation-crvell-3)

    - [`RootNumber(E): CrvEll → RngIntElt`](over_pad.md#function-rootnumber-crvell-3)

- [Mordell–Weil Groups and Descent Methods](mordell-weil.md)

  - [Torsion](mordell-weil.md#torsion)

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

    - [`TorsionSubgroup(H): SetPtEll → GrpAb, Map`](mordell-weil.md#function-torsionsubgroup-setptell)

    - [`TwoTorsionSubgroup(E): CrvEll → GrpAb, Map`](mordell-weil.md#function-twotorsionsubgroup-crvell)

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

    - [`pPowerTorsion(E, p): CrvEll, RngIntElt → GrpAb, Map`](mordell-weil.md#function-ppowertorsion-crvell-rngintelt)

  - [Mordell–Weil Group and Rank](mordell-weil.md#mordell-weil-group-and-rank)

    - [`RankBounds(H: parameters): SetPtEll → RngIntElt, RngIntElt`](mordell-weil.md#function-rankbounds-setptell)

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

    - [`MordellWeilRankBounds(H: parameters): SetPtEll → RngIntElt, RngIntElt`](mordell-weil.md#function-mordellweilrankbounds-setptell)

    - [`MordellWeilRankBounds(E: parameters): CrvEll → RngIntElt, RngIntElt`](mordell-weil.md#function-mordellweilrankbounds-crvell)

    - [`Rank(H: parameters): SetPtEll → RngIntElt, BoolElt`](mordell-weil.md#function-rank-setptell)

    - [`Rank(E: parameters): CrvEll → RngIntElt, BoolElt`](mordell-weil.md#function-rank-crvell)

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

    - [`MordellWeilRank(H: parameters): SetPtEll → RngIntElt, BoolElt`](mordell-weil.md#function-mordellweilrank-setptell)

    - [`MordellWeilRank(E: parameters): CrvEll → RngIntElt, BoolElt`](mordell-weil.md#function-mordellweilrank-crvell)

    - [`MordellWeilGroup(H: parameters): SetPtEll → GrpAb, Map, BoolElt, BoolElt`](mordell-weil.md#function-mordellweilgroup-setptell)

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

    - [`AbelianGroup(H: parameters): SetPtEll → GrpAb, Map, BoolElt, BoolElt`](mordell-weil.md#function-abeliangroup-setptell)

    - [`AbelianGroup(E: parameters): CrvEll → GrpAb, Map, BoolElt, BoolElt`](mordell-weil.md#function-abeliangroup-crvell)

    - [`Generators(H): SetPtEll → [ PtEll ]`](mordell-weil.md#function-generators-setptell)

    - [`Generators(E): CrvEll → [ PtEll ]`](mordell-weil.md#function-generators-crvell)

    - [`NumberOfGenerators(H): SetPtEll → RngIntElt`](mordell-weil.md#function-numberofgenerators-setptell)

    - [`NumberOfGenerators(E): CrvEll → RngIntElt`](mordell-weil.md#function-numberofgenerators-crvell)

    - [`Ngens(H): SetPtEll → RngIntElt`](mordell-weil.md#function-ngens-setptell)

    - [`Ngens(E): CrvEll → RngIntElt`](mordell-weil.md#function-ngens-crvell)

    - [`Saturation(points, n): [ PtEll ], RngIntElt → [ PtEll ]`](mordell-weil.md#function-satref)

    - [`Saturation(points): [ PtEll ] → [ PtEll ]`](mordell-weil.md#function-saturation-ptell)

    - [`Example: Mordell Weil`](mordell-weil.md#example-ex-0fa71f)

    - [`Example: Rank`](mordell-weil.md#example-ex-ee2e20)

    - [`MordellWeilShaInformation(E: parameters): CrvEll → [RngIntElt], [PtEll], [Tup]`](mordell-weil.md#function-mwsiref)

    - [`DescentInformation(E: parameters): CrvEll → [RngIntElt], [PtEll], [Tup]`](mordell-weil.md#function-descentinformation-crvell)

    - [`Example: Mwsha Example`](mordell-weil.md#example-ex-fb2edb)

  - [Two-Descent](mordell-weil.md#two-descent)

    - [`TwoDescent(E: parameters): CrvEll → [CrvHyp], [Map], Map`](mordell-weil.md#function-twodescent-crvell)

    - [`AssociatedEllipticCurve(f): RngUPolElt → CrvEll, Map`](mordell-weil.md#function-associatedellipticcurve-rngupolelt)

    - [`AssociatedEllipticCurve(C): CrvHyp → CrvEll, Map`](mordell-weil.md#function-associatedellipticcurve-crvhyp)

    - [`TwoCover(e): FldNumElt → CrvHyp, Map`](mordell-weil.md#function-twocover-fldnumelt)

    - [`TwoCover(e): RngUPolResElt → CrvHyp, Map`](mordell-weil.md#function-twocover-rngupolreselt)

    - [`Example: twodescent`](mordell-weil.md#example-ex-17ccb5)

    - [Two Descent Using Isogenies](mordell-weil.md#two-descent-using-isogenies)

      - [`TwoIsogenyDescent(E : parameters): CrvEll → SeqEnum[CrvHyp], List, SeqEnum[CrvHyp], List, MapSch, MapSch`](mordell-weil.md#function-twoisogenydescent-crvell)

      - [`LiftDescendant(C): CrvHyp → SeqEnum[ CrvHyp ], List, MapSch`](mordell-weil.md#function-liftdescendant-crvhyp)

      - [`TwoDescendantsOverTwoIsogenyDescendant(C): CrvHyp → SeqEnum[ CrvHyp ], List, MapSch`](mordell-weil.md#function-twodescendantsovertwoisogenydescendant-crvhyp)

    - [Invariants](mordell-weil.md#invariants)

      - [`QuarticIInvariant(q): RngUPolElt → RngIntElt`](mordell-weil.md#function-quarticiinvariant-rngupolelt)

      - [`QuarticJInvariant(q): RngUPolElt → RngIntElt`](mordell-weil.md#function-quarticjinvariant-rngupolelt)

      - [`QuarticG4Covariant(q): RngUPolElt → RngUPolElt`](mordell-weil.md#function-quarticg4covariant-rngupolelt)

      - [`QuarticG6Covariant(q): RngUPolElt → RngUPolElt`](mordell-weil.md#function-quarticg6covariant-rngupolelt)

      - [`QuarticHSeminvariant(q): RngUPolElt → RngIntElt`](mordell-weil.md#function-quartichseminvariant-rngupolelt)

      - [`QuarticPSeminvariant(q): RngUPolElt → RngIntElt`](mordell-weil.md#function-quarticpseminvariant-rngupolelt)

      - [`QuarticQSeminvariant(q): RngUPolElt → RngIntElt`](mordell-weil.md#function-quarticqseminvariant-rngupolelt)

      - [`QuarticRSeminvariant(q): RngUPolElt → RngIntElt`](mordell-weil.md#function-quarticrseminvariant-rngupolelt)

      - [`QuarticNumberOfRealRoots(q): RngUPolElt → RngUPolElt`](mordell-weil.md#function-quarticnumberofrealroots-rngupolelt)

      - [`QuarticMinimise(q): RngUPolElt → RngUPolElt, AlgMatElt`](mordell-weil.md#function-quarticminimise-rngupolelt)

      - [`QuarticReduce(q): RngUPolElt → RngUPolElt, AlgMatElt`](mordell-weil.md#function-quarticreduce-rngupolelt)

      - [`IsEquivalent(f,g): RngUPolElt, RngUPolElt → BoolElt`](mordell-weil.md#function-isequivalent-rngupolelt-rngupolelt)

  - [Selmer Groups](mordell-weil.md#selmer-groups)

    - [`DescentMaps(phi): Map → Map, Map`](mordell-weil.md#function-descentmaps-map)

    - [`CasselsMap(phi): Map → Map, Map`](mordell-weil.md#function-casselsmap-map)

    - [`SelmerGroup(phi): Map → GrpAb, Map, Map, SeqEnum, SetEnum`](mordell-weil.md#function-selmergroup-map)

    - [`TwoSelmerGroup(E): CrvEll → GrpAb, Map, SetEnum, Map, SeqEnum`](mordell-weil.md#function-twoselmergroup-crvell)

    - [`Example: selmer`](mordell-weil.md#example-ex-dcb28c)

    - [`Example: selmer2`](mordell-weil.md#example-ex-b6ce90)

    - [`Example: selmer3`](mordell-weil.md#example-ex-fc7e9e)

    - [`Example: selmer4`](mordell-weil.md#example-ex-63feb8)

  - [The Cassels-Tate Pairing](mordell-weil.md#the-cassels-tate-pairing)

    - [`CasselsTatePairing(C, D): CrvHyp, CrvHyp → RngIntElt`](mordell-weil.md#function-casselstatepairing-crvhyp-crvhyp)

    - [`CasselsTatePairing(C, D): Crv, CrvHyp → RngIntElt`](mordell-weil.md#function-casselstatepairing-crv-crvhyp)

    - [`Example: Cassels Tate Example`](mordell-weil.md#example-ex-a17545)

  - [Four-Descent](mordell-weil.md#id8)

    - [`FourDescent(C : parameters): CrvHyp → [Crv]`](mordell-weil.md#function-fourdescent-crvhyp)

    - [`FourDescent(f : parameters): RngUPolElt → [Crv]`](mordell-weil.md#function-fourdescent-rngupolelt)

    - [`FourDescent(S : parameters): SeqEnum → [Crv]`](mordell-weil.md#function-fourdescent-seqenum)

    - [`FourDescent(C : parameters): ModelG1 → [Crv]`](mordell-weil.md#function-fourdescent-modelg1)

    - [`Example: simplefourdesc`](mordell-weil.md#example-ex-acf772)

    - [`AssociatedEllipticCurve(qi): Crv → CrvEll, Map`](mordell-weil.md#function-associatedellipticcurve-crv)

    - [`AssociatedHyperellipticCurve(qi): Crv → CrvHyp, Map`](mordell-weil.md#function-associatedhyperellipticcurve-crv)

    - [`QuadricIntersection(F): [AlgMatElt] → Crv`](mordell-weil.md#function-quadricintersection-algmatelt)

    - [`QuadricIntersection(P, F): Prj, [AlgMatElt] → Crv`](mordell-weil.md#function-quadricintersection-prj-algmatelt)

    - [`QuadricIntersection(E): CrvEll → Crv, MapIsoSch`](mordell-weil.md#function-quadricintersection-crvell)

    - [`QuadricIntersection(C): CrvHyp → Crv, MapIsoSch`](mordell-weil.md#function-quadricintersection-crvhyp)

    - [`IsQuadricIntersection(C): Crv → BoolElt, [AlgMatElt]`](mordell-weil.md#function-isquadricintersection-crv)

    - [`PointsQI(C, B : parameters): Crv, RngIntElt → [Pt]`](mordell-weil.md#function-pointsqi-crv-rngintelt)

    - [`TwoCoverPullback(H, pt): CrvHyp[FldRat], PtEll[FldRat] → [PtHyp]`](mordell-weil.md#function-twocoverpullback-crvhyp-fldrat-ptell-fldrat)

    - [`TwoCoverPullback(f, pt): RngUPolElt[FldRat], PtEll[FldRat] → [PtHyp]`](mordell-weil.md#function-twocoverpullback-rngupolelt-fldrat-ptell-fldrat)

    - [`FourCoverPullback(C, pt): Crv[FldRat], PtEll[FldRat] → [Pt]`](mordell-weil.md#function-fourcoverpullback-crv-fldrat-ptell-fldrat)

    - [`FourCoverPullback(C, pt): Crv[FldRat], PtHyp[FldRat] → [Pt]`](mordell-weil.md#function-fourcoverpullback-crv-fldrat-pthyp-fldrat)

    - [`Example: fourdescent`](mordell-weil.md#example-ex-532591)

  - [Eight-Descent](mordell-weil.md#eight-descent)

    - [`EightDescent(C : parameters): Crv → [ Crv ], [ MapSch ]`](mordell-weil.md#function-eightdescent-crv)

  - [Three-Descent and Five-Descent](mordell-weil.md#three-descent-and-five-descent)

    - [`ThreeDescent(E : parameters): CrvEll → [ Crv ], List`](mordell-weil.md#function-threedescent-crvell)

    - [`Example: Selmer Famous Example`](mordell-weil.md#example-ex-e7c713)

    - [`ThreeSelmerGroup(E : parameters): CrvEll → GrpAb, Map`](mordell-weil.md#function-threeselmergroup-crvell)

    - [`ThreeDescentCubic(E, α : parameters): CrvEll, Tup → Crv, MapSch`](mordell-weil.md#function-threedescentcubic-crvell-tup)

    - [`ThreeIsogenyDescent(E : parameters): CrvEll → [ Crv ], List, [ Crv ], List, MapSch`](mordell-weil.md#function-threeisogenydescent-crvell)

    - [`ThreeIsogenySelmerGroups(E : parameters): CrvEll → GrpAb, Map, GrpAb, Map, MapSch`](mordell-weil.md#function-threeisogenyselmergroups-crvell)

    - [`ThreeIsogenyDescentCubic(φ, α): MapSch, Any → Crv, MapSch`](mordell-weil.md#function-threeisogenydescentcubic-mapsch-any)

    - [`ThreeDescentByIsogeny(E): CrvEll → [ Crv ], [ Map ]`](mordell-weil.md#function-threedescentbyisogeny-crvell)

    - [`Example: Three Descent By Isogeny`](mordell-weil.md#example-ex-a782ba)

    - [`Jacobian(C): RngMPolElt → CrvEll`](mordell-weil.md#function-jacobian-rngmpolelt)

    - [`ThreeSelmerElement(E, C): CrvEll, RngMPolElt → Tup`](mordell-weil.md#function-threeselmerelement-crvell-rngmpolelt)

    - [`ThreeSelmerElement(E, C): CrvEll, Crv → Tup`](mordell-weil.md#function-threeselmerelement-crvell-crv)

    - [`ThreeSelmerElement(C): RngMPolElt → Tup`](mordell-weil.md#function-threeselmerelement-rngmpolelt)

    - [`ThreeSelmerElement(C): Crv → Tup`](mordell-weil.md#function-threeselmerelement-crv)

    - [`AddCubics(cubic1, cubic2 : parameters): RngMPolElt, RngMPolElt → RngMPolElt`](mordell-weil.md#function-addcubics-rngmpolelt-rngmpolelt)

    - [`ThreeTorsionType(E): CrvEll → MonStgElt`](mordell-weil.md#function-threetorsiontype-crvell)

    - [`ThreeTorsionPoints(E : parameters): CrvEll → Tup`](mordell-weil.md#function-threetorsionpoints-crvell)

    - [`ThreeTorsionMatrices(E, C): CrvEll, RngMPolElt → Tup`](mordell-weil.md#function-threetorsionmatrices-crvell-rngmpolelt)

  - [Six and Twelve Descent](mordell-weil.md#six-and-twelve-descent)

    - [`SixDescent(C2, C3): CrvHyp, Crv → Crv, MapSch`](mordell-weil.md#function-sixdescent-crvhyp-crv)

    - [`SixDescent(model2, model3): ModelG1, ModelG1 → Crv, MapSch`](mordell-weil.md#function-sixdescent-modelg1-modelg1)

    - [`TwelveDescent(C3, C4): Crv, Crv → SeqEnum, MapSch`](mordell-weil.md#function-twelvedescent-crv-crv)

    - [`TwelveDescent(model3, model4): ModelG1, ModelG1 → SeqEnum, MapSch`](mordell-weil.md#function-twelvedescent-modelg1-modelg1)

  - [Nine-Descent](mordell-weil.md#nine-descent)

    - [`NineDescent(C : parameters): Crv → SeqEnum, List`](mordell-weil.md#function-ninedescent-crv)

    - [`NineSelmerSet(C): Crv → RngIntElt`](mordell-weil.md#function-nineselmerset-crv)

  - [Higher 2-power Isogeny Descents](mordell-weil.md#higher-2-power-isogeny-descents)

    - [`TwoPowerIsogenyDescentRankBound(E, T : parameters): CrvEll[FldRat], PtEll[FldRat] ) → RngIntElt, SeqEnum, SeqEnum`](mordell-weil.md#function-twopowerisogenydescentrankbound-crvell-fldrat-ptell-fldrat)

    - [`TwoPowerIsogenyDescentRankBound(E : parameters): CrvEll[FldRat], PtEll[FldRat] ) → RngIntElt, SeqEnum, SeqEnum`](mordell-weil.md#function-twopowerisogenydescentrankbound-crvell-fldrat-ptell-fldrat-2)

  - [$p$-Isogeny Descent](mordell-weil.md#p-isogeny-descent)

    - [`pIsogenyDescent(E,P): CrvEll, PtEll → RngIntElt, RngIntElt, SeqEnum, CrvEll`](mordell-weil.md#function-pisogenydescent-crvell-ptell)

    - [`pIsogenyDescent(E,p): CrvEll, RngIntElt → RngIntElt, RngIntElt, SeqEnum, CrvEll`](mordell-weil.md#function-pisogenydescent-crvell-rngintelt)

    - [`pIsogenyDescent(lambda,p): FldRatElt, RngIntElt → RngIntElt, RngIntElt, SeqEnum, CrvEll, CrvEll`](mordell-weil.md#function-pisogenydescent-fldratelt-rngintelt)

    - [`pIsogenyDescent(C,phi): Crv, MapSch → SeqEnum, List`](mordell-weil.md#function-pisogenydescent-crv-mapsch)

    - [`pIsogenyDescent(C,E1,E2): Crv, CrvEll, CrvEll → SeqEnum, List`](mordell-weil.md#function-pisogenydescent-crv-crvell-crvell)

    - [`pIsogenyDescent(C,P): Crv, PtEll → SeqEnum, List`](mordell-weil.md#function-pisogenydescent-crv-ptell)

    - [`FakeIsogenySelmerSet(C,phi): Crv, MapSch → RngIntElt`](mordell-weil.md#function-fakeisogenyselmerset-crv-mapsch)

    - [`FakeIsogenySelmerSet(C,E1,E2): Crv, CrvEll, CrvEll → RngIntElt`](mordell-weil.md#function-fakeisogenyselmerset-crv-crvell-crvell)

    - [`FakeIsogenySelmerSet(C,P): Crv, PtEll → RngIntElt`](mordell-weil.md#function-fakeisogenyselmerset-crv-ptell)

    - [`Example: p Isogeny Descent`](mordell-weil.md#example-ex-a5a6be)

    - [`Example: p Isogeny Descent2`](mordell-weil.md#example-ex-900bfb)

    - [`Example: p Isogeny Descent3`](mordell-weil.md#example-ex-0153da)
