Definitions/Def_PDivisibleGroup_Points.lean
Points and Tate module of a -divisible group
Throughout, G is a p-divisible group of height h over a commutative ring R in the project's sense — a family of commutative, cocommutative Hopf R-algebras A_v = G.level v, finite and free over R of rank p^{vh}, together with surjective bialgebra maps A_{v+1}\to A_v whose kernels are the ideals generated by the image of the augmentation ideal under multiplication-by-p^v — and L is a commutative R-algebra.
The Hopf-algebraic preliminaries record that on a commutative Hopf algebra the antipode is an algebra map antipodeAlgHom, that composing an algebra map \varphi\colon H\to A with it produces a two-sided inverse of \varphi for the convolution product, hence that every \varphi is a unit in the convolution monoid, and that precomposition with a bialgebra map H\to K is a monoid homomorphism of convolution monoids (convCompMonoidHom).
PDivisibleGroup.Point G L v is the set \operatorname{Hom}_{R\text{-alg}}(A_v,L) with the convolution product (xy)(a)=\mu((x\otimes y)(\Delta a)), unit a\mapsto \mathrm{algebraMap}(\varepsilon(a)) and inverse given by composition with the antipode; it is a commutative group in which every element satisfies x^{p^v}=1. pointIncl is the map x\mapsto x\circ(A_{v+1}\to A_v); it is injective and its image is exactly the p^v-torsion of the level v+1 points, and pointInclLE iterates it for v\le w. Points G L is the direct limit of the additively written groups along these maps: every element comes from some level, each level maps in injectively, and each element of level v is killed by p^v, so for p>0 the limit is torsion. An R-algebra map L\to L' acts by postcomposition, functorially and injectively when the map is, whence a DistribMulAction of \operatorname{Aut}_{R\text{-alg}}(L) on Points G L. Finally, for p prime, tateModule is the Tate module \{(x_n) : p^nx_n=0,\ px_{n+1}=x_n\} of Points G L and tateModuleRep the resulting representation of \operatorname{Aut}_{R\text{-alg}}(L) by \mathbb{Z}_p-linear endomorphisms, acting coordinatewise.
Relation to Mathlib
Mathlib supplies the Hopf-algebra framework (coalgebras, bialgebras, antipodes, the convolution monoid WithConv on algebra maps) and the direct limit AddCommGroup.DirectLimit; the structure PDivisibleGroup and the points and Tate module built from it are the project's own, the Tate module functor TateModule being the one also used for elliptic curves.
Where it is used
These definitions give the p-divisible-group analogue of the Tate module construction used for elliptic curves over \mathbb{Q}, namely a \mathbb{Z}_p-module with an action of the R-algebra automorphisms of L; the module is imported widely in the tree as background for the p-adic Galois representations occurring in the modularity arguments.
References
- J. Tate, p-divisible groups, in: Proceedings of a Conference on Local Fields (Driebergen, 1966), Springer, 1967, 158–183
- M. Demazure, Lectures on p-divisible groups, Lecture Notes in Mathematics 302, Springer, 1972
- J.-P. Serre, Abelian l-adic Representations and Elliptic Curves, Benjamin, 1968
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 449 lines
- 84 declarations
- used in the statements of 170 theorems and imported by 180 proofs
- imports 2 definition modules
Source file: Definitions/Def_PDivisibleGroup_Points.lean
Declarations
- def
PDivisibleGroup.Hopf.antipodeAlgHom - theorem
PDivisibleGroup.Hopf.antipodeAlgHom_apply - theorem
PDivisibleGroup.Hopf.antipodeAlgHom_toLinearMap - theorem
PDivisibleGroup.Hopf.lift_comp_antipodeAlgHom_apply - theorem
PDivisibleGroup.Hopf.lift_antipodeAlgHom_comp_apply - theorem
PDivisibleGroup.Hopf.convMul_comp_antipodeAlgHom - theorem
PDivisibleGroup.Hopf.comp_antipodeAlgHom_convMul - theorem
PDivisibleGroup.Hopf.isUnit_toConv_algHom - def
PDivisibleGroup.Hopf.convCompMonoidHom - theorem
PDivisibleGroup.Hopf.convCompMonoidHom_apply - def
PDivisibleGroup.Point - instance
PDivisibleGroup.Point.instCommMonoid - def
PDivisibleGroup.Point.toConv - def
PDivisibleGroup.Point.ofConv - def
PDivisibleGroup.Point.toAlgHom - def
PDivisibleGroup.Point.ofAlgHom - theorem
PDivisibleGroup.Point.toAlgHom_ofAlgHom - theorem
PDivisibleGroup.Point.ofAlgHom_toAlgHom - theorem
PDivisibleGroup.Point.toConv_ofConv - theorem
PDivisibleGroup.Point.ofConv_toConv - theorem
PDivisibleGroup.Point.toConv_eq - theorem
PDivisibleGroup.Point.ext - theorem
PDivisibleGroup.Point.toConv_mul - theorem
PDivisibleGroup.Point.toConv_one - theorem
PDivisibleGroup.Point.toConv_pow - theorem
PDivisibleGroup.Point.ofConv_mul - theorem
PDivisibleGroup.Point.ofConv_pow - theorem
PDivisibleGroup.Point.one_apply - theorem
PDivisibleGroup.Point.mul_apply - theorem
PDivisibleGroup.Point.isUnit - instance
PDivisibleGroup.Point.instCommGroup - theorem
PDivisibleGroup.Point.inv_eq - theorem
PDivisibleGroup.Point.pow_card_eq_one - theorem
PDivisibleGroup.Point.toAlgHom_pow - def
PDivisibleGroup.pointIncl - theorem
PDivisibleGroup.toAlgHom_pointIncl - theorem
PDivisibleGroup.pointIncl_apply - theorem
PDivisibleGroup.pointIncl_injective - theorem
PDivisibleGroup.mem_range_pointIncl_iff - theorem
PDivisibleGroup.exists_pointIncl_eq_of_pow_eq_one - def
PDivisibleGroup.pointInclLE - theorem
PDivisibleGroup.pointInclLE_self - theorem
PDivisibleGroup.pointInclLE_succ - theorem
PDivisibleGroup.pointInclLE_succ_self - theorem
PDivisibleGroup.pointInclLE_trans - theorem
PDivisibleGroup.pointInclLE_injective - theorem
PDivisibleGroup.exists_pointInclLE_eq_of_pow_eq_one - abbrev
PDivisibleGroup.pointsDirectedSystemMap - instance
PDivisibleGroup.pointsDirectedSystem - def
PDivisibleGroup.Points - instance
PDivisibleGroup.Points.instAddCommGroup - instance
PDivisibleGroup.Points.instInhabited - def
PDivisibleGroup.pointsMkAdd - def
PDivisibleGroup.pointsMk - theorem
PDivisibleGroup.pointsMk_apply - theorem
PDivisibleGroup.toAdd_pointsMk - theorem
PDivisibleGroup.pointsMkAdd_pointInclLE - theorem
PDivisibleGroup.pointsMkAdd_pointIncl - theorem
PDivisibleGroup.pointsMk_pointInclLE - theorem
PDivisibleGroup.pointsMk_pointIncl - theorem
PDivisibleGroup.Points.exists_mkAdd - theorem
PDivisibleGroup.Points.induction_on - theorem
PDivisibleGroup.pointsMkAdd_injective - theorem
PDivisibleGroup.pointsMk_injective - theorem
PDivisibleGroup.pointsMkAdd_eq_pointsMkAdd_iff - theorem
PDivisibleGroup.nsmul_pointsMkAdd_eq_zero - theorem
PDivisibleGroup.isTorsion_points_of_pos - def
PDivisibleGroup.pointMap - theorem
PDivisibleGroup.toAlgHom_pointMap - theorem
PDivisibleGroup.pointMap_id - theorem
PDivisibleGroup.pointMap_comp - theorem
PDivisibleGroup.pointMap_pointIncl - theorem
PDivisibleGroup.pointMap_pointInclLE - def
PDivisibleGroup.pointsMap - theorem
PDivisibleGroup.pointsMap_pointsMkAdd - theorem
PDivisibleGroup.pointsMap_id - theorem
PDivisibleGroup.pointsMap_comp - theorem
PDivisibleGroup.pointsMap_injective_of_injective - instance
PDivisibleGroup.Points.instDistribMulAction - theorem
PDivisibleGroup.Points.smul_def - theorem
PDivisibleGroup.Points.smul_pointsMkAdd - abbrev
PDivisibleGroup.tateModule - abbrev
PDivisibleGroup.tateModuleRep - theorem
PDivisibleGroup.tateModuleRep_apply
Source
import Mathlib import Definitions.Def_PDivisibleGroup_Basic import Definitions.Def_EllipticCurve_TateModule set_option autoImplicit false noncomputable section open scoped TensorProduct open Coalgebra Bialgebra WithConv namespace PDivisibleGroup.Hopf section AntipodeAlgHom open HopfAlgebra variable (R : Type*) [CommSemiring R] (H : Type*) [CommSemiring H] [HopfAlgebra R H] def antipodeAlgHom : H →ₐ[R] H := AlgHom.ofLinearMap (antipode R) antipode_one fun a b => by rw [antipode_mul, mul_comm] @[simp] theorem antipodeAlgHom_apply (x : H) : antipodeAlgHom R H x = antipode R x := rfl theorem antipodeAlgHom_toLinearMap : (antipodeAlgHom R H).toLinearMap = antipode R := rfl variable {R H} variable {A : Type*} [CommSemiring A] [Algebra R A] theorem lift_comp_antipodeAlgHom_apply (φ : H →ₐ[R] A) (z : H ⊗[R] H) : Algebra.TensorProduct.lift φ (φ.comp (antipodeAlgHom R H)) (fun _ _ => .all _ _) z = φ (LinearMap.mul' R H ((antipode R).lTensor H z)) := by induction z with | zero => simp | tmul x y => simp [LinearMap.lTensor_tmul] | add x y hx hy => simp [map_add, hx, hy] theorem lift_antipodeAlgHom_comp_apply (φ : H →ₐ[R] A) (z : H ⊗[R] H) : Algebra.TensorProduct.lift (φ.comp (antipodeAlgHom R H)) φ (fun _ _ => .all _ _) z = φ (LinearMap.mul' R H ((antipode R).rTensor H z)) := by induction z with | zero => simp | tmul x y => simp [LinearMap.rTensor_tmul] | add x y hx hy => simp [map_add, hx, hy] theorem convMul_comp_antipodeAlgHom (φ : H →ₐ[R] A) : toConv φ * toConv (φ.comp (antipodeAlgHom R H)) = 1 := by refine WithConv.ext (AlgHom.ext fun x => ?_) change (toConv φ * toConv (φ.comp (antipodeAlgHom R H))) x = (1 : WithConv (H →ₐ[R] A)) x rw [AlgHom.convMul_apply, AlgHom.convOne_apply, ofConv_toConv, ofConv_toConv, lift_comp_antipodeAlgHom_apply, mul_antipode_lTensor_comul_apply, AlgHom.commutes] theorem comp_antipodeAlgHom_convMul (φ : H →ₐ[R] A) : toConv (φ.comp (antipodeAlgHom R H)) * toConv φ = 1 := by refine WithConv.ext (AlgHom.ext fun x => ?_) change (toConv (φ.comp (antipodeAlgHom R H)) * toConv φ) x = (1 : WithConv (H →ₐ[R] A)) x rw [AlgHom.convMul_apply, AlgHom.convOne_apply, ofConv_toConv, ofConv_toConv, lift_antipodeAlgHom_comp_apply, mul_antipode_rTensor_comul_apply, AlgHom.commutes] theorem isUnit_toConv_algHom (φ : H →ₐ[R] A) : IsUnit (toConv φ) := isUnit_iff_exists.2 ⟨_, convMul_comp_antipodeAlgHom φ, comp_antipodeAlgHom_convMul φ⟩ end AntipodeAlgHom section ConvComp variable {R : Type*} [CommSemiring R] {H K : Type*} [CommSemiring H] [CommSemiring K] [Bialgebra R H] [Bialgebra R K] variable (A : Type*) [CommSemiring A] [Algebra R A] def convCompMonoidHom (π : H →ₐc[R] K) : WithConv (K →ₐ[R] A) →* WithConv (H →ₐ[R] A) where toFun f := toConv (f.ofConv.comp (π : H →ₐ[R] K)) map_one' := by refine WithConv.ext ?_ simp only [ofConv_toConv, AlgHom.convOne_def, AlgHom.comp_assoc, BialgHom.counitAlgHom_comp] map_mul' f g := by rw [AlgHom.convMul_comp_bialgHom_distrib] @[simp] theorem convCompMonoidHom_apply (π : H →ₐc[R] K) (f : WithConv (K →ₐ[R] A)) : convCompMonoidHom A π f = toConv (f.ofConv.comp (π : H →ₐ[R] K)) := rfl end ConvComp end PDivisibleGroup.Hopf namespace PDivisibleGroup variable {R : Type} [CommRing R] {p h : ℕ} (G : PDivisibleGroup R p h) variable (L : Type) [CommRing L] [Algebra R L] def Point (v : ℕ) : Type := WithConv (G.level v →ₐ[R] L) namespace Point variable {G L} {v : ℕ} instance instCommMonoid : CommMonoid (G.Point L v) := inferInstanceAs (CommMonoid (WithConv (G.level v →ₐ[R] L))) def toConv (x : G.Point L v) : WithConv (G.level v →ₐ[R] L) := x def ofConv (f : WithConv (G.level v →ₐ[R] L)) : G.Point L v := f def toAlgHom (x : G.Point L v) : G.level v →ₐ[R] L := WithConv.ofConv x def ofAlgHom (f : G.level v →ₐ[R] L) : G.Point L v := WithConv.toConv f @[simp] theorem toAlgHom_ofAlgHom (f : G.level v →ₐ[R] L) : toAlgHom (ofAlgHom f : G.Point L v) = f := rfl @[simp] theorem ofAlgHom_toAlgHom (x : G.Point L v) : ofAlgHom (toAlgHom x) = x := rfl @[simp] theorem toConv_ofConv (f : WithConv (G.level v →ₐ[R] L)) : toConv (ofConv f : G.Point L v) = f := rfl @[simp] theorem ofConv_toConv (x : G.Point L v) : ofConv (toConv x) = x := rfl theorem toConv_eq (x : G.Point L v) : toConv x = WithConv.toConv (toAlgHom x) := rfl @[ext] theorem ext {x y : G.Point L v} (hxy : ∀ a, toAlgHom x a = toAlgHom y a) : x = y := WithConv.ext (AlgHom.ext hxy) theorem toConv_mul (x y : G.Point L v) : toConv (x * y) = toConv x * toConv y := rfl theorem toConv_one : toConv (1 : G.Point L v) = 1 := rfl theorem toConv_pow (x : G.Point L v) (n : ℕ) : toConv (x ^ n) = toConv x ^ n := rfl theorem ofConv_mul (f g : WithConv (G.level v →ₐ[R] L)) : (ofConv (f * g) : G.Point L v) = ofConv f * ofConv g := rfl theorem ofConv_pow (f : WithConv (G.level v →ₐ[R] L)) (n : ℕ) : (ofConv (f ^ n) : G.Point L v) = ofConv f ^ n := rfl theorem one_apply (a : G.level v) : toAlgHom (1 : G.Point L v) a = algebraMap R L (counit (R := R) a) := rfl theorem mul_apply (x y : G.Point L v) (a : G.level v) : toAlgHom (x * y) a = Algebra.TensorProduct.lift (toAlgHom x) (toAlgHom y) (fun _ _ => .all _ _) (comul (R := R) a) := AlgHom.convMul_apply _ _ a theorem isUnit (x : G.Point L v) : IsUnit x := Hopf.isUnit_toConv_algHom (toAlgHom x) noncomputable instance instCommGroup : CommGroup (G.Point L v) := commGroupOfIsUnit isUnit theorem inv_eq (x : G.Point L v) : x⁻¹ = ofAlgHom ((toAlgHom x).comp (Hopf.antipodeAlgHom R (G.level v))) := by apply mul_left_cancel (a := x) rw [mul_inv_cancel] exact (Hopf.convMul_comp_antipodeAlgHom (toAlgHom x)).symm theorem pow_card_eq_one (x : G.Point L v) : x ^ (p ^ v) = 1 := G.point_pow_eq_one v (toConv x) theorem toAlgHom_pow (x : G.Point L v) (n : ℕ) : toAlgHom (x ^ n) = (toAlgHom x).comp (Hopf.nsmulAlgHom R (G.level v) n) := congrArg WithConv.ofConv (Hopf.toConv_pow_eq_toConv_comp_nsmulAlgHom (toAlgHom x) n) end Point noncomputable def pointIncl (v : ℕ) : G.Point L v →* G.Point L (v + 1) := Hopf.convCompMonoidHom L (G.transition v) variable {L} theorem toAlgHom_pointIncl (v : ℕ) (x : G.Point L v) : Point.toAlgHom (G.pointIncl L v x) = (Point.toAlgHom x).comp (G.transitionAlgHom v) := rfl @[simp] theorem pointIncl_apply (v : ℕ) (x : G.Point L v) (a : G.level (v + 1)) : Point.toAlgHom (G.pointIncl L v x) a = Point.toAlgHom x (G.transition v a) := rfl theorem pointIncl_injective (v : ℕ) : Function.Injective (G.pointIncl L v) := by intro x y hxy have h := G.comp_transition_injective v (L := L) (show (Point.toAlgHom x).comp (G.transitionAlgHom v) = (Point.toAlgHom y).comp (G.transitionAlgHom v) from congrArg Point.toAlgHom hxy) exact Point.ext fun a => DFunLike.congr_fun h a theorem mem_range_pointIncl_iff (v : ℕ) (y : G.Point L (v + 1)) : y ∈ Set.range (G.pointIncl L v) ↔ y ^ (p ^ v) = 1 := by change _ ↔ Point.toConv y ^ (p ^ v) = 1 rw [← (G.exists_comp_transition_eq_iff v (Point.toConv y))] constructor · rintro ⟨x, rfl⟩ exact ⟨Point.toAlgHom x, rfl⟩ · rintro ⟨g, hg⟩ exact ⟨Point.ofAlgHom g, Point.ext fun a => DFunLike.congr_fun hg a⟩ theorem exists_pointIncl_eq_of_pow_eq_one (v : ℕ) (y : G.Point L (v + 1)) (hy : y ^ (p ^ v) = 1) : ∃ x : G.Point L v, G.pointIncl L v x = y := (G.mem_range_pointIncl_iff v y).2 hy variable (L) noncomputable def pointInclLE {v w : ℕ} (hvw : v ≤ w) : G.Point L v →* G.Point L w := Nat.leRec (motive := fun w _ => G.Point L v →* G.Point L w) (MonoidHom.id _) (fun w _ ih => (G.pointIncl L w).comp ih) hvw variable {L} @[simp] theorem pointInclLE_self (v : ℕ) (x : G.Point L v) : G.pointInclLE L (le_refl v) x = x := by rw [pointInclLE, Nat.leRec_self] rfl theorem pointInclLE_succ {v w : ℕ} (hvw : v ≤ w) (x : G.Point L v) : G.pointInclLE L (Nat.le_succ_of_le hvw) x = G.pointIncl L w (G.pointInclLE L hvw x) := by rw [pointInclLE, Nat.leRec_succ (h1 := hvw)] rfl theorem pointInclLE_succ_self (v : ℕ) (x : G.Point L v) : G.pointInclLE L (Nat.le_succ v) x = G.pointIncl L v x := by rw [G.pointInclLE_succ (le_refl v), G.pointInclLE_self] theorem pointInclLE_trans {u v w : ℕ} (huv : u ≤ v) (hvw : v ≤ w) (x : G.Point L u) : G.pointInclLE L (huv.trans hvw) x = G.pointInclLE L hvw (G.pointInclLE L huv x) := by induction hvw with | refl => rw [G.pointInclLE_self] | step hvw ih => rw [G.pointInclLE_succ hvw, ← ih] exact G.pointInclLE_succ (huv.trans hvw) x theorem pointInclLE_injective {v w : ℕ} (hvw : v ≤ w) : Function.Injective (G.pointInclLE L hvw) := by induction hvw with | refl => intro x y hxy; rwa [G.pointInclLE_self, G.pointInclLE_self] at hxy | step hvw ih => intro x y hxy rw [G.pointInclLE_succ hvw, G.pointInclLE_succ hvw] at hxy exact ih (G.pointIncl_injective _ hxy) theorem exists_pointInclLE_eq_of_pow_eq_one {v w : ℕ} (hvw : v ≤ w) (y : G.Point L w) (hy : y ^ (p ^ v) = 1) : ∃ x : G.Point L v, G.pointInclLE L hvw x = y := by induction hvw with | refl => exact ⟨y, G.pointInclLE_self v y⟩ | @step w hvw ih => have hyw : y ^ (p ^ w) = 1 := by obtain ⟨k, hk⟩ := Nat.exists_eq_add_of_le hvw have hpw : p ^ w = p ^ v * p ^ k := by rw [hk, pow_add] rw [hpw, pow_mul, hy, one_pow] obtain ⟨z, rfl⟩ := G.exists_pointIncl_eq_of_pow_eq_one w y hyw have hz : z ^ (p ^ v) = 1 := G.pointIncl_injective w (by rw [map_pow, hy, map_one]) obtain ⟨x, rfl⟩ := ih z hz exact ⟨x, G.pointInclLE_succ hvw x⟩ noncomputable abbrev pointsDirectedSystemMap (v w : ℕ) (hvw : v ≤ w) : Additive (G.Point L v) →+ Additive (G.Point L w) := MonoidHom.toAdditive (G.pointInclLE L hvw) instance pointsDirectedSystem : DirectedSystem (fun v => Additive (G.Point L v)) fun v w hvw => G.pointsDirectedSystemMap (L := L) v w hvw where map_self _ x := G.pointInclLE_self _ x map_map _ _ _ huv hvw x := (G.pointInclLE_trans huv hvw x).symm variable (L) def Points : Type := AddCommGroup.DirectLimit (fun v => Additive (G.Point L v)) fun v w hvw => G.pointsDirectedSystemMap v w hvw noncomputable instance Points.instAddCommGroup : AddCommGroup (G.Points L) := inferInstanceAs (AddCommGroup (AddCommGroup.DirectLimit (fun v => Additive (G.Point L v)) fun v w hvw => G.pointsDirectedSystemMap v w hvw)) noncomputable instance Points.instInhabited : Inhabited (G.Points L) := ⟨0⟩ noncomputable def pointsMkAdd (v : ℕ) : Additive (G.Point L v) →+ G.Points L := AddCommGroup.DirectLimit.of (fun v => Additive (G.Point L v)) (fun v w hvw => G.pointsDirectedSystemMap v w hvw) v noncomputable def pointsMk (v : ℕ) : G.Point L v →* Multiplicative (G.Points L) := AddMonoidHom.toMultiplicativeRight (G.pointsMkAdd L v) variable {L} theorem pointsMk_apply (v : ℕ) (x : G.Point L v) : G.pointsMk L v x = Multiplicative.ofAdd (G.pointsMkAdd L v (Additive.ofMul x)) := rfl theorem toAdd_pointsMk (v : ℕ) (x : G.Point L v) : (G.pointsMk L v x).toAdd = G.pointsMkAdd L v (Additive.ofMul x) := rfl @[simp] theorem pointsMkAdd_pointInclLE {v w : ℕ} (hvw : v ≤ w) (x : G.Point L v) : G.pointsMkAdd L w (Additive.ofMul (G.pointInclLE L hvw x)) = G.pointsMkAdd L v (Additive.ofMul x) := AddCommGroup.DirectLimit.of_f (G := fun v => Additive (G.Point L v)) hvw (Additive.ofMul x) @[simp] theorem pointsMkAdd_pointIncl (v : ℕ) (x : G.Point L v) : G.pointsMkAdd L (v + 1) (Additive.ofMul (G.pointIncl L v x)) = G.pointsMkAdd L v (Additive.ofMul x) := by rw [← G.pointInclLE_succ_self, pointsMkAdd_pointInclLE] @[simp] theorem pointsMk_pointInclLE {v w : ℕ} (hvw : v ≤ w) (x : G.Point L v) : G.pointsMk L w (G.pointInclLE L hvw x) = G.pointsMk L v x := congrArg Multiplicative.ofAdd (G.pointsMkAdd_pointInclLE hvw x) @[simp] theorem pointsMk_pointIncl (v : ℕ) (x : G.Point L v) : G.pointsMk L (v + 1) (G.pointIncl L v x) = G.pointsMk L v x := congrArg Multiplicative.ofAdd (G.pointsMkAdd_pointIncl v x) theorem Points.exists_mkAdd (z : G.Points L) : ∃ (v : ℕ) (x : G.Point L v), G.pointsMkAdd L v (Additive.ofMul x) = z := by refine AddCommGroup.DirectLimit.induction_on (G := fun v => Additive (G.Point L v)) (f := fun v w hvw => G.pointsDirectedSystemMap v w hvw) (C := fun z : G.Points L => ∃ (v : ℕ) (x : G.Point L v), G.pointsMkAdd L v (Additive.ofMul x) = z) z ?_ intro v x exact ⟨v, Additive.toMul x, rfl⟩ theorem Points.induction_on {C : G.Points L → Prop} (z : G.Points L) (ih : ∀ (v : ℕ) (x : G.Point L v), C (G.pointsMkAdd L v (Additive.ofMul x))) : C z := by obtain ⟨v, x, rfl⟩ := Points.exists_mkAdd G z exact ih v x theorem pointsMkAdd_injective (v : ℕ) : Function.Injective (G.pointsMkAdd L v) := by intro x y hxy have h0 : G.pointsMkAdd L v (x - y) = 0 := by rw [map_sub, hxy, sub_self] obtain ⟨w, hvw, hw⟩ := AddCommGroup.DirectLimit.of.zero_exact (G := fun v => Additive (G.Point L v)) (f := fun v w hvw => G.pointsDirectedSystemMap v w hvw) v (x - y) h0 have hinj := G.pointInclLE_injective (L := L) hvw have hw' : G.pointInclLE L hvw (Additive.toMul (x - y)) = 1 := hw have : Additive.toMul (x - y) = 1 := hinj (by rw [hw', map_one]) exact sub_eq_zero.1 this theorem pointsMk_injective (v : ℕ) : Function.Injective (G.pointsMk L v) := fun _ _ hxy => G.pointsMkAdd_injective v (congrArg Multiplicative.toAdd hxy) theorem pointsMkAdd_eq_pointsMkAdd_iff {v : ℕ} (x y : G.Point L v) : G.pointsMkAdd L v (Additive.ofMul x) = G.pointsMkAdd L v (Additive.ofMul y) ↔ x = y := ⟨fun hxy => G.pointsMkAdd_injective v hxy, fun hxy => by rw [hxy]⟩ theorem nsmul_pointsMkAdd_eq_zero (v : ℕ) (x : G.Point L v) : (p ^ v) • G.pointsMkAdd L v (Additive.ofMul x) = 0 := by rw [← map_nsmul, ← ofMul_pow, Point.pow_card_eq_one, ofMul_one, map_zero] theorem isTorsion_points_of_pos (hp : 0 < p) (z : G.Points L) : ∃ n : ℕ, 0 < n ∧ n • z = 0 := by obtain ⟨v, x, rfl⟩ := Points.exists_mkAdd G z exact ⟨p ^ v, pow_pos hp v, G.nsmul_pointsMkAdd_eq_zero v x⟩ section Map variable {L' : Type} [CommRing L'] [Algebra R L'] {L'' : Type} [CommRing L''] [Algebra R L''] def pointMap (φ : L →ₐ[R] L') (v : ℕ) : G.Point L v →* G.Point L' v where toFun x := Point.ofAlgHom (φ.comp (Point.toAlgHom x)) map_one' := by apply congrArg Point.ofAlgHom change φ.comp ((Algebra.ofId R L).comp (counitAlgHom R (G.level v))) = (Algebra.ofId R L').comp (counitAlgHom R (G.level v)) rw [← AlgHom.comp_assoc, Algebra.comp_ofId] map_mul' x y := by apply congrArg Point.ofConv apply WithConv.ofConv_injective exact AlgHom.comp_convMul_distrib φ (Point.toConv x) (Point.toConv y) @[simp] theorem toAlgHom_pointMap (φ : L →ₐ[R] L') (v : ℕ) (x : G.Point L v) : Point.toAlgHom (G.pointMap φ v x) = φ.comp (Point.toAlgHom x) := rfl theorem pointMap_id (v : ℕ) : G.pointMap (AlgHom.id R L) v = MonoidHom.id _ := MonoidHom.ext fun _ => Point.ext fun _ => rfl theorem pointMap_comp (φ : L →ₐ[R] L') (ψ : L' →ₐ[R] L'') (v : ℕ) : G.pointMap (ψ.comp φ) v = (G.pointMap ψ v).comp (G.pointMap φ v) := MonoidHom.ext fun _ => Point.ext fun _ => rfl theorem pointMap_pointIncl (φ : L →ₐ[R] L') (v : ℕ) (x : G.Point L v) : G.pointMap φ (v + 1) (G.pointIncl L v x) = G.pointIncl L' v (G.pointMap φ v x) := Point.ext fun _ => rfl theorem pointMap_pointInclLE (φ : L →ₐ[R] L') {v w : ℕ} (hvw : v ≤ w) (x : G.Point L v) : G.pointMap φ w (G.pointInclLE L hvw x) = G.pointInclLE L' hvw (G.pointMap φ v x) := by induction hvw with | refl => rw [G.pointInclLE_self, G.pointInclLE_self] | step hvw ih => rw [G.pointInclLE_succ hvw, G.pointInclLE_succ hvw, pointMap_pointIncl, ih] noncomputable def pointsMap (φ : L →ₐ[R] L') : G.Points L →+ G.Points L' := AddCommGroup.DirectLimit.map (G := fun v => Additive (G.Point L v)) (G' := fun v => Additive (G.Point L' v)) (f := fun v w hvw => G.pointsDirectedSystemMap v w hvw) (f' := fun v w hvw => G.pointsDirectedSystemMap v w hvw) (fun v => MonoidHom.toAdditive (G.pointMap φ v)) (fun _ _ hvw => AddMonoidHom.ext fun x => congrArg Additive.ofMul (G.pointMap_pointInclLE φ hvw (Additive.toMul x))) @[simp] theorem pointsMap_pointsMkAdd (φ : L →ₐ[R] L') (v : ℕ) (x : G.Point L v) : G.pointsMap φ (G.pointsMkAdd L v (Additive.ofMul x)) = G.pointsMkAdd L' v (Additive.ofMul (G.pointMap φ v x)) := AddCommGroup.DirectLimit.map_apply_of (G := fun v => Additive (G.Point L v)) (G' := fun v => Additive (G.Point L' v)) (f := fun v w hvw => G.pointsDirectedSystemMap v w hvw) (f' := fun v w hvw => G.pointsDirectedSystemMap v w hvw) (fun v => MonoidHom.toAdditive (G.pointMap φ v)) _ (Additive.ofMul x) theorem pointsMap_id : G.pointsMap (AlgHom.id R L) = AddMonoidHom.id _ := by refine AddCommGroup.DirectLimit.hom_ext (G := fun v => Additive (G.Point L v)) (f := fun v w hvw => G.pointsDirectedSystemMap v w hvw) (P := G.Points L) fun v => ?_ refine AddMonoidHom.ext fun x => ?_ change G.pointsMap (AlgHom.id R L) (G.pointsMkAdd L v x) = G.pointsMkAdd L v x exact G.pointsMap_pointsMkAdd (AlgHom.id R L) v (Additive.toMul x) theorem pointsMap_comp (φ : L →ₐ[R] L') (ψ : L' →ₐ[R] L'') : G.pointsMap (ψ.comp φ) = (G.pointsMap ψ).comp (G.pointsMap φ) := by refine AddCommGroup.DirectLimit.hom_ext (G := fun v => Additive (G.Point L v)) (f := fun v w hvw => G.pointsDirectedSystemMap v w hvw) (P := G.Points L'') fun v => ?_ refine AddMonoidHom.ext fun x => ?_ change G.pointsMap (ψ.comp φ) (G.pointsMkAdd L v x) = G.pointsMap ψ (G.pointsMap φ (G.pointsMkAdd L v x)) rw [show x = Additive.ofMul (Additive.toMul x) from rfl, pointsMap_pointsMkAdd, pointsMap_pointsMkAdd, pointsMap_pointsMkAdd, pointMap_comp] rfl theorem pointsMap_injective_of_injective (φ : L →ₐ[R] L') (hφ : Function.Injective φ) : Function.Injective (G.pointsMap φ) := by intro z w hzw induction z using Points.induction_on with | ih v x => induction w using Points.induction_on with | ih w y => rw [← G.pointsMkAdd_pointInclLE (le_max_left v w) x, ← G.pointsMkAdd_pointInclLE (le_max_right v w) y] at hzw ⊢ rw [pointsMap_pointsMkAdd, pointsMap_pointsMkAdd, pointsMkAdd_eq_pointsMkAdd_iff] at hzw rw [pointsMkAdd_eq_pointsMkAdd_iff] refine Point.ext fun a => hφ ?_ exact DFunLike.congr_fun (congrArg Point.toAlgHom hzw) a end Map noncomputable instance Points.instDistribMulAction : DistribMulAction (L ≃ₐ[R] L) (G.Points L) where smul σ z := G.pointsMap (σ : L →ₐ[R] L) z one_smul z := by change G.pointsMap ((1 : L ≃ₐ[R] L) : L →ₐ[R] L) z = z rw [show ((1 : L ≃ₐ[R] L) : L →ₐ[R] L) = AlgHom.id R L from rfl, pointsMap_id] rfl mul_smul σ τ z := by change G.pointsMap ((σ * τ : L ≃ₐ[R] L) : L →ₐ[R] L) z = G.pointsMap (σ : L →ₐ[R] L) (G.pointsMap (τ : L →ₐ[R] L) z) rw [show ((σ * τ : L ≃ₐ[R] L) : L →ₐ[R] L) = (σ : L →ₐ[R] L).comp (τ : L →ₐ[R] L) from rfl, pointsMap_comp] rfl smul_zero σ := map_zero (G.pointsMap (σ : L →ₐ[R] L)) smul_add σ z w := map_add (G.pointsMap (σ : L →ₐ[R] L)) z w theorem Points.smul_def (σ : L ≃ₐ[R] L) (z : G.Points L) : σ • z = G.pointsMap (σ : L →ₐ[R] L) z := rfl @[simp] theorem Points.smul_pointsMkAdd (σ : L ≃ₐ[R] L) (v : ℕ) (x : G.Point L v) : σ • G.pointsMkAdd L v (Additive.ofMul x) = G.pointsMkAdd L v (Additive.ofMul (G.pointMap (σ : L →ₐ[R] L) v x)) := G.pointsMap_pointsMkAdd _ v x section Tate variable [Fact p.Prime] variable (L) abbrev tateModule : AddSubgroup (ℕ → G.Points L) := TateModule p (G.Points L) noncomputable abbrev tateModuleRep : (L ≃ₐ[R] L) →* Module.End ℤ_[p] (TateModule p (G.Points L)) := TateModule.rep p (G.Points L) (L ≃ₐ[R] L) theorem tateModuleRep_apply (σ : L ≃ₐ[R] L) (x : TateModule p (G.Points L)) (n : ℕ) : ((G.tateModuleRep L σ x : TateModule p (G.Points L)) : ℕ → G.Points L) n = σ • (x : ℕ → G.Points L) n := rfl end Tate end PDivisibleGroup end
Statements phrased using this module (170)
- A p-divisible group over A for the norm-free part of J₁(Mp)
ModularCurve.XOneP.exists_pDivisibleGroup_normFreePart_points_tateModule_valuation_lt_one_of_reduction_eq_zeroSection_twoChartModel_x1_mul742 below · depth 21 - Level monotonicity and component-wise compatibility of the specialisation family
ModularCurve.XOneP.normFreePartFamily_dom_mono_and_toPic0Pair_sp_eq_of_le_twoChartModel_x1_mul_opsV30 below · depth 21 - Uₚ acts through an automorphism on the étale Igusa component
ModularCurve.XOneP.normFreePartFamily_exists_addEquiv_toPic0Pair_sp_heckeOperatorOneBar_snd_eq_twoChartModel_x1_mul4,670 below · depth 21 - Diamond action on first components of specialised norm-free classes
ModularCurve.XOneP.normFreePartFamily_exists_addMonoidHom_toPic0Pair_sp_diamondOneBar_fst_eq_twoChartModel_x1_mul2,964 below · depth 21 - Decomposition group acts on second Igusa projection of norm-free points
ModularCurve.XOneP.normFreePartFamily_exists_addMonoidHom_toPic0Pair_sp_smul_snd_eq_of_mem_decompositionSubgroup_twoChartModel_x1_mul3,011 below · depth 21 - Specialisation datum for the norm-free part of J₁(Mp)
ModularCurve.XOneP.normFreePartFamily_exists_dom_sp_interface_twoChartModel_x1_mul_opsV32 below · depth 21 - Inertia-invariant functionals annihilate Tate vectors with vanishing Igusa specialisation
ModularCurve.XOneP.normFreePartFamily_forall_apply_eq_zero_of_tateModule_toPic0Pair_sp_eq_zero_twoChartModel_x1_mul2,215 below · depth 21 - Level independence of the specialisation family on J₁(Mp)
ModularCurve.XOneP.normFreePartFamily_level_pushout_and_sp_eq_twoChartModel_x1_mul_opsV30 below · depth 21 - Inertia-fixed norm-free classes lie in the specialisation domain
ModularCurve.XOneP.normFreePartFamily_mem_dom_of_forall_smul_eq_self_twoChartModel_x1_mul_opsV32 below · depth 21 - Trivial Weil pairing for vanishing glued specialisations
ModularCurve.XOneP.normFreePartFamily_pairing_eq_one_of_toPic0Pair_sp_eq_zero_twoChartModel_x1_mul4,591 below · depth 21 - Inertia twisted by a diamond fixes the second Igusa component
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_diamondOneBar_smul_snd_eq_of_mem_inertiaSubgroupIn_twoChartModel_x1_mul_opsV31,268 below · depth 21 - q-expansion pin of the specialisation on the Gauss component
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_fst_eq_pic0Mk_conorm_laurentPlaceReduction_twoChartModel_x1_mul1,337 below · depth 21 - Frobenius acts coefficientwise on the first Igusa component
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_fst_smul_of_isFrobeniusAt_twoChartModel_x1_mul2,332 below · depth 21 - Uₚ acts as p Fr⁻¹ on norm-free specialisations
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_heckeOperatorOneBar_fst_eq_natCast_smul_frob_inv_smul_twoChartModel_x1_mul3,359 below · depth 21 - Triangularity of Uₚ on specialisations of the norm-free part
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_heckeOperatorOneBar_snd_eq_zero_twoChartModel_x1_mul3,359 below · depth 21 - Frobenius acts coefficientwise on the first Igusa-component specialisation
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_smul_fst_eq_frob_smul_of_isFrobeniusAt_twoChartModel_x1_mul0 below · depth 21 - Inertia fixes the cuspidal component of reductions of norm-free points
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_smul_fst_eq_of_mem_inertiaSubgroupIn_twoChartModel_x1_mul1,268 below · depth 21 - Inertia fixing μₚ preserves the second Igusa component of specialisations
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_smul_snd_eq_of_mem_inertiaSubgroupIn_of_forall_pow_eq_one_twoChartModel_x1_mul_opsV31 below · depth 21 - A cyclotomic DVR inside a place above p
ModularCurve.exists_isCyclotomicExtension_isDiscreteValuationRing_isFractionRing_mem_valuationSubring_of_liesOverPrime0 below · depth 21 - Inertia-invariant forms kill points reducing to the identity
PDivisibleGroup.forall_dual_apply_eq_zero_of_forall_valuation_sub_counit_lt_one_of_forall_inertia219 below · depth 21 - The p-divisible group of an abelian scheme: height 2d
GoodReductionJacobian.RelativeGroupLaw.exists_pDivisibleGroup_closedImmersion_isIso_torsion_of_abelianSchemePropertyBundle734 below · depth 22 - Points dictionary of the p-divisible group into J₁(Mp)
ModularCurve.XOneP.exists_points_injective_iff_normFreePart_galois_read_of_pDivisibleGroup_abelianSubscheme_twoChartModel_x1_mul0 below · depth 22 - Transport of Tate modules along an embedding ℚ̄→ℚ̄ₚ
PDivisibleGroup.exists_linearEquiv_tateModule_baseChange_ringOfIntegers_of_ringHom_padicAlgCl10 below · depth 22 - Tate module map induced by an equivariant points dictionary
PDivisibleGroup.exists_linearMap_tateModule_jOne_apply_injective_range_galois_of_injective_of_forall_iff1 below · depth 22 - Inertia-invariant functionals vanish on unit-section Tate vectors
PDivisibleGroup.forall_dual_apply_eq_zero_of_forall_norm_sub_counit_lt_one_of_forall_inertia_of_ringOfIntegers210 below · depth 22 - The p-divisible group of a smooth relative group law, scheme-theoretically
GoodReductionJacobian.RelativeGroupLaw.exists_pDivisibleGroup_closedImmersion_isIso_torsion_of_smoothOfRelativeDimension17 below · depth 23 - Tate's Proposition 12, quotient form, over mathcal O_K
PDivisibleGroup.exists_pDivisibleGroup_bialgHom_linearMap_tateModule_ker_eq_of_forall_smul_mem_of_ringOfIntegers96 below · depth 23 - Counting L-points of the levels of a p-divisible group in characteristic 0
PDivisibleGroup.finite_point_and_natCard_point_eq_pow9 below · depth 23 - Points near the unit section push forward along Tψ
PDivisibleGroup.forall_exists_norm_sub_counit_lt_one_map_of_forall_exists_norm_sub_counit_lt_one0 below · depth 23 - Unramified Tate module forces formal étaleness of all levels
PDivisibleGroup.forall_formallyEtale_level_of_forall_inertia_tateModuleRep_eq_of_ringOfIntegers135 below · depth 23 - Point congruent to the counit on a formally étale level is trivial
PDivisibleGroup.point_eq_one_of_forall_norm_sub_counit_lt_one_of_formallyEtale_of_ringOfIntegers0 below · depth 23 - Existence of the p-divisible group J[p^∞]
GoodReductionJacobian.RelativeGroupLaw.exists_pDivisibleGroup_point_equiv_torsionSubset_of_isFinite_of_flat13 below · depth 24 - Smooth relative dimension d forces p-divisible dimension d
GoodReductionJacobian.RelativeGroupLaw.hasDimension_of_point_equiv_torsionSubset_of_smoothOfRelativeDimension2 below · depth 24 - Inertia differences on J_H reduce to node units
ModularCurve.exists_schemeHomOver_pts_smul_sub_eq_and_ptsSp_symm_mem_range_nodeUnit_of_mem_inertia_jHNeronObjectAtP2,785 below · depth 24 - Annihilator of a saturated Galois-stable submodule under a Tate pairing
PDivisibleGroup.CartierDuality.exists_submodule_annihilator_stable_saturated_and_forall_mem_iff15 below · depth 24 - Adjointness of Tate-module maps under Cartier pairings
PDivisibleGroup.CartierDuality.tateModule_pairing_adjoint_and_ker_iff_and_surjective_of_pair_comp_eq15 below · depth 24 - Hopf quotient system cutting out a saturated Galois-stable submodule
PDivisibleGroup.exists_hopf_quotient_system_points_iff_mem_of_forall_smul_mem_of_ringOfIntegers20 below · depth 24 - Functoriality of the Tate module in transition-compatible level maps
PDivisibleGroup.exists_linearMap_tateModule_of_comp_transition_eq0 below · depth 24 - Saturated Galois-stable submodule realised by a p-divisible group
PDivisibleGroup.exists_pDivisibleGroup_bialgHom_linearMap_tateModule_injective_range_eq_of_hopf_quotient_system_of_ringOfIntegers76 below · depth 24 - Unramified Tate module forces dimension zero (Tate)
PDivisibleGroup.hasDimension_zero_of_forall_inertia_tateModuleRep_eq_self_of_ringOfIntegers132 below · depth 24 - Inertia displacements in TₚJ_H(M) lift to identity-reducing points
ModularCurve.JHNeronObjectAtP.exists_eq_tateGaloisRep_sub_self_and_reduction_of_mem_inertiaSubgroupIn_of_reflects_of_period0 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 - p-divisible finite part of the Néron object for J_H(M)
ModularCurve.exists_pDivisibleGroup_points_eq_finPts_raynaudExtension_closedImmersion_jHNeronObjectAtP_of_representsRelSubPic3,046 below · depth 25 - Galois-stable Tate submodules cut out Hopf quotient systems over K'
PDivisibleGroup.exists_baseChange_hopf_quotient_system_points_iff_mem_of_forall_smul_mem15 below · depth 25 - Hodge–Tate decomposition of the Tate module of a p-divisible group
PDivisibleGroup.exists_basis_padicComplex_tateModule_eq_cyclotomicCharacter_pow_smul_of_hasDimension_of_ringOfIntegers100 below · depth 25 - Multiplication by p along a Hopf quotient tower stabilises
PDivisibleGroup.exists_bialgHom_comp_eq_nsmulBialgHom_and_bijOn_hopfKer_of_hopf_quotient_system_of_ringOfIntegers30 below · depth 25 - Tate's Proposition 12: maps onto the subquotient tower
PDivisibleGroup.exists_bialgHom_comp_transition_eq_and_injective_of_hopf_quotient_system_of_tower_of_ringOfIntegers9 below · depth 25 - Transition-compatible level endomorphisms induce a Tate-module endomorphism
PDivisibleGroup.exists_moduleEnd_tateModule_apply_eq_pointsMkAdd_comp_of_comp_transition_eq0 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 - Reduction-trivial Tate vectors: a p-saturated, inertia-stable submodule
PDivisibleGroup.exists_submodule_tateModule_reduction_and_rep_sub_mem_of_mem_inertiaSubgroupIn0 below · depth 25 - Ranks in a Hopf quotient system: p^{vr} and p^r
PDivisibleGroup.finrank_eq_pow_mul_finrank_and_finrank_hopfKer_eq_of_hopf_quotient_system_of_ringOfIntegers24 below · depth 25 - Levelwise criterion for injectivity and image of a Tate-module map
PDivisibleGroup.injective_and_range_eq_of_forall_injective_of_forall_iff_exists_mem12 below · depth 25 - Stabilisers of points of a p-divisible group are open
PDivisibleGroup.isOpen_setOf_restrictScalars_smul_points_eq0 below · depth 25 - Order of the pⁿ-torsion of points of a p-divisible group
PDivisibleGroup.natCard_torsionBy_points_eq_pow10 below · depth 25 - Tate module of a height-h p-divisible group is free of rank h
PDivisibleGroup.nonempty_basis_tateModule_points11 below · depth 25 - 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 - Points dictionary for the finite part at p of J_H(M)
ModularCurve.exists_addMonoidHom_points_finitePart_eq_finPts_jHNeronObjectAtP_of_closedImmersion4 below · depth 26 - Ordinary idempotent on a p-divisible subgroup of J_H
ModularCurve.exists_bialgHom_family_idempotent_inverse_U_of_cornerIdempotent_tateModule_jH293 below · depth 26 - Tate module comparison for the finite part of J_H
ModularCurve.exists_linearMap_tateModule_points_finitePart_injective_range_galois_jHNeronObjectAtP0 below · depth 26 - A p-divisible group inside the Néron object of J_H(M)
ModularCurve.exists_pDivisibleGroup_closedImmersion_finitePart_jHNeronObjectAtP_of_representsRelSubPic2,270 below · depth 26 - Raynaud quotient of the finite part by its toric subgroup
ModularCurve.exists_pDivisibleGroup_raynaudQuotient_toricPts_finitePart_jHNeronObjectAtP_of_closedImmersion2,394 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 - Inertia displacements reduce to one on the Raynaud quotient
ModularCurve.forall_raynaudQuotient_point_reducesToOne_of_eq_smul_sub_of_mem_inertia_finitePart_jHNeronObjectAtP2,791 below · depth 26 - Saturated Tate image with free cokernel of toric rank
ModularCurve.range_saturated_and_nonempty_coker_linearEquiv_tateModule_points_finitePart_jHNeronObjectAtP11 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 - Points over ℚ̄ separate elements of a level
PDivisibleGroup.eq_of_forall_point_toAlgHom_apply_eq8 below · depth 26 - Tate module functoriality for a surjection of p-divisible groups
PDivisibleGroup.exists_linearMap_tateModule_injective_of_surjective_comp_transition0 below · depth 26 - Complementary idempotents split a p-divisible group
PDivisibleGroup.exists_pDivisibleGroup_surjective_bijective_tensorProduct_of_comp_eq_self11 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 - Tate module of the points of a p-divisible group
PDivisibleGroup.exists_tateModule_apply_eq_and_apply_eq_zero_iff_and_free_finrank_of_natCard_point_eq0 below · depth 26 - Polynomials in U preserve S and commute with Galois
PDivisibleGroup.forall_mem_adjoin_tateModule_apply_mem_and_comp_tateModuleRep_eq1 below · depth 26 - pⁿ-torsion in G(L) is Gₙ(L)
PDivisibleGroup.nsmul_eq_zero_iff_exists_pointsMkAdd_eq0 below · depth 26 - Tate-module endomorphisms induced by families of level endomorphisms
PDivisibleGroup.tateModule_induced_mem_and_comm_and_add_and_comp0 below · depth 26 - Base change of a p-divisible group inside a relative group law
GoodReductionJacobian.RelativeGroupLaw.exists_closedImmersion_isIso_torsion_tensorProduct_baseChange_of_isIso_torsion0 below · depth 27 - Finite parts of p-power torsion form a p-divisible group
GoodReductionJacobian.RelativeGroupLaw.exists_pDivisibleGroup_closedImmersion_finitePart_of_henselianLocalRing10 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 - Rank of the finite part of p^v-torsion of J_H(M)
ModularCurve.JHNeronObjectAtP.finrank_finitePart_schemeKer_baseChange_eq_pow_of_representsRelSubPic1,956 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 - Pinned idempotent pieces of B mod p identified with A
ModularCurve.exists_bialgHom_baseChange_levelTorsion_raynaudQuotient_image_eq_idempotent_finPts_jHNeronObjectAtP_of_finPtsWitness2,599 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 - Component projectors on the mod-p Raynaud quotient
ModularCurve.exists_idempotent_pair_baseChange_raynaudQuotient_projector_components_finPts_jHNeronObjectAtP_of_finPtsWitness_of_bridgePins2,654 below · depth 27 - Split Raynaud quotient of the finite part by toric points
ModularCurve.exists_pDivisibleGroup_raynaudQuotient_toricPts_and_exists_retraction_finitePart_jHNeronObjectAtP_of_closedImmersion2,393 below · depth 27 - Inertia displacements of p-power torsion reduce to the identity
ModularCurve.exists_schemeHomOver_pts_smul_sub_eq_and_resPt_eq_one_of_mem_inertia_jHNeronObjectAtP2,789 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 - 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 - Finite part at p descends to the decomposition ring
ModularCurve.exists_bialgEquiv_baseChange_decompositionRing_finitePart_jHNeronObjectAtP0 below · depth 28 - Special fibre of the Raynaud quotient as a tensor square
ModularCurve.exists_bialgEquiv_baseChange_raynaudQuotient_tensorProduct_levelTorsion_finPts_jHNeronObjectAtP_of_finPtsWitness1,625 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 - Component projectors on the special fibre of the Raynaud quotient
ModularCurve.exists_idempotent_pair_baseChange_raynaudQuotient_projector_components_finPts_jHNeronObjectAtP_of_bialgEquiv_of_hecke_descent0 below · depth 28 - Toric quotient of the finite part over the decomposition ring
ModularCurve.exists_pDivisibleGroup_toricQuotient_decompositionRing_finitePart_jHNeronObjectAtP38 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 - Raynaud quotient has twice the height of A
ModularCurve.height_raynaudQuotient_eq_two_mul_height_levelTorsion_finPts_jHNeronObjectAtP_of_finPtsWitness2,258 below · depth 28 - Points of a p-divisible group are integral, Galois-equivariantly
PDivisibleGroup.bijective_pointsMap_val_integralClosure_and_exists_tateModule_equiv0 below · depth 28 - Quotient of a p-divisible group by a closed subgroup
PDivisibleGroup.exists_pDivisibleGroup_bialgHom_injective_range_eq_hopfKer_of_surjective_of_comp_eq_of_isPrincipalIdealRing86 below · depth 28 - Transfer of splitness between two quotient witnesses of a p-divisible group
PDivisibleGroup.exists_retraction_of_points_ker_iff_of_points_surjective_of_retraction_of_isDiscreteValuationRing_of_liesOverPrime239 below · depth 28 - Residue-field points of a p-divisible level equal the counit
PDivisibleGroup.ringHom_apply_eq_residue_counit_of_forall_point_valuation_sub_lt_one1 below · depth 28 - The maps ιᵥ intertwine [n]^* with scheme-level [n]
ModularCurve.JHNeronObjectAtP.specMap_nsmulAlgHom_comp_eq_comp_schemeNsmul_of_forall_point_mul0 below · depth 29 - Component maps of the Raynaud quotient on the special fibre
ModularCurve.exists_bialgHom_levelTorsion_raynaudQuotient_baseChange_spec_comp_eq_of_finPtsWitness51 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 - Surjective product map and rank identity for the Raynaud quotient
ModularCurve.surjective_productMap_and_finrank_eq_levelTorsion_raynaudQuotient_baseChange_of_finPtsWitness1,608 below · depth 29 - Tate full faithfulness over a henselian place ring of ℚ̄
PDivisibleGroup.existsUnique_bialgHom_family_of_addMonoidHom_points_levelPreserving_galois_of_isDiscreteValuationRing_of_liesOverPrime238 below · depth 29 - Homomorphic level maps factor through the embedded p^v-torsion
ModularCurve.JHNeronObjectAtP.LevelData.exists_bialgHom_specMap_comp_eq_of_isHom_baseChange_level0 below · depth 30 - A bound p^{vt} for the joint kernel on finite levels
ModularCurve.JHNeronObjectAtP.finrank_quotient_sup_map_ker_counit_le_pow_toricRank_of_specMap_comp_eq4 below · depth 30 - Inertia-cyclotomic p-torsion classes lie in the finite part
ModularCurve.JHNeronObjectAtP.mem_finPts_of_inertia_cyclotomic2 below · depth 30 - Ordinary corner: reduction to identity iff inertia acts cyclotomically
ModularCurve.JHNeronObjectAtP.reducesToOne_iff_inertia_cyclotomic_of_mem_corner_of_mem_finPts_of_ordinary_of_abelJacobiPin_of_inertF_of_levelData_of_algEquiv3,537 below · depth 30 - Atkin–Lehner-twisted dlog on J_H(M)[p] into supersingular differentials
ModularCurve.exists_addMonoidHom_torsion_ssPolarDifferentials_dlog_finPts_of_abelJacobiPin_tauFree_raynaud_bridgePins_export_of_algEquiv3,097 below · depth 30 - Toric Hopf quotient of Gᵥ: free of rank p^{vt}
ModularCurve.exists_hopfCokernel_free_finrank_eq_pow_of_finPtsWitness39 below · depth 30 - Ordinary corner count against supersingular polar differentials
ModularCurve.pow_finrank_range_corner_ssPolarDifferentials_mul_ncard_reducesToOne_eq_of_abelJacobiPin_of_representsRelSubPicLevel_raynaud_bridgePins_noKTransport_bridgePins4_of_algEquiv3,519 below · depth 30 - Descended abelian quotients kill the Hopf cokernel of ψᵥ
ModularCurve.specMap_cokernel_comp_levelBaseChange_comp_abq_eq_one_of_finPtsWitness16 below · depth 30 - Tate's full faithfulness over a characteristic-zero field, points form
PDivisibleGroup.existsUnique_bialgHom_family_of_addMonoidHom_points_levelPreserving_galois_of_field12 below · depth 30 - Tate's full faithfulness over mathcal O_K, points form
PDivisibleGroup.existsUnique_bialgHom_family_of_addMonoidHom_points_levelPreserving_galois_of_ringOfIntegers220 below · depth 30 - Geometric points of a p-divisible group under field extension
PDivisibleGroup.exists_mulEquiv_point_addEquiv_points_eq_pointMap_of_isAlgClosed0 below · depth 30 - Geometric points of a p-divisible group commute with base change
PDivisibleGroup.exists_mulEquiv_point_baseChange_and_addEquiv_points_baseChange0 below · depth 30 - Counting identity in the ordinary corner of J_H(M)[p]
ModularCurve.JHNeronObjectAtP.ncard_corner_finPts_mul_toricPts_eq_ncard_reducesToOne_mul_cyclotomic_of_abelJacobiPin_of_levelData_of_algEquiv3,191 below · depth 31 - Toric–finite splitting on the ordinary corner of J_H(M)[p]
ModularCurve.JHNeronObjectAtP.ncard_corner_inter_toricPts_mul_ncard_corner_inter_finPts_eq_of_abelJacobiPin_of_representsRelSubPicLevel_of_levelData_of_algEquiv3,169 below · depth 31 - Cyclotomic inertia forces finite-part points to reduce to one
ModularCurve.JHNeronObjectAtP.reducesToOne_of_inertia_cyclotomic_of_mem_finPts21 below · depth 31 - Reduced p-th root functions detect the finite part of J_H(M)[p]
ModularCurve.exists_reducedRootFunction_torsion_mem_finPts_iff_forall_dvd_ord_of_abelJacobiPin_tauFree_of_algEquiv2,608 below · depth 31 - Vanishing of dlogΨ on ordinary corner finite-part classes
ModularCurve.inv_smul_D_reducedRootFunction_eq_zero_iff_exists_point_reducesToOne_of_mem_corner_of_mem_finPts_tauFree_raynaud_bridgePins1,448 below · depth 31 - Regular-differential half of the ordinary corner count at p
ModularCurve.pow_finrank_map_corner_regularDifferentials_mul_ncard_reducesToOne_eq_ncard_finPts_of_abelJacobiPin_of_representsRelSubPicLevel_raynaud_bridgePins_noKTransport_bridgePins4_of_algEquiv3,513 below · depth 31 - Ordinary corner: supersingular residues versus finite p-torsion
ModularCurve.pow_finrank_map_residue_range_corner_mul_ncard_finPts_eq_natCard_corner_of_abelJacobiPin_of_representsRelSubPicLevel_raynaud_bridgePins_noKTransport_bridgePins4_of_algEquiv3,518 below · depth 31 - Reduced root function of T_ℓ x and U_q x as a norm
ModularCurve.reducedRootFunction_genOpH_T_eq_smul_pow_mul_norm_heckeBetaModLH_of_abelJacobiPin_tauFree_of_algEquiv676 below · depth 31 - Frobenius twist of the reduced root function under Uₚ
ModularCurve.reducedRootFunction_genOpH_U_self_eq_smul_pow_mul_of_coe_eq_coeffMap_frobenius_of_abelJacobiPin_tauFree_of_mem_infSubgroup_of_algEquiv446 below · depth 31 - Reduced root function under the diamond operator ⟨ e⟩
ModularCurve.reducedRootFunction_genOpH_dia_eq_smul_pow_mul_diamondActionModL_of_abelJacobiPin_tauFree484 below · depth 31 - Geometric points determine bialgebra maps of p-divisible groups
PDivisibleGroup.eq_of_forall_toAlgHom_comp_eq_of_ringOfIntegers10 below · depth 31 - Splitting of the Tate module of a height-h+h' group
PDivisibleGroup.exists_linearEquiv_tateModule_prod_of_bialgHom_comp_transition_of_bijective_points1 below · depth 31 - Functoriality of Tate modules under additive maps of points
PDivisibleGroup.exists_linearMap_tateModule_apply_eq_of_addMonoidHom_points0 below · depth 31 - Existence of the product of two p-divisible groups
PDivisibleGroup.exists_prod_bialgHom_bijective_points0 below · depth 31 - Tate module bijectivity implies bijectivity at every level
PDivisibleGroup.forall_bijective_of_bijective_linearMap_tateModule_of_ringOfIntegers172 below · depth 31 - Pairing annihilator of identity-reducing corner points is inertia-cyclotomic
ModularCurve.JHNeronObjectAtP.adjointCorner_finPts_forall_reducesToOne_pairing_eq_one_iff_inertia_cyclotomic_of_pairing_of_abelJacobiPin2,803 below · depth 32 - Toric ⊆ identity-reducing ⊆ finite part; finiteness of J[p]^f
ModularCurve.JHNeronObjectAtP.corner_toricPts_subset_reducesToOne_subset_finPts_addSubgroup_cyclotomic_finPts_finite_of_abelJacobiPin2,789 below · depth 32 - Idempotent and μₚ-pairing between corner and adjoint corner
ModularCurve.JHNeronObjectAtP.exists_idempotent_pairing_corner_adjointCorner_perfect_galois_radical_ncard_toric_cyclotomic_eq_of_abelJacobiPin_of_levelData_of_algEquiv3,182 below · depth 32 - Membership in `finPts p` via supersingular orders of g
ModularCurve.JHNeronObjectAtP.mem_finPts_iff_forall_ssPlacesQExp_dvd_ord_of_rootFunction_smul_of_coe_eq_coeffMap_residue_of_abelJacobiPin_of_algEquiv2,604 below · depth 32 - Toric points in a Hecke corner and its Weil annihilator
ModularCurve.JHNeronObjectAtP.ncard_corner_inter_toricPts_eq_ncard_weilAnnihilator_inter_toricPts_of_abelJacobiPin_of_representsRelSubPicLevel_of_algEquiv840 below · depth 32 - Vanishing of the first glued component of the reduced w_*x
ModularCurve.JHNeronObjectAtP.toPic0Pair_ptsSp_symm_atkinLehner_fst_eq_zero_iff_exists_point_reducesToOne_of_mem_corner_of_mem_finPts_bridgePins1,324 below · depth 32 - Toric and finite p-torsion: product of orders equals #J[p]
ModularCurve.JHNeronObjectAtP.toricPts_le_torsion_and_finPts_le_torsion_and_natCard_mul_natCard_eq_of_representsRelSubPicLevel3,049 below · depth 32 - Gauss residue of the Uₚ-pushed function is c·Frobenius
ModularCurve.XHDRModelAtP.exists_mem_integers_algebraMap_mul_smul_norm_heckeBetaHBar_and_coe_residue_eq_C_mul_coeffMap_frobenius_coe_residue_of_mem_integers_of_algEquiv332 below · depth 32 - Logarithmic supersingular polar differentials lie in the image of Theta₀
ModularCurve.exists_dlogReducedRoot_eq_of_eq_inv_smul_d_of_abelJacobiPin_of_representsRelSubPicLevel_raynaud_bridgePins_noKTransport_bridgePins42,411 below · depth 32 - Regular logarithmic supersingular-polar differentials lie in the image of Theta₀
ModularCurve.exists_mem_finPts_and_dlogReducedRoot_eq_of_mem_regularDifferentials_of_eq_inv_smul_d_of_abelJacobiPin_of_representsRelSubPicLevel_raynaud_bridgePins_noKTransport_bridgePins42,365 below · depth 32 - Reduction of a finite p-torsion class: pE is div(Ψ x)
ModularCurve.exists_section_toPic0Pair_reduction_eq_mk_and_mul_eq_ord_reducedRootFunction_of_mem_finPts_tauFree1,168 below · depth 32 - Order of J_H(M)[p] equals p^{h+toricRank}
ModularCurve.natCard_torsion_eq_pow_height_add_toricRank_of_abelJacobiPin_tauFree2,285 below · depth 32 - Discriminant of a level of a p-divisible group over mathcal O_K
PDivisibleGroup.associated_discr_level_of_hasDimension_of_ringOfIntegers73 below · depth 32 - Tate module determines the dimension of a p-divisible group
PDivisibleGroup.eq_of_hasDimension_of_linearEquiv_tateModule_of_ringOfIntegers103 below · depth 32
… and 20 more statements (search for the module name to find them).