Definitions/Def_HopfAlgebra_FVectStructure.lean
-vector space structures on commutative bialgebras
Over a field F, a commutative ring R and a commutative R-bialgebra H (comultiplication \Delta, counit \varepsilon, multiplication m, unit \eta), the structure HopfAlgebra.FVectStructure F R H packages an assignment a \mapsto [a] from F to R-bialgebra endomorphisms of H (field act, defined on all of F, including a=0) subject to four axioms carried as fields: [1] = \mathrm{id}_H; [ab] = [a] \circ [b] for all a,b; and, as identities in Mathlib's convolution monoid WithConv (H →ₐ[R] H) of R-algebra endomorphisms with product f * g = m \circ (f \otimes g) \circ \Delta and unit \eta \circ \varepsilon, the conditions [0] = 1 and [a+b] = [a] * [b]. Thus the multiplicative monoid of F acts by bialgebra endomorphisms and the additive group of F acts through the group law of \operatorname{Spec} H. The accompanying lemmas record: the additive character a \mapsto [a] of F into the convolution monoid (addChar); additivity in linear-map form, the underlying R-linear map of [a+b] being \Delta followed by [a] \otimes [b] followed by m (act_add_linearMap); [n \cdot a] = [a]^{*n}, hence [a]^{*\,\mathrm{char} F} = 1 and \mathrm{id}_H^{*\,\mathrm{char} F} = 1; and, for every commutative R-algebra T, f^{\,\mathrm{char} F} = 1 for every f in the convolution monoid of R-algebra maps H \to T, i.e. the group of T-points is killed by the characteristic (vacuous when \mathrm{char} F = 0, where the exponent is 0). Since [a] \circ [a^{-1}] = \mathrm{id}, each a \in F^\times gives a bialgebra automorphism unitsAct, multiplicatively in a. For two such structures \sigma on H and \sigma' on H', the predicate IsFCompatible σ σ' u on a bialgebra map u : H \to H' asserts u \circ [a] = [a]' \circ u for all a \in F; it holds for the identity, is stable under composition, and has a pointwise reformulation. Finally, the group algebra R[F] of the additive group of F carries such a structure, with [a] induced by multiplication by a on F.
Relation to Mathlib
Mathlib supplies the ingredients — Bialgebra, BialgHom/BialgEquiv, the convolution monoid WithConv on algebra homomorphisms, and AddMonoidAlgebra.mapDomainBialgHom — but has no notion of an F-vector space (Raynaud) structure on a bialgebra; this structure and the compatibility predicate are the project's own.
Where it is used
This is the common interface for Raynaud-style arguments on finite flat group schemes of type (p,\dots,p), read on coordinate rings: eigenspace decompositions of H under F^\times, normal forms for the resulting bialgebras, the profile of an F-compatible morphism, and F-stable Hopf orders over discrete valuation rings of low ramification. These feed the analysis of finite flat group schemes used in the flat deformation condition and in level-lowering.
References
- M. Raynaud, Schémas en groupes de type (p,\dots,p), Bulletin de la Société Mathématique de France 102 (1974), 241–280, §1.2
- J. Tate and F. Oort, Group schemes of prime order, Annales Scientifiques de l'École Normale Supérieure (4) 3 (1970), 1–21
- W. C. Waterhouse, Introduction to Affine Group Schemes, Graduate Texts in Mathematics 66, Springer, 1979
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 161 lines
- 25 declarations
- used in the statements of 22 theorems and imported by 22 proofs
- imports 0 definition modules
Source file: Definitions/Def_HopfAlgebra_FVectStructure.lean
Imports
- only Mathlib
Declarations
- structure
HopfAlgebra.FVectStructure - field
HopfAlgebra.FVectStructure.H - field
HopfAlgebra.FVectStructure.act - field
HopfAlgebra.FVectStructure.act_one - field
HopfAlgebra.FVectStructure.act_mul - field
HopfAlgebra.FVectStructure.act_zero - field
HopfAlgebra.FVectStructure.act_add - def
HopfAlgebra.FVectStructure.addChar - theorem
HopfAlgebra.FVectStructure.addChar_apply - theorem
HopfAlgebra.FVectStructure.act_add_linearMap - theorem
HopfAlgebra.FVectStructure.toConv_act_nsmul - theorem
HopfAlgebra.FVectStructure.toConv_act_pow_ringChar - theorem
HopfAlgebra.FVectStructure.toConv_id_pow_ringChar - theorem
HopfAlgebra.FVectStructure.point_pow_ringChar_eq_one - theorem
HopfAlgebra.FVectStructure.act_comp_act_inv - theorem
HopfAlgebra.FVectStructure.act_inv_comp_act - def
HopfAlgebra.FVectStructure.unitsAct - theorem
HopfAlgebra.FVectStructure.unitsAct_apply - theorem
HopfAlgebra.FVectStructure.unitsAct_one - theorem
HopfAlgebra.FVectStructure.unitsAct_mul - def
HopfAlgebra.IsFCompatible - theorem
HopfAlgebra.IsFCompatible.id - theorem
HopfAlgebra.IsFCompatible.comp - theorem
HopfAlgebra.IsFCompatible.apply - def
HopfAlgebra.FVectStructure.addMonoidAlgebra
Source
import Mathlib set_option autoImplicit false open scoped TensorProduct universe u v w x namespace HopfAlgebra structure FVectStructure (F : Type w) [Field F] (R : Type u) [CommRing R] (H : Type v) [CommRing H] [Bialgebra R H] where act : F → (H →ₐc[R] H) act_one : act 1 = BialgHom.id R H act_mul : ∀ a b : F, act (a * b) = (act a).comp (act b) act_zero : WithConv.toConv (act 0 : H →ₐ[R] H) = (1 : WithConv (H →ₐ[R] H)) act_add : ∀ a b : F, WithConv.toConv (act (a + b) : H →ₐ[R] H) = WithConv.toConv (act a : H →ₐ[R] H) * WithConv.toConv (act b : H →ₐ[R] H) namespace FVectStructure variable {F : Type w} [Field F] {R : Type u} [CommRing R] {H : Type v} [CommRing H] [Bialgebra R H] variable (σ : FVectStructure F R H) noncomputable def addChar : AddChar F (WithConv (H →ₐ[R] H)) where toFun a := WithConv.toConv (σ.act a : H →ₐ[R] H) map_zero_eq_one' := σ.act_zero map_add_eq_mul' := σ.act_add @[simp] theorem addChar_apply (a : F) : σ.addChar a = WithConv.toConv (σ.act a : H →ₐ[R] H) := rfl theorem act_add_linearMap (a b : F) : ((σ.act (a + b) : H →ₐ[R] H).toLinearMap) = LinearMap.mul' R H ∘ₗ TensorProduct.map (σ.act a : H →ₐ[R] H).toLinearMap (σ.act b : H →ₐ[R] H).toLinearMap ∘ₗ Coalgebra.comul := by have h := σ.act_add a b rw [AlgHom.convMul_def] at h have h2 := congrArg (fun x => (WithConv.ofConv x).toLinearMap) h simpa [TensorProduct.AlgebraTensorModule.map_eq, Algebra.TensorProduct.lmul'_toLinearMap] using h2 theorem toConv_act_nsmul (n : ℕ) (a : F) : WithConv.toConv (σ.act (n • a) : H →ₐ[R] H) = WithConv.toConv (σ.act a : H →ₐ[R] H) ^ n := by rw [← addChar_apply, ← addChar_apply, AddChar.map_nsmul_eq_pow] theorem toConv_act_pow_ringChar (a : F) : WithConv.toConv (σ.act a : H →ₐ[R] H) ^ ringChar F = 1 := by rw [← toConv_act_nsmul, nsmul_eq_mul, ringChar.Nat.cast_ringChar, zero_mul] exact σ.act_zero include σ in theorem toConv_id_pow_ringChar : WithConv.toConv (AlgHom.id R H) ^ ringChar F = (1 : WithConv (H →ₐ[R] H)) := by have h := σ.toConv_act_pow_ringChar 1 rwa [σ.act_one] at h include σ in theorem point_pow_ringChar_eq_one (T : Type x) [CommRing T] [Algebra R T] (f : WithConv (H →ₐ[R] T)) : f ^ ringChar F = 1 := by have key : ∀ n : ℕ, f ^ n = WithConv.toConv (f.ofConv.comp ((WithConv.toConv (AlgHom.id R H) ^ n : WithConv (H →ₐ[R] H))).ofConv) := by intro n induction n with | zero => rw [pow_zero, pow_zero, AlgHom.convOne_def (R := R) (A := T) (C := H), AlgHom.convOne_def (R := R) (A := H) (C := H), WithConv.ofConv_toConv, ← AlgHom.comp_assoc] congr 1 ext x simp | succ n ih => rw [pow_succ, pow_succ, ih, AlgHom.comp_convMul_distrib, WithConv.ofConv_toConv, AlgHom.comp_id, WithConv.toConv_ofConv, WithConv.toConv_ofConv] rw [key, σ.toConv_id_pow_ringChar, AlgHom.convOne_def (R := R) (A := H) (C := H), WithConv.ofConv_toConv, ← AlgHom.comp_assoc, AlgHom.convOne_def (R := R) (A := T) (C := H)] congr 1 ext x simp theorem act_comp_act_inv (a : Fˣ) : (σ.act a).comp (σ.act (a⁻¹ : Fˣ)) = BialgHom.id R H := by rw [← σ.act_mul, Units.mul_inv, σ.act_one] theorem act_inv_comp_act (a : Fˣ) : (σ.act (a⁻¹ : Fˣ)).comp (σ.act a) = BialgHom.id R H := by rw [← σ.act_mul, Units.inv_mul, σ.act_one] noncomputable def unitsAct (a : Fˣ) : H ≃ₐc[R] H := BialgEquiv.ofBialgHom (σ.act a) (σ.act (a⁻¹ : Fˣ)) (σ.act_comp_act_inv a) (σ.act_inv_comp_act a) @[simp] theorem unitsAct_apply (a : Fˣ) (x : H) : σ.unitsAct a x = σ.act a x := rfl theorem unitsAct_one : σ.unitsAct 1 = BialgEquiv.refl R H := by ext x rw [unitsAct_apply, Units.val_one, σ.act_one] rfl theorem unitsAct_mul (a b : Fˣ) : σ.unitsAct (a * b) = (σ.unitsAct b).trans (σ.unitsAct a) := by ext x rw [unitsAct_apply, Units.val_mul, σ.act_mul] rfl end FVectStructure def IsFCompatible {F : Type w} [Field F] {R : Type u} [CommRing R] {H : Type v} [CommRing H] [Bialgebra R H] {H' : Type x} [CommRing H'] [Bialgebra R H'] (σ : FVectStructure F R H) (σ' : FVectStructure F R H') (u : H →ₐc[R] H') : Prop := ∀ a : F, u.comp (σ.act a) = (σ'.act a).comp u namespace IsFCompatible variable {F : Type w} [Field F] {R : Type u} [CommRing R] {H : Type v} [CommRing H] [Bialgebra R H] {H' : Type x} [CommRing H'] [Bialgebra R H'] {H'' : Type*} [CommRing H''] [Bialgebra R H''] theorem id (σ : FVectStructure F R H) : IsFCompatible σ σ (BialgHom.id R H) := by intro a; rfl theorem comp {σ : FVectStructure F R H} {σ' : FVectStructure F R H'} {σ'' : FVectStructure F R H''} {v : H' →ₐc[R] H''} {u : H →ₐc[R] H'} (hv : IsFCompatible σ' σ'' v) (hu : IsFCompatible σ σ' u) : IsFCompatible σ σ'' (v.comp u) := by intro a rw [BialgHom.comp_assoc, hu a, ← BialgHom.comp_assoc, hv a, BialgHom.comp_assoc] theorem apply {σ : FVectStructure F R H} {σ' : FVectStructure F R H'} {u : H →ₐc[R] H'} (hu : IsFCompatible σ σ' u) (a : F) (x : H) : u (σ.act a x) = σ'.act a (u x) := DFunLike.congr_fun (hu a) x end IsFCompatible namespace FVectStructure variable (F : Type w) [Field F] (R : Type u) [CommRing R] noncomputable def addMonoidAlgebra : FVectStructure F R (AddMonoidAlgebra R F) where act a := AddMonoidAlgebra.mapDomainBialgHom R (AddMonoidHom.mulLeft a) act_one := by apply BialgHom.coe_algHom_injective refine AddMonoidAlgebra.algHom_ext (fun x => ?_) (Subsingleton.elim _ _) simp act_mul a b := by apply BialgHom.coe_algHom_injective refine AddMonoidAlgebra.algHom_ext (fun x => ?_) (Subsingleton.elim _ _) simp [mul_assoc] act_zero := by congr 1 refine AddMonoidAlgebra.algHom_ext (fun x => ?_) (Subsingleton.elim _ _) simp act_add a b := by rw [AlgHom.convMul_def] congr 1 refine AddMonoidAlgebra.algHom_ext (fun x => ?_) (Subsingleton.elim _ _) simp [AddMonoidAlgebra.single_mul_single, add_mul] end FVectStructure end HopfAlgebra
Statements phrased using this module (22)
- Raynaud normal-form model of an inertia-simple step
HopfAlgebra.exists_fVectStructure_normalForm_model_of_finite_flat_of_inertiaSimple_step122 below · depth 19 - Raynaud normal form for rank-q F-vector space schemes
HopfAlgebra.FVect.exists_generators_normalForm_of_finrank_eq_card11 below · depth 20 - Descent of an F-vector space structure to a finite flat model
HopfAlgebra.exists_fVectStructure_baseChange_eq_of_pow_eq_one87 below · depth 20 - Equivariant F-action on points gives an F-vector space structure
HopfAlgebra.exists_fVectStructure_forall_comp_eq_of_equivariant_of_bijective_evalPoints4 below · depth 20 - Transport of an F-vector space structure along a bialgebra isomorphism
HopfAlgebra.exists_fVectStructure_isFCompatible_of_bialgEquiv0 below · depth 20 - Triviality of the Gal(L/ℚ)-action on the toric part
ModularCurve.XOneP.eq_of_galois_of_postComp_eq_one_points_specialFibre_of_gaussReading_twoChartModel_x1_mul_of_abelJacobi1,268 below · depth 22 - Affine split torus kernel in Pic⁰ of the special fibre
ModularCurve.XOneP.exists_relativeGroupLaw_isAffine_isClosedImmersion_iff_postComp_pullbackHom_eq_one_splitTorus_specialFibre_baseChange_x1_mul54 below · depth 22 - Kernel of special-fibre Picard projections: a split torus of rank n-1
ModularCurve.XOneP.exists_relativeGroupLaw_isClosedImmersion_iff_postComp_pullbackHom_eq_one_splitTorus_specialFibre_baseChange_x1_mul54 below · depth 22 - Galois acts trivially on C₁, through a diamond on C₂
ModularCurve.XOneP.postComp_pullbackHom_galois_eq_and_postComp_diamond_comp_galoisInv_eq_of_gaussReading_specialFibre_twoChartModel_x1_mul_of_abelJacobi1,265 below · depth 22 - Bijectivity of R₂⊗φ from an F-vector dévissage
HopfAlgebra.bijective_baseChange_of_hasFVectDevissage43 below · depth 23 - F-vector dévissage of the generic fibre after faithfully flat base change
HopfAlgebra.exists_faithfullyFlat_hasFVectDevissage_baseChange_of_pow_eq_one45 below · depth 23 - Pinned Galois transport on relative Pic⁰ equals τ(s)
ModularCurve.XOneP.galoisHom_eq_of_classifies_rigidify_pullback_of_modelHom_inv_twoChartModel_x1_mul_of_abelJacobi173 below · depth 23 - Nested Hopf orders of a dévissable Hopf algebra coincide
HopfAlgebra.Raynaud.hopfOrder_eq_of_le_of_hasFVectDevissage40 below · depth 24 - Raynaud dévissage for split étale p-torsion Hopf algebras
HopfAlgebra.hasFVectDevissage_of_bijective_evalPoints_of_isPGroup_of_commutator_le_of_perfectField18 below · depth 24 - Uniqueness of Hopf orders of rank p^r F-vector space Hopf algebras
HopfAlgebra.FVect.hopfOrder_eq_of_le32 below · depth 25 - Galois-equivariant F-action on points descends to an F-vector space structure
HopfAlgebra.exists_fVectStructure_of_pointAction_of_bijective_evalPoints3 below · depth 25 - Rigidity of F^×-stable Hopf orders when p is a uniformiser
HopfAlgebra.FVect.hopfOrder_eq_of_le_of_forall_act_mem16 below · depth 26 - Existence of a greatest Hopf order
HopfOrder.exists_isGreatest7 below · depth 26 - Existence of a least Hopf order via Cartier duality
HopfOrder.exists_isLeast19 below · depth 26 - Bialgebra automorphisms preserve a least Hopf order
HopfOrder.map_eq_of_forall_ge1 below · depth 26 - The greatest Hopf order is stable under bialgebra automorphisms
HopfOrder.map_eq_of_forall_le1 below · depth 26 - Restricting an F-vector space structure to a Hopf order
HopfAlgebra.FVectStructure.exists_restrict_hopfOrder0 below · depth 27