Definitions/Def_ModularCurve_HpoolLevelRing.lean
Integral chart ring of , its localisations and level quotients
Throughout, p is a prime and F = modularFunctionFieldFull p is the subfield of \mathbb{Q}((q)) generated over \mathbb{Q} by the q-expansions j(q^d) for the positive divisors d \mid p, with j = IgusaScheme.jFull p the element of F given by the q-expansion of the modular invariant.
Three types are introduced. First, Afin p is the chart algebra AlgebraicCurve.TwoChartIntegralModel.chartAlgFin ℤ F j regarded as a type: by the definition of chartAlg, it consists of those x \in F that are integral over \mathbb{Z}[j] = Algebra.adjoin ℤ {j}, i.e. the integral closure of \mathbb{Z}[j] in F; it is recorded as a commutative domain and a \mathbb{Z}-algebra. Secondly, for an integer f, AfinAway p f is the localisation of Afin p away from the image of f, written A[1/f]; besides its A- and \mathbb{Z}-algebra structures it is given an algebra structure over Localization.Away f = \mathbb{Z}[1/f], induced by functoriality of localisation from \mathbb{Z} \to A, and the lemma algebraMap_awayMap_algebraMap states that the composite \mathbb{Z} \to \mathbb{Z}[1/f] \to A[1/f] is the structure map \mathbb{Z} \to A[1/f]. Thirdly, for u \in A and an integer polynomial g \in \mathbb{Z}[T], levelRing p f u g is the quotient of A[1/f] by the principal ideal generated by g evaluated at the image of u in A[1/f], together with its commutative-ring structure and its algebra structures over A[1/f] and over \mathbb{Z}[1/f].
Nothing is asserted beyond the compatibility lemma above and the auxiliary observation that a prime is non-zero; the parameters u and g are arbitrary, so the constructions are generic in (p,f,u,g).
Relation to Mathlib
The types themselves are Mathlib's Localization.Away and quotient by a principal ideal applied to the project's chart algebra AlgebraicCurve.TwoChartIntegralModel.chartAlgFin; Mathlib has no notion of the modular function field or of this integral chart algebra.
Where it is used
These rings are the common coordinate rings for the affine schemes \operatorname{Spec} of such quotients used in later modules that study the two-chart integral model of X_0(p): fixing one \mathbb{Z}[1/f]-algebra structure here lets finiteness, étaleness and component statements about those schemes be formulated over the same base.
References
- J.-I. Igusa, Kroneckerian model of fields of elliptic modular functions, American Journal of Mathematics 81 (1959), 561–577
- P. Deligne and M. Rapoport, Les schémas de modules de courbes elliptiques, in: Modular Functions of One Variable II, Lecture Notes in Mathematics 349, Springer, 1973, 143–316
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 99 lines
- 22 declarations
- used in the statements of 19 theorems and imported by 22 proofs
- imports 3 definition modules
Source file: Definitions/Def_ModularCurve_HpoolLevelRing.lean
Imported by
- no other definition module
Declarations
- theorem
ModularCurve.HpoolLevelRing.neZero_of_fact_prime - abbrev
ModularCurve.HpoolLevelRing.Afin - instance
ModularCurve.HpoolLevelRing.instCommRingAfin - instance
ModularCurve.HpoolLevelRing.instIsDomainAfin - instance
ModularCurve.HpoolLevelRing.instAlgebraIntAfin - instance
ModularCurve.HpoolLevelRing.instModuleAfinSelf - abbrev
ModularCurve.HpoolLevelRing.AfinAway - instance
ModularCurve.HpoolLevelRing.instCommRingAfinAway - instance
ModularCurve.HpoolLevelRing.instAlgebraAfinAfinAway - instance
ModularCurve.HpoolLevelRing.instAlgebraIntAfinAway - instance
ModularCurve.HpoolLevelRing.instSMulAfinAfinAway - instance
ModularCurve.HpoolLevelRing.instModuleAfinAfinAway - instance
ModularCurve.HpoolLevelRing.algebraAway - instance
ModularCurve.HpoolLevelRing.instSMulAway - instance
ModularCurve.HpoolLevelRing.instModuleAway - theorem
ModularCurve.HpoolLevelRing.algebraMap_awayMap_algebraMap - abbrev
ModularCurve.HpoolLevelRing.levelRing - instance
ModularCurve.HpoolLevelRing.instCommRingLevelRing - instance
ModularCurve.HpoolLevelRing.instAlgebraLevelRing - instance
ModularCurve.HpoolLevelRing.instSMulLevelRing - instance
ModularCurve.HpoolLevelRing.instModuleLevelRing - instance
ModularCurve.HpoolLevelRing.instAlgebraAfinAwayLevelRing
Source
import Mathlib import Definitions.Def_ModularCurve_X0 import Definitions.Def_ModularCurve_IgusaScheme import Definitions.Def_AlgebraicCurve_TwoChartIntegralModel set_option autoImplicit false noncomputable section namespace ModularCurve namespace HpoolLevelRing variable (p : ℕ) [Fact p.Prime] theorem neZero_of_fact_prime : NeZero p := ⟨(Fact.out : p.Prime).ne_zero⟩ attribute [local instance] neZero_of_fact_prime abbrev Afin : Type := ↥(AlgebraicCurve.TwoChartIntegralModel.chartAlgFin ℤ ↥(modularFunctionFieldFull p) (IgusaScheme.jFull p)) set_option synthInstance.maxHeartbeats 200000 in instance instCommRingAfin : CommRing (Afin p) := inferInstance set_option synthInstance.maxHeartbeats 200000 in instance instIsDomainAfin : IsDomain (Afin p) := inferInstance set_option synthInstance.maxHeartbeats 200000 in instance instAlgebraIntAfin : Algebra ℤ (Afin p) := inferInstance set_option synthInstance.maxHeartbeats 200000 in instance instModuleAfinSelf : Module (Afin p) (Afin p) := Semiring.toModule abbrev AfinAway (f : ℤ) : Type := Localization.Away (algebraMap ℤ (Afin p) f) set_option synthInstance.maxHeartbeats 200000 in instance instCommRingAfinAway (f : ℤ) : CommRing (AfinAway p f) := inferInstance set_option synthInstance.maxHeartbeats 200000 in instance instAlgebraAfinAfinAway (f : ℤ) : Algebra (Afin p) (AfinAway p f) := inferInstance set_option synthInstance.maxHeartbeats 200000 in instance instAlgebraIntAfinAway (f : ℤ) : Algebra ℤ (AfinAway p f) := inferInstance set_option synthInstance.maxHeartbeats 200000 in instance instSMulAfinAfinAway (f : ℤ) : SMul (Afin p) (AfinAway p f) := Algebra.toSMul set_option synthInstance.maxHeartbeats 200000 in instance instModuleAfinAfinAway (f : ℤ) : Module (Afin p) (AfinAway p f) := Algebra.toModule set_option synthInstance.maxHeartbeats 200000 in instance algebraAway (f : ℤ) : Algebra (Localization.Away f) (AfinAway p f) := (Localization.awayMap (algebraMap ℤ (Afin p)) f).toAlgebra set_option synthInstance.maxHeartbeats 200000 in instance instSMulAway (f : ℤ) : SMul (Localization.Away f) (AfinAway p f) := Algebra.toSMul set_option synthInstance.maxHeartbeats 200000 in instance instModuleAway (f : ℤ) : Module (Localization.Away f) (AfinAway p f) := Algebra.toModule set_option synthInstance.maxHeartbeats 200000 in theorem algebraMap_awayMap_algebraMap (f : ℤ) (x : ℤ) : algebraMap (Localization.Away f) (AfinAway p f) (algebraMap ℤ (Localization.Away f) x) = algebraMap ℤ (AfinAway p f) x := RingHom.congr_fun (Subsingleton.elim ((algebraMap (Localization.Away f) (AfinAway p f)).comp (algebraMap ℤ (Localization.Away f))) (algebraMap ℤ (AfinAway p f))) x abbrev levelRing (f : ℤ) (u : Afin p) (g : Polynomial ℤ) : Type := AfinAway p f ⧸ Ideal.span {Polynomial.aeval (algebraMap (Afin p) (AfinAway p f) u) g} set_option synthInstance.maxHeartbeats 200000 in instance instCommRingLevelRing (f : ℤ) (u : Afin p) (g : Polynomial ℤ) : CommRing (levelRing p f u g) := inferInstance set_option synthInstance.maxHeartbeats 200000 in instance instAlgebraLevelRing (f : ℤ) (u : Afin p) (g : Polynomial ℤ) : Algebra (Localization.Away f) (levelRing p f u g) := inferInstance set_option synthInstance.maxHeartbeats 200000 in instance instSMulLevelRing (f : ℤ) (u : Afin p) (g : Polynomial ℤ) : SMul (Localization.Away f) (levelRing p f u g) := Algebra.toSMul set_option synthInstance.maxHeartbeats 200000 in instance instModuleLevelRing (f : ℤ) (u : Afin p) (g : Polynomial ℤ) : Module (Localization.Away f) (levelRing p f u g) := Algebra.toModule set_option synthInstance.maxHeartbeats 200000 in instance instAlgebraAfinAwayLevelRing (f : ℤ) (u : Afin p) (g : Polynomial ℤ) : Algebra (AfinAway p f) (levelRing p f u g) := inferInstance end HpoolLevelRing end ModularCurve end
Statements phrased using this module (19)
- Ogg's unit detects the ∞-component mod p
ModularCurve.DRModelPackage.exists_coordinate_forall_mem_range_compInf_and_not_mem_range_compZero280 below · depth 17 - Zeros of g(v) in the finite chart lie in the smooth locus
ModularCurve.DRModelPackage.iotaFin_mem_smoothLocus_of_aeval_mem57 below · depth 17 - Vanishing of g(v) forces membership in the ε_∞-component
ModularCurve.DRModelPackage.mem_connectedComponentIn_of_aeval_mem195 below · depth 17 - Finite étale level rings of j on the X₀(p) model
ModularCurve.HpoolLevelRing.exists_finite_etale_levelRing_jChartFin828 below · depth 17 - Finite étale level rings of the modular unit on X₀(p)
ModularCurve.HpoolLevelRing.exists_finite_etale_levelRing_self444 below · depth 17 - Fibres of the level ring as base changes: étaleness and rank
ModularCurve.HpoolLevelRing.etale_fiber_levelRing_and_finrank_eq_of_tensorProduct_quotient0 below · depth 18 - Spreading out étaleness of a level ring over ℤ[1/f]
ModularCurve.HpoolLevelRing.exists_forall_etale_levelRing_of_etale_fiber1 below · depth 18 - Generic étaleness of j-fibres on the level-p modular curve
ModularCurve.HpoolLevelRing.exists_forall_etale_rat_tensorProduct_quotient_span_aeval_jChartFin122 below · depth 18 - Étale j-level sets on the mod ℓ j-chart of X₀(p)
ModularCurve.HpoolLevelRing.exists_forall_etale_zmod_tensorProduct_quotient_span_aeval_jChartFin815 below · depth 18 - Unramifiedness of Ogg's unit off a polynomial divisor
ModularCurve.HpoolLevelRing.exists_forall_isUnramifiedAt_polynomial_of_aeval_notMem123 below · depth 18 - Ogg's unit and the two minimal primes over p
ModularCurve.HpoolLevelRing.exists_minimalPrimes_pair_modularUnitSeries222 below · depth 18 - Characteristic-p fibre dictionary for the modular unit
ModularCurve.HpoolLevelRing.exists_pFibre_dictionary353 below · depth 18 - Characteristic-q Laurent realisation of the finite j-chart of level p
ModularCurve.HpoolLevelRing.exists_ringHom_laurentSeries_ker_eq_span_natCast807 below · depth 18 - Finiteness of level rings of the modular unit Δ(q)/Δ(qᵖ)
ModularCurve.HpoolLevelRing.finite_levelRing273 below · depth 18 - Rank of (ℚ⊗ A)/(g(j)) equals (p+1)deg g
ModularCurve.HpoolLevelRing.finrank_rat_tensorProduct_quotient_span_aeval_jChartFin111 below · depth 18 - Torsion-freeness of the level rings over ℤ[1/f]
ModularCurve.HpoolLevelRing.noZeroSMulDivisors_levelRing_of_forall_isPrime0 below · depth 18 - Constant stalk rank (p-1)deg g of the level ring
ModularCurve.HpoolLevelRing.rankAtStalk_levelRing_eq248 below · depth 18 - Geometric fibre at ℓ≠ p of the j-chart of X₀(p)
ModularCurve.HpoolLevelRing.exists_algEquiv_residueField_tensor_quotient_span_natCast_chartRing803 below · depth 19 - Degree of a level quotient for Ogg's unit on X₀(p)
ModularCurve.HpoolLevelRing.finrank_rat_tensorProduct_quotient_span_aeval246 below · depth 19