Definitions/Def_ModularCurve_JLinePlaces.lean
The -line as a rational function field, with three places
Fix N\ge 1. Here \mathrm{jq} is the explicit Laurent series q^{-1}E_4^3\eta^{-24} over \mathbb{Q}, \mathbb{Q}\langle \mathrm{jq}\rangle the simple extension it generates inside \mathbb{Q}((q)), and modularFunctionField N the intermediate field \mathbb{Q}(\mathrm{jq},\ \mathrm{jq}(q^N)) generated by \mathrm{jq} and its N-fold q-substitution. The first group of declarations equips modularFunctionField N with the \mathbb{Q}\langle \mathrm{jq}\rangle-algebra structure coming from the inclusion ring homomorphism jAdjoinRingHom N (available as a reducible definition rather than a global instance), records that \mathbb{Q}\subset\mathbb{Q}\langle \mathrm{jq}\rangle\subset modularFunctionField N is a scalar tower, and states that the generator jGen of \mathbb{Q}\langle \mathrm{jq}\rangle maps to the Laurent series \mathrm{jq}.
The second group identifies the j-line with the rational function field. Since \mathrm{jq} is transcendental over \mathbb{Q}, Mathlib's algebra equivalence attached to a transcendental element is a bijection; jLineRingEquiv is the resulting ring isomorphism \mathbb{Q}(T)\xrightarrow{\sim}\mathbb{Q}\langle \mathrm{jq}\rangle, and it sends T to jGen.
Finally, three places of \mathbb{Q}\langle \mathrm{jq}\rangle over \mathbb{Q} are defined. In this development a place of F/K is a valuation subring of F which contains the image of K, is not all of F, and is a principal ideal ring (hence a discrete valuation ring). jLinePlace1728, jLinePlaceZero and jLinePlaceInfty are obtained by transporting along jLineRingEquiv, via the congruence operation on places (the valuation subring is pulled back along the inverse isomorphism), the place of \mathbb{Q}(T) attached to the height-one prime (T-1728), the place attached to (T), and the place of the degree valuation at infinity. A classical decidable-equality helper for \mathbb{Q}(T) is supplied, as the place at infinity is defined with such an assumption in scope.
Relation to Mathlib
The notion of a place used here — a valuation subring of F containing K, proper, and principal — is the project's own structure, as are the places of a rational function field at a point and at infinity; jLineRingEquiv repackages Mathlib's algebra equivalence K(T)\simeq K(x) for a transcendental x as a ring isomorphism.
Where it is used
These definitions set up the function-field language for the covering X_0(N)\to X(1): the tower \mathbb{Q}\subset\mathbb{Q}(j)\subset\mathbb{Q}(j(q),j(q^N)) lets one speak of restrictions of places, ramification indices and residue degrees for that cover, and the three distinguished places of the j-line at j=1728, j=0 and j=\infty are the base points at which the covering's behaviour is analysed.
References
- G. Shimura, Introduction to the Arithmetic Theory of Automorphic Functions, Publications of the Mathematical Society of Japan 11, Princeton University Press, 1971
- H. Stichtenoth, Algebraic Function Fields and Codes, Graduate Texts in Mathematics 254, Springer, 2009
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 65 lines
- 10 declarations
- used in the statements of 16 theorems and imported by 16 proofs
- imports 3 definition modules, and the statements of 1 theorems
Source file: Definitions/Def_ModularCurve_JLinePlaces.lean
Imports
Def_ModularCurve_RouteBCoordRingDef_AlgebraicCurve_RatFuncPlacesDef_AlgebraicCurve_RatFuncPlaceInfty
Theorems imported by this definition module
Imported by
- no other definition module
Declarations
- def
ModularCurve.jAdjoinAlgebra - instance
ModularCurve.instIsScalarTowerJAdjoin - theorem
ModularCurve.algebraMap_jGen_val - def
ModularCurve.jLineRingEquiv - theorem
ModularCurve.jLineRingEquiv_apply - theorem
ModularCurve.jLineRingEquiv_X - def
ModularCurve.instDecidableEqRatFuncRat - def
ModularCurve.jLinePlace1728 - def
ModularCurve.jLinePlaceZero - def
ModularCurve.jLinePlaceInfty
Source
import Mathlib import Definitions.Def_ModularCurve_RouteBCoordRing import Definitions.Def_AlgebraicCurve_RatFuncPlaces import Definitions.Def_AlgebraicCurve_RatFuncPlaceInfty import Theorems.Thm_ModularCurve_transcendental_jq set_option autoImplicit false noncomputable section open IntermediateField AlgebraicCurve AlgebraicCurve.RationalFunctionField namespace ModularCurve section Tower variable (N : ℕ) [NeZero N] @[reducible] def jAdjoinAlgebra : Algebra ℚ⟮jq⟯ (modularFunctionField N) := (jAdjoinRingHom N).toAlgebra attribute [local instance] jAdjoinAlgebra instance instIsScalarTowerJAdjoin : @IsScalarTower ℚ ℚ⟮jq⟯ (modularFunctionField N) Algebra.toSMul Algebra.toSMul Algebra.toSMul := IsScalarTower.of_algebraMap_eq' (by apply RingHom.ext_rat) theorem algebraMap_jGen_val : (algebraMap ℚ⟮jq⟯ (modularFunctionField N) jGen : LaurentSeries ℚ) = jq := rfl end Tower attribute [local instance 2000] RatFunc.instAlgebraOfPolynomial def jLineRingEquiv : RatFunc ℚ ≃+* ℚ⟮jq⟯ := RingEquiv.ofBijective (RatFunc.algEquivOfTranscendental jq transcendental_jq) (EquivLike.bijective _) theorem jLineRingEquiv_apply (f : RatFunc ℚ) : jLineRingEquiv f = RatFunc.algEquivOfTranscendental jq transcendental_jq f := rfl theorem jLineRingEquiv_X : jLineRingEquiv RatFunc.X = jGen := Subtype.ext (RatFunc.algEquivOfTranscendental_X jq transcendental_jq) @[reducible] def instDecidableEqRatFuncRat : DecidableEq (RatFunc ℚ) := Classical.decEq _ attribute [local instance] instDecidableEqRatFuncRat def jLinePlace1728 : Place ℚ ℚ⟮jq⟯ := Place.congrRingEquiv jLineRingEquiv (RingHom.map_rat_algebraMap jLineRingEquiv.toRingHom) (placeOfPoint ℚ 1728) def jLinePlaceZero : Place ℚ ℚ⟮jq⟯ := Place.congrRingEquiv jLineRingEquiv (RingHom.map_rat_algebraMap jLineRingEquiv.toRingHom) (placeOfPoint ℚ 0) def jLinePlaceInfty : Place ℚ ℚ⟮jq⟯ := Place.congrRingEquiv jLineRingEquiv (RingHom.map_rat_algebraMap jLineRingEquiv.toRingHom) (placeInfty ℚ) end ModularCurve end
Statements phrased using this module (16)
- Simple zeros of ̄ j on level-N curve count ν₃(N)
ModularCurve.natCard_ord_jBar_eq_one_eq_nuThree239 below · depth 12 - Simple zeros of ̄ j-1728 number ν₂(N)
ModularCurve.natCard_ord_jBar_sub_1728_eq_one_eq_nuTwo239 below · depth 12 - The j-line place at j=1728 has degree 1
ModularCurve.deg_jLinePlace17280 below · depth 13 - The place j=0 of the j-line has degree 1
ModularCurve.deg_jLinePlaceZero0 below · depth 13 - Ramification index equals ord_w(p(j)) away from 0,1728,∞
ModularCurve.exists_irreducible_ramificationIndex_eq_ord_aeval_of_restrict_ne_jLinePlaces8 below · depth 13 - Degree ψ(N) of the j-cover on function fields
ModularCurve.finrank_jAdjoin_modularFunctionField_eq_dedekindPsi70 below · depth 13 - Ramification index over j=0 equals ord_w(j)
ModularCurve.ramificationIndex_eq_ord_of_restrict_eq_jLinePlaceZero41 below · depth 13 - Ramification index over j=1728 equals ord_w(j-1728)
ModularCurve.ramificationIndex_eq_ord_sub_of_restrict_eq_jLinePlace172841 below · depth 13 - A place of the modular function field restricts to j=1728 iff ord_w(j-1728)>0
ModularCurve.restrict_eq_jLinePlace1728_iff41 below · depth 13 - Places of F_N above j=∞ are the poles of j
ModularCurve.restrict_eq_jLinePlaceInfty_iff41 below · depth 13 - Place of X₀(N) lies over j=0 iff ord_w(j)>0
ModularCurve.restrict_eq_jLinePlaceZero_iff41 below · depth 13 - A place of the j-line is v₁₇₂₈ iff ordᵥ(j-1728)>0
ModularCurve.eq_jLinePlace1728_iff_ord_jGen_sub_pos40 below · depth 14 - A place of the j-line is v_∞ iff j has a pole
ModularCurve.eq_jLinePlaceInfty_iff_ord_jGen_neg40 below · depth 14 - A place of the j-line is v₀ iff ordᵥ(j)>0
ModularCurve.eq_jLinePlaceZero_iff_ord_jGen_pos40 below · depth 14 - ord of j-1728 at the place j=1728 is 1
ModularCurve.ord_jLinePlace1728_jGen_sub40 below · depth 14 - j is a uniformiser at the place j=0
ModularCurve.ord_jLinePlaceZero_jGen40 below · depth 14