Documentation

Mathlib.AlgebraicGeometry.EllipticCurve.VariableChange

Change of variables of Weierstrass curves #

This file defines admissible linear change of variables of Weierstrass curves.

Main definitions #

Main statements #

References #

Tags #

elliptic curve, weierstrass equation, change of variables

Variable changes #

An admissible linear change of variables of Weierstrass curves defined over a ring R given by a tuple (u, r, s, t) for some u in and some r, s, t in R. As a matrix, it is $$\begin{pmatrix} u^2 & 0 & r \cr u^2s & u^3 & t \cr 0 & 0 & 1 \end{pmatrix}.$$ In other words, this is the change of variables (X, Y) ↦ (u²X + r, u³Y + u²sX + t). When R is a field, any two isomorphic Weierstrass equations are related by this.

  • u : Rˣ

    The u coefficient of an admissible linear change of variables, which must be a unit.

  • r : R

    The r coefficient of an admissible linear change of variables.

  • s : R

    The s coefficient of an admissible linear change of variables.

  • t : R

    The t coefficient of an admissible linear change of variables.

Instances For
    theorem WeierstrassCurve.VariableChange.ext_iff {R : Type u} {inst✝ : CommRing R} {x y : VariableChange R} :
    x = y x.u = y.u x.r = y.r x.s = y.s x.t = y.t
    theorem WeierstrassCurve.VariableChange.ext {R : Type u} {inst✝ : CommRing R} {x y : VariableChange R} (u : x.u = y.u) (r : x.r = y.r) (s : x.s = y.s) (t : x.t = y.t) :
    x = y
    Equations
    theorem WeierstrassCurve.VariableChange.one_def {R : Type u} [CommRing R] :
    1 = { u := 1, r := 0, s := 0, t := 0 }

    The identity linear change of variables given by the identity matrix.

    Equations
    • One or more equations did not get rendered due to their size.
    theorem WeierstrassCurve.VariableChange.mul_def {R : Type u} [CommRing R] (C C' : VariableChange R) :
    C * C' = { u := C.u * C'.u, r := C.r * C'.u ^ 2 + C'.r, s := C'.u * C.s + C'.s, t := C.t * C'.u ^ 3 + C.r * C'.s * C'.u ^ 2 + C'.t }

    The composition of two linear changes of variables given by matrix multiplication.

    Equations
    • One or more equations did not get rendered due to their size.
    theorem WeierstrassCurve.VariableChange.inv_def {R : Type u} [CommRing R] (C : VariableChange R) :
    C⁻¹ = { u := C.u⁻¹, r := -C.r * C.u⁻¹ ^ 2, s := -C.s * C.u⁻¹, t := (C.r * C.s - C.t) * C.u⁻¹ ^ 3 }

    The inverse of a linear change of variables given by matrix inversion.

    Equations
    • One or more equations did not get rendered due to their size.
    Equations
    • One or more equations did not get rendered due to their size.
    theorem WeierstrassCurve.variableChange_def {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : VariableChange R) :
    C W = { a₁ := C.u⁻¹ * (W.a₁ + 2 * C.s), a₂ := C.u⁻¹ ^ 2 * (W.a₂ - C.s * W.a₁ + 3 * C.r - C.s ^ 2), a₃ := C.u⁻¹ ^ 3 * (W.a₃ + C.r * W.a₁ + 2 * C.t), a₄ := C.u⁻¹ ^ 4 * (W.a₄ - C.s * W.a₃ + 2 * C.r * W.a₂ - (C.t + C.r * C.s) * W.a₁ + 3 * C.r ^ 2 - 2 * C.s * C.t), a₆ := C.u⁻¹ ^ 6 * (W.a₆ + C.r * W.a₄ + C.r ^ 2 * W.a₂ + C.r ^ 3 - C.t * W.a₃ - C.t ^ 2 - C.r * C.t * W.a₁) }

    The Weierstrass curve over R induced by an admissible linear change of variables (X, Y) ↦ (u²X + r, u³Y + u²sX + t) for some u in and some r, s, t in R.

    @[simp]
    theorem WeierstrassCurve.variableChange_a₁ {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : VariableChange R) :
    (C W).a₁ = C.u⁻¹ * (W.a₁ + 2 * C.s)
    @[simp]
    theorem WeierstrassCurve.variableChange_a₂ {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : VariableChange R) :
    (C W).a₂ = C.u⁻¹ ^ 2 * (W.a₂ - C.s * W.a₁ + 3 * C.r - C.s ^ 2)
    @[simp]
    theorem WeierstrassCurve.variableChange_a₃ {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : VariableChange R) :
    (C W).a₃ = C.u⁻¹ ^ 3 * (W.a₃ + C.r * W.a₁ + 2 * C.t)
    @[simp]
    theorem WeierstrassCurve.variableChange_a₄ {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : VariableChange R) :
    (C W).a₄ = C.u⁻¹ ^ 4 * (W.a₄ - C.s * W.a₃ + 2 * C.r * W.a₂ - (C.t + C.r * C.s) * W.a₁ + 3 * C.r ^ 2 - 2 * C.s * C.t)
    @[simp]
    theorem WeierstrassCurve.variableChange_a₆ {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : VariableChange R) :
    (C W).a₆ = C.u⁻¹ ^ 6 * (W.a₆ + C.r * W.a₄ + C.r ^ 2 * W.a₂ + C.r ^ 3 - C.t * W.a₃ - C.t ^ 2 - C.r * C.t * W.a₁)
    @[simp]
    theorem WeierstrassCurve.variableChange_b₂ {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : VariableChange R) :
    (C W).b₂ = C.u⁻¹ ^ 2 * (W.b₂ + 12 * C.r)
    @[simp]
    theorem WeierstrassCurve.variableChange_b₄ {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : VariableChange R) :
    (C W).b₄ = C.u⁻¹ ^ 4 * (W.b₄ + C.r * W.b₂ + 6 * C.r ^ 2)
    @[simp]
    theorem WeierstrassCurve.variableChange_b₆ {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : VariableChange R) :
    (C W).b₆ = C.u⁻¹ ^ 6 * (W.b₆ + 2 * C.r * W.b₄ + C.r ^ 2 * W.b₂ + 4 * C.r ^ 3)
    @[simp]
    theorem WeierstrassCurve.variableChange_b₈ {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : VariableChange R) :
    (C W).b₈ = C.u⁻¹ ^ 8 * (W.b₈ + 3 * C.r * W.b₆ + 3 * C.r ^ 2 * W.b₄ + C.r ^ 3 * W.b₂ + 3 * C.r ^ 4)
    @[simp]
    @[simp]
    @[simp]
    theorem WeierstrassCurve.variableChange_Δ {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : VariableChange R) :
    (C W).Δ = C.u⁻¹ ^ 12 * W.Δ
    @[simp]
    @[simp]

    Maps and base changes #

    The change of variables mapped over a ring homomorphism φ : R →+* A.

    Equations
    Instances For
      @[simp]
      theorem WeierstrassCurve.VariableChange.map_u {R : Type u} [CommRing R] {A : Type v} [CommRing A] (φ : R →+* A) (C : VariableChange R) :
      (map φ C).u = (Units.map φ) C.u
      @[simp]
      theorem WeierstrassCurve.VariableChange.map_s {R : Type u} [CommRing R] {A : Type v} [CommRing A] (φ : R →+* A) (C : VariableChange R) :
      (map φ C).s = φ C.s
      @[simp]
      theorem WeierstrassCurve.VariableChange.map_r {R : Type u} [CommRing R] {A : Type v} [CommRing A] (φ : R →+* A) (C : VariableChange R) :
      (map φ C).r = φ C.r
      @[simp]
      theorem WeierstrassCurve.VariableChange.map_t {R : Type u} [CommRing R] {A : Type v} [CommRing A] (φ : R →+* A) (C : VariableChange R) :
      (map φ C).t = φ C.t
      @[reducible, inline]

      The change of variables base changed to an algebra A over R.

      Equations
      Instances For
        theorem WeierstrassCurve.VariableChange.map_map {R : Type u} [CommRing R] (C : VariableChange R) {A : Type v} [CommRing A] (φ : R →+* A) {B : Type w} [CommRing B] (ψ : A →+* B) :
        map ψ (map φ C) = map (ψ.comp φ) C
        @[simp]
        theorem WeierstrassCurve.VariableChange.map_baseChange {R : Type u} [CommRing R] (C : VariableChange R) {S : Type s} [CommRing S] [Algebra R S] {A : Type v} [CommRing A] [Algebra R A] [Algebra S A] [IsScalarTower R S A] {B : Type w} [CommRing B] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (ψ : A →ₐ[S] B) :
        map (↑ψ) (baseChange A C) = baseChange B C

        The map over a ring homomorphism of a change of variables is a group homomorphism.

        Equations
        Instances For
          theorem WeierstrassCurve.map_variableChange {R : Type u} [CommRing R] (W : WeierstrassCurve R) {A : Type v} [CommRing A] (φ : R →+* A) (C : VariableChange R) :
          VariableChange.map φ C W.map φ = (C W).map φ