Documentation

EllipticCurves.WeierstrassFormalGroup.Reduction

The point-level reduction map over the completion #

Source: MichaelStollBayreuth/EllipticCurves at commit 3f8c39c0fc4c0fd0a40e693aa2a9bbda08d9ee1f.

For a good integral model W₀ of W over 𝒪_v (good reduction: [W₀.IsElliptic]), the reduction map E(K_v) → E_red(k_v) sends a point with integral coordinates to their residues and a point of the kernel of reduction (a pole at x) to the point at infinity.

This file is the completion-level engine behind reduction at a prime of a Dedekind domain R with fraction field K: the user-facing API red/redHom : E(K) →+ E_red(R ⧸ v.asIdeal) lives in EllipticCurves.ReductionAtPrime, which identifies it with the maps built here along the base change E(K) → E(K_v).

Main definitions and statements #

@[reducible, inline]

The reduction E_red of the integral model W₀ modulo the maximal ideal, a Weierstrass curve over the residue field k_v; under good reduction ([W₀.IsElliptic], assumed for all results below about adicRed) it is again elliptic.

Equations
Instances For
    theorem WeierstrassCurve.Affine.nonsingular_deriv_disj {F : Type u_3} [Field F] {E' : Affine F} {a b : F} (h : E'.Nonsingular a b) :
    E'.a₁ * b - (3 * a ^ 2 + 2 * E'.a₂ * a + E'.a₄) 0 b - E'.negY a b 0

    At a nonsingular point of a Weierstrass curve, one of the two partial derivatives of the Weierstrass polynomial is nonzero.

    theorem WeierstrassCurve.Affine.red_slope {R : Type u_1} [CommRing R] [IsDedekindDomain R] {K : Type u_2} [Field K] [Algebra R K] [IsFractionRing R K] {v : IsDedekindDomain.HeightOneSpectrum R} {W : Affine (IsDedekindDomain.HeightOneSpectrum.adicCompletion K v)} {W₀ : WeierstrassCurve (IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers K v)} (hW : W₀.map (algebraMap (↥(IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers K v)) (IsDedekindDomain.HeightOneSpectrum.adicCompletion K v)) = W) [DecidableEq (IsDedekindDomain.HeightOneSpectrum.adicCompletion K v)] [DecidableEq (IsLocalRing.ResidueField (IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers K v))] {x₁ x₂ y₁ y₂ : IsDedekindDomain.HeightOneSpectrum.adicCompletion K v} (hx₁ : Valued.v x₁ 1) (hx₂ : Valued.v x₂ 1) (hy₁ : Valued.v y₁ 1) (hy₂ : Valued.v y₂ 1) (hc₁ : W.Equation x₁ y₁) (hc₂ : W.Equation x₂ y₂) (hℓ : Valued.v (W.slope x₁ x₂ y₁ y₂) 1) (hne : ¬((IsLocalRing.residue (IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers K v)) x₁, hx₁ = (IsLocalRing.residue (IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers K v)) x₂, hx₂ (IsLocalRing.residue (IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers K v)) y₁, hy₁ = (adicRedCurve W₀).negY ((IsLocalRing.residue (IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers K v)) x₂, hx₂) ((IsLocalRing.residue (IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers K v)) y₂, hy₂))) :

    Reduction commutes with the chord/tangent slope, off the reduced anti-diagonal. Mathlib's map_slope cannot apply (the residue map is not an injective field hom), so the secant/tangent branch is chosen by the reduced points: the finite-difference identity turns a K_v-secant that reduces to a tangent into a genuine tangent downstairs.

    Off the reduced anti-diagonal, the chord/tangent slope of two integral points is integral.

    The point-level reduction map. 0 ↦ 0; an affine point with a pole of order ≥ 2 at x (the kernel of reduction) ↦ 0; otherwise the coordinatewise reduction.

    Equations
    Instances For