Definitions/Def_AlgebraicCurve_WeilDatum.lean
Weil pairing data on a curve: divisors, functions, pairing value
Over a field extension F/K, the structure AlgebraicCurve.WeilDatum K F n, for a natural number n, packages an explicit presentation of a pair of n-torsion divisor classes together with the functions witnessing the torsion. Its fields are two divisors D_1, D_2 : \mathrm{Place}\,K\,F \to_{f} \mathbb{Z} (finitely supported functions on the places of F/K, a place being a valuation subring of F containing the image of K, proper in F, whose ideals are principal), two elements f_1, f_2 \in F together with proofs that they are nonzero, and four properties carried as fields: \operatorname{ord}_v(f_1) = n\,D_1(v) and \operatorname{ord}_v(f_2) = n\,D_2(v) for every place v, where \operatorname{ord}_v is minus the logarithm of the adic valuation attached to v; a disjointness condition, namely D_1(v) = 0 or D_2(v) = 0 for every v; and a rationality condition, namely that whenever D_1(v) \neq 0 or D_2(v) \neq 0 the place v is rational, i.e. K \to \kappa(v) is surjective.
For such a datum d, WeilDatum.pairing is the element of K given by
\frac{f_1(D_2)}{f_2(D_1)}, \qquad f(D) = \prod_{v \in \operatorname{supp} D} \big(\mathrm{ev}_v(f)\big)^{D(v)},
where \mathrm{ev}_v(f) is the element of K mapping to the residue of f at v when f lies in the valuation subring of v, and 0 otherwise; the quotient is formed in the field K, with no nonvanishing asserted. Two operations on data are defined: WeilDatum.symm exchanges the two components, producing the datum (D_2, D_1, f_2, f_1), and WeilDatum.addLeft, given a second datum d' of the same order with d.D_2 = d'.D_2 and d.f_2 = d'.f_2, produces the datum (D_1 + D_1', D_2, f_1 f_1', f_2).
Relation to Mathlib
Mathlib has no notion of Weil pairing datum in this divisor-theoretic form; the ambient notions of place, divisor and order function are the project's own, built on Mathlib's valuation subrings and adic valuations.
Where it is used
These data are the explicit representatives on which the Weil pairing e_n on n-torsion divisor classes is computed: the properties of the pairing (its n-th power being trivial given Weil reciprocity, antisymmetry, additivity in each argument) are formulated over this module, symm and addLeft supplying the shapes in which antisymmetry and additivity are stated.
References
- J. H. Silverman, The Arithmetic of Elliptic Curves, Graduate Texts in Mathematics 106, Springer, 1986, Ch. III §8
- J.-P. Serre, Groupes algébriques et corps de classes, Hermann, 1959
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 82 lines
- 14 declarations
- used in the statements of 71 theorems and imported by 69 proofs
- imports 1 definition modules
Source file: Definitions/Def_AlgebraicCurve_WeilDatum.lean
Declarations
- structure
AlgebraicCurve.WeilDatum - field
AlgebraicCurve.WeilDatum.D₁ - field
AlgebraicCurve.WeilDatum.D₂ - field
AlgebraicCurve.WeilDatum.f₁ - field
AlgebraicCurve.WeilDatum.f₂ - field
AlgebraicCurve.WeilDatum.f₁_ne_zero - field
AlgebraicCurve.WeilDatum.f₂_ne_zero - field
AlgebraicCurve.WeilDatum.ord_f₁ - field
AlgebraicCurve.WeilDatum.ord_f₂ - field
AlgebraicCurve.WeilDatum.disjoint - field
AlgebraicCurve.WeilDatum.rational - def
AlgebraicCurve.WeilDatum.pairing - def
AlgebraicCurve.WeilDatum.symm - def
AlgebraicCurve.WeilDatum.addLeft
Source
import Mathlib import Definitions.Def_AlgebraicCurve_PlaceEvaluation set_option autoImplicit false noncomputable section namespace AlgebraicCurve variable {K F : Type*} [Field K] [Field F] [Algebra K F] variable (K F) in structure WeilDatum (n : ℕ) where D₁ : Divisor K F D₂ : Divisor K F f₁ : F f₂ : F f₁_ne_zero : f₁ ≠ 0 f₂_ne_zero : f₂ ≠ 0 ord_f₁ : ∀ v : Place K F, v.ord f₁ = n * D₁ v ord_f₂ : ∀ v : Place K F, v.ord f₂ = n * D₂ v disjoint : ∀ v : Place K F, D₁ v = 0 ∨ D₂ v = 0 rational : ∀ v : Place K F, D₁ v ≠ 0 ∨ D₂ v ≠ 0 → v.IsRational namespace WeilDatum variable {n : ℕ} (d : WeilDatum K F n) def pairing : K := Divisor.evalFun d.f₁ d.D₂ / Divisor.evalFun d.f₂ d.D₁ def symm : WeilDatum K F n where D₁ := d.D₂ D₂ := d.D₁ f₁ := d.f₂ f₂ := d.f₁ f₁_ne_zero := d.f₂_ne_zero f₂_ne_zero := d.f₁_ne_zero ord_f₁ := d.ord_f₂ ord_f₂ := d.ord_f₁ disjoint := fun v => (d.disjoint v).symm rational := fun v hv => d.rational v hv.symm def addLeft (d' : WeilDatum K F n) (hD : d.D₂ = d'.D₂) (_hf : d.f₂ = d'.f₂) : WeilDatum K F n where D₁ := d.D₁ + d'.D₁ D₂ := d.D₂ f₁ := d.f₁ * d'.f₁ f₂ := d.f₂ f₁_ne_zero := mul_ne_zero d.f₁_ne_zero d'.f₁_ne_zero f₂_ne_zero := d.f₂_ne_zero ord_f₁ := fun v => by rw [v.ord_mul d.f₁_ne_zero d'.f₁_ne_zero, d.ord_f₁ v, d'.ord_f₁ v, Finsupp.add_apply, mul_add] ord_f₂ := d.ord_f₂ disjoint := fun v => by rcases eq_or_ne (d.D₂ v) 0 with h2 | h2 · exact Or.inr h2 · refine Or.inl ?_ rw [Finsupp.add_apply, (d.disjoint v).resolve_right h2, (d'.disjoint v).resolve_right (hD ▸ h2), add_zero] rational := fun v hv => by rcases hv with h1 | h2 · rw [Finsupp.add_apply] at h1 rcases eq_or_ne (d.D₁ v) 0 with hd | hd · exact d'.rational v (Or.inl fun hd' => h1 (by rw [hd, hd', add_zero])) · exact d.rational v (Or.inl hd) · exact d.rational v (Or.inr h2) end WeilDatum end AlgebraicCurve
Statements phrased using this module (71)
- Weil pairing as a homomorphism into the character group
AlgebraicCurve.Pic0.torsion.exists_addMonoidHom_eval_eq_pairing17 below · depth 14 - Multiplicativity of the Weil pairing in the first argument
AlgebraicCurve.WeilDatum.addLeft_pairing6 below · depth 15 - Invariance of the Weil datum pairing under linear equivalence
AlgebraicCurve.WeilDatum.pairing_eq_of_isPrincipal_sub14 below · depth 15 - Non-vanishing of the Weil datum pairing
AlgebraicCurve.WeilDatum.pairing_ne_zero3 below · depth 15 - Antisymmetry of the pairing of a Weil datum
AlgebraicCurve.WeilDatum.symm_pairing0 below · depth 15 - Level monotonicity and component-wise compatibility of the specialisation family
ModularCurve.XOneP.normFreePartFamily_dom_mono_and_toPic0Pair_sp_eq_of_le_twoChartModel_x1_mul_opsV30 below · depth 21 - Uₚ acts through an automorphism on the étale Igusa component
ModularCurve.XOneP.normFreePartFamily_exists_addEquiv_toPic0Pair_sp_heckeOperatorOneBar_snd_eq_twoChartModel_x1_mul4,670 below · depth 21 - Diamond action on first components of specialised norm-free classes
ModularCurve.XOneP.normFreePartFamily_exists_addMonoidHom_toPic0Pair_sp_diamondOneBar_fst_eq_twoChartModel_x1_mul2,964 below · depth 21 - Decomposition group acts on second Igusa projection of norm-free points
ModularCurve.XOneP.normFreePartFamily_exists_addMonoidHom_toPic0Pair_sp_smul_snd_eq_of_mem_decompositionSubgroup_twoChartModel_x1_mul3,011 below · depth 21 - Specialisation datum for the norm-free part of J₁(Mp)
ModularCurve.XOneP.normFreePartFamily_exists_dom_sp_interface_twoChartModel_x1_mul_opsV32 below · depth 21 - Inertia-invariant functionals annihilate Tate vectors with vanishing Igusa specialisation
ModularCurve.XOneP.normFreePartFamily_forall_apply_eq_zero_of_tateModule_toPic0Pair_sp_eq_zero_twoChartModel_x1_mul2,215 below · depth 21 - Level independence of the specialisation family on J₁(Mp)
ModularCurve.XOneP.normFreePartFamily_level_pushout_and_sp_eq_twoChartModel_x1_mul_opsV30 below · depth 21 - Inertia-fixed norm-free classes lie in the specialisation domain
ModularCurve.XOneP.normFreePartFamily_mem_dom_of_forall_smul_eq_self_twoChartModel_x1_mul_opsV32 below · depth 21 - Trivial Weil pairing for vanishing glued specialisations
ModularCurve.XOneP.normFreePartFamily_pairing_eq_one_of_toPic0Pair_sp_eq_zero_twoChartModel_x1_mul4,591 below · depth 21 - Inertia twisted by a diamond fixes the second Igusa component
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_diamondOneBar_smul_snd_eq_of_mem_inertiaSubgroupIn_twoChartModel_x1_mul_opsV31,268 below · depth 21 - q-expansion pin of the specialisation on the Gauss component
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_fst_eq_pic0Mk_conorm_laurentPlaceReduction_twoChartModel_x1_mul1,337 below · depth 21 - Frobenius acts coefficientwise on the first Igusa component
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_fst_smul_of_isFrobeniusAt_twoChartModel_x1_mul2,332 below · depth 21 - Uₚ acts as p Fr⁻¹ on norm-free specialisations
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_heckeOperatorOneBar_fst_eq_natCast_smul_frob_inv_smul_twoChartModel_x1_mul3,359 below · depth 21 - Triangularity of Uₚ on specialisations of the norm-free part
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_heckeOperatorOneBar_snd_eq_zero_twoChartModel_x1_mul3,359 below · depth 21 - Frobenius acts coefficientwise on the first Igusa-component specialisation
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_smul_fst_eq_frob_smul_of_isFrobeniusAt_twoChartModel_x1_mul0 below · depth 21 - Inertia fixes the cuspidal component of reductions of norm-free points
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_smul_fst_eq_of_mem_inertiaSubgroupIn_twoChartModel_x1_mul1,268 below · depth 21 - Inertia fixing μₚ preserves the second Igusa component of specialisations
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_smul_snd_eq_of_mem_inertiaSubgroupIn_of_forall_pow_eq_one_twoChartModel_x1_mul_opsV31 below · depth 21 - Trivial Weil pairing for classes reducing into the torus
ModularCurve.XOneP.weilDatum_pairing_eq_one_of_proj_eq_zero_of_points_valuationSubring_of_curveModel_igusa_twoChartModel_x1_mul3,869 below · depth 21 - Toric prime-to-p torsion classes of J₁(Mp) are γ· w-w
ModularCurve.XOneP.exists_forall_exists_eq_smul_sub_of_proj_eq_zero_of_points_valuationSubring_of_curveModel_igusa_twoChartModel_x1_mul3,837 below · depth 22 - Prime-to-p divisibility of finite torsion classes in J₁(Mp)
ModularCurve.XOneP.exists_nsmul_eq_of_points_valuationSubring_of_curveModel_igusa_twoChartModel_x1_mul1,774 below · depth 22 - Prime-to-p torsion with a Pl-integral point is inertia-fixed
ModularCurve.XOneP.smul_eq_self_of_mem_inertiaSubgroupIn_of_points_valuationSubring_of_curveModel_igusa_twoChartModel_x1_mul148 below · depth 22 - Inertia-invariant torsion of J_H(M) bounded by finite part
ModularCurve.JHNeronObjectAtP.exists_forall_natCard_torsion_inf_inertiaInvariants_le_natCard_finPts_mul_of_abelJacobiPin_of_wgen2,584 below · depth 23 - Toric Tate vectors as inertia coboundaries up to bounded ℓ-power
ModularCurve.JHNeronObjectAtP.exists_pow_smul_mem_span_inertia_sub_of_mem_toricLattice_tateModule_jH_of_abelJacobiPin_of_atkinLehner3,373 below · depth 23 - Inertia-invariant prime-to-p torsion of J₁(Mp) bounded by its finite part
ModularCurve.XOneP.exists_forall_natCard_torsion_inertiaInvariants_le_mul_natCard_points_valuationSubring_of_curveModel_igusa_twoChartModel_x1_mul3,235 below · depth 23 - Inertia displacements on J₁(Mp) reduce into the toric part
ModularCurve.XOneP.exists_points_valuationSubring_and_proj_eq_zero_smul_sub_self_of_mem_inertia_of_curveModel_igusa_twoChartModel_x1_mul3,106 below · depth 23 - Divisibility of toric torsion classes on J₁(Mp)
ModularCurve.XOneP.exists_toric_nsmul_eq_of_toric_of_points_valuationSubring_of_curveModel_igusa_twoChartModel_x1_mul1,736 below · depth 23 - Finite and toric parts of J₁(Mp) form subgroups
ModularCurve.XOneP.finitePart_toricPart_zero_mem_add_mem_neg_mem_sub_mem_points_valuationSubring_twoChartModel_x1_mul2 below · depth 23 - Toric and finite m-torsion counts for J₁(Mp) at p
ModularCurve.XOneP.natCard_toricTorsion_mul_natCard_finiteTorsion_eq_natCard_torsion_jOne_of_curveModel_igusa_twoChartModel_x1_mul_of_not_dvd2,063 below · depth 23 - Monodromy bound for ℓ-power torsion on J₁(Mp)
ModularCurve.XOneP.natCard_torsion_le_natCard_image_smul_sub_mul_natCard_inertiaInvariants_of_forall_smul_sub_toric_of_curveModel_igusa_twoChartModel_x1_mul0 below · depth 23 - Inertia reaches the toric part of J_H(M)
ModularCurve.JHNeronObjectAtP.exists_forall_mem_toricPts_exists_smul_sub_eq_of_coprime_of_abelJacobiPin_of_atkinLehner3,370 below · depth 24 - Inertia displacement σ P-P is toric above p
ModularCurve.XOneP.exists_points_valuationSubring_and_proj_eq_zero_pic0Mk_single_sub_single_of_mem_inertia_of_curveModel_igusa_twoChartModel_x1_mul3,103 below · depth 24 - Inertia-invariant classes of J₁(Mp) extend over Pl after multiplication by n
ModularCurve.XOneP.exists_points_valuationSubring_nsmul_of_forall_smul_eq_self_of_curveModel_igusa_twoChartModel_x1_mul3,105 below · depth 24 - Descent of an H-invariant point of J₁(Mp) to the fixed field
ModularCurve.JOne.exists_ringHom_spec_fixedField_comp_eq_gpts_of_forall_smul_eq_self137 below · depth 25 - Picard–Lefschetz bundle for inertia displacement at a crossing
ModularCurve.XOneP.exists_isInvertible_pullback_iso_ofPoint_tensor_and_pullback_iso_unit_of_reduction_crossing_of_mem_inertia_of_curveModel_igusa_twoChartModel_x1_mul2,993 below · depth 25 - Toric divisor class from two Pl-points with common reduction
ModularCurve.XOneP.exists_points_valuationSubring_and_proj_eq_zero_pic0Mk_of_poincare_iso_ofPoint_tensor_idealModule_of_reduction_eq_of_sameComponent_of_curveModel_igusa_twoChartModel_x1_mul2,995 below · depth 25 - Line bundle trivial on both components extends [P']-[P] torically
ModularCurve.XOneP.exists_points_valuationSubring_and_proj_eq_zero_pic0Mk_single_sub_single_of_isInvertible_of_pullback_iso_ofPoint_tensor_idealModule_of_pullback_iso_unit_twoChartModel_x1_mul1,422 below · depth 25 - The Pic⁰-point of 𝒪(u₁-u₂) for same-component sections
ModularCurve.XOneP.exists_schemeHomOver_poincare_iso_ofPoint_tensor_idealModule_of_sameComponent_of_curveModel_igusa_twoChartModel_x1_mul2,987 below · depth 25 - Inertia translates extend to Pl-sections with equal reduction
ModularCurve.XOneP.exists_sections_valuationSubring_extending_and_reduction_eq_of_mem_inertia_of_curveModel_twoChartModel_x1_mul1 below · depth 25 - Crossings of the two-chart model enumerated by k-points
ModularCurve.XOneP.exists_fin_hom_pullback_comp_eq_id_and_injective_base_closedPoint_twoChartModel_x1_mul0 below · depth 26 - Sections through a crossing factor through the crossing chart
ModularCurve.XOneP.exists_lift_comp_crossingChart_eq_specMap_lift_of_base_closedPoint_eq_twoChartModel_x1_mul0 below · depth 26 - Two-open cover at a crossing with invertible tube functions
ModularCurve.XOneP.exists_opens_sup_eq_top_and_forall_mem_basicOpen_of_crossingChart_of_sections_twoChartModel_x1_mul9 below · depth 26 - A Pl-point of relative Pic⁰ classifying an invertible module
ModularCurve.XOneP.exists_points_valuationSubring_and_poincare_pullbackAlong_iso_pic0Mk_single_sub_single_of_isInvertible_of_pullback_iso_ofPoint_tensor_idealModule_of_pullback_iso_unit_twoChartModel_x1_mul1,420 below · depth 26 - Component-trivial Pl-point of Pic⁰ reduces with proj=0
ModularCurve.XOneP.exists_pts_comp_fst_eq_and_proj_eq_zero_of_pullback_poincare_pullbackAlong_iso_unit_twoChartModel_x1_mul0 below · depth 26 - Inertia-equivariant oriented étale crossing chart for X₁(Mp) over Pl
ModularCurve.XOneP.forall_exists_orientedEtaleCrossingChart_valuationSubring_twoChartModel_x1_mul2,963 below · depth 26 - Generic Abel–Jacobi reading of a Pl-point of relative Pic⁰
ModularCurve.XOneP.gpts_pic0Mk_single_sub_single_eq_comp_of_pullback_poincare_pullbackAlong_iso_ofPoint_tensor_idealModule_twoChartModel_x1_mul1,419 below · depth 26 - Components of the special fibre of X₁(Mp): I₁ I₂ = Iₛ
ModularCurve.XOneP.isInvertible_ker_and_ker_mul_ker_eq_ker_of_map_maximalIdeal_eq_twoChartModel_x1_mul2,925 below · depth 26 - Oriented crossing chart of X₁(Mp) over a valuation subring
ModularCurve.XOneP.exists_orientedCrossingChart_valuationSubring_of_chart_twoChartModel_x1_mul3 below · depth 27 - Relative Cartier extension of a generic divisor on X₁(Mp)
ModularCurve.XOneP.exists_relEffCartierDiv_pullbackAlong_eq_and_isInvertible_comap_ker_of_isInvertible_ker_of_map_maximalIdeal_eq_twoChartModel_x1_mul2,950 below · depth 27 - Oriented étale crossing chart uv=varpi^e at the X₁(Mp) crossings
ModularCurve.XOneP.forall_exists_orientedEtaleCrossingChart_baseChange_of_injective_twoChartModel_x1_mul2,954 below · depth 27 - Crossings of the two-chart model as residue-field points
ModularCurve.XOneP.forall_exists_spec_hom_pullback_comp_snd_eq_and_base_closedPoint_eq_of_surjective_twoChartModel_x1_mul0 below · depth 27 - Two special-fibre components of X₁(Mp) as distinct prime divisors
ModularCurve.XOneP.isIntegral_subscheme_ker_and_ker_eq_vanishingIdeal_closure_and_ker_inf_ker_eq_ker_of_map_maximalIdeal_eq_twoChartModel_x1_mul1,234 below · depth 27 - Components of the special fibre of X₁(Mp) as Cartier divisors
ModularCurve.XOneP.isInvertible_ker_and_tensor_iso_unit_and_pullback_invModule_iso_foldr_ofPoint_of_map_maximalIdeal_eq_twoChartModel_x1_mul2,973 below · depth 27 - Local principality of the closure divisor along the special fibre
ModularCurve.XOneP.exists_mem_ideal_and_map_ideal_eq_span_singleton_and_mem_nonZeroDivisors_of_I_eq_ker_twoChartModel_x1_mul2,928 below · depth 28 - Component ideal sheaves cut out the reduced crossing divisor
ModularCurve.XOneP.isInvertible_comap_ker_and_comap_ker_eq_prod_ofPoint_of_map_maximalIdeal_eq_twoChartModel_x1_mul1,250 below · depth 28 - Regularity of the X₁(Mp) two-chart model after unramified base change
ModularCurve.XOneP.isRegularLocalRing_stalk_pullback_of_map_maximalIdeal_eq_twoChartModel_x1_mul2,887 below · depth 28 - Kernel of the geometric fibre comparison is the invertible ideal (varpi)
ModularCurve.XOneP.ker_baseChange_eq_comap_ker_residue_and_isInvertible_and_nonempty_invModule_iso_twoChartModel_x1_mul2,903 below · depth 28 - Closure of a generic-fibre divisor avoids special-fibre generic points
ModularCurve.XOneP.notMem_support_of_closure_mem_irreducibleComponents_of_I_eq_ker_twoChartModel_x1_mul6 below · depth 28 - Ordinary corner: reduction to identity iff inertia acts cyclotomically
ModularCurve.JHNeronObjectAtP.reducesToOne_iff_inertia_cyclotomic_of_mem_corner_of_mem_finPts_of_ordinary_of_abelJacobiPin_of_inertF_of_levelData_of_algEquiv3,537 below · depth 30 - Idempotent and μₚ-pairing between corner and adjoint corner
ModularCurve.JHNeronObjectAtP.exists_idempotent_pairing_corner_adjointCorner_perfect_galois_radical_ncard_toric_cyclotomic_eq_of_abelJacobiPin_of_levelData_of_algEquiv3,182 below · depth 32 - Toric and finite p-torsion as mutual annihilators
ModularCurve.JHNeronObjectAtP.toricPts_finPts_mutual_annihilator_weilDatum_pairing_residueChar_of_abelJacobiPin_of_degeneracy3,116 below · depth 33 - Toric p-torsion pairs trivially with finite p-torsion
ModularCurve.JHNeronObjectAtP.weilDatum_pairing_eq_one_of_mem_toricPts_of_mem_finPts_of_abelJacobiPin_of_degeneracy_of_representsRelSubPicLevel3,100 below · depth 34 - Finite p-torsion splits off the two degeneracy pull-backs
ModularCurve.JHNeronObjectAtP.exists_eq_add_pull_add_pull_of_mem_finPts_of_abelJacobiPin771 below · depth 35 - Toric p-torsion pairs trivially with old p-torsion
ModularCurve.JHNeronObjectAtP.weilDatum_pairing_eq_one_of_mem_toricPts_of_eq_mk_pullbackAlong_of_abelJacobiPin232 below · depth 35 - Toric p-torsion pairs trivially with identity-reduction classes
ModularCurve.JHNeronObjectAtP.weilDatum_pairing_eq_one_of_mem_toricPts_of_resPt_eq_one_of_abelJacobiPin_of_representsRelSubPicLevel3,083 below · depth 35 - Lifting p^k-torsion along a level-(M/p) Néron datum
ModularCurve.JHNeronObjectAtP.LevelData.exists_pts_eq_barPt_comp_and_ptsSp_symm_eq_of_smul_eq_zero_of_abelianScheme737 below · depth 36 - Group law, reduction and rigidity for A-sections of G
ModularCurve.JHNeronObjectAtP.exists_section_mul_inv_one_and_ptsSp_symm_eq0 below · depth 36