# Models of Genus One Curves

- [Introduction](introduction.md)

- [Creation of Genus One Models](creation.md)

  - [`GenusOneModel(seq): [ RngElt ] → ModelG1`](creation.md#function-genusonemodel-rngelt)

  - [`GenusOneModel(n, seq): RngIntElt, [ RngElt ] → ModelG1`](creation.md#function-genusonemodel-rngintelt-rngelt)

  - [`GenusOneModel(R, n, seq): RngIntElt, [ RngElt ] → ModelG1`](creation.md#function-genusonemodel-rngintelt-rngelt-2)

  - [`GenusOneModel(n, str): RngIntElt, MonStgElt → ModelG1`](creation.md#function-genusonemodel-rngintelt-monstgelt)

  - [`GenusOneModel(C): Crv → ModelG1`](creation.md#function-genusonemodel-crv)

  - [`GenusOneModel(f): RngMPolElt → ModelG1`](creation.md#function-genusonemodel-rngmpolelt)

  - [`GenusOneModel(f): RngUPolElt → ModelG1`](creation.md#function-genusonemodel-rngupolelt)

  - [`GenusOneModel(seq): [ RngMPolElt ] → ModelG1`](creation.md#function-genusonemodel-rngmpolelt-2)

  - [`GenusOneModel(n, E): RngIntElt, CrvEll → ModelG1, Crv, MapSch, MapSch`](creation.md#function-genusonemodel-rngintelt-crvell)

  - [`GenusOneModel(mat): Mtrx → ModelG1`](creation.md#function-genusonemodel-mtrx)

  - [`GenusOneModel(mats): [ AlgMatElt ] → ModelG1`](creation.md#function-genusonemodel-algmatelt)

  - [`IsGenusOneModel(f): RngUPolElt → BoolElt, ModelG1`](creation.md#function-isgenusonemodel-rngupolelt)

  - [`IsGenusOneModel(f): RngMPolElt → BoolElt, ModelG1`](creation.md#function-isgenusonemodel-rngmpolelt)

  - [`IsGenusOneModel(seq): [ RngMPolElt ] → BoolElt, ModelG1`](creation.md#function-isgenusonemodel-rngmpolelt-2)

  - [`IsGenusOneModel(mat): Mtrx → BoolElt, ModelG1`](creation.md#function-isgenusonemodel-mtrx)

  - [`GenericModel(n): RngIntElt → ModelG1`](creation.md#function-genericmodel-rngintelt)

  - [`RandomGenusOneModel(n): RngIntElt → ModelG1`](creation.md#function-randomgenusonemodel-rngintelt)

  - [`RandomModel(n): RngIntElt → ModelG1`](creation.md#function-randommodel-rngintelt)

  - [`ChangeRing(model, R): ModelG1, Rng → ModelG1`](creation.md#function-changering-modelg1-rng)

  - [`CompleteTheSquare(model): ModelG1 → ModelG1`](creation.md#function-completethesquare-modelg1)

  - [`CubicFromPoint(E, P): CrvEll, PtEll → RngMPolElt, MapSch, Pt`](creation.md#function-cubicfrompoint-crvell-ptell)

  - [`HesseModel(n, seq): RngIntElt, [ RngElt ] → ModelG1`](creation.md#function-hessemodel-rngintelt-rngelt)

  - [`DiagonalModel(n, seq): RngIntElt, [ RngElt ] → ModelG1`](creation.md#function-diagonalmodel-rngintelt-rngelt)

  - [`Example: Generic Model`](creation.md#example-ex-bc04b8)

- [Attributes of Genus One Models](attributes.md)

  - [`Degree(model): ModelG1 → RngIntElt`](attributes.md#function-degree-modelg1)

  - [`DefiningEquations(model): ModelG1 → [ RngMPolElt ]`](attributes.md#function-definingequations-modelg1)

  - [`Equations(model): ModelG1 → [ RngMPolElt ]`](attributes.md#function-equations-modelg1)

  - [`Matrix(model): ModelG1 → Mtrx`](attributes.md#function-matrix-modelg1)

  - [`Curve(model): ModelG1 → Crv`](attributes.md#function-curve-modelg1)

  - [`HyperellipticCurve(model): ModelG1 → CrvHyp`](attributes.md#function-hyperellipticcurve-modelg1)

  - [`QuadricIntersection(model): ModelG1 → Crv`](attributes.md#function-quadricintersection-modelg1)

  - [`Matrices(model): ModelG1 → [ AlgMatElt ]`](attributes.md#function-matrices-modelg1)

  - [`BaseRing(model): ModelG1 → Rng`](attributes.md#function-basering-modelg1)

  - [`PolynomialRing(model): ModelG1 → RngMPol`](attributes.md#function-polynomialring-modelg1)

  - [`ModelToSequence(model): ModelG1 → [ RngElt ]`](attributes.md#function-modeltosequence-modelg1)

  - [`Eltseq(model): ModelG1 → [ RngElt ]`](attributes.md#function-eltseq-modelg1)

  - [`ModelToString(model): ModelG1 → MonStgElt`](attributes.md#function-modeltostring-modelg1)

- [Transformations between Genus One Models](transformations.md)

  - [`IsTransformation(n, g): RngIntElt, Tup → BoolElt, TransG1`](transformations.md#function-istransformation-rngintelt-tup)

  - [`Tuple(g): TransG1 → Tup`](transformations.md#function-tuple-transg1)

  - [`ChangeRing(g, R): TransG1, Rng → TransG1`](transformations.md#function-changering-transg1-rng)

  - [`IdentityTransformation(n, R): RngIntElt, Rng → TransG1`](transformations.md#function-identitytransformation-rngintelt-rng)

  - [`RandomTransformation(n : parameters): RngIntElt → TransG1`](transformations.md#function-randomtransformation-rngintelt)

  - [`g * model: TransG1, ModelG1 → ModelG1`](transformations.md#operation-op-times-transg1-modelg1)

  - [`ApplyTransformation(g, model): TransG1, ModelG1 → ModelG1`](transformations.md#function-applytransformation-transg1-modelg1)

  - [`g1 * g2: TransG1, TransG1 → TransG1`](transformations.md#operation-op-times-transg1-transg1)

  - [`ComposeTransformations(g1, g2): TransG1, TransG1 → TransG1`](transformations.md#function-composetransformations-transg1-transg1)

  - [`MultiplyTransformations(g1, g2): TransG1, TransG1 → TransG1`](transformations.md#function-multiplytransformations-transg1-transg1)

  - [`Inverse(g): TransG1 → TransG1`](transformations.md#function-inverse-transg1)

  - [`InverseTransformation(g): TransG1 → TransG1`](transformations.md#function-inversetransformation-transg1)

  - [`InverseTransformation(n, g): RngIntElt, TransG1 → TransG1`](transformations.md#function-inversetransformation-rngintelt-transg1)

  - [`ScalingFactor(g): TransG1 → RngElt`](transformations.md#function-scalingfactor-transg1)

  - [`ScalingFactor(n, g): RngIntElt, TransG1 → RngElt`](transformations.md#function-scalingfactor-rngintelt-transg1)

  - [`Determinant(g): TransG1 → RngElt`](transformations.md#function-determinant-transg1)

- [Equivalence of Genus One Models](equivalence.md)

  - [`IsEquivalent(model1, model2): ModelG1, ModelG1 → BoolElt, TransG1`](equivalence.md#function-isequivalent-modelg1-modelg1)

  - [`IsEquivalent(cubic1, cubic2): RngMPolElt, RngMPolElt → BoolElt, TransG1`](equivalence.md#function-isequivalent-rngmpolelt-rngmpolelt)

- [Minimisation and Reduction](g1minred.md)

  - [`Minimise(model : parameters): ModelG1 → ModelG1, TransG1`](g1minred.md#function-minimise-modelg1)

  - [`Minimise(f): RngMPolElt → RngMPolElt, TransG1`](g1minred.md#function-minimise-rngmpolelt)

  - [`pMinimise(f, p): RngMPolElt, RngIntElt → RngMPolElt, AlgMatElt`](g1minred.md#function-pminimise-rngmpolelt-rngintelt)

  - [`Reduce(model): ModelG1 → ModelG1, TransG1`](g1minred.md#function-reduce-modelg1)

  - [`Reduce(f): RngMPolElt → RngMPolElt, TransG1`](g1minred.md#function-reduce-rngmpolelt)

  - [`ReduceQuadrics(seq): [RngMPolElt] → [RngMPolElt], AlgMatElt, AlgMatElt`](g1minred.md#function-reducequadrics-rngmpolelt)

- [Local Solubility](local-solubility.md)

  - [`IsLocallySoluble(model, p): ModelG1, RngIntElt → BoolElt, Any`](local-solubility.md#function-islocallysoluble-modelg1-rngintelt)

  - [`IsLocallySoluble(model): ModelG1 → BoolElt`](local-solubility.md#function-islocallysoluble-modelg1)

- [Genus One Models as Coverings](coverings.md)

  - [`Jacobian(model): ModelG1 → CrvEll`](coverings.md#function-jacobian-modelg1)

  - [`Jacobian(C): Crv → CrvEll`](coverings.md#function-jacobian-crv)

  - [`nCovering(model : parameters): ModelG1 → Crv, CrvEll, MapSch`](coverings.md#function-ncovering-modelg1)

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

  - [`AddCubics(model1, model2 : parameters): ModelG1, ModelG1 → ModelG1`](coverings.md#function-addcubics-modelg1-modelg1)

  - [`model1 + model2: ModelG1, ModelG1 → ModelG1`](coverings.md#operation-op-plus-modelg1-modelg1)

  - [`DoubleGenusOneModel(model): ModelG1 → ModelG1`](coverings.md#function-doublegenusonemodel-modelg1)

  - [`FourToTwoCovering(model : parameters): ModelG1 → Crv, Crv, MapSch`](coverings.md#function-fourtotwocovering-modelg1)

  - [`FourToTwoCovering(C : parameters): Crv → Crv, Crv, MapSch`](coverings.md#function-fourtotwocovering-crv)

- [Families of Elliptic Curves with Prescribed $n$-Torsion](n-torsion-families.md)

  - [`RubinSilverbergPolynomials(n, J : parameters): RngIntElt, RngElt → RngElt, RngElt`](n-torsion-families.md#function-rubinsilverbergpolynomials-rngintelt-rngelt)

- [Invariants for Genus One Models](invariants.md)

  - [`aInvariants(model): ModelG1 → [ RngElt ]`](invariants.md#function-ainvariants-modelg1)

  - [`bInvariants(model): ModelG1 → [ RngElt ]`](invariants.md#function-binvariants-modelg1)

  - [`cInvariants(model): ModelG1 → [ RngElt ]`](invariants.md#function-cinvariants-modelg1)

  - [`Invariants(model): ModelG1 → RngElt, RngElt, RngElt`](invariants.md#function-invariants-modelg1)

  - [`Discriminant(model): ModelG1 → RngElt`](invariants.md#function-discriminant-modelg1)

  - [`SL4Invariants(model): ModelG1 → [ RngElt ]`](invariants.md#function-sl4invariants-modelg1)

- [Covariants and Contravariants for Genus One Models](covariants.md)

  - [`Hessian(model): ModelG1 → ModelG1`](covariants.md#function-hessian-modelg1)

  - [`CoveringCovariants(model): ModelG1 → [ RngMPolElt ]`](covariants.md#function-coveringcovariants-modelg1)

  - [`Contravariants(model): ModelG1 → ModelG1, ModelG1`](covariants.md#function-contravariants-modelg1)

  - [`HesseCovariants(model, r): ModelG1, RngIntElt → ModelG1, ModelG1`](covariants.md#function-hessecovariants-modelg1-rngintelt)

  - [`HessePolynomials({n, r, }{invariants : parameters}): RngIntElt, RngIntElt, [RngElt] → RngElt, RngElt, RngElt`](covariants.md#function-hessepolynomials-rngintelt-rngintelt-rngelt)

- [Examples](extended-examples.md)

  - [`Example: Visible Three Sha`](extended-examples.md#example-ex-1d0d2c)
