Definitions/Def_MvFormalGroup_TwoCocycle.lean
Symmetric two-cocycles and additive coboundaries of formal group laws
Fix a commutative ring R and an n-dimensional formal group law F over R in the sense of the project's MvFormalGroup structure: an n-tuple F.toPowerSeries of power series in two blocks of variables indexed by Fin n ⊕ Fin n, with vanishing constant terms, the normalisation conditions on the linear coefficients in each block, and associativity as a field of the structure.
Two notions are introduced. First, MvFormalGroup.addCoboundary F g, for a power series g in one block of n variables, is the two-block series obtained as the substitution of the family F.toPowerSeries into g, minus the substitution of X_{\mathrm{inl}\,l} for the l-th variable, minus the substitution of X_{\mathrm{inr}\,l}: in classical notation \partial g(X,Y) = g(F(X,Y)) - g(X) - g(Y). No hypothesis on g is imposed. Second, MvFormalGroup.IsSymmTwoCocycle F Γ is a Prop-valued structure on a two-block series \Gamma with three fields: the constant coefficient of \Gamma vanishes; substituting X_{\mathrm{inr}\,j} for the j-th left variable and X_{\mathrm{inl}\,j} for the j-th right variable leaves \Gamma unchanged, i.e. \Gamma(Y,X) = \Gamma(X,Y); and, in the ring of power series in three blocks Fin n ⊕ (Fin n ⊕ Fin n) — the same ring in which the associativity axiom of F is phrased — the identity \Gamma(F(X,Y),Z) + \Gamma(X,Y) = \Gamma(X,F(Y,Z)) + \Gamma(Y,Z) holds, each term being an explicit substitution of the indicated families into \Gamma. Thus the predicate is a condition on the given series \Gamma relative to the chosen presentation of F; it carries no further data and asserts nothing about module structures or about coboundaries being cocycles.
Two small results accompany the definitions: substituting an admissible family into the zero series yields zero, and consequently the zero series satisfies IsSymmTwoCocycle for every F.
Relation to Mathlib
Mathlib has no notion of multivariate formal group laws or of their symmetric two-cocycles; these are the project's own, phrased entirely in terms of Mathlib's multivariate power series substitution API (subst, HasSubst, hasSubst_of_constantCoeff_zero, constantCoeff_subst_eq_zero).
References
- M. Hazewinkel, Formal Groups and Applications, Academic Press, 1978
- A. Fröhlich, Formal Groups, Lecture Notes in Mathematics 74, Springer, 1968
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 111 lines
- 10 declarations
- used in the statements of 40 theorems and imported by 44 proofs
- imports 1 definition modules
Source file: Definitions/Def_MvFormalGroup_TwoCocycle.lean
Imports
Imported by
- no other definition module
Declarations
- def
MvFormalGroup.addCoboundary - structure
MvFormalGroup.IsSymmTwoCocycle - field
MvFormalGroup.IsSymmTwoCocycle.constantCoeff_eq_zero - field
MvFormalGroup.IsSymmTwoCocycle.symm - field
MvFormalGroup.IsSymmTwoCocycle.subst - field
MvFormalGroup.IsSymmTwoCocycle.cocycle - field
MvFormalGroup.IsSymmTwoCocycle.subst - field
MvFormalGroup.IsSymmTwoCocycle.subst - theorem
MvFormalGroup.subst_zero_of_hasSubst - theorem
MvFormalGroup.IsSymmTwoCocycle.zero
Source
import Mathlib import Definitions.Def_MvFormalGroup_BasicV2 set_option autoImplicit false noncomputable section open MvPowerSeries namespace MvFormalGroup variable {n : ℕ} {R : Type*} [CommRing R] def addCoboundary (F : MvFormalGroup n R) (g : MvPowerSeries (Fin n) R) : MvPowerSeries (Fin n ⊕ Fin n) R := subst F.toPowerSeries g - subst (fun l => (X (Sum.inl l) : MvPowerSeries (Fin n ⊕ Fin n) R)) g - subst (fun l => (X (Sum.inr l) : MvPowerSeries (Fin n ⊕ Fin n) R)) g structure IsSymmTwoCocycle (F : MvFormalGroup n R) (Γ : MvPowerSeries (Fin n ⊕ Fin n) R) : Prop where constantCoeff_eq_zero : Γ.constantCoeff = 0 symm : subst (Sum.elim (fun j => (X (Sum.inr j) : MvPowerSeries (Fin n ⊕ Fin n) R)) fun j => X (Sum.inl j)) Γ = Γ cocycle : subst (Sum.elim (fun j => subst (Sum.elim (fun l => (X (Sum.inl l) : MvPowerSeries (Fin n ⊕ (Fin n ⊕ Fin n)) R)) fun l => X (Sum.inr (Sum.inl l))) (F.toPowerSeries j)) fun j => X (Sum.inr (Sum.inr j))) Γ + subst (Sum.elim (fun l => (X (Sum.inl l) : MvPowerSeries (Fin n ⊕ (Fin n ⊕ Fin n)) R)) fun l => X (Sum.inr (Sum.inl l))) Γ = subst (Sum.elim (fun j => (X (Sum.inl j) : MvPowerSeries (Fin n ⊕ (Fin n ⊕ Fin n)) R)) fun j => subst (Sum.elim (fun l => (X (Sum.inr (Sum.inl l)) : MvPowerSeries (Fin n ⊕ (Fin n ⊕ Fin n)) R)) fun l => X (Sum.inr (Sum.inr l))) (F.toPowerSeries j)) Γ + subst (Sum.elim (fun l => (X (Sum.inr (Sum.inl l)) : MvPowerSeries (Fin n ⊕ (Fin n ⊕ Fin n)) R)) fun l => X (Sum.inr (Sum.inr l))) Γ theorem subst_zero_of_hasSubst {σ τ : Type*} {a : σ → MvPowerSeries τ R} (ha : HasSubst a) : subst a (0 : MvPowerSeries σ R) = 0 := by rw [← coe_substAlgHom ha, map_zero] theorem IsSymmTwoCocycle.zero (F : MvFormalGroup n R) : F.IsSymmTwoCocycle 0 where constantCoeff_eq_zero := map_zero _ symm := subst_zero_of_hasSubst (hasSubst_of_constantCoeff_zero (by rintro (j | j) <;> exact constantCoeff_X _)) cocycle := by have h1 : HasSubst (Sum.elim (fun j => subst (Sum.elim (fun l => (X (Sum.inl l) : MvPowerSeries (Fin n ⊕ (Fin n ⊕ Fin n)) R)) fun l => X (Sum.inr (Sum.inl l))) (F.toPowerSeries j)) fun j => X (Sum.inr (Sum.inr j))) := by apply hasSubst_of_constantCoeff_zero rintro (j | j) · exact constantCoeff_subst_eq_zero (hasSubst_of_constantCoeff_zero (by rintro (l | l) <;> exact constantCoeff_X _)) (by rintro (l | l) <;> exact constantCoeff_X _) (F.constantCoeff_eq_zero j) · exact constantCoeff_X _ have h2 : HasSubst (Sum.elim (fun l => (X (Sum.inl l) : MvPowerSeries (Fin n ⊕ (Fin n ⊕ Fin n)) R)) fun l => X (Sum.inr (Sum.inl l))) := hasSubst_of_constantCoeff_zero (by rintro (l | l) <;> exact constantCoeff_X _) have h3 : HasSubst (Sum.elim (fun j => (X (Sum.inl j) : MvPowerSeries (Fin n ⊕ (Fin n ⊕ Fin n)) R)) fun j => subst (Sum.elim (fun l => (X (Sum.inr (Sum.inl l)) : MvPowerSeries (Fin n ⊕ (Fin n ⊕ Fin n)) R)) fun l => X (Sum.inr (Sum.inr l))) (F.toPowerSeries j)) := by apply hasSubst_of_constantCoeff_zero rintro (j | j) · exact constantCoeff_X _ · exact constantCoeff_subst_eq_zero (hasSubst_of_constantCoeff_zero (by rintro (l | l) <;> exact constantCoeff_X _)) (by rintro (l | l) <;> exact constantCoeff_X _) (F.constantCoeff_eq_zero j) have h4 : HasSubst (Sum.elim (fun l => (X (Sum.inr (Sum.inl l)) : MvPowerSeries (Fin n ⊕ (Fin n ⊕ Fin n)) R)) fun l => X (Sum.inr (Sum.inr l))) := hasSubst_of_constantCoeff_zero (by rintro (l | l) <;> exact constantCoeff_X _) rw [subst_zero_of_hasSubst h1, subst_zero_of_hasSubst h2, subst_zero_of_hasSubst h3, subst_zero_of_hasSubst h4] end MvFormalGroup end
Statements phrased using this module (40)
- Descent of kernel-invariant power series along an isogeny over a field
MvFormalGroup.exists_eq_subst_of_subst_toPowerSeries_sub_mem_span_of_X_pow_mem_span_of_field10 below · depth 29 - Kernel of the uniformiser has degree q²
CerednikDrinfeld.SpecialFormalODModule.finite_and_finrank_kerAlgebra_varpi9 below · depth 30 - Symmetric 2-cocycles span: at most h-n classes modulo coboundaries
MvFormalGroup.exists_isSymmTwoCocycle_span_of_finrank_quotient_span_nthSeries_eq_pow31 below · depth 33 - First-order deformations of a commutative formal group are ε-translates by symmetric 2-cocycles
MvFormalGroup.exists_toPowerSeries_eq_subst_eps_smul_and_exists_isSymmTwoCocycle_of_map_fstHom_eq0 below · depth 33 - Injectivity of substitution along an isogeny, and descent
MvFormalGroup.subst_injective_and_exists_eq_subst_of_subst_toPowerSeries_sub_mem_span_of_X_pow_mem_span23 below · depth 33 - First-order deformations in translation form: uniqueness, additivity, coboundaries
MvFormalGroup.translate_injective_and_exists_hom_iff_exists_addCoboundary0 below · depth 33 - Cocycle tuples of first-order mathcal O_D-deformations lie on one line
CerednikDrinfeld.SpecialFormalODModule.exists_forall_cocycleTuple_eq_smul_add_addCoboundary_of_not_and56 below · depth 34 - No nonzero homomorphism from a finite-height formal group to Gₐ
MvFormalGroup.eq_zero_of_addCoboundary_eq_zero_of_finrank_quotient_span_nthSeries_eq_pow6 below · depth 34 - Descent of translation-invariant power series along a formal isogeny
MvFormalGroup.exists_eq_subst_of_subst_toPowerSeries_sub_mem_span_of_X_pow_mem_span19 below · depth 34 - At most h symmetric 2-cocycles span the rigidified ones
MvFormalGroup.exists_isSymmTwoCocycle_rigidified_span_of_finrank_quotient_span_nthSeries_eq_pow29 below · depth 34 - First-order varpi-equivariance: cocycle pullback modulo coboundary
CerednikDrinfeld.FormalODModule.exists_subst_varpi_eq_sum_linearPart_smul_add_addCoboundary_and_coeff_eq_snd_linearPart0 below · depth 35 - ℤ_{q²}-equivariance of a first-order cocycle tuple
CerednikDrinfeld.FormalODModule.exists_sum_linearPart_act_smul_eq_subst_act_add_addCoboundary0 below · depth 35 - varpi-equivariance of the cocycle tuple, modulo coboundaries
CerednikDrinfeld.FormalODModule.exists_sum_linearPart_varpi_smul_eq_subst_varpi_add_addCoboundary0 below · depth 35 - Pull-back of symmetric 2-cocycles along the action series
CerednikDrinfeld.FormalODModule.isSymmTwoCocycle_subst_act_and_subst_act_add0 below · depth 35 - At a node, varpi-pull-back a coboundary forces γ a coboundary
CerednikDrinfeld.SpecialFormalODModule.exists_eq_addCoboundary_of_subst_varpi_eq_addCoboundary_of_coeff_eq_zero19 below · depth 35 - Each χ-isotypic piece of symmetric cocycles is at most a line
CerednikDrinfeld.SpecialFormalODModule.exists_smul_add_smul_eq_addCoboundary_of_forall_subst_act_eq_smul_add53 below · depth 35 - Summed cocycle Φ and its coboundary for [p]_F
MvFormalGroup.IsSymmTwoCocycle.addCoboundary_sum_subst_nthSeries_eq_and_exists_eq_addCoboundary_of_mem_span7 below · depth 35 - At most h-n independent primitives modulo [p]_F
MvFormalGroup.exists_add_le_and_forall_exists_sub_sum_smul_mem_span_nthSeries_of_addCoboundary_mem_span26 below · depth 35 - Descent along an isogeny of formal groups: local Noetherian base
MvFormalGroup.exists_eq_subst_of_subst_toPowerSeries_sub_mem_span_of_X_pow_mem_span_of_isLocalRing15 below · depth 35 - Connecting sum Theta: linearity, coboundaries, equivariance, peeling
CerednikDrinfeld.FormalODModule.connectingSum_smul_add_and_addCoboundary_and_subst_act_and_addCoboundary_eq_subst_nthSeries_and_mem_span0 below · depth 36 - Pull-back along varpi twists the type by Frobenius
CerednikDrinfeld.FormalODModule.forall_exists_subst_act_subst_varpi_eq_smul_of_type0 below · depth 36 - Type-χ cocycles killed by varpi^* span at most a line
CerednikDrinfeld.SpecialFormalODModule.exists_smul_add_smul_eq_addCoboundary_of_type_of_subst_varpi_eq_addCoboundary32 below · depth 36 - At a node the ideal of varpi equals (X₁^q, X₂^q)
CerednikDrinfeld.SpecialFormalODModule.span_range_varpi_eq_span_X_pow_of_linearPart_varpi14 below · depth 36 - Primitive series modulo p-th powers for a formal group law
MvFormalGroup.mem_span_X_pow_of_addCoboundary_mem_span_of_coeff_single_eq_zero1 below · depth 36 - Type-ψ additive characters modulo Pi₀ span at most a line
CerednikDrinfeld.SpecialFormalODModule.exists_smul_add_smul_mem_span_varpi_of_addCoboundary_mem_of_not_and19 below · depth 37 - Deformations over dual numbers spanned by nr explicit ones
MvFormalGroup.exists_deformations_dualNumber_span_of_forall_isSymmTwoCocycle1 below · depth 37 - Endomorphisms with vanishing linear part factor through Frobenius
MvFormalGroup.exists_eq_subst_X_pow_of_linearPart_eq_zero1 below · depth 37 - Descent of symmetric 2-cocycles along a finite endomorphism
MvFormalGroup.exists_eq_subst_and_eq_addCoboundary_of_subst_eq_addCoboundary_of_mem_span6 below · depth 37 - Conjugation of a special formal mathcal O_D-module by coordinates
CerednikDrinfeld.SpecialFormalODModule.exists_conj_of_subst_eq_X10 below · depth 38 - Type-ψ primitive classes form at most a line (normal coordinates)
CerednikDrinfeld.SpecialFormalODModule.exists_smul_add_smul_mem_span_varpi_of_addCoboundary_mem_of_span_eq0 below · depth 38 - Monomial normal form for varpi at a smooth point
CerednikDrinfeld.SpecialFormalODModule.exists_subst_eq_X_and_span_subst_varpi_eq_of_not_and14 below · depth 38 - Primitives of E[p] via the special formal mathcal O_D-module
CerednikDrinfeld.QM.FakeEllipticCurve.exists_specialFormalODModule_linearMap_primitives_of_ramified834 below · depth 40 - Typed primitives mod [q] for a special formal mathcal O_D-module
CerednikDrinfeld.SpecialFormalODModule.exists_primitives_mod_nthSeries_typed_forall_subst_addVia_act_of_finrank_eq_two29 below · depth 40 - Typed primitives modulo [q] span two lines
CerednikDrinfeld.SpecialFormalODModule.exists_primitives_mod_nthSeries_typed_lines_of_finrank_eq_two28 below · depth 41 - Pinned endomorphism acts by substitution of the series S
GoodReductionJacobian.RelativeGroupLaw.apply_apply_mk_eq_apply_mk_subst_of_forall_apply_eq_nilEval1 below · depth 41 - Primitivity criterion: additive coboundary modulo the defining ideal
GoodReductionJacobian.RelativeGroupLaw.apply_mk_mem_primitives_iff_addCoboundary_mem_of_forall_apply_eq_nilEval4 below · depth 41 - Splitting a primitive modulo [q] into j₀- and Frobenius-typed parts
CerednikDrinfeld.SpecialFormalODModule.exists_add_typed_of_primitive_mod_nthSeries0 below · depth 42 - Typed primitives modulo Pi span at most a line
CerednikDrinfeld.SpecialFormalODModule.exists_smul_add_smul_mem_span_varpi_of_addCoboundary_mem25 below · depth 42 - Membership in (varpi) versus substitution by varpi
CerednikDrinfeld.SpecialFormalODModule.mem_span_varpi_of_subst_varpi_mem_and_exists_subst_varpi_of_mem_span_varpi10 below · depth 42 - Types of primitives modulo (varpi) at a double point
CerednikDrinfeld.SpecialFormalODModule.exists_smul_add_smul_mem_span_varpi_of_addCoboundary_mem_of_linearPart_varpi15 below · depth 43