Documentation

Atlas.ArithmeticGeometry.code.PadicElliptic

@[reducible, inline]

The group of $\mathbb{Q}_p$-points of a Weierstrass curve $W$ defined over $\mathbb{Q}$, obtained by base-changing to $\mathbb{Q}_p$ and taking the affine point set.

Instances For

    Membership predicate for the $n$-th piece $E_n(\mathbb{Q}_p)$ of the $p$-adic filtration: a point is either the identity, or has $y \ne 0$ and $v_p(x) - v_p(y) \ge n$.

    Instances For

      The $p$-adic filtration is monotone in the level: $E_{n+1}(\mathbb{Q}_p) \subseteq E_n(\mathbb{Q}_p)$.

      The $p$-adic valuation on $\mathbb{Q}_p$ is invariant under negation: $v_p(-y) = v_p(y)$.

      theorem PadicElliptic.negY_short_weierstrass {p : } [hp : Fact (Nat.Prime p)] (W : WeierstrassCurve ) (ha1 : W.a₁ = 0) (ha3 : W.a₃ = 0) (x y : ℚ_[p]) :

      For a Weierstrass curve in short form ($a_1 = a_3 = 0$), the negation of a point $(x, y)$ on $W_{\mathbb{Q}_p}$ has $y$-coordinate $-y$.

      theorem PadicElliptic.negation_preserves_filtration {p : } [hp : Fact (Nat.Prime p)] (W : WeierstrassCurve ) (ha1 : W.a₁ = 0) (ha3 : W.a₃ = 0) (n : ) (P : PadicPointGroup W) :

      Negation preserves the $p$-adic filtration: if $P \in E_n(\mathbb{Q}_p)$ then so is $-P$. This uses that negation only flips the sign of $y$ in short form, and $v_p$ is sign-invariant.

      theorem PadicElliptic.addition_secant_case {p : } [hp : Fact (Nat.Prime p)] (W : WeierstrassCurve ) (ha1 : W.a₁ = 0) (ha2 : W.a₂ = 0) (ha3 : W.a₃ = 0) (n : ) {x₁ x₂ y₁ y₂ : ℚ_[p]} (h₁ : (W.baseChange ℚ_[p]).toAffine.Nonsingular x₁ y₁) (h₂ : (W.baseChange ℚ_[p]).toAffine.Nonsingular x₂ y₂) (hx : x₁ x₂) (hP : y₁ 0 n x₁.valuation - y₁.valuation) (hQ : y₂ 0 n x₂.valuation - y₂.valuation) :
      (W.baseChange ℚ_[p]).toAffine.addY x₁ x₂ y₁ ((W.baseChange ℚ_[p]).toAffine.slope x₁ x₂ y₁ y₂) 0 n ((W.baseChange ℚ_[p]).toAffine.addX x₁ x₂ ((W.baseChange ℚ_[p]).toAffine.slope x₁ x₂ y₁ y₂)).valuation - ((W.baseChange ℚ_[p]).toAffine.addY x₁ x₂ y₁ ((W.baseChange ℚ_[p]).toAffine.slope x₁ x₂ y₁ y₂)).valuation

      Secant case: when $x_1 \ne x_2$, adding two points $P, Q \in E_n(\mathbb{Q}_p)$ stays in $E_n(\mathbb{Q}_p)$. Axiomatized for now.

      theorem PadicElliptic.addition_tangent_case {p : } [hp : Fact (Nat.Prime p)] (W : WeierstrassCurve ) (ha1 : W.a₁ = 0) (ha2 : W.a₂ = 0) (ha3 : W.a₃ = 0) (n : ) {x₁ x₂ y₁ y₂ : ℚ_[p]} (h₁ : (W.baseChange ℚ_[p]).toAffine.Nonsingular x₁ y₁) (h₂ : (W.baseChange ℚ_[p]).toAffine.Nonsingular x₂ y₂) (hx : x₁ = x₂) (hy : y₁ (W.baseChange ℚ_[p]).toAffine.negY x₂ y₂) (hP : y₁ 0 n x₁.valuation - y₁.valuation) (hQ : y₂ 0 n x₂.valuation - y₂.valuation) :
      (W.baseChange ℚ_[p]).toAffine.addY x₁ x₂ y₁ ((W.baseChange ℚ_[p]).toAffine.slope x₁ x₂ y₁ y₂) 0 n ((W.baseChange ℚ_[p]).toAffine.addX x₁ x₂ ((W.baseChange ℚ_[p]).toAffine.slope x₁ x₂ y₁ y₂)).valuation - ((W.baseChange ℚ_[p]).toAffine.addY x₁ x₂ y₁ ((W.baseChange ℚ_[p]).toAffine.slope x₁ x₂ y₁ y₂)).valuation

      Tangent case: when $x_1 = x_2$ but $y_1 \ne -y_2$, doubling-type addition still preserves $E_n(\mathbb{Q}_p)$. Axiomatized for now.

      theorem PadicElliptic.addition_formula_preserves_valuation_ax {p : } [hp : Fact (Nat.Prime p)] (W : WeierstrassCurve ) (ha1 : W.a₁ = 0) (ha2 : W.a₂ = 0) (ha3 : W.a₃ = 0) (n : ) {x₁ x₂ y₁ y₂ : ℚ_[p]} (h₁ : (W.baseChange ℚ_[p]).toAffine.Nonsingular x₁ y₁) (h₂ : (W.baseChange ℚ_[p]).toAffine.Nonsingular x₂ y₂) (hxy : ¬(x₁ = x₂ y₁ = (W.baseChange ℚ_[p]).toAffine.negY x₂ y₂)) (hP : y₁ 0 n x₁.valuation - y₁.valuation) (hQ : y₂ 0 n x₂.valuation - y₂.valuation) :
      (W.baseChange ℚ_[p]).toAffine.addY x₁ x₂ y₁ ((W.baseChange ℚ_[p]).toAffine.slope x₁ x₂ y₁ y₂) 0 n ((W.baseChange ℚ_[p]).toAffine.addX x₁ x₂ ((W.baseChange ℚ_[p]).toAffine.slope x₁ x₂ y₁ y₂)).valuation - ((W.baseChange ℚ_[p]).toAffine.addY x₁ x₂ y₁ ((W.baseChange ℚ_[p]).toAffine.slope x₁ x₂ y₁ y₂)).valuation

      Combined statement (secant + tangent): the explicit addition formula on the Weierstrass curve preserves the $p$-adic filtration; established by case analysis on whether $x_1 = x_2$.

      theorem PadicElliptic.addition_formula_preserves_valuation {p : } [hp : Fact (Nat.Prime p)] (W : WeierstrassCurve ) (ha1 : W.a₁ = 0) (ha2 : W.a₂ = 0) (ha3 : W.a₃ = 0) (n : ) {x₁ x₂ y₁ y₂ : ℚ_[p]} (h₁ : (W.baseChange ℚ_[p]).toAffine.Nonsingular x₁ y₁) (h₂ : (W.baseChange ℚ_[p]).toAffine.Nonsingular x₂ y₂) (hxy : ¬(x₁ = x₂ y₁ = (W.baseChange ℚ_[p]).toAffine.negY x₂ y₂)) (hP : y₁ 0 n x₁.valuation - y₁.valuation) (hQ : y₂ 0 n x₂.valuation - y₂.valuation) :
      have W' := (W.baseChange ℚ_[p]).toAffine; have := W'.slope x₁ x₂ y₁ y₂; W'.addY x₁ x₂ y₁ 0 n (W'.addX x₁ x₂ ).valuation - (W'.addY x₁ x₂ y₁ ).valuation

      Re-statement using let for readability: the addition formula preserves the $p$-adic filtration.

      theorem PadicElliptic.addition_preserves_filtration {p : } [hp : Fact (Nat.Prime p)] (W : WeierstrassCurve ) (ha1 : W.a₁ = 0) (ha2 : W.a₂ = 0) (ha3 : W.a₃ = 0) (n : ) (P Q : PadicPointGroup W) :

      Closure under addition: if $P, Q \in E_n(\mathbb{Q}_p)$ then $P + Q \in E_n(\mathbb{Q}_p)$. This combines the trivial cases (one summand is $0$ or $P + Q = 0$) with the addition formula.

      def PadicElliptic.padicFiltration {p : } [hp : Fact (Nat.Prime p)] (W : WeierstrassCurve ) (ha1 : W.a₁ = 0) (ha2 : W.a₂ = 0) (ha3 : W.a₃ = 0) (n : ) :

      The $n$-th piece $E_n(\mathbb{Q}_p)$ of the $p$-adic filtration on $E(\mathbb{Q}_p)$ realized as an additive subgroup, with closure properties supplied by negation_preserves_filtration and addition_preserves_filtration.

      Instances For
        theorem PadicElliptic.padicFiltration_le_succ {p : } [hp : Fact (Nat.Prime p)] (W : WeierstrassCurve ) (ha1 : W.a₁ = 0) (ha2 : W.a₂ = 0) (ha3 : W.a₃ = 0) (n : ) :
        padicFiltration W ha1 ha2 ha3 (n + 1) padicFiltration W ha1 ha2 ha3 n

        Successor inclusion: $E_{n+1}(\mathbb{Q}_p) \le E_n(\mathbb{Q}_p)$ as subgroups.

        theorem PadicElliptic.padicFiltration_antitone {p : } [hp : Fact (Nat.Prime p)] (W : WeierstrassCurve ) (ha1 : W.a₁ = 0) (ha2 : W.a₂ = 0) (ha3 : W.a₃ = 0) :
        Antitone (padicFiltration W ha1 ha2 ha3)

        The $p$-adic filtration, viewed as a function $\mathbb{N} \to \mathrm{AddSubgroup}\,E$, is antitone.

        theorem PadicElliptic.index_eq_p_of_surjective_hom_to_zmod {p : } [hp : Fact (Nat.Prime p)] {G : Type u_1} [AddGroup G] (H : AddSubgroup G) (f : G →+ ZMod p) (hf : Function.Surjective f) (hker : f.ker = H) :
        H.index = p

        If $H$ is the kernel of a surjective additive group homomorphism $G \to \mathbb{Z}/p\mathbb{Z}$, then $[G : H] = p$.

        noncomputable def PadicElliptic.reduction_hom_ax {p : } [hp : Fact (Nat.Prime p)] (W : WeierstrassCurve ) (ha1 : W.a₁ = 0) (ha2 : W.a₂ = 0) (ha3 : W.a₃ = 0) [hW : (W.baseChange ℚ_[p]).IsElliptic] (n : ) (hn : 0 < n) :
        (padicFiltration W ha1 ha2 ha3 n) →+ ZMod p

        Axiomatized reduction homomorphism $E_n(\mathbb{Q}_p) \to \mathbb{Z}/p\mathbb{Z}$ used to detect the next layer of the filtration.

        Instances For
          theorem PadicElliptic.reduction_hom_surjective_ax {p : } [hp : Fact (Nat.Prime p)] (W : WeierstrassCurve ) (ha1 : W.a₁ = 0) (ha2 : W.a₂ = 0) (ha3 : W.a₃ = 0) [hW : (W.baseChange ℚ_[p]).IsElliptic] (n : ) (hn : 0 < n) :
          Function.Surjective (reduction_hom_ax W ha1 ha2 ha3 n hn)

          Axiomatized: the reduction homomorphism reduction_hom_ax is surjective.

          theorem PadicElliptic.reduction_hom_kernel_ax {p : } [hp : Fact (Nat.Prime p)] (W : WeierstrassCurve ) (ha1 : W.a₁ = 0) (ha2 : W.a₂ = 0) (ha3 : W.a₃ = 0) [hW : (W.baseChange ℚ_[p]).IsElliptic] (n : ) (hn : 0 < n) :
          (reduction_hom_ax W ha1 ha2 ha3 n hn).ker = (padicFiltration W ha1 ha2 ha3 (n + 1)).addSubgroupOf (padicFiltration W ha1 ha2 ha3 n)

          Axiomatized: the kernel of reduction_hom_ax is exactly $E_{n+1}(\mathbb{Q}_p)$ viewed as a subgroup of $E_n(\mathbb{Q}_p)$.

          theorem PadicElliptic.exists_surjective_reduction_hom {p : } [hp : Fact (Nat.Prime p)] (W : WeierstrassCurve ) (ha1 : W.a₁ = 0) (ha2 : W.a₂ = 0) (ha3 : W.a₃ = 0) [hW : (W.baseChange ℚ_[p]).IsElliptic] (n : ) (hn : 0 < n) :
          ∃ (f : (padicFiltration W ha1 ha2 ha3 n) →+ ZMod p), Function.Surjective f f.ker = (padicFiltration W ha1 ha2 ha3 (n + 1)).addSubgroupOf (padicFiltration W ha1 ha2 ha3 n)

          Bundled form: there exists a surjective additive homomorphism $E_n(\mathbb{Q}_p) \to \mathbb{Z}/p\mathbb{Z}$ whose kernel is $E_{n+1}(\mathbb{Q}_p)$.

          theorem PadicElliptic.lemma_24_12 {p : } [hp : Fact (Nat.Prime p)] (W : WeierstrassCurve ) (ha1 : W.a₁ = 0) (ha2 : W.a₂ = 0) (ha3 : W.a₃ = 0) [hW : (W.baseChange ℚ_[p]).IsElliptic] (n : ) (hn : 0 < n) :
          (padicFiltration W ha1 ha2 ha3 (n + 1)).relIndex (padicFiltration W ha1 ha2 ha3 n) = p

          Lemma 24.12: for $n \ge 1$, the relative index $[E_n(\mathbb{Q}_p) : E_{n+1}(\mathbb{Q}_p)]$ equals $p$. Each successive layer of the $p$-adic filtration is a quotient of order $p$.

          def PadicElliptic.PadicFiltrationChain {p : } [hp : Fact (Nat.Prime p)] (W : WeierstrassCurve ) (ha1 : W.a₁ = 0) (ha2 : W.a₂ = 0) (ha3 : W.a₃ = 0) :

          The descending chain $E_0(\mathbb{Q}_p) \supseteq E_1(\mathbb{Q}_p) \supseteq \cdots$ as a function $\mathbb{N} \to \mathrm{AddSubgroup}$.

          Instances For
            def PadicElliptic.reductionKernel {p : } [hp : Fact (Nat.Prime p)] (W : WeierstrassCurve ) (ha1 : W.a₁ = 0) (ha2 : W.a₂ = 0) (ha3 : W.a₃ = 0) :

            The kernel of reduction modulo $p$ on $E(\mathbb{Q}_p)$, equal to $E_1(\mathbb{Q}_p)$, the first non-trivial layer of the $p$-adic filtration.

            Instances For
              theorem PadicElliptic.inPadicFiltration_all_eq_zero {p : } [hp : Fact (Nat.Prime p)] {W : WeierstrassCurve } {P : PadicPointGroup W} (h : ∀ (n : ), InPadicFiltration W n P) :
              P = 0

              A point that lies in every filtration piece $E_n(\mathbb{Q}_p)$ is the identity: the only element with infinite valuation difference is $0$.

              theorem PadicElliptic.p_nsmul_in_filtration_succ_ax {p : } [hp : Fact (Nat.Prime p)] {W : WeierstrassCurve } (ha1 : W.a₁ = 0) (ha2 : W.a₂ = 0) (ha3 : W.a₃ = 0) (n : ) (hn : 0 < n) (P : PadicPointGroup W) (hPn : InPadicFiltration W n P) (hpP : p P = 0) :

              Axiomatized: if $P \in E_n(\mathbb{Q}_p)$ and $pP = 0$, then $P$ already lies in $E_{n+1}(\mathbb{Q}_p)$.

              theorem PadicElliptic.torsion_in_E1_eq_zero {p : } [hp : Fact (Nat.Prime p)] {W : WeierstrassCurve } (ha1 : W.a₁ = 0) (ha2 : W.a₂ = 0) (ha3 : W.a₃ = 0) [hW : (W.baseChange ℚ_[p]).IsElliptic] (P : PadicPointGroup W) (hP1 : P padicFiltration W ha1 ha2 ha3 1) (m : ) (hm : m 0) (htors : m P = 0) :
              P = 0

              Any torsion point of $E(\mathbb{Q}_p)$ lying in $E_1(\mathbb{Q}_p)$ must be zero. The proof proceeds by strong induction on the torsion order, distinguishing the cases of coprime-to-$p$ torsion (annihilated by the surjective reduction) and $p$-power torsion (pushed deeper into the filtration via p_nsmul_in_filtration_succ_ax).

              theorem PadicElliptic.cor_24_18_torsion_free_ax {p : } [hp : Fact (Nat.Prime p)] (W : WeierstrassCurve ) (ha1 : W.a₁ = 0) (ha2 : W.a₂ = 0) (ha3 : W.a₃ = 0) [hW : (W.baseChange ℚ_[p]).IsElliptic] :

              Corollary 24.18 (kernel-of-reduction form): the additive subgroup $E_1(\mathbb{Q}_p)$ has no nontrivial torsion. Proved from torsion_in_E1_eq_zero by reducing equalities of subgroup elements to differences.

              theorem PadicElliptic.cor_24_18_torsion_free {p : } [hp : Fact (Nat.Prime p)] (W : WeierstrassCurve ) (ha1 : W.a₁ = 0) (ha2 : W.a₂ = 0) (ha3 : W.a₃ = 0) [hW : (W.baseChange ℚ_[p]).IsElliptic] :

              Corollary 24.18: the kernel of reduction $E_1(\mathbb{Q}_p)$ is torsion-free, the user-facing restatement of cor_24_18_torsion_free_ax.