Definitions/Def_TateCurve_KeystoneVocab.lean
Defect, ψ₂ and lattice vocabulary for the Tate parametrisation
Over a complete nontrivially normed field K with ultrametric norm, these are the notions in which the additivity of the Tate parametrisation u \mapsto (\mathrm{pointX}\,q\,u, \mathrm{pointY}\,q\,u) on curve q is expressed. pointPsiTwo q w is 2\,\mathrm{pointY}(q,w) + \mathrm{pointX}(q,w), and psifun w is its rational-function analogue 2\,\mathrm{yfun}(w) + \mathrm{xfun}(w) with \mathrm{xfun}(w) = w/(1-w)^2, \mathrm{yfun}(w) = w^2/(1-w)^3. addDefectDiff q u v is (\mathrm{pointX}(q,uv) - \mathrm{pointX}(q,uv^{-1}))(\mathrm{pointX}(q,u)-\mathrm{pointX}(q,v))^2 + \mathrm{pointPsiTwo}(q,u)\,\mathrm{pointPsiTwo}(q,v), and DiffHyp q asserts that this quantity vanishes for all u,v satisfying AddParams q u v, i.e. q,u,v \neq 0 and none of u, v, uv, uv^{-1} lying in q^{\mathbb Z} (the predicate OffLattice). ExpansionRegion q u v is a structure whose fields are AddParams q u v, \Vert q\Vert < 1, and, for each w \in \{u,v,uv,uv^{-1}\}, the two annulus bounds \Vert q\Vert < \Vert w\Vert and \Vert q\Vert\,\Vert w\Vert < 1.
On the coefficient side, psiCoeffFull u N is 2\,\mathrm{yCoeffFull}(u,N) + \mathrm{xCoeffFull}(u,N), and addDefectSumCoeff u v N, addDefectDiffCoeff u v N are explicit twelve- and seven-term integer combinations of iterated cauchyMul convolutions of the sequences \mathrm{xCoeffFull}(uv), \mathrm{xCoeffFull}(uv^{-1}), \mathrm{xCoeffFull}(u), \mathrm{xCoeffFull}(v), psiCoeffFull, a₄Coeff, a₆Coeff; they are the intended N-th q-coefficients of the sum and difference defects. cauchyMulIntTriple c d e N is \sum_{i=1}^{N-1} c(i)\,\mathrm{cauchyMulInt}(d,e)(N-i), an interior triple convolution, and svComplex u v M is a four-block expression in \mathrm{xfun}, \mathrm{xCoeff}, psifun, psiCoeffFull and the divisor sums \sum_{d \mid a} d\,Gz(u,d)\,Gz(v,d), the single-variable normal form of the difference defect at level M.
Finally LatticeRep q w w' says w' = q^m w or w' = q^m w^{-1} for some m \in \mathbb Z; OnHalfLattice q w says \Vert q^m w\Vert^2 = \Vert q\Vert for some m \in \mathbb Z (a condition on norms); and MuTranslation q ζ p, stated in characteristic zero, asserts that for every a with 1 \le a < p and every u \neq 0 with u and \zeta^a u off the lattice, the affine point of curve q at parameter \zeta^a u is the sum, in Mathlib's group of points, of the points at parameters \zeta^a and u (nonsingularity witnesses for the three points being taken as explicit arguments).
Relation to Mathlib
MuTranslation is phrased using Mathlib's group structure on WeierstrassCurve.Affine.Point for the curve curve q; the parametrisation pointX/pointY, the coefficient sequences and convolutions, and all the predicates here are the project's own, Mathlib carrying no Tate parametrisation.
Where it is used
These are the notions in which the symmetric and antisymmetric addition identities for the Tate parametrisation are formulated and proved by q-expansion in the annulus cut out by ExpansionRegion; the resulting additivity gives the description of E_q[p] for a curve with multiplicative reduction, and with it the action of inertia at such a prime on the mod p representation.
References
- J. Tate, A review of non-Archimedean elliptic functions, in: Elliptic Curves, Modular Forms, and Fermat's Last Theorem (Hong Kong, 1993), International Press, 1995, 162–184
- J. H. Silverman, Advanced Topics in the Arithmetic of Elliptic Curves, Graduate Texts in Mathematics 151, Springer, 1994, Chapter V
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 251 lines
- 23 declarations
- used in the statements of 10 theorems and imported by 10 proofs
- imports 1 definition modules
Source file: Definitions/Def_TateCurve_KeystoneVocab.lean
Imported by
Declarations
- def
TateCurve.pointPsiTwo - def
TateCurve.addDefectDiff - def
TateCurve.DiffHyp - structure
TateCurve.ExpansionRegion - field
TateCurve.ExpansionRegion.params - field
TateCurve.ExpansionRegion.norm_q_lt_one - field
TateCurve.ExpansionRegion.u_lo - field
TateCurve.ExpansionRegion.u_hi - field
TateCurve.ExpansionRegion.v_lo - field
TateCurve.ExpansionRegion.v_hi - field
TateCurve.ExpansionRegion.mul_lo - field
TateCurve.ExpansionRegion.mul_hi - field
TateCurve.ExpansionRegion.div_lo - field
TateCurve.ExpansionRegion.div_hi - def
TateCurve.addDefectSumCoeff - def
TateCurve.cauchyMulIntTriple - def
TateCurve.psiCoeffFull - def
TateCurve.addDefectDiffCoeff - def
TateCurve.psifun - def
TateCurve.svComplex - def
TateCurve.LatticeRep - def
TateCurve.OnHalfLattice - def
TateCurve.MuTranslation
Source
import Mathlib import Definitions.Def_TateCurve_XMultIdentities set_option autoImplicit false set_option linter.unusedSectionVars false open scoped NNReal open IsUltrametricDist Filter open WeierstrassCurve.Affine namespace TateCurve variable {K : Type*} [NontriviallyNormedField K] [IsUltrametricDist K] section PsiTwo variable [CompleteSpace K] {q w : K} variable (q w) in noncomputable def pointPsiTwo : K := 2 * pointY q w + pointX q w end PsiTwo section Defect variable [CompleteSpace K] {q u v : K} variable (q u v) noncomputable def addDefectDiff : K := (pointX q (u * v) - pointX q (u * v⁻¹)) * (pointX q u - pointX q v) ^ 2 + pointPsiTwo q u * pointPsiTwo q v variable {q u v} end Defect end TateCurve set_option linter.unusedSectionVars false open WeierstrassCurve.Affine namespace TateCurve variable {K : Type*} [NontriviallyNormedField K] [IsUltrametricDist K] [CompleteSpace K] [CharZero K] [DecidableEq K] variable {q u v w ζ : K} {p : ℕ} variable (q) in def DiffHyp : Prop := ∀ u v : K, AddParams q u v → (pointX q (u * v) - pointX q (u * v⁻¹)) * (pointX q u - pointX q v) ^ 2 = -((2 * pointY q u + pointX q u) * (2 * pointY q v + pointX q v)) end TateCurve set_option autoImplicit false set_option linter.unusedSectionVars false open scoped NNReal open IsUltrametricDist Filter Finset namespace TateCurve variable {K : Type*} [NontriviallyNormedField K] [IsUltrametricDist K] [CompleteSpace K] section Region variable {q u v : K} structure ExpansionRegion (q u v : K) : Prop where params : AddParams q u v norm_q_lt_one : ‖q‖ < 1 u_lo : ‖q‖ < ‖u‖ u_hi : ‖q‖ * ‖u‖ < 1 v_lo : ‖q‖ < ‖v‖ v_hi : ‖q‖ * ‖v‖ < 1 mul_lo : ‖q‖ < ‖u * v‖ mul_hi : ‖q‖ * ‖u * v‖ < 1 div_lo : ‖q‖ < ‖u * v⁻¹‖ div_hi : ‖q‖ * ‖u * v⁻¹‖ < 1 end Region end TateCurve set_option autoImplicit false set_option linter.unusedSectionVars false namespace TateCurve open scoped NNReal variable {K : Type*} [NontriviallyNormedField K] [IsUltrametricDist K] [CompleteSpace K] variable {q u v : K} section Coefficients variable (u v) noncomputable def addDefectSumCoeff (N : ℕ) : K := cauchyMul (xCoeffFull (u * v)) (cauchyMul (xCoeffFull u) (xCoeffFull u)) N - 2 * cauchyMul (xCoeffFull (u * v)) (cauchyMul (xCoeffFull u) (xCoeffFull v)) N + cauchyMul (xCoeffFull (u * v)) (cauchyMul (xCoeffFull v) (xCoeffFull v)) N + cauchyMul (xCoeffFull (u * v⁻¹)) (cauchyMul (xCoeffFull u) (xCoeffFull u)) N - 2 * cauchyMul (xCoeffFull (u * v⁻¹)) (cauchyMul (xCoeffFull u) (xCoeffFull v)) N + cauchyMul (xCoeffFull (u * v⁻¹)) (cauchyMul (xCoeffFull v) (xCoeffFull v)) N - 2 * cauchyMul (xCoeffFull u) (cauchyMul (xCoeffFull u) (xCoeffFull v)) N - 2 * cauchyMul (xCoeffFull u) (cauchyMul (xCoeffFull v) (xCoeffFull v)) N - cauchyMul (xCoeffFull u) (xCoeffFull v) N - 2 * cauchyMul a₄Coeff (xCoeffFull u) N - 2 * cauchyMul a₄Coeff (xCoeffFull v) N - 4 * a₆Coeff N variable {u v} end Coefficients end TateCurve set_option autoImplicit false set_option linter.unusedSectionVars false namespace TateCurve variable {K : Type*} [NontriviallyNormedField K] [IsUltrametricDist K] [CompleteSpace K] variable {u v : K} section TripleSplit noncomputable def cauchyMulIntTriple (c d e : ℕ → K) (N : ℕ) : K := ∑ i ∈ Finset.Ico 1 N, c i * cauchyMulInt d e (N - i) end TripleSplit end TateCurve set_option autoImplicit false set_option linter.unusedSectionVars false namespace TateCurve open scoped NNReal variable {K : Type*} [NontriviallyNormedField K] [IsUltrametricDist K] [CompleteSpace K] variable {q u v : K} section PsiCoeff variable (u) in noncomputable def psiCoeffFull (N : ℕ) : K := 2 * yCoeffFull u N + xCoeffFull u N end PsiCoeff section Coefficients variable (u v) in noncomputable def addDefectDiffCoeff (N : ℕ) : K := cauchyMul (xCoeffFull (u * v)) (cauchyMul (xCoeffFull u) (xCoeffFull u)) N - 2 * cauchyMul (xCoeffFull (u * v)) (cauchyMul (xCoeffFull u) (xCoeffFull v)) N + cauchyMul (xCoeffFull (u * v)) (cauchyMul (xCoeffFull v) (xCoeffFull v)) N - cauchyMul (xCoeffFull (u * v⁻¹)) (cauchyMul (xCoeffFull u) (xCoeffFull u)) N + 2 * cauchyMul (xCoeffFull (u * v⁻¹)) (cauchyMul (xCoeffFull u) (xCoeffFull v)) N - cauchyMul (xCoeffFull (u * v⁻¹)) (cauchyMul (xCoeffFull v) (xCoeffFull v)) N + cauchyMul (psiCoeffFull u) (psiCoeffFull v) N end Coefficients end TateCurve set_option autoImplicit false set_option linter.unusedSectionVars false open scoped NNReal namespace TateCurve variable {K : Type*} [NontriviallyNormedField K] [IsUltrametricDist K] [CompleteSpace K] variable {u v w : K} section Psifun variable (w) in noncomputable def psifun : K := 2 * yfun w + xfun w end Psifun end TateCurve set_option autoImplicit false set_option linter.unusedSectionVars false namespace TateCurve variable {K : Type*} [NontriviallyNormedField K] [IsUltrametricDist K] [CompleteSpace K] variable {u v : K} section AbsorbedNormalForm variable (u v) in noncomputable def svComplex (M : ℕ) : K := 2 * ((xfun (u * v) - xfun (u * v⁻¹)) * ((xfun u - xfun v) * (xCoeff u M - xCoeff v M))) + (∑ d ∈ M.divisors, (d : K) * (Gz u (d : ℤ) * Gz v (d : ℤ))) * (xfun u - xfun v) ^ 2 + (∑ a ∈ Finset.Ico 1 M, (∑ d ∈ a.divisors, (d : K) * (Gz u (d : ℤ) * Gz v (d : ℤ))) * (2 * ((xfun u - xfun v) * (xCoeff u (M - a) - xCoeff v (M - a))))) + (psifun u * psiCoeffFull v M + psiCoeffFull u M * psifun v) end AbsorbedNormalForm end TateCurve open scoped NNReal namespace TateCurve variable {K : Type*} [NontriviallyNormedField K] [IsUltrametricDist K] [CompleteSpace K] variable {q u v w : K} def LatticeRep (q w w' : K) : Prop := ∃ m : ℤ, w' = q ^ m * w ∨ w' = q ^ m * w⁻¹ def OnHalfLattice (q w : K) : Prop := ∃ m : ℤ, ‖q ^ m * w‖ * ‖q ^ m * w‖ = ‖q‖ end TateCurve namespace TateCurve open WeierstrassCurve.Affine variable {K : Type*} [NontriviallyNormedField K] [IsUltrametricDist K] [CompleteSpace K] [CharZero K] [DecidableEq K] def MuTranslation (q ζ : K) (p : ℕ) : Prop := ∀ a : ℕ, 1 ≤ a → a < p → ∀ u : K, u ≠ 0 → OffLattice q u → OffLattice q (ζ ^ a * u) → ∀ (h₁ : (curve q).toAffine.Nonsingular (pointX q (ζ ^ a * u)) (pointY q (ζ ^ a * u))) (h₂ : (curve q).toAffine.Nonsingular (pointX q (ζ ^ a)) (pointY q (ζ ^ a))) (h₃ : (curve q).toAffine.Nonsingular (pointX q u) (pointY q u)), (Point.some (pointX q (ζ ^ a * u)) (pointY q (ζ ^ a * u)) h₁ : (curve q).toAffine.Point) = Point.some (pointX q (ζ ^ a)) (pointY q (ζ ^ a)) h₂ + Point.some (pointX q u) (pointY q u) h₃ end TateCurve
Statements phrased using this module (10)
- Unconditional difference identity X(uv)-X(uv⁻¹) for the Tate curve
TateCurve.diffHyp_unconditional29 below · depth 21 - Symmetric addition identity for Tate curve X-coordinates, all admissible parameters
TateCurve.symAdd_sum_allParams_unconditional30 below · depth 21 - Expansion-layer interface for the Tate curve addition law
TateCurve.ks17_A_exports21 below · depth 22 - Export bundle B: divisor convolutions and Tate-curve defect normal forms
TateCurve.ks17_B_exports22 below · depth 22 - Envelope-engine interface lemmas for the Tate addition law
TateCurve.ks17_C1_exports23 below · depth 22 - Tate-curve keystone: collapse of bilinear sums into coefficient lines
TateCurve.ks17_C3_exports24 below · depth 22 - Half-lattice closure of the Tate addition identities
TateCurve.ks17_D2_exports22 below · depth 22 - Symmetric addition identity for the Tate curve x-series
TateCurve.symAdd_sum_regional28 below · depth 22 - Row-form and three-bin identities for the Tate addition defect
TateCurve.ks17_C2_exports23 below · depth 23 - Group C and D coefficient lines for the Tate curve
TateCurve.ks17_D3_exports25 below · depth 23