FLT/KnownIn1980s/EllipticCurves/TateCurve.lean
Explanation legend Lean4 Domain Explanation Language (L4DEL)
L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.
- L4DEL
- Lean4 Domain Explanation Language
Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.
Project sources: Pinned project documentation, Pinned FLT blueprint introduction
38 declarations, 11 contain sorry, 0 declared as axioms
The Tate curve
Let k be a nonarchimedean local field and let E/k be an elliptic curve, given by a
minimal Weierstrass equation, with split multiplicative reduction. Tate's theory attaches
to E a canonical Tate parameter, an element q = q(E) of k with 0 < |q| < 1, and
an isomorphism of groups E(k) ≅ kˣ/qᶻ (Tate's uniformisation). The construction is
functorial: if k → l is a valuation-compatible morphism of nonarchimedean local fields
then the base change of E to l again has split multiplicative reduction, the Tate
parameter of the base change is the image of q, and the uniformisations over k and l
fit into a commutative diagram — in general only up to an unremovable sign, but on the nose
when the morphism is k-linear (see tateEquiv_baseChange and tateEquiv_galois). The
k-linear case gives the Galois-equivariance needed to compute the Galois representations
attached to E.
These results are due to Tate, in a manuscript which circulated from the early 1960s and was eventually published in 1995 as A review of non-Archimedean elliptic curves. See also Roquette, Analytic theory of elliptic functions over local fields (1970), and Silverman, Advanced topics in the arithmetic of elliptic curves, V.3 and V.5, for textbook accounts.
TODO
Rank 1 generality. Tate's theory works over any field complete with respect to a nontrivial rank 1 (i.e. real-valued) nonarchimedean valuation, for example
ℂ_por the completion of the maximal unramified extension ofℚ_p: completeness and|q| < 1are all that is needed for the relevant power series to converge. But right now we can't talk about an elliptic curve overℂ_phaving split multiplicative reduction, so we stick to nonarchimedean local fields: mathlib'sWeierstrassCurve.HasSplitMultiplicativeReductionis defined via minimal Weierstrass equations, and mathlib'sWeierstrassCurve.IsMinimalrequiresIsDiscreteValuationRing(its existence theoremexists_isMinimalis proved by well-foundedness of the value group, which fails for dense value groups).Mathematics question: is there a theory of minimal models for elliptic curves with multiplicative reduction over fields complete wrt an arbitrary rank 1 valuation? For additive reduction you have no chance (consider
y² = x³ + poverℂₚ).Topology.
tateEquivbelow should be an isomorphism of topological groups, wherekˣ/qᶻcarries the quotient topology andE(k)the topology coming fromk. This cannot currently be stated: mathlib has no topology onWeierstrassCurve.Affine.Point(nor onProjectivization, from which it could be induced).Signs. There is a choice of sign for the Tate uniformisation. I propose that we simply use the definition in e.g. Silverman. One could say explicitly what the sign is by asking what the pullback of the invariant differential
dx/(2y + a₁x + a₃)tokˣis; it will be some constant timesdu/u(for the Tate curveE_qitself, with Silverman's series, it is exactlydu/u).
Imports (6)
Imported by 1 file
- def
WeierstrassCurve.tateA₄The coefficienta₄(q) = -5s₃(q)of the Tate curve, wheresₖ(q) = ∑_{n≥1} nᵏqⁿ/(1-qⁿ)(Silverman, ATAEC V.3) line 95 sourceSource documentation
The coefficient
a₄(q) = -5s₃(q)of the Tate curve, wheresₖ(q) = ∑_{n≥1} nᵏqⁿ/(1-qⁿ)(Silverman, ATAEC V.3).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,TopologicalSpaceProof uses:
HMul.hMul,Neg.neg,OfNat.ofNat,tsum,Nat,HDiv.hDiv,HPow.hPow,HAdd.hAdd,HSub.hSub,SummationFilter.unconditional37 instances, coercions and auxiliary constants left out.
noncomputable def WeierstrassCurve.tateA₄ (q : k) : k := …
Mentions: WeierstrassCurve.q
- def
WeierstrassCurve.tateA₆Documented declaration: tateA₆ line 101 sourceSource documentation
The coefficient
a₆(q) = -(5s₃(q) + 7s₅(q))/12of the Tate curve, wheresₖ(q) = ∑_{n≥1} nᵏqⁿ/(1-qⁿ); the integrality12 ∣ 5n³ + 7n⁵makes sense of the division by12in every characteristic (Silverman, ATAEC V.3).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,TopologicalSpaceProof uses:
tsum,Nat,HDiv.hDiv,HMul.hMul,Neg.neg,Int,HAdd.hAdd,OfNat.ofNat,HPow.hPow,HSub.hSub,SummationFilter.unconditional42 instances, coercions and auxiliary constants left out.
noncomputable def WeierstrassCurve.tateA₆ (q : k) : k := …
Mentions: WeierstrassCurve.q
- def
WeierstrassCurve.tateCurveThe Tate curveE_q : y² + xy = x³ + a₄(q)x + a₆(q)(Silverman, ATAEC V.3) line 106 sourceSource documentation
The Tate curve
E_q : y² + xy = x³ + a₄(q)x + a₆(q)(Silverman, ATAEC V.3).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,TopologicalSpace,WeierstrassCurveProof uses:
WeierstrassCurve.mk,OfNat.ofNat, WeierstrassCurve.tateA₄, WeierstrassCurve.tateA₆12 instances, coercions and auxiliary constants left out.
noncomputable def WeierstrassCurve.tateCurve (q : k) : WeierstrassCurve k := …
Mentions: WeierstrassCurve.q
- def
WeierstrassCurve.tateCurveEquivTate's uniformisation of the Tate curveE_q, given by the explicit power seriesx = X(u, q),y = Y(u, q)of Silverman, ATAEC V.3 sorry line 121 sourceSource documentation
Tate's uniformisation of the Tate curve
E_q, given by the explicit power seriesx = X(u, q),y = Y(u, q)of Silverman, ATAEC V.3. UnliketateEquivbelow, this involves no choices at all: it commutes on the nose with every valuative field morphism (seetateCurve_baseChangefor the equation-level statement).depends on sorry what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,DecidableEq,Units,LT.lt,ValuativeRel.ValueGroupWithZero,Valuation,ValuativeRel.valuation,OfNat.ofNat,AddEquiv,Additive,HasQuotient.Quotient,Subgroup,Subgroup.zpowers,WeierstrassCurve.Affine.Point,WeierstrassCurve.Affine.baseChange, WeierstrassCurve.tateCurveProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous,Nat77 instances, coercions and auxiliary constants left out.
noncomputable def WeierstrassCurve.tateCurveEquiv (q : kˣ) (hq : valuation k (q : k) < 1) : Additive (kˣ ⧸ Subgroup.zpowers q) ≃+ ((tateCurve (q : k))⁄k).Point := …Mentions: WeierstrassCurve.q, WeierstrassCurve.tateCurve
- lemma
WeierstrassCurve.tateParameter_eqline 132 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,TopologicalSpace,Eq, WeierstrassCurve.tateParameter, TateCurve.evalInt,Inv.inv, TateCurve.jInvReverseProof uses:
Eq.refl7 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- theorem
WeierstrassCurve.valuation_tateParameter_eqThe Tate parameter ofjhas valuation exactly|j|⁻¹: the leading termj⁻¹of the inverse seriesq = j⁻¹ + 744j⁻² + ⋯dominates ultrametrically line 138 sourceSource documentation
The Tate parameter of
jhas valuation exactly|j|⁻¹: the leading termj⁻¹of the inverse seriesq = j⁻¹ + 744j⁻² + ⋯dominates ultrametrically.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,LT.lt,ValuativeRel.ValueGroupWithZero,OfNat.ofNat,Valuation,ValuativeRel.valuation,Eq, WeierstrassCurve.tateParameter,Inv.invProof uses:
Ne,False,False.elim,Eq.mp,Eq.trans,congrArg,map_zero,Eq.symm, TateCurve.evalInt, TateCurve.jInvReverse, TateCurve.valuation_evalInt_eq,inv_ne_zero,Eq.mpr,id,congrFun',map_inv₀,inv_lt_one_of_one_lt₀, TateCurve.constantCoeff_jInvReverse, TateCurve.coeff_one_jInvReverse, WeierstrassCurve.tateParameter_eq and 1 more74 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
theorem WeierstrassCurve.valuation_tateParameter_eq {j : k} (hj : 1 < valuation k j) : valuation k (tateParameter j) = (valuation k j)⁻¹ := by …Mentions: WeierstrassCurve.tateParameter
- theorem
WeierstrassCurve.tateParameter_ne_zeroline 148 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,LT.lt,ValuativeRel.ValueGroupWithZero,OfNat.ofNat,Valuation,ValuativeRel.valuation,Ne, WeierstrassCurve.tateParameterProof uses:
Eq,Inv.inv, WeierstrassCurve.valuation_tateParameter_eq,inv_ne_zero,ne_of_gt,lt_trans,zero_lt_one,Eq.symm,Eq.mp,congrArg,map_zero62 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- theorem
WeierstrassCurve.valuation_tateParameter_lt_oneline 155 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,LT.lt,ValuativeRel.ValueGroupWithZero,OfNat.ofNat,Valuation,ValuativeRel.valuation, WeierstrassCurve.tateParameterProof uses:
Eq.mpr,Inv.inv,id,Eq,congrFun',congrArg, WeierstrassCurve.valuation_tateParameter_eq,inv_lt_one_of_one_lt₀56 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- theorem
WeierstrassCurve.valuation_Δ_lt_oneAn elliptic curve overkwith bad (here multiplicative) reduction has discriminant of valuation less than1: the discriminant of the integral model lies in the maximal ideal line 165 sourceSource documentation
An elliptic curve over
kwith bad (here multiplicative) reduction has discriminant of valuation less than1: the discriminant of the integral model lies in the maximal ideal.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.HasMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,LT.lt,Valuation,WeierstrassCurve.Δ,OfNat.ofNatProof uses:
WithZero,Multiplicative,Int,IsDedekindDomain.HeightOneSpectrum.valuation,IsDiscreteValuationRing.maximalIdeal,WeierstrassCurve.HasMultiplicativeReduction.badReduction,Eq.mpr,RingHom,Algebra.algebraMap,WeierstrassCurve.integralModel,id,Eq,congrArg,Eq.symm,WeierstrassCurve.integralModel_Δ_eq,Iff.mp, ValuativeRel.adicValuation_lt_one_iff,Eq.mp88 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
theorem WeierstrassCurve.valuation_Δ_lt_one (E : WeierstrassCurve k) [E.HasMultiplicativeReduction 𝒪[k]] : valuation k E.Δ < 1 := by … - theorem
WeierstrassCurve.valuation_c₄_eq_oneAn elliptic curve overkwith multiplicative reduction hasc₄of valuation exactly1:c₄of the integral model is a unit of𝒪[k]line 174 sourceSource documentation
An elliptic curve over
kwith multiplicative reduction hasc₄of valuation exactly1:c₄of the integral model is a unit of𝒪[k].standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.HasMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,Eq,Valuation,WeierstrassCurve.c₄,OfNat.ofNatProof uses:
WithZero,Multiplicative,Int,IsDedekindDomain.HeightOneSpectrum.valuation,IsDiscreteValuationRing.maximalIdeal,WeierstrassCurve.HasMultiplicativeReduction.multiplicativeReduction,Eq.mpr,RingHom,Algebra.algebraMap,WeierstrassCurve.integralModel,id,congrArg,Eq.symm,WeierstrassCurve.integralModel_c₄_eq,Iff.mp, ValuativeRel.adicValuation_eq_one_iff,Eq.mp76 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
theorem WeierstrassCurve.valuation_c₄_eq_one (E : WeierstrassCurve k) [E.HasMultiplicativeReduction 𝒪[k]] : valuation k E.c₄ = 1 := by … - theorem
WeierstrassCurve.valuation_Δ_ne_zeroThe discriminant of an elliptic curve has nonzero valuation line 183 sourceSource documentation
The discriminant of an elliptic curve has nonzero valuation.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,ValuativeRel,WeierstrassCurve,WeierstrassCurve.IsElliptic,Ne,ValuativeRel.ValueGroupWithZero,Valuation,ValuativeRel.valuation,WeierstrassCurve.Δ,OfNat.ofNatProof uses:
Eq.mpr,id,Eq,congrArg,propext,Valuation.ne_zero_iff,WeierstrassCurve.Δ',Eq.symm,WeierstrassCurve.coe_Δ',Units.ne_zero41 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
theorem WeierstrassCurve.valuation_Δ_ne_zero (E : WeierstrassCurve k) [E.IsElliptic] : valuation k E.Δ ≠ 0 := by … - theorem
WeierstrassCurve.valuation_j_eqAn elliptic curve overkwith multiplicative reduction has|j| = |c₄|³/|Δ| = |Δ|⁻¹line 189 sourceSource documentation
An elliptic curve over
kwith multiplicative reduction has|j| = |c₄|³/|Δ| = |Δ|⁻¹.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.IsElliptic,WeierstrassCurve.HasMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,Eq,Valuation,WeierstrassCurve.j,Inv.inv,WeierstrassCurve.ΔProof uses:
Eq.mpr,HMul.hMul,Units,WeierstrassCurve.Δ',HPow.hPow,Nat,WeierstrassCurve.c₄,OfNat.ofNat,id,congrArg,rfl,map_mul,map_pow, WeierstrassCurve.valuation_c₄_eq_one,one_pow,mul_one,Units.val_inv_eq_inv_val,map_inv₀,WeierstrassCurve.coe_Δ',Eq.refl85 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
theorem WeierstrassCurve.valuation_j_eq (E : WeierstrassCurve k) [E.IsElliptic] [E.HasMultiplicativeReduction 𝒪[k]] : valuation k E.j = (valuation k E.Δ)⁻¹ := by … - theorem
WeierstrassCurve.one_lt_valuation_jDocumented declaration: one_lt_valuation_j line 198 sourceSource documentation
An elliptic curve over
kwith split multiplicative reduction has non-integralj-invariant,|j(E)| > 1: indeedv(j) = -v(Δ_min) < 0, sincec₄is a unit when the reduction is multiplicative.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.IsElliptic,WeierstrassCurve.HasSplitMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,LT.lt,OfNat.ofNat,Valuation,WeierstrassCurve.jProof uses:
Eq.mpr,Inv.inv,WeierstrassCurve.Δ,id,Eq,congrArg, WeierstrassCurve.valuation_j_eq,Iff.mpr,one_lt_inv₀,Ne,zero_lt_iff, WeierstrassCurve.valuation_Δ_ne_zero, WeierstrassCurve.valuation_Δ_lt_one77 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
theorem WeierstrassCurve.one_lt_valuation_j (E : WeierstrassCurve k) [E.IsElliptic] [E.HasSplitMultiplicativeReduction 𝒪[k]] : 1 < valuation k E.j := by … - def
WeierstrassCurve.qDocumented declaration: q line 212 sourceSource documentation
The Tate parameter of an elliptic curve
E, given by a minimal Weierstrass equation with split multiplicative reduction over a nonarchimedean local fieldk: the unique elementqofkwith0 < |q| < 1such thatj(E) = j(q) = q⁻¹ + 744 + 196884q + ⋯, defined directly (with no appeal to choice) astateParameter E.j, the inversej-series evaluated atj(E). Equivalently, the uniqueqsuch thatE(k̄)is Galois-equivariantly isomorphic tok̄ˣ/q^ℤ. (The bare existence of an abstract isomorphismE(k) ≅ kˣ/q^ℤwould not pin downq: already overℚ_pthe groupsℚ_pˣ/p^ℤandℚ_pˣ/(p(1+p))^ℤare isomorphic, even topologically.)standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,TopologicalSpace,WeierstrassCurve,WeierstrassCurve.IsEllipticProof uses: WeierstrassCurve.tateParameter,
WeierstrassCurve.j2 instances, coercions and auxiliary constants left out.
noncomputable def WeierstrassCurve.q (E : WeierstrassCurve k) [E.IsElliptic] : k := …
- theorem
WeierstrassCurve.q_ne_zeroline 221 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.IsElliptic,WeierstrassCurve.HasSplitMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,Ne, WeierstrassCurve.q,OfNat.ofNatProof uses: WeierstrassCurve.tateParameter_ne_zero,
WeierstrassCurve.j, WeierstrassCurve.one_lt_valuation_j37 instances, coercions and auxiliary constants left out.
- theorem
WeierstrassCurve.valuation_q_lt_oneThe Tate parameter has norm less than1line 226 sourceSource documentation
The Tate parameter has norm less than
1.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.IsElliptic,WeierstrassCurve.HasSplitMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,LT.lt,Valuation, WeierstrassCurve.q,OfNat.ofNatProof uses: WeierstrassCurve.valuation_tateParameter_lt_one,
WeierstrassCurve.j, WeierstrassCurve.one_lt_valuation_j46 instances, coercions and auxiliary constants left out.
theorem WeierstrassCurve.valuation_q_lt_one : valuation k E.q < 1 := …
- def
WeierstrassCurve.qUnitThe Tate parameter as an element ofkˣline 230 sourceSource documentation
The Tate parameter as an element of
kˣ.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.IsElliptic,WeierstrassCurve.HasSplitMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,UnitsProof uses:
Units.mk0, WeierstrassCurve.q, WeierstrassCurve.q_ne_zero36 instances, coercions and auxiliary constants left out.
noncomputable def WeierstrassCurve.qUnit : kˣ := …
- def
WeierstrassCurve.tateEquivTate's uniformization theorem: ifE/kis an elliptic curve with split multiplicative reduction thenE(k)is isomorphic tokˣ/⟨q⟩sorry line 238 sourceSource documentation
Tate's uniformization theorem: if
E/kis an elliptic curve with split multiplicative reduction thenE(k)is isomorphic tokˣ/⟨q⟩.depends on sorry what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.IsElliptic,WeierstrassCurve.HasSplitMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,DecidableEq,AddEquiv,Additive,HasQuotient.Quotient,Units,Subgroup,Subgroup.zpowersand 3 moreProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous,OfNat.ofNat,Nat68 instances, coercions and auxiliary constants left out.
noncomputable def WeierstrassCurve.tateEquiv : Additive (kˣ ⧸ Subgroup.zpowers E.qUnit) ≃+ (E⁄k).Point := … - theorem
WeierstrassCurve.exists_variableChange_tateCurveDocumented declaration: exists_variableChange_tateCurve sorry line 248 sourceSource comment
Tate's theorem (Silverman, ATAEC V.5.3): an elliptic curve with split multiplicative reduction is isomorphic, by a change of Weierstrass coordinates, to the Tate curve of its Tate parameter. Since `j(E)` is non-integral, `Aut` of the curve is `{±1}` and there are exactly *two* such `C`, differing by negation. `tateEquiv` is `tateCurveEquiv` transported along a choice of one of them; this binary choice, for each `E`, is the only choice in the whole theory, and it cannot be made functorially in `E` — see `tateEquiv_baseChange`.depends on sorry what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.IsElliptic,WeierstrassCurve.HasSplitMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,WeierstrassCurve.IsMinimal,Exists,WeierstrassCurve.VariableChange,Eq,HSMul.hSMul, WeierstrassCurve.tateCurve, WeierstrassCurve.qProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous,OfNat.ofNat,Nat39 instances, coercions and auxiliary constants left out.
theorem WeierstrassCurve.exists_variableChange_tateCurve : ∃ C : VariableChange k, C • tateCurve E.q = E := …Mentions: WeierstrassCurve.tateCurve
- theorem
WeierstrassCurve.tateA₄_eq_evalIntDocumented declaration: tateA₄_eq_evalInt line 256 sourceSource documentation
The Lambert series rearrangement
∑_{n≥1} n³qⁿ/(1-qⁿ) = ∑_{n≥1} σ₃(n)qⁿfor|q| < 1: the defining series oftateA₄is the evaluation of the formal seriesa₄(q) = -5s₃(q) ∈ ℤ⟦q⟧.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,LT.lt,ValuativeRel.ValueGroupWithZero,Valuation,ValuativeRel.valuation,OfNat.ofNat,Eq, WeierstrassCurve.tateA₄, TateCurve.evalInt, TateCurve.a₄FormalProof uses:
Nat,Int,LinearMap,RingHom.id,PowerSeries,Unit,PowerSeries.coeff,Finset.sum,Nat.divisors,HMul.hMul,Neg.neg,HPow.hPow,Eq.mpr,ArithmeticFunction,ArithmeticFunction.sigma,id,congrArg, TateCurve.coeff_a₄Formal,ArithmeticFunction.sigma_apply,congrFun'and 85 more134 instances, coercions and auxiliary constants left out.
Tactic trace: 11 steps
Open to load the checked before-and-after goal states.
theorem WeierstrassCurve.tateA₄_eq_evalInt (q : k) (hq : valuation k q < 1) : tateA₄ q = TateCurve.evalInt q TateCurve.a₄Formal := by …Mentions: WeierstrassCurve.q, WeierstrassCurve.tateA₄, TateCurve.evalInt, TateCurve.a₄Formal
- theorem
WeierstrassCurve.tateA₆_eq_evalIntThe Lambert series rearrangement fortateA₆, as fortateA₄_eq_evalInt; the bookkeeping of the exact division by12uses12 ∣ 5d³ + 7d⁵termwise line 272 sourceSource documentation
The Lambert series rearrangement for
tateA₆, as fortateA₄_eq_evalInt; the bookkeeping of the exact division by12uses12 ∣ 5d³ + 7d⁵termwise.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,LT.lt,ValuativeRel.ValueGroupWithZero,Valuation,ValuativeRel.valuation,OfNat.ofNat,Eq, WeierstrassCurve.tateA₆, TateCurve.evalInt, TateCurve.a₆FormalProof uses:
Int,Dvd.dvd,HAdd.hAdd,HMul.hMul,HPow.hPow,Nat,ZMod,Eq.mpr,id,congrFun',congrArg,Eq.trans,Int.cast_add,congr,Int.cast_mul,Int.cast_ofNat,Int.cast_pow,of_decide_eq_true,Bool,Decidable.decideand 91 more148 instances, coercions and auxiliary constants left out.
Tactic trace: 32 steps
Open to load the checked before-and-after goal states.
theorem WeierstrassCurve.tateA₆_eq_evalInt (q : k) (hq : valuation k q < 1) : tateA₆ q = TateCurve.evalInt q TateCurve.a₆Formal := by …Mentions: WeierstrassCurve.q, WeierstrassCurve.tateA₆, TateCurve.evalInt, TateCurve.a₆Formal
- instance
(instance at line 328)line 328 sourceSource comment
The base change of E is elliptic. (Mathlib has this instance for `E.map f`, but `WeierstrassCurve.baseChange` is a non-reducible `def`, so instance search cannot see through it.)instance : (E.baseChange l).IsElliptic := …
- theorem
WeierstrassCurve.tateCurve_baseChangeDocumented declaration: tateCurve_baseChange line 351 sourceSource documentation
The construction of the Tate curve commutes on the nose with any valuative morphism: its coefficients are power series in
qwith integer coefficients, and the partial sums converge at matching rates on both sides (TateCurve.evalInt_map). The same is true of the uniformisationtateCurveEquiv(a statement we defer, as it needs transport along this equality).On the hypothesis
|q| < 1: the coefficient seriestateA₄,tateA₆aretsums, which take junk values outside the open unit disc (thetsumof a non-summable family is0, and terms with vanishing denominators1 - qⁿ = 0are the junkx/0 = 0). Without the hypothesis this lemma would be a statement about the alignment of junk values across two different fields: for|q| > 1it would hold by accident — each term oftateA₄has size|(n+1)³|, which does not tend to0, so both sides are non-summable and both junk to0— but for|q| = 1summability hinges on how wellqⁿapproximates1, a Diophantine condition onq, and transferring (non-)summability alongk → lwould further require the image ofValuativeExtension.mapValueGroupWithZeroto be cofinal in the value group ofl(true for local fields, by finiteness of ramification, but yet another argument). None of this buys anything: every consumer feeds this lemma a Tate parameter, which lies strictly inside the disc (valuation_q_lt_one). So the hypothesis is free in practice, and keeps the statement the honest identity of convergent series that it is in Silverman.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,Algebra,ValuativeExtension,LT.lt,ValuativeRel.ValueGroupWithZero,Valuation,ValuativeRel.valuation,OfNat.ofNat,Eq,WeierstrassCurve.Affine,WeierstrassCurve.Affine.baseChange, WeierstrassCurve.tateCurve,RingHom,Algebra.algebraMapProof uses: TateCurve.valuation_algebraMap_lt_one, WeierstrassCurve.tateA₄,
Eq.mpr, TateCurve.evalInt, TateCurve.a₄Formal,id,congrArg, WeierstrassCurve.tateA₄_eq_evalInt, TateCurve.evalInt_map,Eq.refl, WeierstrassCurve.tateA₆, TateCurve.a₆Formal, WeierstrassCurve.tateA₆_eq_evalInt,WeierstrassCurve.ext,of_eq_true,WeierstrassCurve.a₁,Eq.trans,True,congrFun',WeierstrassCurve.mkand 14 more59 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
theorem WeierstrassCurve.tateCurve_baseChange (q : k) (hq : valuation k q < 1) : (tateCurve q)⁄l = tateCurve (algebraMap k l q) := by …Mentions: WeierstrassCurve.q, WeierstrassCurve.tateCurve
- instance
(instance at line 364)line 364 sourceSource comment
The base change of `E` to `l` is still given by a minimal Weierstrass equation. This uses the multiplicative reduction hypothesis (which makes `c₄` a unit): minimality by itself is not preserved by ramified base change — `y² = x³ + p` is minimal over `ℚ_p` but not over `ℚ_p(p^{1/6})`. See `WeierstrassCurve.isMinimal_baseChange` in `ReductionBaseChange`.instance : (E.baseChange l).IsMinimal 𝒪[l] := …
- instance
(instance at line 370)line 370 sourceSource comment
and it still has split multiplicative reduction, via `WeierstrassCurve.hasSplitMultiplicativeReduction_baseChange` in `ReductionBaseChange` (from which the preceding `IsMinimal` also follows by class-parent projection).instance : (E.baseChange l).HasSplitMultiplicativeReduction 𝒪[l] := …
- theorem
WeierstrassCurve.tateParameter_mapThe Tate parameter series commutes with valuative extensions: it is the evaluation of an integral power series atj⁻¹, so this is a direct instance ofevalInt_mapline 375 sourceSource documentation
The Tate parameter series commutes with valuative extensions: it is the evaluation of an integral power series at
j⁻¹, so this is a direct instance ofevalInt_map.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,Algebra,ValuativeExtension,LT.lt,ValuativeRel.ValueGroupWithZero,OfNat.ofNat,Valuation,ValuativeRel.valuation,Eq, WeierstrassCurve.tateParameter,RingHom,Algebra.algebraMapProof uses:
Inv.inv,Eq.mpr,id,congrFun',congrArg,map_inv₀,inv_lt_one_of_one_lt₀, TateCurve.evalInt, TateCurve.jInvReverse,congr, WeierstrassCurve.tateParameter_eq,PowerSeries,Int, TateCurve.evalInt_map,of_eq_true,Eq.trans,True,eq_self69 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
theorem WeierstrassCurve.tateParameter_map {j : k} (hj : 1 < valuation k j) : tateParameter (algebraMap k l j) = algebraMap k l (tateParameter j) := by …Mentions: WeierstrassCurve.tateParameter
- theorem
WeierstrassCurve.q_baseChangeline 382 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.IsElliptic,WeierstrassCurve.HasSplitMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,Algebra,ValuativeExtension,Eq, WeierstrassCurve.q,WeierstrassCurve.baseChange,RingHom,Algebra.algebraMapProof uses:
Eq.mpr, WeierstrassCurve.tateParameter,WeierstrassCurve.j,id,congrArg,rfl,WeierstrassCurve.map_j, WeierstrassCurve.tateParameter_map, WeierstrassCurve.one_lt_valuation_j,Eq.refl42 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- theorem
WeierstrassCurve.tateEquiv_baseChangesorry line 404 sourcedepends on sorry what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.IsElliptic,WeierstrassCurve.HasSplitMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,WeierstrassCurve.IsMinimal,Algebra,ValuativeExtension,DecidableEq,Exists,Units,Intand 19 moreProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous,OfNat.ofNat,Nat131 instances, coercions and auxiliary constants left out.
- theorem
WeierstrassCurve.tateEquiv_galoissorry line 419 sourcedepends on sorry what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.IsElliptic,WeierstrassCurve.HasSplitMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,WeierstrassCurve.IsMinimal,Algebra,ValuativeExtension,DecidableEq,AlgEquiv,Continuous,Unitsand 18 moreProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous,OfNat.ofNat,Nat119 instances, coercions and auxiliary constants left out.
- instance
(instance at line 448)line 448 sourceSource comment
the base change of E to Ω is elliptic (same remark as for `l` above)instance : (E.baseChange Ω).IsElliptic := …
- def
WeierstrassCurve.qUnitSepClosureThe image of the Tate parameter in a separable closureΩofk, as a unit line 453 sourceSource documentation
The image of the Tate parameter in a separable closure
Ωofk, as a unit. (Ωis not a nonarchimedean local field, so this is not literally(E.baseChange Ω).qUnit.)standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.IsElliptic,WeierstrassCurve.HasSplitMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,Algebra,UnitsProof uses:
MonoidHom,Units.map,Algebra.algebraMap, WeierstrassCurve.qUnit41 instances, coercions and auxiliary constants left out.
noncomputable def WeierstrassCurve.qUnitSepClosure : Ωˣ := …
- def
WeierstrassCurve.tateEquivSepClosureTate's uniformisation over a separable closureΩofk: the union of the uniformisations of theE(l)over the finite subextensionsl/kofΩsorry line 462 sourceSource documentation
Tate's uniformisation over a separable closure
Ωofk: the union of the uniformisations of theE(l)over the finite subextensionsl/kofΩ. Its sign is pinned to that oftateEquivbytatePoint_baseChange.depends on sorry what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.IsElliptic,WeierstrassCurve.HasSplitMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,Algebra,DecidableEq,AddEquiv,Additive,HasQuotient.Quotient,Units,Subgroupand 4 moreProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous,OfNat.ofNat,Nat64 instances, coercions and auxiliary constants left out.
noncomputable def WeierstrassCurve.tateEquivSepClosure : Additive (Ωˣ ⧸ Subgroup.zpowers (E.qUnitSepClosure Ω)) ≃+ (E⁄Ω).Point := … - def
WeierstrassCurve.tatePointThe point ofE(Ω)corresponding to a unitx ∈ Ωˣunder Tate's uniformisation line 467 sourceSource documentation
The point of
E(Ω)corresponding to a unitx ∈ Ωˣunder Tate's uniformisation.depends on sorry what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.IsElliptic,WeierstrassCurve.HasSplitMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,Algebra,DecidableEq,Units,WeierstrassCurve.Affine.Point,WeierstrassCurve.Affine.baseChangeProof uses:
AddEquiv,Additive,HasQuotient.Quotient,Subgroup,Subgroup.zpowers, WeierstrassCurve.qUnitSepClosure, WeierstrassCurve.tateEquivSepClosure,Equiv,Additive.ofMul51 instances, coercions and auxiliary constants left out.
noncomputable def WeierstrassCurve.tatePoint (x : Ωˣ) : (E⁄Ω).Point := …
- theorem
WeierstrassCurve.tatePoint_baseChangesorry line 475 sourcedepends on sorry what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.IsElliptic,WeierstrassCurve.HasSplitMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,WeierstrassCurve.IsMinimal,Algebra,IsSepClosed,Algebra.IsSeparable,DecidableEq,Units,Eqand 17 moreProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous,OfNat.ofNat,Nat111 instances, coercions and auxiliary constants left out.
- theorem
WeierstrassCurve.tatePoint_galoisGalois equivariance of the uniformisation overΩ: no continuity hypothesis is needed this time, sinceΩ/kis algebraic sorry line 482 sourceSource comment
Galois equivariance of the uniformisation over `Ω`: no continuity hypothesis is needed this time, since `Ω/k` is algebraic.depends on sorry what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.IsElliptic,WeierstrassCurve.HasSplitMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,WeierstrassCurve.IsMinimal,Algebra,IsSepClosed,Algebra.IsSeparable,DecidableEq,AlgEquiv,Unitsand 9 moreProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous,OfNat.ofNat,Nat73 instances, coercions and auxiliary constants left out.
theorem WeierstrassCurve.tatePoint_galois (σ : Ω ≃ₐ[k] Ω) (u : Ωˣ) : Affine.Point.map (W' := E) σ.toAlgHom (E.tatePoint Ω u) = … - theorem
WeierstrassCurve.tatePoint_mem_torsionBy_of_mem_rootsOfUnityN-th roots of unity giveN-torsion points ofEunder Tate's uniformisation sorry line 488 sourceSource documentation
N-th roots of unity giveN-torsion points ofEunder Tate's uniformisation.depends on sorry what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.IsElliptic,WeierstrassCurve.HasSplitMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,WeierstrassCurve.IsMinimal,Algebra,IsSepClosed,Algebra.IsSeparable,DecidableEq,Nat,Unitsand 8 moreProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous,OfNat.ofNat55 instances, coercions and auxiliary constants left out.
theorem WeierstrassCurve.tatePoint_mem_torsionBy_of_mem_rootsOfUnity {N : ℕ} {ζ : Ωˣ} (hζ : ζ ∈ rootsOfUnity N Ω) : E.tatePoint Ω ζ ∈ AddSubgroup.torsionBy (E⁄Ω).Point (N : ℤ) := … - theorem
WeierstrassCurve.tatePoint_mem_torsionBy_of_pow_eqN-th roots of the Tate parameter giveN-torsion points ofEunder Tate's uniformisation sorry line 495 sourceSource documentation
N-th roots of the Tate parameter giveN-torsion points ofEunder Tate's uniformisation.depends on sorry what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.IsElliptic,WeierstrassCurve.HasSplitMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,WeierstrassCurve.IsMinimal,Algebra,IsSepClosed,Algebra.IsSeparable,DecidableEq,Nat,Unitsand 9 moreProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous,OfNat.ofNat55 instances, coercions and auxiliary constants left out.
theorem WeierstrassCurve.tatePoint_mem_torsionBy_of_pow_eq {N : ℕ} {r : Ωˣ} (hr : r ^ N = E.qUnitSepClosure Ω) : E.tatePoint Ω r ∈ AddSubgroup.torsionBy (E⁄Ω).Point (N : ℤ) := … - theorem
WeierstrassCurve.weilPairing_tatePointweilPairingandtateEquiv/tateEquivSepClosureare all currentlysorryed data, each pinned down mathematically only up to a sign sorry line 506 sourceSource comment
`weilPairing` and `tateEquiv`/`tateEquivSepClosure` are all currently `sorry`ed data, each pinned down mathematically only up to a sign. The following compatibility, due to Tate, is the demand that these signs be chosen coherently. Note that it constrains the sign convention in the *Weil pairing* (about which the literature does not agree) in terms of the uniformisation, and not vice versa: by bilinearity `e_N(-P, -Q) = e_N(P, Q)`, so the demand is insensitive to negating `tateEquivSepClosure`.depends on sorry what this means
Statement uses:
Field,ValuativeRel,TopologicalSpace,IsNonarchimedeanLocalField,WeierstrassCurve,WeierstrassCurve.IsElliptic,WeierstrassCurve.HasSplitMultiplicativeReduction,Subtype,Membership.mem,Subring,Valuation.integer,ValuativeRel.ValueGroupWithZero,ValuativeRel.valuation,WeierstrassCurve.IsMinimal,Algebra,IsSepClosed,Algebra.IsSeparable,DecidableEq,Nat,NeZeroand 20 moreProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous,OfNat.ofNat121 instances, coercions and auxiliary constants left out.
theorem WeierstrassCurve.weilPairing_tatePoint (N : ℕ) [NeZero (N : Ω)] {ζ r : Ωˣ} (hζ : ζ ∈ rootsOfUnity N Ω) (hr : r ^ N = E.qUnitSepClosure Ω) : (E⁄Ω).weilPairing Ω N ⟨E.tatePoint Ω ζ, E.tatePoint_mem_torsionBy_of_mem_rootsOfUnity Ω hζ⟩ ⟨E.tatePoint Ω r, E.tatePoint_mem_torsionBy_of_pow_eq Ω hr⟩ = Additive.ofMul (⟨ζ, hζ⟩ : rootsOfUnity N Ω) := …Mentions: WeierstrassCurve.weilPairing