Definitions/Def_Dieudonne_WittVectorHom.lean
Truncated Witt functoriality and the Dieudonné datum on Hom(G, Wₙ)
Fix a prime p and n\in\mathbb N. The first part equips Mathlib's TruncatedWittVector p n with the operations obtained by descent along the surjection WittVector.truncate n: Deformation.TruncWitt.map f, the ring homomorphism W_n(R)\to W_n(S) induced by a ring homomorphism f\colon R\to S, which acts coefficientwise ((\mathrm{map}\,f\,x)_i=f(x_i)) and is functorial and injective for injective f; Deformation.TruncWitt.verschiebung, the additive map with (Vx)_0=0 and (Vx)_{i+1}=x_i; Deformation.TruncWitt.shift, the additive injection W_n(R)\to W_{n+1}(R), (x_0,\dots,x_{n-1})\mapsto(0,x_0,\dots,x_{n-1}), compatible with V and with the truncations W_{m}\to W_n (n\le m); and Deformation.TruncWitt.frobeniusFun, defined as the coefficientwise p-th power, which agrees with the truncation of WittVector.frobenius when R has characteristic p, is additive as soon as p=0 in R, and then satisfies FV=VF=p.
The second part fixes a commutative ring R and an R-bialgebra A (thought of as the coordinate ring of an affine commutative group scheme G). Deformation.wittHom R p n A is the additive subgroup of W_n(A) of those x with W_n(\Delta)(x)=W_n(\iota_1)(x)+W_n(\iota_2)(x) in W_n(A\otimes_R A), where \Delta is the comultiplication and \iota_1,\iota_2 the two inclusions; so it is a predicate on points of W_n with values in A, cutting out the homomorphisms G\to W_n. For such x it is proved that W_n(f*g)(x)=W_n(f)(x)+W_n(g)(x) for the convolution product of two T-points f,g of G, and that the counit kills every coefficient of x. On this subgroup are defined: wittHomMap p n φ for a bialgebra homomorphism \varphi\colon A\to B; wittHomVerschiebung; wittHomFrobenius and, when R has characteristic p, the structure wittHomDieudonneDatum R p n A, a DieudonneDatum (p : ℤ) on wittHom R p n A whose fields are these F and V as \mathbb Z-linear maps together with the two identities F\circ V=V\circ F=p; and the transition maps wittHomShift (injective) and wittHomRestrict, with \mathrm{restrict}\circ\mathrm{shift}=V, \mathrm{shift}\circ\mathrm{restrict}=V, and commutation of all of these with F, V and wittHomMap.
Relation to Mathlib
Mathlib supplies TruncatedWittVector, WittVector.truncate, WittVector.verschiebung and WittVector.frobenius, but not the induced coefficientwise functoriality, Verschiebung, shift or Frobenius on truncated Witt vectors; these are built here by descending the corresponding maps on W(R) along WittVector.truncate. The group of homomorphisms from a bialgebra's group scheme to W_n, and its F, V structure, have no Mathlib counterpart.
Where it is used
The colimit of the groups wittHom R p n A along the shift maps is the Dieudonné module of a finite commutative unipotent group scheme over a field of characteristic p; this is the special-fibre input to Fontaine's classification of finite flat group schemes over \mathbb Z_p by finite Honda systems, and so to the computation of the tangent space of the flat deformation functor used in the Taylor–Wiles argument.
References
- M. Demazure, Lectures on p-divisible groups, Lecture Notes in Mathematics 302, Springer, 1972
- J.-M. Fontaine, Groupes p-divisibles sur les corps locaux, Astérisque 47–48, Société Mathématique de France, 1977
- H. Darmon, F. Diamond and R. Taylor, Fermat's Last Theorem, in: Current Developments in Mathematics 1995, International Press, 1995, 1–154
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 517 lines
- 77 declarations
- used in the statements of 96 theorems and imported by 102 proofs
- imports 1 definition modules
Source file: Definitions/Def_Dieudonne_WittVectorHom.lean
Imports
Declarations
- def
Deformation.TruncWitt.map - theorem
Deformation.TruncWitt.map_truncate - theorem
Deformation.TruncWitt.coeff_map - theorem
Deformation.TruncWitt.map_map - theorem
Deformation.TruncWitt.map_comp - theorem
Deformation.TruncWitt.map_id - theorem
Deformation.TruncWitt.map_injective - theorem
Deformation.TruncWitt.map_congr - def
Deformation.TruncWitt.verschiebung - theorem
Deformation.TruncWitt.verschiebung_truncate - theorem
Deformation.TruncWitt.coeff_verschiebung_zero - theorem
Deformation.TruncWitt.coeff_verschiebung_succ - theorem
Deformation.TruncWitt.map_verschiebung - def
Deformation.TruncWitt.frobeniusFun - theorem
Deformation.TruncWitt.coeff_frobeniusFun - theorem
Deformation.TruncWitt.map_frobeniusFun - theorem
Deformation.TruncWitt.frobeniusFun_verschiebung - theorem
Deformation.TruncWitt.subsingleton_or_charP - instance
Deformation.TruncWitt.instSubsingleton - theorem
Deformation.TruncWitt.frobeniusFun_truncate - theorem
Deformation.TruncWitt.frobeniusFun_add - theorem
Deformation.TruncWitt.frobeniusFun_zero - theorem
Deformation.TruncWitt.verschiebung_frobeniusFun - theorem
Deformation.TruncWitt.frobeniusFun_verschiebung_eq_smul - def
Deformation.TruncWitt.shift - theorem
Deformation.TruncWitt.shift_truncate - theorem
Deformation.TruncWitt.coeff_shift_zero - theorem
Deformation.TruncWitt.coeff_shift_succ - theorem
Deformation.TruncWitt.shift_injective - theorem
Deformation.TruncWitt.map_shift - theorem
Deformation.TruncWitt.truncate_shift - theorem
Deformation.TruncWitt.shift_truncate_succ - theorem
Deformation.TruncWitt.frobeniusFun_shift - theorem
Deformation.TruncWitt.map_truncateLE - theorem
Deformation.TruncWitt.verschiebung_truncateLE - theorem
Deformation.TruncWitt.frobeniusFun_truncateLE - abbrev
Deformation.comulRingHom - def
Deformation.wittHom - theorem
Deformation.mem_wittHom_iff - theorem
Deformation.map_convMul_of_mem_wittHom - theorem
Deformation.map_counit_of_mem_wittHom - theorem
Deformation.counit_coeff_of_mem_wittHom - theorem
Deformation.map_mem_wittHom - def
Deformation.wittHomMap - theorem
Deformation.coe_wittHomMap - theorem
Deformation.coeff_wittHomMap - theorem
Deformation.wittHomMap_injective - theorem
Deformation.verschiebung_mem_wittHom - def
Deformation.wittHomVerschiebung - theorem
Deformation.coe_wittHomVerschiebung - theorem
Deformation.natCast_eq_zero_of_algebra - theorem
Deformation.frobeniusFun_mem_wittHom - def
Deformation.wittHomFrobenius - theorem
Deformation.coe_wittHomFrobenius - theorem
Deformation.coeff_wittHomFrobenius - theorem
Deformation.wittHomFrobenius_verschiebung - theorem
Deformation.wittHomVerschiebung_frobenius - def
Deformation.wittHomDieudonneDatum - theorem
Deformation.wittHomDieudonneDatum_F_apply - theorem
Deformation.wittHomDieudonneDatum_V_apply - theorem
Deformation.wittHomMap_frobenius - theorem
Deformation.wittHomMap_verschiebung - theorem
Deformation.shift_mem_wittHom - def
Deformation.wittHomShift - theorem
Deformation.coe_wittHomShift - theorem
Deformation.wittHomShift_injective - theorem
Deformation.truncateLE_mem_wittHom - def
Deformation.wittHomRestrict - theorem
Deformation.coe_wittHomRestrict - theorem
Deformation.wittHomRestrict_shift - theorem
Deformation.wittHomShift_restrict - theorem
Deformation.wittHomShift_verschiebung - theorem
Deformation.wittHomShift_frobenius - theorem
Deformation.wittHomRestrict_verschiebung - theorem
Deformation.wittHomRestrict_frobenius - theorem
Deformation.wittHomMap_shift - theorem
Deformation.wittHomMap_restrict
Source
import Mathlib import Definitions.Def_Dieudonne_DatumAndHonda set_option autoImplicit false open Function universe u v w namespace Deformation namespace TruncWitt variable {p : ℕ} [hp : Fact p.Prime] {n : ℕ} variable {R : Type u} {S : Type v} {T : Type w} [CommRing R] [CommRing S] [CommRing T] noncomputable def map (f : R →+* S) : TruncatedWittVector p n R →+* TruncatedWittVector p n S := RingHom.liftOfRightInverse (WittVector.truncate n) TruncatedWittVector.out TruncatedWittVector.truncateFun_out ⟨(WittVector.truncate n).comp (WittVector.map f), fun x hx => by rw [WittVector.mem_ker_truncate] at hx simp only [RingHom.mem_ker, RingHom.comp_apply, TruncatedWittVector.ext_iff, WittVector.coeff_truncate, WittVector.map_coeff, TruncatedWittVector.coeff_zero] exact fun i => by rw [hx i i.isLt]; exact map_zero f⟩ @[simp] theorem map_truncate (f : R →+* S) (x : WittVector p R) : map f (WittVector.truncate n x) = WittVector.truncate n (WittVector.map f x) := RingHom.liftOfRightInverse_comp_apply _ _ _ _ _ @[simp] theorem coeff_map (f : R →+* S) (x : TruncatedWittVector p n R) (i : Fin n) : (map f x).coeff i = f (x.coeff i) := by obtain ⟨x, rfl⟩ := WittVector.truncate_surjective p n R x simp [WittVector.coeff_truncate, WittVector.map_coeff] theorem map_map (f : R →+* S) (g : S →+* T) (x : TruncatedWittVector p n R) : map g (map f x) = map (g.comp f) x := TruncatedWittVector.ext fun i => by simp only [coeff_map, RingHom.comp_apply] theorem map_comp (f : R →+* S) (g : S →+* T) : (map (p := p) (n := n) g).comp (map f) = map (g.comp f) := RingHom.ext fun x => map_map f g x @[simp] theorem map_id (x : TruncatedWittVector p n R) : map (RingHom.id R) x = x := TruncatedWittVector.ext fun i => by simp only [coeff_map, RingHom.id_apply] theorem map_injective {f : R →+* S} (hf : Injective f) : Injective (map (p := p) (n := n) f) := fun x y h => TruncatedWittVector.ext fun i => hf (by have := congrArg (TruncatedWittVector.coeff i) h simpa only [coeff_map] using this) theorem map_congr {f g : R →+* S} {x : TruncatedWittVector p n R} (h : ∀ i, f (x.coeff i) = g (x.coeff i)) : map f x = map g x := TruncatedWittVector.ext fun i => by simp only [coeff_map, h i] noncomputable def verschiebung : TruncatedWittVector p n R →+ TruncatedWittVector p n R := AddMonoidHom.liftOfRightInverse (WittVector.truncate n).toAddMonoidHom TruncatedWittVector.out (fun x => TruncatedWittVector.truncateFun_out x) ⟨(WittVector.truncate n).toAddMonoidHom.comp WittVector.verschiebung, fun x hx => by change (WittVector.truncate n) x = 0 at hx rw [← RingHom.mem_ker, WittVector.mem_ker_truncate] at hx change (WittVector.truncate n) (WittVector.verschiebung x) = 0 ext ⟨i, hi⟩ simp only [WittVector.coeff_truncate, TruncatedWittVector.coeff_zero] cases i with | zero => exact WittVector.verschiebung_coeff_zero x | succ j => rw [WittVector.verschiebung_coeff_succ] exact hx j (Nat.lt_of_succ_lt hi)⟩ @[simp] theorem verschiebung_truncate (x : WittVector p R) : verschiebung (WittVector.truncate n x) = WittVector.truncate n (WittVector.verschiebung x) := AddMonoidHom.liftOfRightInverse_comp_apply _ _ (fun x => TruncatedWittVector.truncateFun_out x) _ _ theorem coeff_verschiebung_zero (x : TruncatedWittVector p (n + 1) R) : (verschiebung x).coeff 0 = 0 := by obtain ⟨x, rfl⟩ := WittVector.truncate_surjective p (n + 1) R x rw [verschiebung_truncate, WittVector.coeff_truncate] exact WittVector.verschiebung_coeff_zero x theorem coeff_verschiebung_succ (x : TruncatedWittVector p n R) (i : ℕ) (hi : i + 1 < n) : (verschiebung x).coeff ⟨i + 1, hi⟩ = x.coeff ⟨i, Nat.lt_of_succ_lt hi⟩ := by obtain ⟨x, rfl⟩ := WittVector.truncate_surjective p n R x rw [verschiebung_truncate, WittVector.coeff_truncate, WittVector.coeff_truncate] exact WittVector.verschiebung_coeff_succ x i theorem map_verschiebung (f : R →+* S) (x : TruncatedWittVector p n R) : map f (verschiebung x) = verschiebung (map f x) := by obtain ⟨x, rfl⟩ := WittVector.truncate_surjective p n R x rw [verschiebung_truncate, map_truncate, map_truncate, verschiebung_truncate, WittVector.map_verschiebung] def frobeniusFun (x : TruncatedWittVector p n R) : TruncatedWittVector p n R := TruncatedWittVector.mk p fun i => x.coeff i ^ p omit hp in @[simp] theorem coeff_frobeniusFun (x : TruncatedWittVector p n R) (i : Fin n) : (frobeniusFun x).coeff i = x.coeff i ^ p := TruncatedWittVector.coeff_mk _ _ theorem map_frobeniusFun (f : R →+* S) (x : TruncatedWittVector p n R) : map f (frobeniusFun x) = frobeniusFun (map f x) := TruncatedWittVector.ext fun i => by simp only [coeff_map, coeff_frobeniusFun, map_pow] theorem frobeniusFun_verschiebung (x : TruncatedWittVector p n R) : frobeniusFun (verschiebung x) = verschiebung (frobeniusFun x) := by refine TruncatedWittVector.ext fun ⟨i, hi⟩ => ?_ cases n with | zero => exact absurd hi (Nat.not_lt_zero _) | succ m => cases i with | zero => change (frobeniusFun (verschiebung x)).coeff 0 = (verschiebung (frobeniusFun x)).coeff 0 rw [coeff_frobeniusFun, coeff_verschiebung_zero, coeff_verschiebung_zero, zero_pow hp.out.ne_zero] | succ j => rw [coeff_frobeniusFun, coeff_verschiebung_succ _ _ hi, coeff_verschiebung_succ _ _ hi, coeff_frobeniusFun] theorem subsingleton_or_charP (hR : (p : R) = 0) : Subsingleton R ∨ CharP R p := by rcases subsingleton_or_nontrivial R with h | h · exact Or.inl h · refine Or.inr ((CharP.charP_iff_prime_eq_zero hp.out).2 hR) instance instSubsingleton [Subsingleton R] : Subsingleton (TruncatedWittVector p n R) := ⟨fun _ _ => TruncatedWittVector.ext fun _ => Subsingleton.elim _ _⟩ theorem frobeniusFun_truncate [CharP R p] (x : WittVector p R) : frobeniusFun (WittVector.truncate n x) = WittVector.truncate n (WittVector.frobenius x) := TruncatedWittVector.ext fun i => by simp only [coeff_frobeniusFun, WittVector.coeff_truncate, WittVector.coeff_frobenius_charP] theorem frobeniusFun_add (hR : (p : R) = 0) (x y : TruncatedWittVector p n R) : frobeniusFun (x + y) = frobeniusFun x + frobeniusFun y := by rcases subsingleton_or_charP hR with h | h · exact Subsingleton.elim _ _ · obtain ⟨x, rfl⟩ := WittVector.truncate_surjective p n R x obtain ⟨y, rfl⟩ := WittVector.truncate_surjective p n R y rw [← map_add, frobeniusFun_truncate, frobeniusFun_truncate, frobeniusFun_truncate, map_add, map_add] theorem frobeniusFun_zero : frobeniusFun (0 : TruncatedWittVector p n R) = 0 := TruncatedWittVector.ext fun i => by simp only [coeff_frobeniusFun, TruncatedWittVector.coeff_zero, zero_pow hp.out.ne_zero] theorem verschiebung_frobeniusFun (hR : (p : R) = 0) (x : TruncatedWittVector p n R) : verschiebung (frobeniusFun x) = (p : ℤ) • x := by rcases subsingleton_or_charP hR with h | h · exact Subsingleton.elim _ _ · obtain ⟨x, rfl⟩ := WittVector.truncate_surjective p n R x rw [frobeniusFun_truncate, verschiebung_truncate, WittVector.verschiebung_frobenius, ← nsmul_eq_mul', map_nsmul, natCast_zsmul] theorem frobeniusFun_verschiebung_eq_smul (hR : (p : R) = 0) (x : TruncatedWittVector p n R) : frobeniusFun (verschiebung x) = (p : ℤ) • x := by rw [frobeniusFun_verschiebung, verschiebung_frobeniusFun hR] noncomputable def shift : TruncatedWittVector p n R →+ TruncatedWittVector p (n + 1) R := AddMonoidHom.liftOfRightInverse (WittVector.truncate n).toAddMonoidHom TruncatedWittVector.out (fun x => TruncatedWittVector.truncateFun_out x) ⟨(WittVector.truncate (n + 1)).toAddMonoidHom.comp WittVector.verschiebung, fun x hx => by change (WittVector.truncate n) x = 0 at hx rw [← RingHom.mem_ker, WittVector.mem_ker_truncate] at hx change (WittVector.truncate (n + 1)) (WittVector.verschiebung x) = 0 ext ⟨i, hi⟩ simp only [WittVector.coeff_truncate, TruncatedWittVector.coeff_zero] cases i with | zero => exact WittVector.verschiebung_coeff_zero x | succ j => rw [WittVector.verschiebung_coeff_succ] exact hx j (Nat.lt_of_succ_lt_succ hi)⟩ @[simp] theorem shift_truncate (x : WittVector p R) : shift (WittVector.truncate n x) = WittVector.truncate (n + 1) (WittVector.verschiebung x) := AddMonoidHom.liftOfRightInverse_comp_apply _ _ (fun x => TruncatedWittVector.truncateFun_out x) _ _ theorem coeff_shift_zero (x : TruncatedWittVector p n R) : (shift x).coeff 0 = 0 := by obtain ⟨x, rfl⟩ := WittVector.truncate_surjective p n R x rw [shift_truncate, WittVector.coeff_truncate] exact WittVector.verschiebung_coeff_zero x theorem coeff_shift_succ (x : TruncatedWittVector p n R) (i : Fin n) : (shift x).coeff i.succ = x.coeff i := by obtain ⟨x, rfl⟩ := WittVector.truncate_surjective p n R x rw [shift_truncate, WittVector.coeff_truncate, WittVector.coeff_truncate] exact WittVector.verschiebung_coeff_succ x i theorem shift_injective : Injective (shift (p := p) (n := n) (R := R)) := fun x y h => TruncatedWittVector.ext fun i => by rw [← coeff_shift_succ x i, ← coeff_shift_succ y i, h] theorem map_shift (f : R →+* S) (x : TruncatedWittVector p n R) : map f (shift x) = shift (map f x) := by obtain ⟨x, rfl⟩ := WittVector.truncate_surjective p n R x rw [shift_truncate, map_truncate, map_truncate, shift_truncate, WittVector.map_verschiebung] theorem truncate_shift (x : TruncatedWittVector p n R) : TruncatedWittVector.truncate (Nat.le_succ n) (shift x) = verschiebung x := by obtain ⟨x, rfl⟩ := WittVector.truncate_surjective p n R x rw [shift_truncate, TruncatedWittVector.truncate_wittVector_truncate, verschiebung_truncate] theorem shift_truncate_succ (y : TruncatedWittVector p (n + 1) R) : shift (TruncatedWittVector.truncate (Nat.le_succ n) y) = verschiebung y := by obtain ⟨y, rfl⟩ := WittVector.truncate_surjective p (n + 1) R y rw [TruncatedWittVector.truncate_wittVector_truncate, shift_truncate, verschiebung_truncate] theorem frobeniusFun_shift (x : TruncatedWittVector p n R) : frobeniusFun (shift x) = shift (frobeniusFun x) := by refine TruncatedWittVector.ext fun i => ?_ refine Fin.cases ?_ (fun j => ?_) i · rw [coeff_frobeniusFun, coeff_shift_zero, coeff_shift_zero, zero_pow hp.out.ne_zero] · rw [coeff_frobeniusFun, coeff_shift_succ, coeff_shift_succ, coeff_frobeniusFun] theorem map_truncateLE {m : ℕ} (hm : n ≤ m) (f : R →+* S) (x : TruncatedWittVector p m R) : map f (TruncatedWittVector.truncate hm x) = TruncatedWittVector.truncate hm (map f x) := TruncatedWittVector.ext fun i => by simp only [coeff_map, TruncatedWittVector.coeff_truncate] theorem verschiebung_truncateLE {m : ℕ} (hm : n ≤ m) (x : TruncatedWittVector p m R) : verschiebung (TruncatedWittVector.truncate hm x) = TruncatedWittVector.truncate hm (verschiebung x) := by obtain ⟨x, rfl⟩ := WittVector.truncate_surjective p m R x rw [TruncatedWittVector.truncate_wittVector_truncate, verschiebung_truncate, verschiebung_truncate, TruncatedWittVector.truncate_wittVector_truncate] theorem frobeniusFun_truncateLE {m : ℕ} (hm : n ≤ m) (x : TruncatedWittVector p m R) : frobeniusFun (TruncatedWittVector.truncate hm x) = TruncatedWittVector.truncate hm (frobeniusFun x) := TruncatedWittVector.ext fun i => by simp only [coeff_frobeniusFun, TruncatedWittVector.coeff_truncate] end TruncWitt section WittHom variable (R : Type u) [CommRing R] (p : ℕ) [hp : Fact p.Prime] (n : ℕ) variable (A : Type v) [CommRing A] [Bialgebra R A] open TruncWitt noncomputable abbrev comulRingHom : A →+* TensorProduct R A A := (Bialgebra.comulAlgHom R A).toRingHom noncomputable def wittHom : AddSubgroup (TruncatedWittVector p n A) where carrier := {x | map (comulRingHom R A) x = map (Algebra.TensorProduct.includeLeft : A →ₐ[R] TensorProduct R A A).toRingHom x + map (Algebra.TensorProduct.includeRight : A →ₐ[R] TensorProduct R A A).toRingHom x} zero_mem' := by simp add_mem' {x y} hx hy := by simp only [Set.mem_setOf_eq, map_add] at hx hy ⊢ rw [hx, hy]; abel neg_mem' {x} hx := by simp only [Set.mem_setOf_eq, map_neg] at hx ⊢ rw [hx]; abel variable {R p n A} theorem mem_wittHom_iff (x : TruncatedWittVector p n A) : x ∈ wittHom R p n A ↔ map (comulRingHom R A) x = map (Algebra.TensorProduct.includeLeft : A →ₐ[R] TensorProduct R A A).toRingHom x + map (Algebra.TensorProduct.includeRight : A →ₐ[R] TensorProduct R A A).toRingHom x := Iff.rfl theorem map_convMul_of_mem_wittHom {T : Type w} [CommRing T] [Algebra R T] {x : TruncatedWittVector p n A} (hx : x ∈ wittHom R p n A) (f g : WithConv (A →ₐ[R] T)) : map (f * g).ofConv.toRingHom x = map f.ofConv.toRingHom x + map g.ofConv.toRingHom x := by have key : (f * g).ofConv.toRingHom = (Algebra.TensorProduct.lift f.ofConv g.ofConv (fun _ _ => Commute.all _ _)).toRingHom.comp (comulRingHom R A) := by refine RingHom.ext fun c => ?_ change (f * g) c = _ rw [AlgHom.convMul_apply] rfl rw [key, ← map_map, (mem_wittHom_iff x).1 hx, map_add, map_map, map_map] congr 1 · exact congrArg (fun h : A →+* T => map h x) (congrArg AlgHom.toRingHom (Algebra.TensorProduct.lift_comp_includeLeft f.ofConv g.ofConv (fun _ _ => Commute.all _ _))) · exact congrArg (fun h : A →+* T => map h x) (congrArg AlgHom.toRingHom (Algebra.TensorProduct.lift_comp_includeRight f.ofConv g.ofConv (fun _ _ => Commute.all _ _))) theorem map_counit_of_mem_wittHom {x : TruncatedWittVector p n A} (hx : x ∈ wittHom R p n A) : map (Bialgebra.counitAlgHom R A).toRingHom x = 0 := by have h := map_convMul_of_mem_wittHom (T := A) hx 1 (WithConv.toConv (AlgHom.id R A)) rw [one_mul] at h have h1 : map (1 : WithConv (A →ₐ[R] A)).ofConv.toRingHom x = 0 := (add_right_cancel ((zero_add _).trans h)).symm have hfac : (1 : WithConv (A →ₐ[R] A)).ofConv.toRingHom = (algebraMap R A).comp (Bialgebra.counitAlgHom R A).toRingHom := by refine RingHom.ext fun c => ?_ simp [AlgHom.convOne_apply] rw [hfac, ← map_map] at h1 have hinj : Injective (map (p := p) (n := n) (algebraMap R A)) := map_injective fun r s hrs => by simpa using congrArg (Coalgebra.counit (R := R) (A := A)) hrs exact hinj (by rw [h1, map_zero]) theorem counit_coeff_of_mem_wittHom {x : TruncatedWittVector p n A} (hx : x ∈ wittHom R p n A) (i : Fin n) : Coalgebra.counit (R := R) (x.coeff i) = 0 := by have := congrArg (TruncatedWittVector.coeff i) (map_counit_of_mem_wittHom hx) simp only [coeff_map, TruncatedWittVector.coeff_zero] at this exact this section Map variable {B : Type w} [CommRing B] [Bialgebra R B] theorem map_mem_wittHom (φ : A →ₐc[R] B) {x : TruncatedWittVector p n A} (hx : x ∈ wittHom R p n A) : map (φ : A →ₐ[R] B).toRingHom x ∈ wittHom R p n B := by rw [mem_wittHom_iff] at hx ⊢ have hΔ : (comulRingHom R B).comp (φ : A →ₐ[R] B).toRingHom = (Algebra.TensorProduct.map (φ : A →ₐ[R] B) (φ : A →ₐ[R] B)).toRingHom.comp (comulRingHom R A) := by refine RingHom.ext fun a => ?_ exact (AlgHom.congr_fun (BialgHom.map_comp_comulAlgHom φ) a).symm have h₁ : (Algebra.TensorProduct.includeLeft : B →ₐ[R] TensorProduct R B B).toRingHom.comp (φ : A →ₐ[R] B).toRingHom = (Algebra.TensorProduct.map (φ : A →ₐ[R] B) (φ : A →ₐ[R] B)).toRingHom.comp (Algebra.TensorProduct.includeLeft : A →ₐ[R] TensorProduct R A A).toRingHom := by refine RingHom.ext fun a => ?_ simp have h₂ : (Algebra.TensorProduct.includeRight : B →ₐ[R] TensorProduct R B B).toRingHom.comp (φ : A →ₐ[R] B).toRingHom = (Algebra.TensorProduct.map (φ : A →ₐ[R] B) (φ : A →ₐ[R] B)).toRingHom.comp (Algebra.TensorProduct.includeRight : A →ₐ[R] TensorProduct R A A).toRingHom := by refine RingHom.ext fun a => ?_ simp rw [map_map, map_map, map_map, hΔ, h₁, h₂, ← map_map, ← map_map, ← map_map, hx, map_add] variable (p n) in noncomputable def wittHomMap (φ : A →ₐc[R] B) : wittHom R p n A →+ wittHom R p n B where toFun x := ⟨map (φ : A →ₐ[R] B).toRingHom x, map_mem_wittHom φ x.2⟩ map_zero' := Subtype.ext (by simp) map_add' _ _ := Subtype.ext (by simp) @[simp] theorem coe_wittHomMap (φ : A →ₐc[R] B) (x : wittHom R p n A) : (wittHomMap p n φ x : TruncatedWittVector p n B) = map (φ : A →ₐ[R] B).toRingHom x := rfl theorem coeff_wittHomMap (φ : A →ₐc[R] B) (x : wittHom R p n A) (i : Fin n) : (wittHomMap p n φ x : TruncatedWittVector p n B).coeff i = φ ((x : TruncatedWittVector p n A).coeff i) := coeff_map _ _ _ theorem wittHomMap_injective {φ : A →ₐc[R] B} (hφ : Injective φ) : Injective (wittHomMap p n φ) := fun _ _ h => Subtype.ext (map_injective (f := (φ : A →ₐ[R] B).toRingHom) hφ (congrArg Subtype.val h)) end Map theorem verschiebung_mem_wittHom {x : TruncatedWittVector p n A} (hx : x ∈ wittHom R p n A) : TruncWitt.verschiebung x ∈ wittHom R p n A := by rw [mem_wittHom_iff] at hx ⊢ rw [map_verschiebung, map_verschiebung, map_verschiebung, hx, map_add] variable (R p n A) in noncomputable def wittHomVerschiebung : wittHom R p n A →+ wittHom R p n A where toFun x := ⟨TruncWitt.verschiebung x, verschiebung_mem_wittHom x.2⟩ map_zero' := Subtype.ext (by simp) map_add' _ _ := Subtype.ext (by simp) @[simp] theorem coe_wittHomVerschiebung (x : wittHom R p n A) : (wittHomVerschiebung R p n A x : TruncatedWittVector p n A) = TruncWitt.verschiebung x := rfl section CharP variable [CharP R p] variable (R p) in omit hp in theorem natCast_eq_zero_of_algebra (B : Type w) [CommRing B] [Algebra R B] : (p : B) = 0 := by rw [← map_natCast (algebraMap R B), CharP.cast_eq_zero, map_zero] theorem frobeniusFun_mem_wittHom {x : TruncatedWittVector p n A} (hx : x ∈ wittHom R p n A) : TruncWitt.frobeniusFun x ∈ wittHom R p n A := by rw [mem_wittHom_iff] at hx ⊢ rw [map_frobeniusFun, map_frobeniusFun, map_frobeniusFun, hx, frobeniusFun_add (natCast_eq_zero_of_algebra R p _)] variable (R p n A) in noncomputable def wittHomFrobenius : wittHom R p n A →+ wittHom R p n A where toFun x := ⟨TruncWitt.frobeniusFun x, frobeniusFun_mem_wittHom x.2⟩ map_zero' := Subtype.ext frobeniusFun_zero map_add' _ _ := Subtype.ext (frobeniusFun_add (natCast_eq_zero_of_algebra R p A) _ _) @[simp] theorem coe_wittHomFrobenius (x : wittHom R p n A) : (wittHomFrobenius R p n A x : TruncatedWittVector p n A) = TruncWitt.frobeniusFun x := rfl theorem coeff_wittHomFrobenius (x : wittHom R p n A) (i : Fin n) : (wittHomFrobenius R p n A x : TruncatedWittVector p n A).coeff i = (x : TruncatedWittVector p n A).coeff i ^ p := coeff_frobeniusFun _ _ theorem wittHomFrobenius_verschiebung (x : wittHom R p n A) : wittHomFrobenius R p n A (wittHomVerschiebung R p n A x) = (p : ℤ) • x := Subtype.ext (frobeniusFun_verschiebung_eq_smul (natCast_eq_zero_of_algebra R p A) _) theorem wittHomVerschiebung_frobenius (x : wittHom R p n A) : wittHomVerschiebung R p n A (wittHomFrobenius R p n A x) = (p : ℤ) • x := Subtype.ext (verschiebung_frobeniusFun (natCast_eq_zero_of_algebra R p A) _) variable (R p n A) in noncomputable def wittHomDieudonneDatum : DieudonneDatum (p : ℤ) (wittHom R p n A) where F := (wittHomFrobenius R p n A).toIntLinearMap V := (wittHomVerschiebung R p n A).toIntLinearMap fv := LinearMap.ext fun x => wittHomFrobenius_verschiebung x vf := LinearMap.ext fun x => wittHomVerschiebung_frobenius x @[simp] theorem wittHomDieudonneDatum_F_apply (x : wittHom R p n A) : (wittHomDieudonneDatum R p n A).F x = wittHomFrobenius R p n A x := rfl @[simp] theorem wittHomDieudonneDatum_V_apply (x : wittHom R p n A) : (wittHomDieudonneDatum R p n A).V x = wittHomVerschiebung R p n A x := rfl theorem wittHomMap_frobenius {B : Type w} [CommRing B] [Bialgebra R B] (φ : A →ₐc[R] B) (x : wittHom R p n A) : wittHomMap p n φ (wittHomFrobenius R p n A x) = wittHomFrobenius R p n B (wittHomMap p n φ x) := Subtype.ext (map_frobeniusFun _ _) end CharP theorem wittHomMap_verschiebung {B : Type w} [CommRing B] [Bialgebra R B] (φ : A →ₐc[R] B) (x : wittHom R p n A) : wittHomMap p n φ (wittHomVerschiebung R p n A x) = wittHomVerschiebung R p n B (wittHomMap p n φ x) := Subtype.ext (map_verschiebung _ _) theorem shift_mem_wittHom {x : TruncatedWittVector p n A} (hx : x ∈ wittHom R p n A) : TruncWitt.shift x ∈ wittHom R p (n + 1) A := by rw [mem_wittHom_iff] at hx ⊢ rw [map_shift, map_shift, map_shift, hx, map_add] variable (R p n A) in noncomputable def wittHomShift : wittHom R p n A →+ wittHom R p (n + 1) A where toFun x := ⟨TruncWitt.shift x, shift_mem_wittHom x.2⟩ map_zero' := Subtype.ext (by simp) map_add' _ _ := Subtype.ext (by simp) @[simp] theorem coe_wittHomShift (x : wittHom R p n A) : (wittHomShift R p n A x : TruncatedWittVector p (n + 1) A) = TruncWitt.shift x := rfl theorem wittHomShift_injective : Injective (wittHomShift R p n A) := fun _ _ h => Subtype.ext (shift_injective (congrArg Subtype.val h)) theorem truncateLE_mem_wittHom {m : ℕ} (hm : n ≤ m) {x : TruncatedWittVector p m A} (hx : x ∈ wittHom R p m A) : TruncatedWittVector.truncate hm x ∈ wittHom R p n A := by rw [mem_wittHom_iff] at hx ⊢ rw [map_truncateLE, map_truncateLE, map_truncateLE, hx, map_add] variable (R p A) in noncomputable def wittHomRestrict {m : ℕ} (hm : n ≤ m) : wittHom R p m A →+ wittHom R p n A where toFun x := ⟨TruncatedWittVector.truncate hm x, truncateLE_mem_wittHom hm x.2⟩ map_zero' := Subtype.ext (by simp) map_add' _ _ := Subtype.ext (by simp) @[simp] theorem coe_wittHomRestrict {m : ℕ} (hm : n ≤ m) (x : wittHom R p m A) : (wittHomRestrict R p A hm x : TruncatedWittVector p n A) = TruncatedWittVector.truncate hm x := rfl theorem wittHomRestrict_shift (x : wittHom R p n A) : wittHomRestrict R p A (Nat.le_succ n) (wittHomShift R p n A x) = wittHomVerschiebung R p n A x := Subtype.ext (truncate_shift _) theorem wittHomShift_restrict (y : wittHom R p (n + 1) A) : wittHomShift R p n A (wittHomRestrict R p A (Nat.le_succ n) y) = wittHomVerschiebung R p (n + 1) A y := Subtype.ext (shift_truncate_succ _) theorem wittHomShift_verschiebung (x : wittHom R p n A) : wittHomShift R p n A (wittHomVerschiebung R p n A x) = wittHomVerschiebung R p (n + 1) A (wittHomShift R p n A x) := Subtype.ext (by rw [coe_wittHomShift, coe_wittHomVerschiebung, coe_wittHomVerschiebung, coe_wittHomShift, ← truncate_shift, shift_truncate_succ]) theorem wittHomShift_frobenius [CharP R p] (x : wittHom R p n A) : wittHomShift R p n A (wittHomFrobenius R p n A x) = wittHomFrobenius R p (n + 1) A (wittHomShift R p n A x) := Subtype.ext (frobeniusFun_shift _).symm theorem wittHomRestrict_verschiebung {m : ℕ} (hm : n ≤ m) (x : wittHom R p m A) : wittHomRestrict R p A hm (wittHomVerschiebung R p m A x) = wittHomVerschiebung R p n A (wittHomRestrict R p A hm x) := Subtype.ext (verschiebung_truncateLE hm _).symm theorem wittHomRestrict_frobenius [CharP R p] {m : ℕ} (hm : n ≤ m) (x : wittHom R p m A) : wittHomRestrict R p A hm (wittHomFrobenius R p m A x) = wittHomFrobenius R p n A (wittHomRestrict R p A hm x) := Subtype.ext (frobeniusFun_truncateLE hm _).symm theorem wittHomMap_shift {B : Type w} [CommRing B] [Bialgebra R B] (φ : A →ₐc[R] B) (x : wittHom R p n A) : wittHomMap p (n + 1) φ (wittHomShift R p n A x) = wittHomShift R p n B (wittHomMap p n φ x) := Subtype.ext (map_shift _ _) theorem wittHomMap_restrict {B : Type w} [CommRing B] [Bialgebra R B] (φ : A →ₐc[R] B) {m : ℕ} (hm : n ≤ m) (x : wittHom R p m A) : wittHomMap p n φ (wittHomRestrict R p A hm x) = wittHomRestrict R p B hm (wittHomMap p m φ x) := Subtype.ext (map_truncateLE hm _ _) end WittHom end Deformation
Statements phrased using this module (96)
- Honda system of a unipotent k-vector space scheme over ℤₚ
Deformation.DieudonneModule.exists_hondaSystem_addEquiv_smul_eq_map_of_isLocalRing_cartierDual63 below · depth 17 - Local flat classes inject into Honda self-extensions
ResidualGaloisRep.exists_injective_localFlatClassesAd_selfExt_of_hondaSystem_model428 below · depth 17 - Honda system endomorphisms bounded by local invariants of ad ρ̄
ResidualGaloisRep.finrank_endHonda_le_finrank_invariants_of_hondaSystem_model362 below · depth 17 - Order of the Dieudonné module of a unipotent group scheme
Deformation.DieudonneModule.exists_finrank_eq_pow_and_natCard_eq_pow_of_isLocalRing_cartierDual53 below · depth 18 - Fontaine's theorem: (L(G),M(G_k)) is a Honda system
Deformation.DieudonneModule.exists_hondaSystem_L_eq_fontaineHodge8 below · depth 18 - Geometric point count and Dieudonné module order agree
Deformation.DieudonneModule.exists_natCard_algHom_eq_pow_and_natCard_baseChange_eq_pow_of_isLocalRing_cartierDual63 below · depth 18 - Ring action on a Dieudonné module from convolution-additive bialgebra endomorphisms
Deformation.DieudonneModule.exists_ringHom_addMonoidEnd_apply_eq_map1 below · depth 18 - Fontaine layer: ker M(π) surjects onto M(H_V)
Deformation.DieudonneModule.exists_surjective_ker_map_of_bottomLayer169 below · depth 18 - The Dieudonné module functor sends convolution to addition
Deformation.DieudonneModule.map_apply_eq_add_of_toLinearMap_eq_mul_comp_map_comp_comul0 below · depth 18 - Fontaine full faithfulness for unipotent p-group schemes
Deformation.DieudonneModule.map_baseChange_injective_and_exists_map_baseChange_eq280 below · depth 18 - Exactness of Fontaine's functor along a Hopf-kernel extension
Deformation.DieudonneModule.map_baseChange_surjective_injective_fontaineHodge_of_range_eq_hopfKer57 below · depth 18 - Rank symmetry of F and V under a cyclotomic pairing
Deformation.DieudonneModule.natCard_ker_frobenius_eq_natCard_quot_range_verschiebung_of_cyclotomicPairing161 below · depth 18 - Additivity of Hom(-, Wₙ) under convolution of bialgebra maps
Deformation.wittHomMap_convMul0 below · depth 18 - Verschiebung cokernel bound for a local–local model of J₀(N)[𝔪]
ModularCurve.natCard_dieudonneModule_quot_range_verschiebung_le_of_local_local_model_heckeTorsion_jZero2,572 below · depth 18 - Flat classes in H¹(ℚₚ,adρ̄) inject into Honda self-extensions
ResidualGaloisRep.exists_injective_flatClassSet_selfExt_of_hondaSystem_model423 below · depth 18 - Verschiebung is injective on Fontaine's submodule L
Deformation.DieudonneModule.eq_zero_of_mem_fontaineHodge_of_verschiebung_eq_zero0 below · depth 19 - Left exactness of the Dieudonné module functor
Deformation.DieudonneModule.exact_map_hopfKerVal_map1 below · depth 19 - p-torsion of the Dieudonné module lies in L+ker V
Deformation.DieudonneModule.exists_mem_fontaineHodge_add_eq_of_smul_eq_zero2 below · depth 19 - Frobenius on Fontaine's submodule lands in p L
Deformation.DieudonneModule.exists_mem_fontaineHodge_frobenius_eq_smul2 below · depth 19 - Kernel of Frobenius lies in V(L)
Deformation.DieudonneModule.exists_mem_fontaineHodge_verschiebung_eq_of_frobenius_eq_zero2 below · depth 19 - Stabilisation of the Dieudonné module over a perfect field
Deformation.DieudonneModule.exists_surjective_of0 below · depth 19 - Fontaine's submodule is exact along a Hopf-algebra surjection
Deformation.DieudonneModule.fontaineHodge_map_surjective_and_exists_of_mem_range_of_surjective56 below · depth 19 - Full faithfulness of the Dieudonné functor over Fₚ
Deformation.DieudonneModule.map_injective_and_exists_map_eq_of_isLocalRing_cartierDual60 below · depth 19 - Surjectivity of M(π) for surjective π (right exactness)
Deformation.DieudonneModule.map_surjective_of_surjective57 below · depth 19 - Kernel of Verschiebung on the Dieudonné module is the primitives
Deformation.DieudonneModule.nonempty_ker_verschiebung_addEquiv_primitives1 below · depth 19 - Fontaine's criterion for lifting special-fibre points, residue field mathbf Fₚ
Deformation.exists_algHom_baseChange_eq_of_forall_map_mem_fontaineKer_zmodp279 below · depth 19 - Length-one Witt homomorphisms are the primitive elements
Deformation.mem_wittHom_one_iff_coeff_mem_primitives0 below · depth 19 - Witt shift is surjective when β(1)=0 forces β^{p^n}=0
Deformation.wittHomShift_surjective_of_forall_convPow_eq_zero1 below · depth 19 - Restriction of length-n Witt homomorphisms is surjective
HopfAlgebra.wittHomMap_surjective_of_surjective_of_forall_convPow_eq_zero46 below · depth 19 - Fontaine–Conrad presentation of a locally flat ad-cocycle
ResidualGaloisRep.exists_fontaineConradPresentation_of_isLocallyFlatCocycleAd206 below · depth 19 - Faithfulness of the Dieudonné module map
Deformation.DieudonneModule.eq_of_map_eq_of_isLocalRing_cartierDual51 below · depth 20 - Fullness of the Dieudonné module functor over 𝔽ₚ
Deformation.DieudonneModule.exists_map_eq_of_isLocalRing_cartierDual56 below · depth 20 - Cokernel of Frobenius counts the Dieudonné module of B
Deformation.DieudonneModule.natCard_quot_range_frobenius_eq_natCard_of_ker_eq_map_frobenius_ker_counit_zmodp50 below · depth 20 - One-coordinate lift into the Fontaine kernel
Deformation.TruncWitt.exists_mem_fontaineKer_truncate_eq_of_frobeniusFun_mem_fontaineKer0 below · depth 20 - Convolution p-th powers shift Witt coordinates of a homomorphism
Deformation.convPow_prime_apply_coeff_of_mem_wittHom0 below · depth 20 - Lifting Fontaine-compatible points of unipotent p-divisible groups over ℤₚ
Deformation.exists_algHom_baseChange_eq_of_forall_map_mem_fontaineKer_of_forall_ker_eq_torsionIdeal_zmodp169 below · depth 20 - Fontaine's criterion descends along a bialgebra quotient
Deformation.exists_algHom_baseChange_eq_of_ker_eq_map_ker_counit0 below · depth 20 - First Witt coordinates of homomorphisms into Wₙ₊₁
Deformation.exists_mem_wittHom_coeff_zero_eq_iff_of_forall_convPow_eq_zero33 below · depth 20 - Fontaine's membership criterion for truncated Witt covectors
Deformation.mem_wittHom_of_mem_fontaineKer_of_verschiebung_mem_wittHom0 below · depth 20 - Primitivity criterion for Witt vectors concentrated in the last coordinate
Deformation.mem_wittHom_succ_iff_comul_eq_of_forall_coeff_eq_zero0 below · depth 20 - Vanishing of a Witt-vector homomorphism after restriction
Deformation.wittHomMap_eq_zero_iff_forall_coeff_mem_hopfKer0 below · depth 20 - Surjectivity of Hom(-,Wₙ) at a saturating level
HopfAlgebra.wittHomMap_surjective_of_surjective_of_wittHomShift_surjective55 below · depth 20 - Unipotent Hopf algebras: order p^L and Dieudonné module bound
Deformation.DieudonneModule.exists_finrank_eq_pow_and_natCard_le_pow_of_isLocalRing_cartierDual15 below · depth 21 - Fontaine's submodule surjects along a Hopf algebra quotient
Deformation.DieudonneModule.exists_mem_fontaineHodge_map_eq_of_isLocalRing_cartierDual56 below · depth 21 - Dimension bound for the Witt-coordinate subalgebra of a finite F,V-stable subgroup
Deformation.DieudonneModule.finrank_adjoin_coeff_le_natCard0 below · depth 21 - Exactness of the Dieudonné module functor at a kernel
Deformation.DieudonneModule.map_surjective_and_exact_map_of_ker_eq_map_ker_counit49 below · depth 21 - Witt coordinates generate a unipotent finite Hopf algebra
Deformation.adjoin_coeff_wittHom_eq_top_of_isLocalRing_cartierDual49 below · depth 21 - Fontaine's point criterion passes to extensions of group schemes
Deformation.exists_algHom_baseChange_eq_of_faithfullyFlat_of_ker_eq_map_ker_counit0 below · depth 21 - Fontaine's lifting criterion for maps from F[p^v]
Deformation.exists_algHom_baseChange_eq_of_forall_map_mem_fontaineKer_of_mvFormalGroup40 below · depth 21 - Extending a homomorphism to W_{m+1} over W_{m+2}
Deformation.exists_mem_wittHom_truncate_eq_of_forall_apply_coeff_last_eq_zero31 below · depth 21 - Fontaine's fourth step for unipotent groups over mathbf Zₚ
Deformation.exists_pDivisibleTower_ker_eq_map_bijective_baseChange_of_isLocalRing_cartierDual_zmodp275 below · depth 21 - Convolution pⁿ-th power kills coordinates of Witt homomorphisms
HopfAlgebra.convPow_apply_eq_zero_of_mem_adjoin_coeff_wittHom1 below · depth 21 - Witt coordinates on a closed subgroup come from the ambient group
HopfAlgebra.wittHom_coeff_mem_map_adjoin_of_surjective_of_wittHomShift_surjective53 below · depth 21 - Kernel of Verschiebung equals the primitives, equivariantly
Deformation.DieudonneModule.exists_ker_verschiebung_addEquiv_primitives_apply_of_eq_and_apply_map1 below · depth 22 - Fontaine's fourth step for unipotent groups over 𝒪
Deformation.exists_pDivisibleTower_ker_eq_map_bijective_map_comp_mem_fontaineKer_of_isLocalRing_cartierDual_zmodp274 below · depth 22 - Rescaled-logarithm Witt vectors lie in `wittHom` and `fontaineKer`
Deformation.exists_wittVector_ghostComponent_truncate_map_mem_wittHom_fontaineKer_of_mvFormalGroup37 below · depth 22 - Truncated Witt homomorphisms killed by the exponent
Deformation.wittHom_nsmul_eq_zero_of_forall_convPow_eq_one0 below · depth 22 - Witt-orthogonal and unipotent parts of a finite commutative Hopf algebra
HopfAlgebra.exists_wittOrthogonal_unipotent_splitting_of_perfectField1 below · depth 22 - Dieudonné isomorphisms over Fₚ come from bialgebra isomorphisms
Deformation.DieudonneModule.exists_bijective_map_eq_of_addEquiv_of_isLocalRing_cartierDual61 below · depth 23 - Multiplication by n induces n on the Dieudonné module
Deformation.DieudonneModule.exists_coe_eq_nsmulAlgHom_and_map_eq_nsmul0 below · depth 23 - Realising Honda systems by unipotent p-divisible towers
Deformation.HondaSystem.exists_pDivisibleTower_dieudonneModule_of_range_pow_le180 below · depth 23 - Morphisms of Honda systems come from p-divisible towers
Deformation.HondaSystem.exists_towerHom_map_comp_eq_comp_of_map_L_le181 below · depth 23 - Honda system of an isogeny kernel as a cokernel
Deformation.HondaSystem.map_comp_surjective_and_ker_and_fontaineHodge_eq_of_ker_eq_map_ker_counit62 below · depth 23 - Scaled truncations of the logarithm land in p^N R
Deformation.map_scaledLogTrunc_mem_span_pow_of_mvFormalGroup1 below · depth 23 - Truncated logarithm covectors are additive modulo p
Deformation.truncate_map_mem_wittHom_of_forall_coeff_ghostComponent_eq_logCovector35 below · depth 23 - Realising a Dieudonné datum by a p-divisible tower over Fₚ
Deformation.DieudonneDatum.exists_pDivisibleTower_zmod_dieudonneModule_of_range_pow_le71 below · depth 24 - Fontaine lifting of a unipotent p-divisible tower over mathbf Fₚ
Deformation.HondaSystem.exists_pDivisibleTower_bijective_map_mem_fontaineHodge_of_pDivisibleTower_zmod159 below · depth 24 - Far Witt components of the logarithm covector lie in pR
Deformation.map_coeff_mem_span_of_forall_coeff_ghostComponent_eq_logCovector26 below · depth 24 - Finite Dieudonné datum with nilpotent V comes from a Hopf algebra
Deformation.DieudonneDatum.exists_hopfAlgebra_zmod_addEquiv_dieudonneModule_of_isNilpotent69 below · depth 25 - Unique split coordinates of a continuous point of Fontaine's functor
Deformation.HondaSystem.existsUnique_coords_of_mem_fontaineFunctor_of_splitCoordinates70 below · depth 25 - Existence in Fontaine's functor with prescribed split coordinates
Deformation.HondaSystem.exists_mem_fontaineFunctor_of_coords_of_splitCoordinates61 below · depth 25 - Lifted formal group law and its extension cocycle
Deformation.HondaSystem.exists_mvFormalGroup_cocycle_of_splitCoordinates66 below · depth 25 - Fontaine's lifting theorem from split coordinates and a cocycle
Deformation.HondaSystem.exists_pDivisibleTower_bijective_map_mem_fontaineHodge_of_splitCoordinates_of_cocycle35 below · depth 25 - Existence of lawful split coordinates in normal form
Deformation.HondaSystem.exists_splitCoordinates_lawful_normalForm111 below · depth 25 - Points of a unipotent group scheme as F,V-maps of Dieudonné modules
Deformation.DieudonneModule.eval_injective_and_exists_eval_eq_of_isLocalRing_cartierDual58 below · depth 26 - Fontaine's unique lifting of logarithm-type coordinates
Deformation.FontaineLift.existsUnique_sub_mem_and_wSeries_adicEval_eq_of_isUnit_linearPart9 below · depth 26 - Convergence of Fontaine's w-series at nilpotent points
Deformation.FontaineLift.isPadicLimit_wPartialSum_adicEval0 below · depth 26 - Reduction of Φ modulo p equals Φ₀
Deformation.HondaSystem.SplitCoordinates.map_eq_phi0_of_forall_exists_convMul_apply_kappa_X0 below · depth 26 - Naturality of the Fontaine functor in the test algebra
Deformation.HondaSystem.SplitCoordinates.map_mem_fontaineFunctor_and_described2 below · depth 26 - Special fibre of the twisted tower: Gᶜᵥ⊗ G^eᵥ≅𝔽ₚ⊗ Lᵥ
Deformation.HondaSystem.exists_bijective_tensorProduct_specialFibre_of_cocycle2 below · depth 26 - Fontaine's normalised coordinates on the connected factor
Deformation.HondaSystem.exists_mvFormalGroup_basis_coeff_eq_normalForm93 below · depth 26 - Rank of the connected Fitting summand equals connected height
Deformation.HondaSystem.finrank_eq_of_isCompl_of_bijective_tensorProduct_comul59 below · depth 26 - Fontaine–Hodge membership at a twisted Tate level
Deformation.HondaSystem.map_apply_basis_mem_fontaineHodge_of_cocycle3 below · depth 26 - Fitting summands of a Honda system and the connected–étale splitting
Deformation.HondaSystem.map_eq_zero_of_mem_of_isCompl_of_bijective_tensorProduct2 below · depth 26 - Convergence of Fontaine's w-series when c_k ∈ pg eventually
Deformation.PLoc.isPadicLimit_wPartialSum_wSeries_of_eventually_mem_span0 below · depth 26 - Tautological classes generate and present the Witt-kernel Dieudonné module
Deformation.WittKernel.addSubgroup_eq_top_and_exists_addMonoidHom_apply_tautoClass_eq_of_pow_eq58 below · depth 26 - Bialgebras generated by Witt coordinates have local Cartier dual
Deformation.convPow_eq_zero_and_isLocalRing_cartierDual_of_adjoin_coeff_wittHom_eq_top1 below · depth 26 - Compatible normalised lifts of Dieudonné covector components
PDivisibleGroup.exists_compatible_lift_coeff_eq_of_surjective_tower_zmodp0 below · depth 26 - Additivity of the Dieudonné module along a splitting
Deformation.DieudonneModule.bijective_prod_map_of_bijective_tensorProduct_comul1 below · depth 27 - Frobenius is nilpotent on the Dieudonné module of a local bialgebra
Deformation.DieudonneModule.exists_frobenius_iterate_eq_zero_of_isLocalRing0 below · depth 27 - Covector coordinates of a compatible Dieudonné family
Deformation.DieudonneModule.exists_mvPowerSeries_coeff_eq_apply_of_forall_map_eq0 below · depth 27 - Frobenius is bijective on the Dieudonné module of a reduced bialgebra
Deformation.DieudonneModule.frobenius_bijective_of_isReduced0 below · depth 27 - Continuity of the w-series in the evaluation point
Deformation.FontaineLift.wSeries_adicEval_sub_wSeries_adicEval_mem_powSub2 below · depth 27 - Fontaine's linear parts λ₀,λ₁ with nilpotent C
Deformation.HondaSystem.exists_linearMap_surjective_mulVec_isNilpotent_coeff_eq65 below · depth 27 - Additivity of the Dieudonné module on a tensor product
Deformation.DieudonneModule.exists_addEquiv_prod_apply_eq_map_of_tensorProduct0 below · depth 28 - Dieudonné module modulo Frobenius is the cotangent space
Deformation.DieudonneModule.exists_addMonoidHom_cotangent_surjective_ker_eq_range_frobenius_of_isLocalRing_cartierDual59 below · depth 28