# Elliptic Curves

- [Introduction](introduction.md)

- [Creation Functions](creation.md)

  - [Creation of an Elliptic Curve](creation.md#creation-of-an-elliptic-curve)

    - [`EllipticCurve([a, b]): [ RngElt ] → CrvEll`](creation.md#function-ellipticcurve-rngelt)

    - [`EllipticCurve([a1, a2, a3, a4, a6]): [ RngElt ] → CrvEll`](creation.md#function-ellipticcurve-rngelt-2)

    - [`EllipticCurve(f): RngUPolElt → CrvEll`](creation.md#function-ellipticcurve-rngupolelt)

    - [`EllipticCurve(f, h): RngUPolElt, RngUPolElt → CrvEll`](creation.md#function-ellipticcurve-rngupolelt-rngupolelt)

    - [`EllipticCurveFromjInvariant(j): RngElt → CrvEll`](creation.md#function-ellipticcurvefromjinvariant-rngelt)

    - [`EllipticCurveWithjInvariant(j): RngElt → CrvEll`](creation.md#function-ellipticcurvewithjinvariant-rngelt)

    - [`Example: Creation`](creation.md#example-ex-bf37da)

    - [`EllipticCurve(C): Sch → CrvEll, MapSch`](creation.md#function-crvell-ellipticcurve)

    - [`EllipticCurve(C, P): Crv, Pt → CrvEll, MapSch`](creation.md#function-ellipticcurve-crv-pt)

    - [`EllipticCurve(C, pl): Crv, PlcCrvElt → CrvEll, MapSch`](creation.md#function-ellipticcurve-crv-plccrvelt)

    - [`SupersingularEllipticCurve(K): FldFin → CrvEll`](creation.md#function-supersingularellipticcurve-fldfin)

    - [`Example: Creation From Curve`](creation.md#example-ex-86c457)

    - [`Example: Creation From Curve2`](creation.md#example-ex-d9c6ad)

  - [Creation Predicates](creation.md#creation-predicates)

    - [`IsEllipticCurve([a, b]): [ RngElt ] → BoolElt, CrvEll`](creation.md#function-isellipticcurve-rngelt)

    - [`IsEllipticCurve([a1, a2, a3, a4, a6]): [ RngElt ] → BoolElt, CrvEll`](creation.md#function-isellipticcurve-rngelt-2)

    - [`IsEllipticCurve(C): CrvHyp → BoolElt, CrvEll, MapIsoSch, MapIsoSch`](creation.md#function-isellipticcurve-crvhyp)

    - [`Example: Creation Test`](creation.md#example-ex-9904dd)

  - [Changing the Base Ring](creation.md#changing-the-base-ring)

    - [`BaseChange(E, K): CrvEll, Rng → CrvEll`](creation.md#function-basechange-crvell-rng)

    - [`BaseExtend(E, K): CrvEll, Rng → CrvEll`](creation.md#function-baseextend-crvell-rng)

    - [`ChangeRing(E, K): CrvEll, Rng → CrvEll`](creation.md#function-changering-crvell-rng)

    - [`BaseChange(E, h): CrvEll, Map → CrvEll`](creation.md#function-basechange-crvell-map)

    - [`BaseExtend(E, h): CrvEll, Map → CrvEll`](creation.md#function-baseextend-crvell-map)

    - [`BaseChange(E, n): CrvEll, RngIntElt → CrvEll`](creation.md#function-basechange-crvell-rngintelt)

    - [`BaseExtend(E, n): CrvEll, RngIntElt → CrvEll`](creation.md#function-baseextend-crvell-rngintelt)

    - [`Example: Base Extend`](creation.md#example-ex-9a8eb0)

  - [Alternative Models](creation.md#alternative-models)

    - [`WeierstrassModel(E): CrvEll → CrvEll, Map, Map`](creation.md#function-weierstrassmodel-crvell)

    - [`IntegralModel(E): CrvEll → CrvEll, Map, Map`](creation.md#function-integralmodel-crvell)

    - [`SimplifiedModel(E): CrvEll → CrvEll, Map, Map`](creation.md#function-simplifiedmodel-crvell)

    - [`MinimalModel(E): CrvEll → CrvEll, Map, Map`](creation.md#function-minimalmodel-crvell)

    - [`MinimalModel(E, p): CrvEll, RngIntElt → CrvEll, Map, Map`](creation.md#function-minimalmodel-crvell-rngintelt)

    - [`MinimalModel(E, P : parameters): CrvEll, RngOrdIdl → CrvEll, Map`](creation.md#function-minimalmodel-crvell-rngordidl)

  - [Predicates on Curve Models](creation.md#predicates-on-curve-models)

    - [`IsWeierstrassModel(E): CrvEll → BoolElt`](creation.md#function-isweierstrassmodel-crvell)

    - [`IsIntegralModel(E): CrvEll → BoolElt`](creation.md#function-isintegralmodel-crvell)

    - [`IsSimplifiedModel(E): CrvEll → BoolElt`](creation.md#function-issimplifiedmodel-crvell)

    - [`IsMinimalModel(E): CrvEll → BoolElt`](creation.md#function-isminimalmodel-crvell)

    - [`IsIntegralModel(E, P): CrvEll, RngOrdIdl → BoolElt`](creation.md#function-isintegralmodel-crvell-rngordidl)

    - [`Example: Models`](creation.md#example-ex-42e4da)

  - [Twists of Elliptic Curves](creation.md#twists-of-elliptic-curves)

    - [`QuadraticTwist(E, d): CrvEll, RngElt → CrvEll`](creation.md#function-quadratictwist-crvell-rngelt)

    - [`QuadraticTwist(E): CrvEll → CrvEll`](creation.md#function-quadratictwist-crvell)

    - [`QuadraticTwists(E): CrvEll → SeqEnum`](creation.md#function-quadratictwists-crvell)

    - [`Twists(E): CrvEll → SeqEnum`](creation.md#function-twists-crvell)

    - [`Example: Quadratic Twists`](creation.md#example-ex-eb8251)

    - [`IsTwist(E, F): CrvEll, CrvEll → BoolElt`](creation.md#function-istwist-crvell-crvell)

    - [`IsQuadraticTwist(E, F): CrvEll, CrvEll → BoolElt, RngElt`](creation.md#function-isquadratictwist-crvell-crvell)

    - [`Example: Nonquadratic Twists`](creation.md#example-ex-3728b4)

    - [`MinimalQuadraticTwist(E): CrvEll → CrvEll, RngIntElt`](creation.md#function-minimalquadratictwist-crvell)

    - [`Example: Min Twist`](creation.md#example-ex-a9631b)

- [Operations on Curves](operations_curve.md)

  - [Elementary Invariants](operations_curve.md#elementary-invariants)

    - [`aInvariants(E): CrvEll → [ RngElt ]`](operations_curve.md#function-ainvariants-crvell)

    - [`Coefficients(E): CrvEll → [ RngElt ]`](operations_curve.md#function-coefficients-crvell)

    - [`ElementToSequence(E): CrvEll → [ RngElt ]`](operations_curve.md#function-elementtosequence-crvell)

    - [`Eltseq(E): CrvEll → [ RngElt ]`](operations_curve.md#function-eltseq-crvell)

    - [`bInvariants(E): CrvEll → [ RngElt ]`](operations_curve.md#function-binvariants-crvell)

    - [`cInvariants(E): CrvEll → [ RngElt ]`](operations_curve.md#function-cinvariants-crvell)

    - [`Discriminant(E): CrvEll → RngElt`](operations_curve.md#function-discriminant-crvell)

    - [`jInvariant(E): CrvEll → RngElt`](operations_curve.md#function-jinvariant-crvell)

    - [`HyperellipticPolynomials(E): CrvEll → RngUPolElt, RngUPolElt`](operations_curve.md#function-hyperellipticpolynomials-crvell)

    - [`Example: Invariants`](operations_curve.md#example-ex-aa8afb)

    - [`Example: Generic Curve`](operations_curve.md#example-ex-6fe5ca)

  - [Associated Structures](operations_curve.md#associated-structures)

    - [`Category(E): CrvEll → Cat`](operations_curve.md#function-category-crvell)

    - [`Type(E): CrvEll → Cat`](operations_curve.md#function-type-crvell)

    - [`BaseRing(E): CrvEll → Rng`](operations_curve.md#function-basering-crvell)

    - [`CoefficientRing(E): CrvEll → Rng`](operations_curve.md#function-coefficientring-crvell)

  - [Predicates on Elliptic Curves](operations_curve.md#predicates-on-elliptic-curves)

    - [`E eq F: CrvEll, CrvEll → BoolElt`](operations_curve.md#operation-op-eq-crvell-crvell)

    - [`E ne F: CrvEll, CrvEll → BoolElt`](operations_curve.md#operation-op-ne-crvell-crvell)

    - [`IsIsomorphic(E, F): CrvEll, CrvEll → BoolElt, Map`](operations_curve.md#function-isisomorphic-crvell-crvell)

    - [`IsIsogenous(E, F): CrvEll[FldRat], CrvEll[FldRat] → BoolElt, Map`](operations_curve.md#function-isisogenous-crvell-fldrat-crvell-fldrat)

    - [`IsIsogenous(E, F): CrvEll[FldFin], CrvEll[FldFin] → BoolElt`](operations_curve.md#function-isisogenous-crvell-fldfin-crvell-fldfin)

    - [`Example: Twists2`](operations_curve.md#example-ex-4c9255)

- [Polynomials](function_field.md)

  - [`DefiningPolynomial(E): CrvEll → RngMPolElt`](function_field.md#function-definingpolynomial-crvell)

  - [`DivisionPolynomial(E, n): CrvEll, RngIntElt → RngUPolElt, RngUPolElt, RngUPolElt`](function_field.md#function-divisionpolynomial-crvell-rngintelt)

  - [`DivisionPolynomial(E, n, g): CrvEll, RngIntElt, RngUPolElt → RngUPolElt, RngUPolElt, RngUPolElt`](function_field.md#function-divisionpolynomial-crvell-rngintelt-rngupolelt)

  - [`TwoTorsionPolynomial(E): CrvEll → RngMPolElt`](function_field.md#function-twotorsionpolynomial-crvell)

  - [`Example: Division Polynomial`](function_field.md#example-ex-d2495b)

  - [Complex Multiplication Division Polynomials](function_field.md#complex-multiplication-division-polynomials)

    - [`DivisionPolynomial(E, alpha): CrvEll, RngOrdElt → RngUPolElt`](function_field.md#function-divisionpolynomial-crvell-rngordelt)

    - [`DivisionPolynomial(E, a): CrvEll, RngOrdIdl → RngUPolElt`](function_field.md#function-divisionpolynomial-crvell-rngordidl)

    - [`MultiplicationPolynomial(E, alpha): CrvEll, RngOrdElt → RngUPolElt`](function_field.md#function-multiplicationpolynomial-crvell-rngordelt)

    - [`CMEndomorphism(E, alpha): CrvEll, RngOrdElt → Map`](function_field.md#function-cmendomorphism-crvell-rngordelt)

    - [`Example: CM Division Polynomial`](function_field.md#example-ex-58df2e)

- [Subgroup Schemes](subgroup_schemes.md)

  - [Creation of Subgroup Schemes](subgroup_schemes.md#creation-of-subgroup-schemes)

    - [`SubgroupScheme(G, f): SchGrpEll, RngUPolElt → SchGrpEll`](subgroup_schemes.md#function-subgroupscheme-schgrpell-rngupolelt)

    - [`TorsionSubgroupScheme(G, n): SchGrpEll, RngIntElt → SchGrpEll`](subgroup_schemes.md#function-torsionsubgroupscheme-schgrpell-rngintelt)

  - [Associated Structures](subgroup_schemes.md#associated-structures)

    - [`Category(G): SchGrpEll → Cat`](subgroup_schemes.md#function-category-schgrpell)

    - [`Type(G): SchGrpEll → Cat`](subgroup_schemes.md#function-type-schgrpell)

    - [`Curve(G): SchGrpEll → CrvEll`](subgroup_schemes.md#function-curve-schgrpell)

    - [`Generic(G): SchGrpEll → CrvEll`](subgroup_schemes.md#function-generic-schgrpell)

    - [`BaseRing(G): SchGrpEll → Rng`](subgroup_schemes.md#function-basering-schgrpell)

    - [`CoefficientRing(G): SchGrpEll → Rng`](subgroup_schemes.md#function-coefficientring-schgrpell)

    - [`DefiningSubschemePolynomial(G): SchGrpEll → RngUPolElt`](subgroup_schemes.md#function-definingsubschemepolynomial-schgrpell)

  - [Predicates on Subgroup Schemes](subgroup_schemes.md#predicates-on-subgroup-schemes)

    - [`G1 eq G2: SchGrpEll, SchGrpEll → BoolElt`](subgroup_schemes.md#operation-op-eq-schgrpell-schgrpell)

    - [`G1 ne G2: SchGrpEll, SchGrpEll → BoolElt`](subgroup_schemes.md#operation-op-ne-schgrpell-schgrpell)

  - [Points of Subgroup Schemes](subgroup_schemes.md#points-of-subgroup-schemes)

    - [`# G: SchGrpEll → RngIntElt`](subgroup_schemes.md#operation-operation-schgrpell-rngintelt)

    - [`Order(G): SchGrpEll → RngIntElt`](subgroup_schemes.md#function-order-schgrpell)

    - [`FactoredOrder(G): SchGrpEll → RngIntElt`](subgroup_schemes.md#function-factoredorder-schgrpell)

    - [`Points(G): SchGrpEll → SetIndx`](subgroup_schemes.md#function-points-schgrpell)

    - [`RationalPoints(G): SchGrpEll → SetIndx`](subgroup_schemes.md#function-rationalpoints-schgrpell)

    - [`Example: Subgroup Schemes`](subgroup_schemes.md#example-ex-125594)

- [The Formal Group](formal.md)

  - [`FormalGroupLaw(E, prec): CrvEll, RngIntElt → RngMPolElt`](formal.md#function-formalgrouplaw-crvell-rngintelt)

  - [`FormalGroupHomomorphism(phi, prec): MapSch, RngIntElt → RngSerPowElt`](formal.md#function-formalgrouphomomorphism-mapsch-rngintelt)

  - [`FormalLog(E): CrvEll → RngSerPowElt, PtEll`](formal.md#function-formallog-crvell)

- [Operations on Point Sets](pointset.md)

  - [Creation of Point Sets](pointset.md#creation-of-point-sets)

    - [`E(L): CrvEll, Rng → SetPtEll`](pointset.md#literal-e-crvell-rng)

    - [`PointSet(E, L): CrvEll, Rng → SetPtEll`](pointset.md#function-pointset-crvell-rng)

    - [`E(m): CrvEll, Map → SetPtEll`](pointset.md#literal-e-crvell-map)

    - [`PointSet(E, m): CrvEll, Map → SetPtEll`](pointset.md#function-pointset-crvell-map)

  - [Associated Structures](pointset.md#associated-structures)

    - [`Category(H): SetPtEll → Cat`](pointset.md#function-category-setptell)

    - [`Type(H): SetPtEll → Cat`](pointset.md#function-type-setptell)

    - [`Scheme(H): SetPtEll → CrvEll`](pointset.md#function-scheme-setptell)

    - [`Curve(H): SetPtEll → CrvEll`](pointset.md#function-curve-setptell)

    - [`Ring(H): SetPtEll → Rng`](pointset.md#function-ring-setptell)

  - [Predicates on Point Sets](pointset.md#predicates-on-point-sets)

    - [`H1 eq H2: SetPtEll, SetPtEll → BoolElt`](pointset.md#operation-op-eq-setptell-setptell)

    - [`H1 ne H2: SetPtEll, SetPtEll → BoolElt`](pointset.md#operation-op-ne-setptell-setptell)

    - [`Example: Point Sets`](pointset.md#example-ex-127ba4)

- [Morphisms](morphism.md)

  - [Creation Functions](morphism.md#creation-functions)

    - [`Example: Isogeny`](morphism.md#example-ex-4a6549)

    - [`Isomorphism(E, F, [r, s, t, u]): CrvEll, CrvEll, SeqEnum → Map`](morphism.md#function-isomorphism-crvell-crvell-seqenum)

    - [`Isomorphism(E, F): CrvEll, CrvEll → Map`](morphism.md#function-isomorphism-crvell-crvell)

    - [`Automorphism(E, [r, s, t, u]): CrvEll, SeqEnum → Map`](morphism.md#function-automorphism-crvell-seqenum)

    - [`IsomorphismData(I): Map → [ RngElt ]`](morphism.md#function-isomorphismdata-map)

    - [`Example: Isomorphisms`](morphism.md#example-ex-3ea7a9)

    - [`IsIsomorphism(I): Map → BoolElt, Map`](morphism.md#function-isisomorphism-map)

    - [`IsomorphismToIsogeny(I): Map → Map`](morphism.md#function-isomorphismtoisogeny-map)

    - [`Example: Isomorphism`](morphism.md#example-ex-f4901b)

    - [`TranslationMap(E, P): CrvEll, PtEll → Map`](morphism.md#function-translationmap-crvell-ptell)

    - [`RationalMap(i, t): Map, Map → Map`](morphism.md#function-rationalmap-map-map)

    - [`TwoIsogeny(P): PtEll → Map`](morphism.md#function-twoisogeny-ptell)

    - [`Example: Map`](morphism.md#example-ex-fccac1)

    - [`IsogenyFromKernel(G): SchGrpEll → CrvEll, Map`](morphism.md#function-isogenyfromkernel-schgrpell)

    - [`IsogenyFromKernelFactored(G): SchGrpEll → CrvEll, Map`](morphism.md#function-isogenyfromkernelfactored-schgrpell)

    - [`IsogenyFromKernel(E, psi): CrvEll, RngUPolElt → CrvEll, Map`](morphism.md#function-isogenyfromkernel-crvell-rngupolelt)

    - [`IsogenyFromKernelFactored(E, psi): SchGrpEll, RngUPolElt → CrvEll, Map`](morphism.md#function-isogenyfromkernelfactored-schgrpell-rngupolelt)

    - [`PushThroughIsogeny(I, v): Map, RngUPolElt → RngUPolElt`](morphism.md#function-pushthroughisogeny-map-rngupolelt)

    - [`PushThroughIsogeny(I, G): Map, SchGrpEll → SchGrpEll`](morphism.md#function-pushthroughisogeny-map-schgrpell)

    - [`DualIsogeny(phi): Map → Map`](morphism.md#function-dualisogeny-map)

    - [`Example: Dual Isogeny`](morphism.md#example-ex-b64f03)

  - [Predicates on Isogenies](morphism.md#predicates-on-isogenies)

    - [`IsZero(I): Map → BoolElt`](morphism.md#function-iszero-map)

    - [`IsConstant(I): Map → BoolElt`](morphism.md#function-isconstant-map)

    - [`I eq J: Map, Map → BoolElt`](morphism.md#operation-op-eq-map-map)

  - [Structure Operations](morphism.md#structure-operations)

    - [`IsogenyMapPsi(I): Map → RngUPolElt`](morphism.md#function-isogenymappsi-map)

    - [`IsogenyMapPsiMulti(I): Map → RngUPolElt`](morphism.md#function-isogenymappsimulti-map)

    - [`IsogenyMapPsiSquared(I): Map → RngUPolElt`](morphism.md#function-isogenymappsisquared-map)

    - [`IsogenyMapPhi(I): Map → RngUPolElt`](morphism.md#function-isogenymapphi-map)

    - [`IsogenyMapPhiMulti(I): Map → RngUPolElt`](morphism.md#function-isogenymapphimulti-map)

    - [`IsogenyMapOmega(I): Map → RngMPolElt`](morphism.md#function-isogenymapomega-map)

    - [`Kernel(I): Map → SchGrpEll`](morphism.md#function-kernel-map)

    - [`Degree(I): Map → RngIntElt`](morphism.md#function-degree-map)

  - [Endomorphisms](morphism.md#endomorphisms)

    - [`MultiplicationByMMap(E, m): CrvEll, RngIntElt → Map`](morphism.md#function-multiplicationbymmap-crvell-rngintelt)

    - [`IdentityIsogeny(E): CrvEll → Map`](morphism.md#function-identityisogeny-crvell)

    - [`IdentityMap(E): CrvEll → Map`](morphism.md#function-identitymap-crvell)

    - [`NegationMap(E): CrvEll → Map`](morphism.md#function-negationmap-crvell)

    - [`FrobeniusMap(E, i): CrvEll, RngIntElt → Map`](morphism.md#function-frobeniusmap-crvell-rngintelt)

    - [`FrobeniusMap(E): CrvEll → Map`](morphism.md#function-frobeniusmap-crvell)

    - [`Example: Frobenius`](morphism.md#example-ex-e6e186)

  - [Automorphisms](morphism.md#automorphisms)

    - [`AutomorphismGroup(E): CrvEll → Grp, Map`](morphism.md#function-automorphismgroup-crvell)

    - [`Automorphisms(E): CrvEll → SeqEnum`](morphism.md#function-automorphisms-crvell)

- [Operations on Points](point.md)

  - [Creation of Points](point.md#creation-of-points)

    - [`H ! [x, y, z]: SetPtEll, [ RngElt ] → PtEll`](point.md#operation-op-setptell-rngelt)

    - [`elt< H | x, y, z >: SetPtEll, RngElt, RngElt, RngElt → PtEll`](point.md#constructor-constructor-elt-setptell-rngelt-rngelt-rngelt-ptell)

    - [`E ! [x, y, z]: CrvEll, [ RngElt ] → PtEll`](point.md#operation-op-crvell-rngelt)

    - [`elt< E | x, y, z >: CrvEll, RngElt, RngElt, RngElt → PtEll`](point.md#constructor-constructor-elt-crvell-rngelt-rngelt-rngelt-ptell)

    - [`H ! 0: SetPtEll, RngIntElt → PtEll`](point.md#operation-op-setptell-rngintelt)

    - [`Id(H): SetPtEll → PtEll`](point.md#function-id-setptell)

    - [`Identity(H): SetPtEll → PtEll`](point.md#function-identity-setptell)

    - [`E ! 0: CrvEll, RngIntElt → PtEll`](point.md#operation-op-crvell-rngintelt)

    - [`Id(E): CrvEll → PtEll`](point.md#function-id-crvell)

    - [`Identity(E): CrvEll → PtEll`](point.md#function-identity-crvell)

    - [`Points(H, x): SetPtEll, RngElt → [ PtEll ]`](point.md#function-points-setptell-rngelt)

    - [`Points(E, x): CrvEll, RngElt → [ PtEll ]`](point.md#function-points-crvell-rngelt)

    - [`Points(H): SetPtEll → {@ PtEll @}`](point.md#function-points-setptell)

    - [`RationalPoints(H): SetPtEll → {@ PtEll @}`](point.md#function-rationalpoints-setptell)

    - [`Points(E): CrvEll → {@ PtEll @}`](point.md#function-points-crvell)

    - [`RationalPoints(E): CrvEll → {@ PtEll @}`](point.md#function-rationalpoints-crvell)

    - [`PointsAtInfinity(H): SetPtEll → {@ PtEll @}`](point.md#function-pointsatinfinity-setptell)

    - [`PointsAtInfinity(E): CrvEll → {@ PtEll @}`](point.md#function-pointsatinfinity-crvell)

  - [Creation Predicates](point.md#creation-predicates)

    - [`IsPoint(H, S): SetPtEll, [ RngElt ] → BoolElt, PtEll`](point.md#function-ispoint-setptell-rngelt)

    - [`IsPoint(E, S): CrvEll, [ RngElt ] → BoolElt, PtEll`](point.md#function-ispoint-crvell-rngelt)

    - [`IsPoint(H, x): SetPtEll, RngElt → BoolElt, PtEll`](point.md#function-ispoint-setptell-rngelt-2)

    - [`IsPoint(E, x): CrvEll, RngElt → BoolElt, PtEll`](point.md#function-ispoint-crvell-rngelt-2)

  - [Access Operations](point.md#access-operations)

    - [`P[i]: PtEll, RngIntElt → RngElt`](point.md#literal-literal-p-i-ptell-rngintelt-rngelt)

    - [`ElementToSequence(P): PtEll → [ RngElt ]`](point.md#function-elementtosequence-ptell)

    - [`Eltseq(P): PtEll → [ RngElt ]`](point.md#function-eltseq-ptell)

  - [Associated Structures](point.md#associated-structures)

    - [`Category(P): PtEll → Cat`](point.md#function-category-ptell)

    - [`Type(P): PtEll → Cat`](point.md#function-type-ptell)

    - [`Parent(P): PtEll → SetPtEll`](point.md#function-parent-ptell)

    - [`Scheme(P): SetPtEll → CrvEll`](point.md#function-scheme-setptell-2)

    - [`Curve(P): SetPtEll → CrvEll`](point.md#function-curve-setptell-2)

  - [Arithmetic](point.md#arithmetic)

    - [`- P: PtEll → PtEll`](point.md#operation-operation-ptell-ptell)

    - [`P + Q: PtEll, PtEll → PtEll`](point.md#operation-op-plus-ptell-ptell)

    - [`P +:= Q: PtEll, PtEll`](point.md#operation-operation-ptell-ptell-2)

    - [`P - Q: PtEll, PtEll → PtEll`](point.md#operation-op-minus-ptell-ptell)

    - [`P -:= Q: PtEll, PtEll`](point.md#operation-operation-ptell-ptell-3)

    - [`n * P: RngIntElt, PtEll → PtEll`](point.md#operation-op-times-rngintelt-ptell)

    - [`P * n: PtEll, RngIntElt → PtEll`](point.md#operation-op-times-ptell-rngintelt)

    - [`P *:= n: PtEll, RngIntElt`](point.md#operation-operation-ptell-rngintelt)

  - [Division Points](point.md#division-points)

    - [`P / n: PtEll, RngIntElt → PtEll`](point.md#operation-op-div-ptell-rngintelt)

    - [`P /:= n: PtEll, RngIntElt`](point.md#operation-operation-ptell-rngintelt-2)

    - [`DivisionPoints(P, n): PtEll, RngIntElt → [ PtEll ]`](point.md#function-divisionpoints-ptell-rngintelt)

    - [`IsDivisibleBy(P, n): PtEll, RngIntElt → BoolElt, PtEll`](point.md#function-isdivisibleby-ptell-rngintelt)

    - [`Example: Point Arithmetic1`](point.md#example-ex-8bfcbb)

    - [`Example: Point Arithmetic2`](point.md#example-ex-c4b7a1)

    - [`Example: Generic Point`](point.md#example-ex-10e418)

  - [Point Order](point.md#point-order)

    - [`Order(P): PtEll → RngIntElt`](point.md#function-order-ptell)

    - [`FactoredOrder(P): PtEll → RngIntElt`](point.md#function-factoredorder-ptell)

    - [`Example: Play With Points`](point.md#example-ex-712399)

  - [Predicates on Points](point.md#predicates-on-points)

    - [`IsId(P): PtEll → BoolElt`](point.md#function-isid-ptell)

    - [`IsIdentity(P): PtEll → BoolElt`](point.md#function-isidentity-ptell)

    - [`IsZero(P): PtEll → BoolElt`](point.md#function-iszero-ptell)

    - [`P eq Q: PtEll, PtEll → BoolElt`](point.md#operation-op-eq-ptell-ptell)

    - [`P ne Q: PtEll, PtEll → BoolElt`](point.md#operation-op-ne-ptell-ptell)

    - [`P in H: PtEll, SetPtEll → BoolElt`](point.md#operation-op-in-ptell-setptell)

    - [`P in E: PtEll, CrvEll → BoolElt`](point.md#operation-op-in-ptell-crvell)

    - [`IsOrder(P, m): PtEll, RngIntElt → BoolElt`](point.md#function-isorder-ptell-rngintelt)

    - [`IsIntegral(P): PtEll → BoolElt`](point.md#function-isintegral-ptell)

    - [`IsSIntegral(P, S): PtEll, SeqEnum → BoolElt`](point.md#function-issintegral-ptell-seqenum)

    - [`Example: Point Predicates`](point.md#example-ex-e572c3)

  - [Weil Pairing](point.md#weil-pairing)

    - [`WeilPairing(P, Q, n): PtEll, PtEll, RngIntElt → RngElt`](point.md#function-weilpairing-ptell-ptell-rngintelt)

    - [`IsLinearlyIndependent(S, n): [ PtEll ], RngIntElt → BoolElt`](point.md#function-islinearlyindependent-ptell-rngintelt)

    - [`IsLinearlyIndependent(P, Q, n): PtEll, PtEll, RngIntElt → BoolElt`](point.md#function-islinearlyindependent-ptell-ptell-rngintelt)

    - [`Example: Weil Pairing`](point.md#example-ex-c9a88c)
