Definitions/Def_HopfAlgebra_CartierDualMap.lean
Functoriality of the Cartier dual of a bialgebra
Throughout, R is a commutative ring and A, B, C are commutative R-bialgebras that are finite and free as R-modules; CartierDual R A denotes the R-module dual A^{\vee}=\mathrm{Hom}_R(A,R) equipped with the bialgebra structure transposing that of A (convolution product \langle\varphi\psi,a\rangle=\langle\varphi\otimes\psi,\Delta a\rangle with unit the counit of A, comultiplication determined by \langle\Delta\varphi,a\otimes b\rangle=\varphi(ab) and counit \varphi\mapsto\varphi(1)). Two things are defined. First, pairing presents evaluation \langle\varphi,a\rangle=\varphi(a) as an R-linear map A^{\vee}\to\mathrm{Hom}_R(A,R), i.e. the canonical identification of the Cartier dual with the linear dual, together with the evaluation formula pairing_apply.
Second, for a bialgebra homomorphism f\colon A\to B (Mathlib's A →ₐc[R] B, an algebra map compatible with comultiplication and counit) the transpose \varphi\mapsto\varphi\circ f is constructed in three stages: mapLinear f is the R-linear map B^{\vee}\to A^{\vee} obtained from LinearMap.dualMap of f through the identification above, with (\mathrm{mapLinear}\,f\,\varphi)(a)=\varphi(f a); mapAlgHom f upgrades it to an R-algebra homomorphism, multiplicativity mapLinear_mul coming from compatibility of f with the comultiplications and unitality mapLinear_one from compatibility with the counits; and map f : CartierDual R B →ₐc[R] CartierDual R A upgrades it further to a bialgebra homomorphism, the two remaining conditions being counit_comp_mapAlgHom (from f(1)=1) and map_comp_comul_mapAlgHom (from multiplicativity of f, checked against the pairing \langle\Delta\varphi\circ f,a\otimes b\rangle=\varphi(f(a)f(b))). Auxiliary lemmas dualDistrib_map_map and dualDistrib_map_mapAlgHom record the compatibility of the evaluation pairing on tensor squares with f\otimes f. The assignment is contravariantly functorial: map_id and map_comp, which states \mathrm{map}(g\circ f)=\mathrm{map}(f)\circ\mathrm{map}(g) in the diagrammatic sense. Finally congr e turns a bialgebra isomorphism e\colon A\simeq B into the bialgebra isomorphism B^{\vee}\simeq A^{\vee} with inverse the transpose of e^{-1}, and toDual_map, map_apply, congr_apply, congr_symm_apply give the evaluation formulas.
Relation to Mathlib
Mathlib supplies the linear dual and its transpose (Module.Dual, LinearMap.dualMap) and the morphism classes →ₐc[R], ≃ₐc[R]; the Cartier dual bialgebra structure on the dual of a finite free bialgebra is the project's own, and this module adds its functoriality in the source bialgebra.
Where it is used
These transposes are the basic functoriality needed wherever Cartier duality is used for finite flat group schemes in the local analysis of the Galois representations attached to elliptic curves and modular forms.
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
- 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.
- 135 lines
- 20 declarations
- used in the statements of 53 theorems and imported by 87 proofs
- imports 1 definition modules
Source file: Definitions/Def_HopfAlgebra_CartierDualMap.lean
Imports
Imported by
- no other definition module
Declarations
- def
CartierDual.pairing - theorem
CartierDual.pairing_apply - def
CartierDual.mapLinear - theorem
CartierDual.mapLinear_apply - theorem
CartierDual.dualDistrib_map_map - theorem
CartierDual.mapLinear_mul - theorem
CartierDual.mapLinear_one - def
CartierDual.mapAlgHom - theorem
CartierDual.mapAlgHom_apply - theorem
CartierDual.dualDistrib_map_mapAlgHom - theorem
CartierDual.counit_comp_mapAlgHom - theorem
CartierDual.map_comp_comul_mapAlgHom - def
CartierDual.map - theorem
CartierDual.map_apply - theorem
CartierDual.toDual_map - theorem
CartierDual.map_id - theorem
CartierDual.map_comp - def
CartierDual.congr - theorem
CartierDual.congr_apply - theorem
CartierDual.congr_symm_apply
Source
import Mathlib import Definitions.Def_HopfAlgebra_CartierDual set_option autoImplicit false open scoped TensorProduct namespace CartierDual noncomputable section universe u v w x section Pairing variable (R : Type u) [CommRing R] (A : Type v) [CommRing A] [Bialgebra R A] def pairing : CartierDual R A →ₗ[R] A →ₗ[R] R where toFun φ := toDual R A φ map_add' _ _ := rfl map_smul' _ _ := rfl @[simp] theorem pairing_apply (φ : CartierDual R A) (a : A) : pairing R A φ a = φ a := rfl end Pairing section Map variable {R : Type u} [CommRing R] variable {A : Type v} [CommRing A] [Bialgebra R A] [Module.Finite R A] [Module.Free R A] variable {B : Type w} [CommRing B] [Bialgebra R B] [Module.Finite R B] [Module.Free R B] variable {C : Type x} [CommRing C] [Bialgebra R C] [Module.Finite R C] [Module.Free R C] def mapLinear (f : A →ₐc[R] B) : CartierDual R B →ₗ[R] CartierDual R A := (ofDual R A).toLinearMap ∘ₗ (f : A →ₗ[R] B).dualMap ∘ₗ (toDual R B).toLinearMap omit [Module.Finite R A] [Module.Free R A] [Module.Finite R B] [Module.Free R B] in @[simp] theorem mapLinear_apply (f : A →ₐc[R] B) (φ : CartierDual R B) (a : A) : mapLinear f φ a = φ (f a) := rfl omit [Module.Finite R A] [Module.Free R A] [Module.Finite R B] [Module.Free R B] in theorem dualDistrib_map_map (f : A →ₐc[R] B) (φ ψ : CartierDual R B) (z : A ⊗[R] A) : TensorProduct.dualDistrib R B B (toDual R B φ ⊗ₜ[R] toDual R B ψ) (TensorProduct.map (f : A →ₗ[R] B) (f : A →ₗ[R] B) z) = TensorProduct.dualDistrib R A A (toDual R A (mapLinear f φ) ⊗ₜ[R] toDual R A (mapLinear f ψ)) z := by induction z using TensorProduct.induction_on with | zero => simp only [map_zero] | tmul a b => rfl | add x y hx hy => simp only [map_add, hx, hy] theorem mapLinear_mul (f : A →ₐc[R] B) (φ ψ : CartierDual R B) : mapLinear f (φ * ψ) = mapLinear f φ * mapLinear f ψ := by apply CartierDual.ext; intro a rw [mapLinear_apply, mul_apply, mul_apply, ← dualDistrib_map_map] congr 1 exact (CoalgHomClass.map_comp_comul_apply f a).symm theorem mapLinear_one (f : A →ₐc[R] B) : mapLinear f 1 = 1 := by apply CartierDual.ext; intro a rw [mapLinear_apply, one_apply, one_apply] exact CoalgHomClass.counit_comp_apply f a def mapAlgHom (f : A →ₐc[R] B) : CartierDual R B →ₐ[R] CartierDual R A := AlgHom.ofLinearMap (mapLinear f) (mapLinear_one f) (mapLinear_mul f) @[simp] theorem mapAlgHom_apply (f : A →ₐc[R] B) (φ : CartierDual R B) (a : A) : mapAlgHom f φ a = φ (f a) := rfl theorem dualDistrib_map_mapAlgHom (f : A →ₐc[R] B) (w : CartierDual R B ⊗[R] CartierDual R B) (a b : A) : TensorProduct.dualDistrib R A A (TensorProduct.map (toDual R A).toLinearMap (toDual R A).toLinearMap (TensorProduct.map (mapLinear f) (mapLinear f) w)) (a ⊗ₜ[R] b) = TensorProduct.dualDistrib R B B (TensorProduct.map (toDual R B).toLinearMap (toDual R B).toLinearMap w) (f a ⊗ₜ[R] f b) := by induction w using TensorProduct.induction_on with | zero => simp only [map_zero, LinearMap.zero_apply] | tmul φ ψ => rfl | add x y hx hy => simp only [map_add, LinearMap.add_apply, hx, hy] theorem counit_comp_mapAlgHom (f : A →ₐc[R] B) : (Bialgebra.counitAlgHom R (CartierDual R A)).comp (mapAlgHom f) = Bialgebra.counitAlgHom R (CartierDual R B) := by apply AlgHom.ext; intro φ rw [AlgHom.comp_apply, Bialgebra.counitAlgHom_apply, Bialgebra.counitAlgHom_apply] exact (counit_apply (mapAlgHom f φ)).trans ((congrArg φ (map_one f)).trans (counit_apply φ).symm) theorem map_comp_comul_mapAlgHom (f : A →ₐc[R] B) : (Algebra.TensorProduct.map (mapAlgHom f) (mapAlgHom f)).comp (Bialgebra.comulAlgHom R (CartierDual R B)) = (Bialgebra.comulAlgHom R (CartierDual R A)).comp (mapAlgHom f) := by apply AlgHom.ext; intro φ rw [AlgHom.comp_apply, AlgHom.comp_apply, Bialgebra.comulAlgHom_apply, Bialgebra.comulAlgHom_apply] have hmap : (Algebra.TensorProduct.map (mapAlgHom f) (mapAlgHom f)).toLinearMap = TensorProduct.map (mapLinear f) (mapLinear f) := TensorProduct.ext' fun _ _ => rfl rw [← AlgHom.toLinearMap_apply, hmap] apply tmul_eq_of_pairing_eq intro a b have h1 := dualDistrib_map_mapAlgHom f (Coalgebra.comul (R := R) φ) a b have h2 := comul_pairing (R := R) (A := B) φ (f a) (f b) have h3 := comul_pairing (R := R) (A := A) (mapAlgHom f φ) a b exact (h1.trans (h2.trans (congrArg φ (map_mul f a b).symm))).trans h3.symm def map (f : A →ₐc[R] B) : CartierDual R B →ₐc[R] CartierDual R A := BialgHom.ofAlgHom (mapAlgHom f) (counit_comp_mapAlgHom f) (map_comp_comul_mapAlgHom f) @[simp] theorem map_apply (f : A →ₐc[R] B) (φ : CartierDual R B) (a : A) : map f φ a = φ (f a) := rfl theorem toDual_map (f : A →ₐc[R] B) (φ : CartierDual R B) : toDual R A (map f φ) = (f : A →ₗ[R] B).dualMap (toDual R B φ) := rfl theorem map_id : map (BialgHom.id R A) = BialgHom.id R (CartierDual R A) := by apply BialgHom.ext; intro φ; apply CartierDual.ext; intro a; rfl theorem map_comp (g : B →ₐc[R] C) (f : A →ₐc[R] B) : map (g.comp f) = (map f).comp (map g) := by apply BialgHom.ext; intro φ; apply CartierDual.ext; intro a; rfl def congr (e : A ≃ₐc[R] B) : CartierDual R B ≃ₐc[R] CartierDual R A := BialgEquiv.ofBialgHom (map (e : A →ₐc[R] B)) (map (e.symm : B →ₐc[R] A)) (by apply BialgHom.ext; intro φ; apply CartierDual.ext; intro a show φ (e.symm (e a)) = φ a rw [BialgEquiv.symm_apply_apply]) (by apply BialgHom.ext; intro φ; apply CartierDual.ext; intro b show φ (e (e.symm b)) = φ b rw [BialgEquiv.apply_symm_apply]) @[simp] theorem congr_apply (e : A ≃ₐc[R] B) (φ : CartierDual R B) (a : A) : congr e φ a = φ (e a) := rfl @[simp] theorem congr_symm_apply (e : A ≃ₐc[R] B) (φ : CartierDual R A) (b : B) : (congr e).symm φ b = φ (e.symm b) := rfl end Map end end CartierDual
Statements phrased using this module (53)
- Eichler–Shimura relation on a finite flat model of J₀(M)[p]
ModularCurve.exists_finiteFlat_model_jZero_torsion_heckeNilpotent_frobenius_verschiebung_reductionModL1,913 below · depth 15 - Eichler–Shimura relation on a finite flat model of J₀(M)[p]
ModularCurve.exists_finiteFlat_model_jZero_torsion_heckeNilpotent_eichlerShimuraDual_reductionModL1,909 below · depth 16 - Frobenius after Verschiebung is trivial on the Cartier dual
ModularCurve.frobenius_comp_verschiebung_eq_unit_counit_of_model_jZero_torsion11 below · depth 16 - Point counts of G and G^∨ multiply to dim B
HopfAlgebra.natCard_algHom_mul_natCard_algHom_cartierDual_eq_finrank_of_map_eq_conv_frobenius6 below · depth 17 - Finite flat model of the Tₚ-bijective part of J₀(M)[p^k]
ModularCurve.exists_finiteFlat_model_jZero_torsion_heckeBijective_frobenius_verschiebung_reductionModL1,909 below · depth 17 - Cartier duality commutes with base change
CartierDual.exists_bialgEquiv_baseChange_forall_pairing_symm_tmul0 below · depth 19 - Tangent–cotangent duality with operators for finite Hopf algebras
HopfAlgebra.finrank_primitives_quot_iSup_map_eq_finrank_iInf_ker_mapCotangent_cartierDual0 below · depth 21 - Hecke-equivariant Cartier self-duality of J₀(N)[p]
ModularCurve.exists_bialgEquiv_cartierDual_baseChange_model_jZero_torsion_comp_map_eq692 below · depth 21 - A cyclotomic DVR inside a place above p
ModularCurve.exists_isCyclotomicExtension_isDiscreteValuationRing_isFractionRing_mem_valuationSubring_of_liesOverPrime0 below · depth 21 - Cartier duality of a morphism: transitions and pairing adjointness
PDivisibleGroup.CartierDuality.transpose_comp_transition_eq_and_pair_comp_eq_pair_comp_transpose0 below · depth 24 - Exactness of Cartier duality for a Hopf quotient
CartierDual.forall_hopfKer_apply_eq_zero_iff_mem_map_ker_counit5 below · depth 25 - A power of Uₚ as Frobenius convolved with Verschiebung
ModularCurve.JHNeronObjectAtP.exists_pow_cartierDual_reduction_U_eq_frobenius_conv_verschiebung_of_finPtsWitness_of_isDiscreteValuationRing_of_bridge2,707 below · depth 25 - Cyclotomic inertia action on U^N of the connected Tate module
PDivisibleGroup.exists_rep_pow_sub_smul_eq_cyclotomicCharacter_smul_of_reduction_pow_eq_frobenius_conv_verschiebung111 below · depth 25 - Idempotents in the ideal (F,V) have ordinary image
HopfAlgebra.exists_split_idempotent_bijective_tensorProduct_isReduced_cartierDual_of_cartierDualMap_eq_frobenius_conv_verschiebung7 below · depth 26 - Cartier transpose of Uₚ⟨ d₀⟩ is Frobenius (ordinary part)
ModularCurve.JHNeronObjectAtP.exists_units_forall_point_comp_cartierTranspose_U_comp_diamond_valuation_sub_pow_lt_one_of_ordinaryIdempotent_of_bridge1,358 below · depth 26 - Two-step special-fibre tower of the Raynaud quotient with descended Uₚ
ModularCurve.exists_twoStepTower_raynaudQuotient_descent_finPts_jHNeronObjectAtP_of_finPtsWitness_of_bridgePins2,702 below · depth 26 - Cartier-transpose Frobenius twist forces A to act by a scalar
PDivisibleGroup.CartierDuality.moduleEnd_tateModuleRep_eq_smul_of_forall_point_comp_cartierTranspose_valuation_sub_pow_lt_one16 below · depth 26 - Cartier pairing equals 1 on étale-dual factors and formal points
PDivisibleGroup.CartierDuality.pair_eq_one_of_eq_comp_of_etale_cartierDual_of_forall_valuation_sub_counit_lt_one4 below · depth 26 - Formal points pair trivially at an ordinary level
PDivisibleGroup.CartierDuality.pair_eq_one_of_forall_valuation_sub_counit_lt_one_of_bijective_tensorProduct_isReduced38 below · depth 26 - Inertia acts on formal Tate vectors by the cyclotomic character
PDivisibleGroup.CartierDuality.tateModuleRep_eq_cyclotomicCharacter_smul_of_mem_inertiaSubgroupIn_of_forall_pair_eq_one17 below · depth 26 - A Frobenius–Verschiebung identity for φ^∨ on the special fibre
PDivisibleGroup.cartierDualMap_pow_eq_frobenius_conv_verschiebung_of_multiplicative_sub_of_verschiebung_sub_frobenius_quotient6 below · depth 26 - Unit-root points factor through the maximal multiplicative quotient
PDivisibleGroup.exists_point_toAlgHom_eq_comp_of_etale_cartierDual_of_forall_comp_eq_of_reduction_pow_eq_frobenius_conv_verschiebung72 below · depth 26 - Trivial Cartier pairing with points factoring through an étale dual
HopfAlgebra.apply_ofDual_eq_one_of_eq_comp_of_forall_sub_apply_one_mem_maximalIdeal_of_henselianLocalRing1 below · depth 27 - Ordinary normal form descends to the residue field of P
HopfAlgebra.exists_bijective_tensorProduct_isReduced_cartierDual_residueField_of_zmodp_valuationSubring_of_isCocomm1 below · depth 27 - Formal P-points factor through the multiplicative quotient
HopfAlgebra.exists_eq_comp_of_forall_sub_counit_mem_maximalIdeal_of_bijective_tensorProduct_isReduced_valuationSubring16 below · depth 27 - Connected Hopf quotients of ordinary Hopf algebras over 𝔽ₚ
HopfAlgebra.isReduced_cartierDual_of_surjective_of_isLocalRing_of_bijective_tensorProduct_isReduced0 below · depth 27 - Frobenius and Verschiebung on the p-divisible levels mod p
ModularCurve.JHNeronObjectAtP.LevelData.restrict_frobenius_eq_pow_and_cartierDual_map_restrict_verschiebung_eq_pow_of_abelianSchemePropertyBundle9 below · depth 27 - Verschiebung equals Uₚ⟨ d₀⟩ on the connected part
ModularCurve.JHNeronObjectAtP.exists_units_forall_qc_comp_baseChange_U_comp_diamond_comp_eq_qc_comp_verschiebung_of_ordinaryIdempotent_of_bridge1,315 below · depth 27 - Diamond operator ⟨ d⟩ as an automorphism of the finite part
ModularCurve.exists_bialgEquiv_family_diamond_finPts_jHNeronObjectAtP_of_finPtsWitness79 below · depth 27 - Descent of Uₚ and ⟨ d⟩ to torus and Raynaud quotients
ModularCurve.exists_descent_torusQuotient_raynaudQuotient_finPts_jHNeronObjectAtP_of_finPtsWitness_of_injective14 below · depth 27 - Torus quotient of the finite part: multiplicative tower, Raynaud-exact
ModularCurve.exists_torusQuotient_multiplicative_exact_raynaudQuotient_finPts_jHNeronObjectAtP_of_finPtsWitness65 below · depth 27 - Injectivity of 𝔽ₚ⊗ψᵥ for the Raynaud quotient
ModularCurve.injective_tensorProduct_map_raynaudQuotient_finPts_jHNeronObjectAtP_of_finPtsWitness_of_isDiscreteValuationRing2,579 below · depth 27 - Cartier transpose as Frobenius on integral ε-supported points
PDivisibleGroup.CartierDuality.forall_point_valuation_cartierTranspose_sub_pow_lt_one_of_comp_eq_comp_verschiebung_of_bijective_tensorProduct_zmodp7 below · depth 27 - Cartier transpose is adjoint for the Cartier pairing on points
PDivisibleGroup.CartierDuality.pair_comp_eq_pair_comp_cartierTranspose0 below · depth 27 - Ordinarity of the ε-part of every level of the special fibre
PDivisibleGroup.forall_exists_bijective_tensorProduct_isReduced_cartierDual_of_comp_eq_idempotent_of_reduction_pow_eq_frobenius_conv_verschiebung62 below · depth 27 - Cartier dual characters determined on the connected factor
CartierDual.algHom_comp_map_eq_of_comp_eq_comp_of_bijective_tensorProduct_of_isReduced_of_nsmulAlgHom_pow_eq_zmodp3 below · depth 28 - Base change commutes with the Cartier transpose of an endomorphism
CartierDual.dualBaseChangeLin_lTensor_map_eq_map_baseChange_dualBaseChangeLin0 below · depth 28 - Naturality of the Verschiebung pinned on the Cartier dual
HopfAlgebra.comp_eq_comp_of_forall_cartierDual_apply_eq_pow_apply_zmodp0 below · depth 28 - Frobenius–Verschiebung factorisation descends to a split unit-root factor
HopfAlgebra.exists_cartierDualMap_id_eq_frobenius_conv_verschiebung_of_comp_eq_idempotent_of_cartierDualMap_pow_eq0 below · depth 28 - Frobenius, Uₚ and a diamond give [p] on ker abq₁
ModularCurve.JHNeronObjectAtP.exists_units_pullbackFst_abqFibre_comp_relFrobenius_comp_hecke_U_comp_hecke_dia_eq_comp_schemeNsmul121 below · depth 28 - Connected ordinary part of G[p^v] lies in ker(abq₁)
ModularCurve.JHNeronObjectAtP.mono_lift_and_exists_specMap_qc_comp_baseChange_comp_lift_eq_comp_pullbackFst_abqFibre_of_ordinaryIdempotent_of_bridge1,288 below · depth 28 - Descent of Uₚ and a diamond to the Raynaud quotient
ModularCurve.exists_descent_raynaudQuotient_finPts_jHNeronObjectAtP_of_finPtsWitness12 below · depth 28 - Descent of Uₚ and ⟨ d⟩ to the torus quotient
ModularCurve.exists_descent_torusQuotient_of_descent_raynaudQuotient_finPts_jHNeronObjectAtP_of_finPtsWitness0 below · depth 28 - Torus quotient tower over 𝔽ₚ of the finite part
ModularCurve.exists_torusQuotient_exact_raynaudQuotient_finPts_jHNeronObjectAtP_of_finPtsWitness37 below · depth 28 - Verschiebung isomorphisms on the torus quotient of the special fibre
ModularCurve.exists_verschiebung_bialgEquiv_torusQuotient_finPts_jHNeronObjectAtP_of_finPtsWitness41 below · depth 28 - Cartier-dual points of a reduced p^N-killed Hopf algebra
CartierDual.algHom_apply_eq_algebraMap_apply_one_of_isReduced_of_nsmulAlgHom_pow_eq_zmodp2 below · depth 29 - Reduced Cartier dual makes Verschiebung a bialgebra automorphism
HopfAlgebra.exists_bialgEquiv_forall_cartierDual_map_eq_pow_of_isReduced_cartierDual_zmodp2 below · depth 29 - Cartier dual of a base-changed group algebra is reduced
HopfAlgebra.isReduced_cartierDual_baseChange_addMonoidAlgebra0 below · depth 29 - Reducedness of the Cartier dual descends along field extensions
HopfAlgebra.isReduced_cartierDual_of_isReduced_cartierDual_baseChange0 below · depth 29 - Toric quotient tower is of multiplicative type
ModularCurve.exists_verschiebung_bialgEquiv_and_reducesToOne_and_tower_toricClosure_finitePart_jHNeronObjectAtP23 below · depth 29 - Level-one torus quotient is a form of 𝔽ₚ[(ℤ/p)^t]
ModularCurve.nonempty_bialgEquiv_baseChange_residueField_torusQuotient_one_addMonoidAlgebra_of_finPtsWitness22 below · depth 29 - Verschiebung, unit reduction, rank and local special fibre
HopfAlgebra.exists_verschiebung_bialgEquiv_and_sub_counit_mem_and_finrank_of_baseChange_bialgEquiv_addMonoidAlgebra_and_isLocalRing5 below · depth 30 - Descent of p^v-torsion kernels along a faithfully flat trivialisation
HopfAlgebra.ker_eq_torsionIdeal_of_baseChange_addMonoidAlgebra_of_surjective0 below · depth 30