Definitions/Def_GroupCohomology_TangentSpace.lean
Adjoint representation and dual-number lifts as one-cocycles
Throughout, k is a commutative ring, A a k-algebra (associative, with unit), G a group, and \rho_0 : G \to A^\times a homomorphism. The first construction is the conjugation action: Representation.adjointAux k u is the k-linear endomorphism a \mapsto u a u^{-1} of A attached to a unit u, and Representation.adjoint k ρ₀ is the representation g \mapsto (a \mapsto \rho_0(g)\,a\,\rho_0(g)^{-1}) of G on the k-module A, packaged as an object groupCohomology.adjointRep k ρ₀ of Rep k G; the auxiliary lemmas record that adjointAux is multiplicative and unital. The second construction works in the dual numbers A[\varepsilon] = A \oplus A\varepsilon (Mathlib's trivial square-zero extension): for a unit u \in A^\times and m \in A, TrivSqZeroExt.dualUnit u m is the unit of A[\varepsilon] with first component u and second component m u, i.e. (1 + \varepsilon m)u, together with its explicit inverse; the multiplication law \mathrm{dualUnit}(u,m)\,\mathrm{dualUnit}(v,n) = \mathrm{dualUnit}(uv,\; u n u^{-1} + m) is exactly the inhomogeneous one-cocycle identity for the adjoint action, and every unit of A[\varepsilon] whose first component is u is of this form.
The predicate groupCohomology.IsDualLift ρ₀ ρ says of a homomorphism \rho : G \to A[\varepsilon]^\times that its first component is \rho_0 pointwise. For such a \rho, dualLiftToCochain ρ₀ ρ is the function g \mapsto \rho(g)_\varepsilon\,\rho_0(g)^{-1}, shown to satisfy c(gh) = \rho_0(g)c(h)\rho_0(g)^{-1} + c(g), hence to lie in cocycles₁ (adjointRep k ρ₀) (dualLiftToCocycle); conversely cocycleToDualLift ρ₀ c is g \mapsto (1 + \varepsilon c(g))\rho_0(g). These are mutually inverse, giving the bijection dualLiftEquivCocycles₁ k ρ₀ between the subtype of lifts of \rho_0 to A[\varepsilon]^\times and Z^1(G, \operatorname{ad}\rho_0), with a separate extensionality lemma saying a lift is determined by its cochain.
Relation to Mathlib
Mathlib supplies the dual numbers A[\varepsilon] as TrivSqZeroExt, the category Rep k G and degree-one group cohomology (cocycles₁, mem_cocycles₁_iff); the conjugation representation of G on A through \rho_0, the units dualUnit of A[\varepsilon] lying over a given unit of A, and the dictionary between lifts to A[\varepsilon]^\times and one-cocycles are added here.
Where it is used
This is the algebraic half of the tangent-space computation for deformation functors: taking A a matrix algebra over a residue field k and A[\varepsilon] its dual numbers, framed lifts of a residual representation to k[\varepsilon] correspond to Z^1(G,\operatorname{ad}\bar\rho), and strict equivalence classes to H^1(G,\operatorname{ad}\bar\rho). Downstream modules use it for the coboundary description of strict equivalence, the resulting injection of strict classes into H^1, the continuity dictionary for lifts, and thence for finiteness of tangent spaces and Noetherianness of universal deformation rings.
References
- B. Mazur, Deforming Galois representations, in: Galois Groups over \mathbb{Q}, Mathematical Sciences Research Institute Publications 16, Springer, 1989, 385–437
- H. Darmon, F. Diamond and R. Taylor, Fermat's Last Theorem, in: Current Developments in Mathematics 1995, International Press, 1995, 1–154, §2.6
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 189 lines
- 27 declarations
- used in the statements of 51 theorems and imported by 52 proofs
- imports 0 definition modules
Source file: Definitions/Def_GroupCohomology_TangentSpace.lean
Imports
- only Mathlib
Declarations
- def
Representation.adjointAux - lemma
Representation.adjointAux_one - lemma
Representation.adjointAux_mul - def
Representation.adjoint - lemma
Representation.adjoint_apply - def
TrivSqZeroExt.dualUnit - lemma
TrivSqZeroExt.dualUnit_val_fst - lemma
TrivSqZeroExt.dualUnit_val_snd - lemma
TrivSqZeroExt.dualUnit_inv_val_fst - lemma
TrivSqZeroExt.dualUnit_inv_val_snd - lemma
TrivSqZeroExt.dualUnit_one_zero - lemma
TrivSqZeroExt.dualUnit_mul_dualUnit - lemma
TrivSqZeroExt.eq_dualUnit_of_fst_eq - abbrev
groupCohomology.adjointRep - lemma
groupCohomology.adjointRep_ρ_apply - def
groupCohomology.IsDualLift - def
groupCohomology.dualLiftToCochain - lemma
groupCohomology.dualLift_ext - lemma
groupCohomology.dualLiftToCochain_mem_cocycles₁ - def
groupCohomology.dualLiftToCocycle - lemma
groupCohomology.dualLiftToCocycle_coe - def
groupCohomology.cocycleToDualLift - lemma
groupCohomology.cocycleToDualLift_apply - lemma
groupCohomology.isDualLift_cocycleToDualLift - def
groupCohomology.dualLiftEquivCocycles₁ - lemma
groupCohomology.dualLiftEquivCocycles₁_apply - lemma
groupCohomology.dualLiftEquivCocycles₁_symm_apply
Source
import Mathlib open scoped DualNumber RightActions universe u namespace Representation variable (k : Type*) {A : Type*} [CommRing k] [Ring A] [Algebra k A] variable {G : Type*} [Monoid G] @[simps] def adjointAux (u : Aˣ) : A →ₗ[k] A where toFun a := ↑u * a * ↑u⁻¹ map_add' a b := by rw [mul_add, add_mul] map_smul' c a := by rw [RingHom.id_apply, Algebra.mul_smul_comm, Algebra.smul_mul_assoc] @[simp] lemma adjointAux_one : adjointAux k (1 : Aˣ) = LinearMap.id := by ext a simp lemma adjointAux_mul (u v : Aˣ) : adjointAux k (u * v) = (adjointAux k u).comp (adjointAux k v) := by ext a simp only [adjointAux_apply, LinearMap.comp_apply, mul_inv_rev, Units.val_mul, mul_assoc] def adjoint (ρ₀ : G →* Aˣ) : Representation k G A where toFun g := adjointAux k (ρ₀ g) map_one' := by ext a simp map_mul' g h := by ext a simp only [map_mul, adjointAux_mul, LinearMap.comp_apply, Module.End.mul_apply] @[simp] lemma adjoint_apply (ρ₀ : G →* Aˣ) (g : G) (a : A) : adjoint k ρ₀ g a = ↑(ρ₀ g) * a * ↑(ρ₀ g)⁻¹ := rfl end Representation namespace TrivSqZeroExt variable {A : Type*} [Ring A] def dualUnit (u : Aˣ) (m : A) : (A[ε])ˣ where val := ⟨↑u, m * ↑u⟩ inv := ⟨↑u⁻¹, -(↑u⁻¹ * m)⟩ val_inv := by refine TrivSqZeroExt.ext ?_ ?_ · simp only [fst_mul, fst_mk, fst_one, Units.mul_inv] · simp only [snd_mul, fst_mk, snd_mk, snd_one, smul_eq_mul, op_smul_eq_mul, mul_neg, Units.mul_inv_cancel_left, Units.mul_inv_cancel_right] exact neg_add_cancel m inv_val := by refine TrivSqZeroExt.ext ?_ ?_ · simp only [fst_mul, fst_mk, fst_one, Units.inv_mul] · simp only [snd_mul, fst_mk, snd_mk, snd_one, smul_eq_mul, op_smul_eq_mul, neg_mul, ← mul_assoc] exact add_neg_cancel _ @[simp] lemma dualUnit_val_fst (u : Aˣ) (m : A) : (dualUnit u m : A[ε]).fst = ↑u := rfl @[simp] lemma dualUnit_val_snd (u : Aˣ) (m : A) : (dualUnit u m : A[ε]).snd = m * ↑u := rfl @[simp] lemma dualUnit_inv_val_fst (u : Aˣ) (m : A) : (((dualUnit u m)⁻¹ : (A[ε])ˣ) : A[ε]).fst = ↑u⁻¹ := rfl @[simp] lemma dualUnit_inv_val_snd (u : Aˣ) (m : A) : (((dualUnit u m)⁻¹ : (A[ε])ˣ) : A[ε]).snd = -(↑u⁻¹ * m) := rfl @[simp] lemma dualUnit_one_zero : dualUnit (1 : Aˣ) (0 : A) = 1 := by apply Units.ext exact TrivSqZeroExt.ext (by simp) (by simp) lemma dualUnit_mul_dualUnit (u v : Aˣ) (m n : A) : dualUnit u m * dualUnit v n = dualUnit (u * v) (↑u * n * ↑u⁻¹ + m) := by apply Units.ext refine TrivSqZeroExt.ext (by simp) ?_ show (dualUnit u m : A[ε]).fst •> (dualUnit v n : A[ε]).snd + (dualUnit u m : A[ε]).snd <• (dualUnit v n : A[ε]).fst = (↑u * n * ↑u⁻¹ + m) * ↑(u * v) simp only [dualUnit_val_fst, dualUnit_val_snd, smul_eq_mul, op_smul_eq_mul, Units.val_mul, add_mul, mul_assoc, Units.inv_mul_cancel_left] lemma eq_dualUnit_of_fst_eq {w : (A[ε])ˣ} {u : Aˣ} (h : (w : A[ε]).fst = ↑u) : w = dualUnit u ((w : A[ε]).snd * ↑u⁻¹) := by apply Units.ext exact TrivSqZeroExt.ext h (Units.inv_mul_cancel_right _ u).symm end TrivSqZeroExt namespace groupCohomology open TrivSqZeroExt variable {k A G : Type u} [CommRing k] [Ring A] [Algebra k A] [Group G] noncomputable abbrev adjointRep (k : Type u) [CommRing k] [Algebra k A] (ρ₀ : G →* Aˣ) : Rep k G := Rep.of (Representation.adjoint k ρ₀) @[simp] lemma adjointRep_ρ_apply (ρ₀ : G →* Aˣ) (g : G) (a : A) : (adjointRep k ρ₀).ρ g a = ↑(ρ₀ g) * a * ↑(ρ₀ g)⁻¹ := rfl def IsDualLift (ρ₀ : G →* Aˣ) (ρ : G →* (A[ε])ˣ) : Prop := ∀ g, ((ρ g : A[ε])).fst = ↑(ρ₀ g) def dualLiftToCochain (ρ₀ : G →* Aˣ) (ρ : G →* (A[ε])ˣ) (g : G) : A := ((ρ g : A[ε])).snd * ↑(ρ₀ g)⁻¹ lemma dualLift_ext {ρ₀ : G →* Aˣ} {ρ ρ' : G →* (A[ε])ˣ} (hρ : IsDualLift ρ₀ ρ) (hρ' : IsDualLift ρ₀ ρ') (h : dualLiftToCochain ρ₀ ρ = dualLiftToCochain ρ₀ ρ') : ρ = ρ' := by refine MonoidHom.ext fun g => ?_ rw [eq_dualUnit_of_fst_eq (hρ g), eq_dualUnit_of_fst_eq (hρ' g)] exact congrArg _ (congrFun h g) lemma dualLiftToCochain_mem_cocycles₁ {ρ₀ : G →* Aˣ} {ρ : G →* (A[ε])ˣ} (hρ : IsDualLift ρ₀ ρ) : dualLiftToCochain ρ₀ ρ ∈ cocycles₁ (adjointRep k ρ₀) := by rw [mem_cocycles₁_iff] intro g h show dualLiftToCochain ρ₀ ρ (g * h) = ↑(ρ₀ g) * dualLiftToCochain ρ₀ ρ h * ↑(ρ₀ g)⁻¹ + dualLiftToCochain ρ₀ ρ g unfold dualLiftToCochain simp only [map_mul, Units.val_mul, snd_mul, mul_inv_rev, hρ g, hρ h, smul_eq_mul, op_smul_eq_mul, add_mul, mul_assoc, Units.mul_inv_cancel_left] noncomputable def dualLiftToCocycle (k : Type u) [CommRing k] [Algebra k A] {ρ₀ : G →* Aˣ} {ρ : G →* (A[ε])ˣ} (hρ : IsDualLift ρ₀ ρ) : cocycles₁ (adjointRep k ρ₀) := ⟨dualLiftToCochain ρ₀ ρ, dualLiftToCochain_mem_cocycles₁ hρ⟩ @[simp] lemma dualLiftToCocycle_coe {ρ₀ : G →* Aˣ} {ρ : G →* (A[ε])ˣ} (hρ : IsDualLift ρ₀ ρ) : ((dualLiftToCocycle k hρ : cocycles₁ (adjointRep k ρ₀)) : G → A) = dualLiftToCochain ρ₀ ρ := rfl noncomputable def cocycleToDualLift (ρ₀ : G →* Aˣ) (c : cocycles₁ (adjointRep k ρ₀)) : G →* (A[ε])ˣ where toFun g := dualUnit (ρ₀ g) (c g) map_one' := by simp only [map_one, cocycles₁_map_one, dualUnit_one_zero] map_mul' g h := by dsimp only rw [dualUnit_mul_dualUnit, ← map_mul ρ₀] congr 1 exact (mem_cocycles₁_iff (A := adjointRep k ρ₀) (c : G → A)).mp c.2 g h @[simp] lemma cocycleToDualLift_apply (ρ₀ : G →* Aˣ) (c : cocycles₁ (adjointRep k ρ₀)) (g : G) : cocycleToDualLift ρ₀ c g = dualUnit (ρ₀ g) (c g) := rfl lemma isDualLift_cocycleToDualLift (ρ₀ : G →* Aˣ) (c : cocycles₁ (adjointRep k ρ₀)) : IsDualLift ρ₀ (cocycleToDualLift ρ₀ c) := fun _ => rfl noncomputable def dualLiftEquivCocycles₁ (k : Type u) [CommRing k] [Algebra k A] (ρ₀ : G →* Aˣ) : {ρ : G →* (A[ε])ˣ // IsDualLift ρ₀ ρ} ≃ cocycles₁ (adjointRep k ρ₀) where toFun ρ := dualLiftToCocycle k ρ.2 invFun c := ⟨cocycleToDualLift ρ₀ c, isDualLift_cocycleToDualLift ρ₀ c⟩ left_inv ρ := by refine Subtype.ext (dualLift_ext (isDualLift_cocycleToDualLift ρ₀ _) ρ.2 (funext fun g => ?_)) show (dualUnit (ρ₀ g) (dualLiftToCochain ρ₀ ρ.1 g) : A[ε]).snd * ↑(ρ₀ g)⁻¹ = dualLiftToCochain ρ₀ ρ.1 g rw [dualUnit_val_snd] exact Units.mul_inv_cancel_right _ _ right_inv c := by refine Subtype.ext (funext fun g => ?_) show (dualUnit (ρ₀ g) ((c : G → A) g) : A[ε]).snd * ↑(ρ₀ g)⁻¹ = (c : G → A) g rw [dualUnit_val_snd] exact Units.mul_inv_cancel_right _ _ @[simp] lemma dualLiftEquivCocycles₁_apply (ρ₀ : G →* Aˣ) (ρ : {ρ : G →* (A[ε])ˣ // IsDualLift ρ₀ ρ}) : dualLiftEquivCocycles₁ k ρ₀ ρ = dualLiftToCocycle k ρ.2 := rfl @[simp] lemma dualLiftEquivCocycles₁_symm_apply (ρ₀ : G →* Aˣ) (c : cocycles₁ (adjointRep k ρ₀)) : ((dualLiftEquivCocycles₁ k ρ₀).symm c : G →* (A[ε])ˣ) = cocycleToDualLift ρ₀ c := rfl end groupCohomology
Statements phrased using this module (51)
- Tangent space bound on generators of the deformation ring
GaloisRep.DeformationRingData.exists_generators_maximalIdeal_card_le_finrank_span_dualNumberClasses6 below · depth 11 - Taylor–Wiles primes bounding first-order deformation classes
ResidualGaloisRep.exists_taylorWilesPrimes_finrank_span_dualNumberClasses_le_strictOrdinary1,836 below · depth 11 - Cyclotomic determinant over k[ε] means trace-zero cochain
GaloisRepAdic.detIsCyclotomic_iff_forall_trace_dualLiftToCochain_eq_zero0 below · depth 12 - Local bound for flat first-order deformation classes at p
GaloisRepAdic.exists_submodule_finrank_le_invariants_add_one_mem_of_isFlatAt756 below · depth 12 - Strictly ordinary first-order classes lie in a small local subspace at p
GaloisRepAdic.exists_submodule_finrank_le_invariants_add_one_mem_of_isStrictOrdinaryAt76 below · depth 12 - Unipotent deformations restrict into a small local subspace at ℓ
GaloisRepAdic.exists_submodule_finrank_le_invariants_mem_of_isUnipotentOnInertiaAt85 below · depth 12 - Local constancy and inertial vanishing of a dual-lift cochain
GaloisRepAdic.isLocallyConstant_dualLiftToCochain_and_eq_zero_of_isUnramifiedAt0 below · depth 12 - Equality of H¹(ℚ,ad⁰ρ̄) classes versus strict conjugacy of dual lifts
ResidualGaloisRep.H1Pi_adZero_eq_iff_exists_dualNumber_conj1 below · depth 12 - A framed first-order deformation is a dual-lift module
GaloisRepAdic.exists_addEquiv_prod_dualLiftModuleAct_of_isDualLift0 below · depth 13 - Flat local classes at p: dimension at most h⁰+1
ResidualGaloisRep.finiteDimensional_localFlatClasses_and_finrank_le753 below · depth 13 - Strict equivalence of dual-number lifts versus coboundaries
groupCohomology.dualLiftToCochain_sub_mem_oneCoboundaries_iff0 below · depth 13 - Unipotent first-order lifts on I are coboundaries there
groupCohomology.dualLift_unipotentOn_iff_exists_cochain_eq_sub_conj0 below · depth 13 - Flat bound for H¹_f(ℚₚ,adρ̄), p odd
ResidualGaloisRep.finiteDimensional_localFlatClassesAd_and_finrank_le729 below · depth 14 - Local flat classes: from ad⁰ to ad, one dimension gained
ResidualGaloisRep.finrank_localFlatClasses_add_one_le_finrank_localFlatClassesAd45 below · depth 14 - Local flatness of a cocycle forces flatness of ρ̄⊕ρ̄
ResidualGaloisRep.isLocallyFlatCocycleAd_zero_of_isLocallyFlatCocycle2 below · depth 14 - A non-zero locally flat scalar cocycle for ad ρ̄
ResidualGaloisRep.exists_isLocallyFlatCocycleAd_smul_one41 below · depth 15 - Unipotent, connected or ordinary trichotomy at p for finite flat ρ̄
ResidualGaloisRep.exists_unipotent_or_connected_model_or_ordinary_of_isLocallyFlatCocycleAd45 below · depth 15 - Flat local bound for connected models of ad ρ̄
ResidualGaloisRep.finiteDimensional_localFlatClassesAd_and_finrank_le_of_isLocalRing_baseChange446 below · depth 15 - Unipotent flat local bound: dim H¹_f ≤ h⁰ + 1
ResidualGaloisRep.finiteDimensional_localFlatClassesAd_and_finrank_le_of_isLocalRing_cartierDual438 below · depth 15 - Flat local bound for ordinary ρ̄ at p
ResidualGaloisRep.finiteDimensional_localFlatClassesAd_and_finrank_le_of_ordinary332 below · depth 15 - Flat classes for ad⁰ map into flat classes for ad
ResidualGaloisRep.map_localFlatClasses_le_localFlatClassesAd0 below · depth 15 - Inertia at p acts non-trivially on p-th roots of unity
ExtCitation.exists_localAut_mem_inertiaSubgroupIn_forall_pow_eq_and_not_modEq_one5 below · depth 16 - Dual-lift module of a scalar cocycle as equivariant quotient
ResidualGaloisRep.exists_cocycle_smul_one_surjective_pi_dualLiftModuleActAd0 below · depth 16 - Finite flat model for ̄ V from a flat ad-cocycle
ResidualGaloisRep.exists_finiteFlat_padicInt_model_of_isLocallyFlatCocycleAd1 below · depth 16 - Honda-system model bounding local flat classes of ad ρ̄
ResidualGaloisRep.exists_hondaSystem_finrank_endHonda_le_injective_of_isLocalRing_cartierDual433 below · depth 16 - Cyclotomic inertia subspace, or a model with local Cartier dual
ResidualGaloisRep.exists_submodule_inertia_eq_smul_and_unipotent_model_of_eq_bot37 below · depth 16 - Connectedness criterion for a finite flat model of ̄ V⊕̄ V
ResidualGaloisRep.exists_submodule_inertia_sub_mem_and_connected_model_of_eq_top33 below · depth 16 - Cartier-dual unipotent model and isomorphic local flat classes
ResidualGaloisRep.exists_unipotent_model_and_linearEquiv_localFlatClassesAd_of_isLocalRing_baseChange20 below · depth 16 - Dimension bound for ordinary unit classes in H¹(ℚₚ,ad ρ̄)
ResidualGaloisRep.finiteDimensional_ordinaryUnitClassesAd_and_finrank_le281 below · depth 16 - Finiteness of k from a finite flat trivial deformation
ResidualGaloisRep.finite_of_isLocallyFlatCocycleAd_zero0 below · depth 16 - Flat classes are ordinary unit classes at p
ResidualGaloisRep.unitRootInertia_trivial_and_localFlatClassesAd_le_ordinaryUnitClassesAd81 below · depth 16 - Local finite level implies global finite level
ExtCitation.exists_finiteDimensional_fixingSubgroup_comap_primeLocalToGlobal_le6 below · depth 17 - Kummer-type splitting of inertia for p-torsion Hopf algebras over ℤₚ
HopfAlgebra.exists_units_forall_inertia_apply_eq_of_inertiaCyclotomic_submonoid_padicInt48 below · depth 17 - Unramified additive characters of G_{ℚ_p} span at most a line
PadicAlgCl.finrank_span_addChar_inertia_eq_zero_finiteLevel_le_one5 below · depth 17 - ℚ̄ₚ-points of a module-finite ℤₚ-algebra lie in one finite extension
PadicInt.exists_intermediateField_finiteDimensional_forall_algHom_apply_mem0 below · depth 17 - The cyclotomically twisted dual of a residual representation
ResidualGaloisRep.exists_dualTwist_linearEquiv_dual0 below · depth 17 - Local flat classes inject into Honda self-extensions
ResidualGaloisRep.exists_injective_localFlatClassesAd_selfExt_of_hondaSystem_model428 below · depth 17 - Flat cocycles are cohomologous to ordinary flat cocycles
ResidualGaloisRep.exists_isOrdinaryCocycleAd_of_isLocallyFlatCocycleAd58 below · depth 17 - Unipotent finite flat model of ̄ V from one of ̄ V⊕̄ V
ResidualGaloisRep.exists_unipotent_model_V_of_isLocalRing_cartierDual97 below · depth 17 - Unipotent flat model for the twisted dual ̄ V^∨(1)
ResidualGaloisRep.exists_unipotent_model_dualTwist_of_isLocalRing_baseChange16 below · depth 17 - Honda system endomorphisms bounded by local invariants of ad ρ̄
ResidualGaloisRep.finrank_endHonda_le_finrank_invariants_of_hondaSystem_model362 below · depth 17 - Local invariants of ad ρ̄ under Cartier dual twist
ResidualGaloisRep.finrank_invariants_adRep_eq_of_dualTwist0 below · depth 17 - Flat classes in ad ρ̄ and in its cyclotomic dual twist
ResidualGaloisRep.nonempty_localFlatClassesAd_linearEquiv_of_dualTwist13 below · depth 17 - Unit-root inertia classes in H¹ span at most a line
groupCohomology.finrank_span_H1_unitRootInertia_le_one279 below · depth 17 - Flat classes in H¹(ℚₚ,adρ̄) inject into Honda self-extensions
ResidualGaloisRep.exists_injective_flatClassSet_selfExt_of_hondaSystem_model423 below · depth 18 - Locally flat ad ρ̄-cocycles are closed under addition
ResidualGaloisRep.isLocallyFlatCocycleAd_add4 below · depth 18 - Finite-level 1-cocycles of a non-cyclotomic line have dimension ≤ 2
groupCohomology.finrank_cocycles_level_le_two_of_finrank_eq_one_of_not_cyclotomic255 below · depth 18 - Unit-inertia finite-level cocycles in 𝔽ₚ(ω) span at most a plane
groupCohomology.finrank_cocycles_ofChar_cycloChar_level_unitRootInertia_le_two55 below · depth 18 - Unit-root inertia moves p-th roots of valuation prime to p
PadicAlgCl.exists_mem_unitRootInertia_apply_ne_of_not_dvd_valuation26 below · depth 19 - Fontaine–Conrad presentation of a locally flat ad-cocycle
ResidualGaloisRep.exists_fontaineConradPresentation_of_isLocallyFlatCocycleAd206 below · depth 19 - Unipotent models of locally flat first-order deformations of ρ̄
ResidualGaloisRep.exists_unipotent_model_of_isLocallyFlatCocycleAd_of_isLocalRing_cartierDual71 below · depth 20