Definitions/Def_CerednikDrinfeld_FormalUpperHalfPlaneFunctor.lean
Functoriality and -action on Deligne data
Throughout, \mathcal O is a commutative ring, K a field with an \mathcal O-algebra structure, \pi\in\mathcal O, and B a commutative \mathcal O-algebra. A DeligneDatum over B assigns to every full lattice M\subset K^2 a B-submodule line M of B\otimes_{\mathcal O}M whose quotient is an invertible B-module, monotone under lattice inclusions, equivariant for homotheties \mathrm{scalarGL}\,c, and satisfying, for every prime \mathfrak p\subset B, the non-degeneracy condition asserting the existence of M'\subset M with \pi M\subset M' and two explicit non-membership statements for elements 1\otimes v modulo \mathrm{line}\oplus\mathfrak p\cdot\top. Two constructions are made here. First, DeligneDatum.pullback sends g\in GL_2(K) and a datum d to the datum whose line at M is the preimage of d's line at g\cdot M under the base-changed isomorphism B\otimes M\to B\otimes gM; all five fields are verified, and isPullback_pullback records that it satisfies the relation DeligneDatum.IsPullback. Second, for an \mathcal O-algebra map f\colon B\to B', DeligneDatum.map sends d to the datum whose line at M is lineBaseChange f M (d.line M), the B'-span of the image of d.line\,M under f\otimes 1; lineBaseChange_eq_ker identifies this span with the kernel of B'\otimes_{\mathcal O}M\to B'\otimes_B\bigl((B\otimes_{\mathcal O}M)/N\bigr), which yields invertibility of the new quotient, and the non-degeneracy condition is transported using a linear form separating a point from I\cdot\top on a projective module (exists_linearMap_apply_not_mem) together with rTensor_not_mem_lineBaseChange_sup. These assemble into Omega K π, an AlgFunctor 𝒪 with B\mapsto Deligne data over B and functorial maps as above, with Omega_obj identifying its values with OmegaObj, and into Omega.action, the GL_2(K)-action on Omega K π given by g\cdot d=\mathrm{pullback}(g^{-1},d), whose unit, multiplicativity and compatibility with base change (DeligneDatum.map_pullback) are proved. The remaining declarations are computational lemmas: transport of a datum's line along an equality of underlying lattices, commutation of the base-changed GL_2-action with lattice inclusions, with f\otimes 1 and with homotheties, and the cocycle identities for g^{-1} needed for the action axioms.
Relation to Mathlib
AlgFunctor, DeligneDatum and lineBaseChange are the project's own notions; the base-change line is here matched with Mathlib's Grassmannian base-change quotient map (Module.Grassmannian.baseChangeMkQ) and invertibility is Mathlib's Module.Invertible.
Where it is used
The functor Omega K π together with its GL_2(K)-action is the formal object over which statements of Drinfeld's representability theorem and of the Čerednik–Drinfeld uniformisation of Shimura curves are formulated in this development, on the quaternionic side of the argument.
References
- J.-F. Boutot and H. Carayol, Uniformisation p-adique des courbes de Shimura: les théorèmes de Čerednik et de Drinfeld, Astérisque 196–197 (1991), 45–158
- V. G. Drinfeld, Coverings of p-adic symmetric domains, Functional Analysis and its Applications 10 (1976), 107–115
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 480 lines
- 32 declarations
- used in the statements of 232 theorems and imported by 248 proofs
- imports 1 definition modules
Source file: Definitions/Def_CerednikDrinfeld_FormalUpperHalfPlaneFunctor.lean
Declarations
- def
CerednikDrinfeld.FormalOmega.transportEquiv - theorem
CerednikDrinfeld.FormalOmega.transportEquiv_tmul - theorem
CerednikDrinfeld.FormalOmega.coe_ofEq_apply - theorem
CerednikDrinfeld.FormalOmega.DeligneDatum.line_transport - theorem
CerednikDrinfeld.FormalOmega.actBaseChange_inclBaseChange - theorem
CerednikDrinfeld.FormalOmega.rTensor_inclBaseChange - theorem
CerednikDrinfeld.FormalOmega.rTensor_actBaseChange - theorem
CerednikDrinfeld.FormalOmega.coe_latticeMapEquiv_apply - theorem
CerednikDrinfeld.FormalOmega.actBaseChange_tmul - theorem
CerednikDrinfeld.FormalOmega.act_act_scalarGL - theorem
CerednikDrinfeld.FormalOmega.act_act_inv - theorem
CerednikDrinfeld.FormalOmega.transport_actBaseChange_scalarGL - theorem
CerednikDrinfeld.FormalOmega.DeligneDatum.tmul_mulVec_mem - def
CerednikDrinfeld.FormalOmega.DeligneDatum.pullback - theorem
CerednikDrinfeld.FormalOmega.DeligneDatum.isPullback_pullback - theorem
CerednikDrinfeld.FormalOmega.rTensor_one_tmul - theorem
CerednikDrinfeld.FormalOmega.rTensor_smul_left - theorem
CerednikDrinfeld.FormalOmega.cancelBaseChange_one_tmul - theorem
CerednikDrinfeld.FormalOmega.lineBaseChange_eq_ker - theorem
CerednikDrinfeld.FormalOmega.invertible_quotient_lineBaseChange - theorem
CerednikDrinfeld.FormalOmega.exists_linearMap_apply_not_mem - theorem
CerednikDrinfeld.FormalOmega.rTensor_not_mem_lineBaseChange_sup - def
CerednikDrinfeld.FormalOmega.DeligneDatum.map - theorem
CerednikDrinfeld.FormalOmega.DeligneDatum.isBaseChange_map - def
CerednikDrinfeld.FormalOmega.Omega - theorem
CerednikDrinfeld.FormalOmega.Omega_obj - theorem
CerednikDrinfeld.FormalOmega.act_one_inv_val - theorem
CerednikDrinfeld.FormalOmega.act_inv_act_inv_val - theorem
CerednikDrinfeld.FormalOmega.actBaseChange_one_inv - theorem
CerednikDrinfeld.FormalOmega.transport_actBaseChange_inv_inv - theorem
CerednikDrinfeld.FormalOmega.DeligneDatum.map_pullback - def
CerednikDrinfeld.FormalOmega.Omega.action
Source
import Mathlib import Definitions.Def_CerednikDrinfeld_FormalUpperHalfPlaneDatum set_option autoImplicit false noncomputable section open scoped TensorProduct open LT.LatticeTree TensorProduct Matrix namespace CerednikDrinfeld namespace FormalOmega section Functoriality variable {𝒪 : Type} [CommRing 𝒪] {K : Type} [Field K] [Algebra 𝒪 K] (π : 𝒪) variable (B : Type) [CommRing B] [Algebra 𝒪 B] def transportEquiv {M₁ M₂ : FullLattice 𝒪 K} (h : M₁.1 = M₂.1) : latticeBaseChange 𝒪 K B M₁ ≃ₗ[B] latticeBaseChange 𝒪 K B M₂ := (LinearEquiv.ofEq M₁.1 M₂.1 h).baseChange 𝒪 B _ _ theorem transportEquiv_tmul {M₁ M₂ : FullLattice 𝒪 K} (h : M₁.1 = M₂.1) (b : B) (v : ↥M₁.1) : transportEquiv B h (b ⊗ₜ v) = b ⊗ₜ (LinearEquiv.ofEq M₁.1 M₂.1 h v) := rfl theorem coe_ofEq_apply {M₁ M₂ : FullLattice 𝒪 K} (h : M₁.1 = M₂.1) (v : ↥M₁.1) : ((LinearEquiv.ofEq M₁.1 M₂.1 h v : ↥M₂.1) : Fin 2 → K) = v := rfl variable {B} in theorem DeligneDatum.line_transport (d : DeligneDatum (K := K) π B) {M₁ M₂ : FullLattice 𝒪 K} (h : M₁.1 = M₂.1) : d.line M₂ = (d.line M₁).map (transportEquiv B h).toLinearMap := by obtain ⟨L₁, h₁⟩ := M₁ obtain ⟨L₂, h₂⟩ := M₂ change L₁ = L₂ at h subst h have hT : ∀ x : latticeBaseChange 𝒪 K B ⟨L₁, h₁⟩, transportEquiv B (M₁ := ⟨L₁, h₁⟩) (M₂ := ⟨L₁, h₂⟩) rfl x = x := by intro x induction x using TensorProduct.induction_on with | zero => exact LinearEquiv.map_zero _ | tmul b v => rfl | add x y hx hy => rw [LinearEquiv.map_add, hx, hy] ext x constructor · intro hx; exact ⟨x, hx, hT x⟩ · rintro ⟨y, hy, rfl⟩ rw [LinearEquiv.coe_coe, hT y]; exact hy theorem actBaseChange_inclBaseChange (g : Matrix.GeneralLinearGroup (Fin 2) K) {M' M : FullLattice 𝒪 K} (h : M'.1 ≤ M.1) (x : latticeBaseChange 𝒪 K B M') : (actBaseChange B g M).toLinearMap (inclBaseChange B h x) = inclBaseChange B (latticeMap_mono g h) ((actBaseChange B g M').toLinearMap x) := by induction x using TensorProduct.induction_on with | zero => simp only [LinearMap.map_zero] | add x y hx hy => simp only [LinearMap.map_add, hx, hy] | tmul b v => change b ⊗ₜ[𝒪] (latticeMapEquiv g M.1 (Submodule.inclusion h v)) = b ⊗ₜ[𝒪] Submodule.inclusion (latticeMap_mono g h) (latticeMapEquiv g M'.1 v) congr 1 variable {B} in theorem rTensor_inclBaseChange {B' : Type} [CommRing B'] [Algebra 𝒪 B'] (f : B →ₐ[𝒪] B') {M' M : FullLattice 𝒪 K} (h : M'.1 ≤ M.1) (x : latticeBaseChange 𝒪 K B M') : LinearMap.rTensor (↥M.1) f.toLinearMap (inclBaseChange B h x) = inclBaseChange B' h (LinearMap.rTensor (↥M'.1) f.toLinearMap x) := by induction x using TensorProduct.induction_on with | zero => simp only [LinearMap.map_zero] | add x y hx hy => simp only [LinearMap.map_add, hx, hy] | tmul b v => rfl variable {B} in theorem rTensor_actBaseChange {B' : Type} [CommRing B'] [Algebra 𝒪 B'] (f : B →ₐ[𝒪] B') (g : Matrix.GeneralLinearGroup (Fin 2) K) (M : FullLattice 𝒪 K) (x : latticeBaseChange 𝒪 K B M) : LinearMap.rTensor (↥(FullLattice.act g M).1) f.toLinearMap (actBaseChange B g M x) = actBaseChange B' g M (LinearMap.rTensor (↥M.1) f.toLinearMap x) := by induction x using TensorProduct.induction_on with | zero => rw [LinearEquiv.map_zero, LinearMap.map_zero, LinearMap.map_zero, LinearEquiv.map_zero] | add x y hx hy => rw [LinearEquiv.map_add, LinearMap.map_add, LinearMap.map_add, LinearEquiv.map_add, hx, hy] | tmul b v => rfl theorem coe_latticeMapEquiv_apply (g : Matrix.GeneralLinearGroup (Fin 2) K) (L : Submodule 𝒪 (Fin 2 → K)) (v : ↥L) : ((latticeMapEquiv g L v : ↥(latticeMap g L)) : Fin 2 → K) = (g : Matrix (Fin 2) (Fin 2) K) *ᵥ (v : Fin 2 → K) := rfl theorem actBaseChange_tmul (g : Matrix.GeneralLinearGroup (Fin 2) K) (M : FullLattice 𝒪 K) (b : B) (v : ↥M.1) : actBaseChange B g M (b ⊗ₜ v) = b ⊗ₜ latticeMapEquiv g M.1 v := rfl theorem act_act_scalarGL (g : Matrix.GeneralLinearGroup (Fin 2) K) (c : Kˣ) (M : FullLattice 𝒪 K) : (FullLattice.act (scalarGL c) (FullLattice.act g M)).1 = (FullLattice.act g (FullLattice.act (scalarGL c) M)).1 := by show latticeMap (scalarGL c) (latticeMap g M.1) = latticeMap g (latticeMap (scalarGL c) M.1) rw [← latticeMap_mul, scalarGL_mul_comm, latticeMap_mul] theorem act_act_inv (g : Matrix.GeneralLinearGroup (Fin 2) K) (N : FullLattice 𝒪 K) : (FullLattice.act g (FullLattice.act g⁻¹ N)).1 = N.1 := latticeMap_latticeMap_inv g N.1 theorem transport_actBaseChange_scalarGL (g : Matrix.GeneralLinearGroup (Fin 2) K) (c : Kˣ) (M : FullLattice 𝒪 K) (x : latticeBaseChange 𝒪 K B M) : transportEquiv B (act_act_scalarGL g c M) (actBaseChange B (scalarGL c) (FullLattice.act g M) (actBaseChange B g M x)) = actBaseChange B g (FullLattice.act (scalarGL c) M) (actBaseChange B (scalarGL c) M x) := by induction x using TensorProduct.induction_on with | zero => simp only [LinearEquiv.map_zero] | add x y hx hy => simp only [LinearEquiv.map_add, hx, hy] | tmul b v => have h1 : transportEquiv B (act_act_scalarGL g c M) (actBaseChange B (scalarGL c) (FullLattice.act g M) (actBaseChange B g M (b ⊗ₜ[𝒪] v))) = b ⊗ₜ[𝒪] (LinearEquiv.ofEq (FullLattice.act (scalarGL c) (FullLattice.act g M)).1 (FullLattice.act g (FullLattice.act (scalarGL c) M)).1 (act_act_scalarGL g c M) (latticeMapEquiv (scalarGL c) (FullLattice.act g M).1 (latticeMapEquiv g M.1 v))) := rfl have h2 : actBaseChange B g (FullLattice.act (scalarGL c) M) (actBaseChange B (scalarGL c) M (b ⊗ₜ[𝒪] v)) = b ⊗ₜ[𝒪] latticeMapEquiv g (FullLattice.act (scalarGL c) M).1 (latticeMapEquiv (scalarGL c) M.1 v) := rfl rw [h1, h2] congr 1 apply Subtype.ext rw [LinearEquiv.coe_ofEq_apply, coe_latticeMapEquiv_apply, coe_latticeMapEquiv_apply, coe_latticeMapEquiv_apply, coe_latticeMapEquiv_apply, Matrix.mulVec_mulVec, Matrix.mulVec_mulVec, ← Units.val_mul, ← Units.val_mul, scalarGL_mul_comm] variable {B} in theorem DeligneDatum.tmul_mulVec_mem (d : DeligneDatum (K := K) π B) (g : Matrix.GeneralLinearGroup (Fin 2) K) (N : FullLattice 𝒪 K) (𝔭 : Ideal B) (v : ↥(FullLattice.act g⁻¹ N).1) (hv : (1 : B) ⊗ₜ[𝒪] v ∈ (d.line (FullLattice.act g (FullLattice.act g⁻¹ N))).comap (actBaseChange B g (FullLattice.act g⁻¹ N)).toLinearMap ⊔ (𝔭 • ⊤ : Submodule B (latticeBaseChange 𝒪 K B (FullLattice.act g⁻¹ N)))) : (1 : B) ⊗ₜ[𝒪] (⟨(g : Matrix (Fin 2) (Fin 2) K) *ᵥ (v : Fin 2 → K), (act_act_inv g N).le (mulVec_mem_latticeMap v.2)⟩ : ↥N.1) ∈ d.line N ⊔ (𝔭 • ⊤ : Submodule B (latticeBaseChange 𝒪 K B N)) := by set Φ := (actBaseChange B g (FullLattice.act g⁻¹ N)).trans (transportEquiv B (act_act_inv g N)) with hΦ have key : Φ ((1 : B) ⊗ₜ[𝒪] v) = (1 : B) ⊗ₜ[𝒪] (⟨(g : Matrix (Fin 2) (Fin 2) K) *ᵥ (v : Fin 2 → K), (act_act_inv g N).le (mulVec_mem_latticeMap v.2)⟩ : ↥N.1) := by rw [hΦ]; rfl rw [← key] obtain ⟨y, hy, z, hz, hyz⟩ := Submodule.mem_sup.mp hv rw [← hyz, map_add] refine Submodule.mem_sup.mpr ⟨Φ y, ?_, Φ z, ?_, rfl⟩ · rw [DeligneDatum.line_transport π d (act_act_inv g N), hΦ, LinearEquiv.trans_apply] exact Submodule.mem_map_of_mem (Submodule.mem_comap.mp hy) · refine Submodule.smul_induction_on (p := fun z => Φ z ∈ (𝔭 • ⊤ : Submodule B (latticeBaseChange 𝒪 K B N))) hz (fun r hr n _ => ?_) (fun x y hx hy => ?_) · show Φ (r • n) ∈ _ rw [LinearEquiv.map_smul]; exact Submodule.smul_mem_smul hr Submodule.mem_top · show Φ (x + y) ∈ _ rw [LinearEquiv.map_add]; exact Submodule.add_mem _ hx hy def DeligneDatum.pullback (g : Matrix.GeneralLinearGroup (Fin 2) K) (d : DeligneDatum (K := K) π B) : DeligneDatum (K := K) π B where line M := (d.line (FullLattice.act g M)).comap (actBaseChange B g M).toLinearMap invertible M := by haveI := d.invertible (FullLattice.act g M) exact Module.Invertible.congr (Submodule.Quotient.equiv ((d.line (FullLattice.act g M)).comap (actBaseChange B g M).toLinearMap) (d.line (FullLattice.act g M)) (actBaseChange B g M) (Submodule.map_comap_eq_of_surjective (actBaseChange B g M).surjective _)).symm mono h := by rintro _ ⟨x, hx, rfl⟩ rw [SetLike.mem_coe, Submodule.mem_comap] at hx rw [Submodule.mem_comap, actBaseChange_inclBaseChange] exact d.mono (latticeMap_mono g h) (Submodule.mem_map_of_mem hx) homothety c M := by show (d.line (FullLattice.act g (FullLattice.act (scalarGL c) M))).comap (actBaseChange B g (FullLattice.act (scalarGL c) M)).toLinearMap = ((d.line (FullLattice.act g M)).comap (actBaseChange B g M).toLinearMap).map (actBaseChange B (scalarGL c) M).toLinearMap rw [DeligneDatum.line_transport π d (act_act_scalarGL g c M), d.homothety c (FullLattice.act g M)] ext x simp only [Submodule.mem_comap, Submodule.mem_map, LinearEquiv.coe_coe] constructor · rintro ⟨_, ⟨y, hy, rfl⟩, hyx⟩ refine ⟨(actBaseChange B g M).symm y, ?_, ?_⟩ · rw [LinearEquiv.apply_symm_apply]; exact hy · apply (actBaseChange B g (FullLattice.act (scalarGL c) M)).injective rw [← transport_actBaseChange_scalarGL, LinearEquiv.apply_symm_apply] exact hyx · rintro ⟨w, hw, rfl⟩ exact ⟨_, ⟨actBaseChange B g M w, hw, rfl⟩, transport_actBaseChange_scalarGL B g c M w⟩ nondeg 𝔭 h𝔭 := by obtain ⟨N', N, hN, hπ, h1, h2⟩ := d.nondeg 𝔭 h𝔭 refine ⟨FullLattice.act g⁻¹ N', FullLattice.act g⁻¹ N, latticeMap_mono g⁻¹ hN, ?_, ?_, ?_⟩ · intro v obtain ⟨w, hw, hwv⟩ := mem_latticeMap.mp v.2 rw [← hwv, ← Matrix.mulVec_smul] exact mulVec_mem_latticeMap (hπ ⟨w, hw⟩) · intro v hv hmem refine h1 ⟨(g : Matrix (Fin 2) (Fin 2) K) *ᵥ (v : Fin 2 → K), (act_act_inv g N).le (mulVec_mem_latticeMap v.2)⟩ ?_ (DeligneDatum.tmul_mulVec_mem π d g N 𝔭 v hmem) intro hgv apply hv have h' := mulVec_mem_latticeMap (g := g⁻¹) hgv rwa [Matrix.mulVec_mulVec, ← Units.val_mul, inv_mul_cancel, Units.val_one, Matrix.one_mulVec] at h' · intro v' hv' hmem refine h2 ⟨(g : Matrix (Fin 2) (Fin 2) K) *ᵥ (v' : Fin 2 → K), (act_act_inv g N').le (mulVec_mem_latticeMap v'.2)⟩ ?_ (DeligneDatum.tmul_mulVec_mem π d g N' 𝔭 v' hmem) rintro ⟨w, hw⟩ apply hv' refine ⟨⟨((g⁻¹ : Matrix.GeneralLinearGroup (Fin 2) K) : Matrix (Fin 2) (Fin 2) K) *ᵥ (w : Fin 2 → K), show ((g⁻¹ : Matrix.GeneralLinearGroup (Fin 2) K) : Matrix (Fin 2) (Fin 2) K) *ᵥ (w : Fin 2 → K) ∈ (FullLattice.act g⁻¹ N).1 from mulVec_mem_latticeMap w.2⟩, ?_⟩ show (v' : Fin 2 → K) = algebraMap 𝒪 K π • (((g⁻¹ : Matrix.GeneralLinearGroup (Fin 2) K) : Matrix (Fin 2) (Fin 2) K) *ᵥ (w : Fin 2 → K)) rw [← Matrix.mulVec_smul, ← hw, Matrix.mulVec_mulVec, ← Units.val_mul, inv_mul_cancel, Units.val_one, Matrix.one_mulVec] theorem DeligneDatum.isPullback_pullback (g : Matrix.GeneralLinearGroup (Fin 2) K) (d : DeligneDatum (K := K) π B) : DeligneDatum.IsPullback (K := K) (π := π) B g d (DeligneDatum.pullback π B g d) := fun _ => rfl section BaseChange variable {B} {B' : Type} [CommRing B'] [Algebra 𝒪 B'] (f : B →ₐ[𝒪] B') theorem rTensor_one_tmul (M : FullLattice 𝒪 K) (v : ↥M.1) : LinearMap.rTensor (↥M.1) f.toLinearMap ((1 : B) ⊗ₜ[𝒪] v) = (1 : B') ⊗ₜ[𝒪] v := by rw [LinearMap.rTensor_tmul, AlgHom.toLinearMap_apply, map_one] theorem rTensor_smul_left {C : Type} [CommRing C] [Algebra 𝒪 C] (g : B' →ₐ[𝒪] C) (M : FullLattice 𝒪 K) (b' : B') (y : latticeBaseChange 𝒪 K B' M) : LinearMap.rTensor (↥M.1) g.toLinearMap (b' • y) = g b' • LinearMap.rTensor (↥M.1) g.toLinearMap y := by induction y using TensorProduct.induction_on with | zero => rw [smul_zero, map_zero, smul_zero] | add x y hx hy => rw [smul_add, map_add, hx, hy, map_add, smul_add] | tmul b v => rw [smul_tmul', LinearMap.rTensor_tmul, LinearMap.rTensor_tmul, smul_tmul', AlgHom.toLinearMap_apply, AlgHom.toLinearMap_apply, smul_eq_mul, smul_eq_mul, map_mul] theorem cancelBaseChange_one_tmul [Algebra B B'] [IsScalarTower 𝒪 B B'] (hf : ∀ b, algebraMap B B' b = f b) (M : FullLattice 𝒪 K) (x : latticeBaseChange 𝒪 K B M) : AlgebraTensorModule.cancelBaseChange 𝒪 B B' B' (↥M.1) ((1 : B') ⊗ₜ[B] x) = LinearMap.rTensor (↥M.1) f.toLinearMap x := by induction x using TensorProduct.induction_on with | zero => rw [tmul_zero, LinearEquiv.map_zero, LinearMap.map_zero] | tmul b v => rw [AlgebraTensorModule.cancelBaseChange_tmul, LinearMap.rTensor_tmul, AlgHom.toLinearMap_apply, Algebra.smul_def, hf, mul_one] | add x y hx hy => rw [tmul_add, LinearEquiv.map_add, LinearMap.map_add, hx, hy] theorem lineBaseChange_eq_ker [Algebra B B'] [IsScalarTower 𝒪 B B'] (hf : ∀ b, algebraMap B B' b = f b) (M : FullLattice 𝒪 K) (N : Submodule B (latticeBaseChange 𝒪 K B M)) : lineBaseChange f M N = LinearMap.ker (Module.Grassmannian.baseChangeMkQ B' N) := by have hker : LinearMap.ker (N.mkQ.baseChange B') = N.baseChange B' := by ext x have hx : x ∈ LinearMap.ker (LinearMap.lTensor B' N.mkQ) ↔ x ∈ LinearMap.range (LinearMap.lTensor B' N.subtype) := by rw [lTensor_mkQ (Q := B')] rw [LinearMap.mem_ker, LinearMap.mem_range] at hx rw [LinearMap.mem_ker, LinearMap.baseChange_eq_ltensor, hx, Submodule.baseChange, LinearMap.mem_range, LinearMap.baseChange_eq_ltensor] rw [Module.Grassmannian.baseChangeMkQ, LinearMap.ker_comp, hker, ← Submodule.map_equiv_eq_comap_symm, Submodule.baseChange_eq_span, Submodule.map_span, Submodule.map_coe, Set.image_image, lineBaseChange] congr 1 refine Set.image_congr fun x _ => ?_ exact (cancelBaseChange_one_tmul f hf M x).symm theorem invertible_quotient_lineBaseChange (M : FullLattice 𝒪 K) (N : Submodule B (latticeBaseChange 𝒪 K B M)) (hN : Module.Invertible B (latticeBaseChange 𝒪 K B M ⧸ N)) : Module.Invertible B' (latticeBaseChange 𝒪 K B' M ⧸ lineBaseChange f M N) := by letI : Algebra B B' := f.toAlgebra haveI : IsScalarTower 𝒪 B B' := IsScalarTower.of_algebraMap_eq fun r => (f.commutes r).symm haveI := hN exact Module.Invertible.congr ((Module.Grassmannian.baseChangeMkQEquiv (B := B') N).symm.trans (Submodule.quotEquivOfEq _ _ (lineBaseChange_eq_ker f (fun _ => rfl) M N).symm)) theorem exists_linearMap_apply_not_mem {R : Type} [CommRing R] {Q : Type} [AddCommGroup Q] [Module R Q] [Module.Projective R Q] (I : Ideal R) (q : Q) (hq : q ∉ (I • ⊤ : Submodule R Q)) : ∃ φ : Q →ₗ[R] R, φ q ∉ I := by by_contra h simp only [not_exists, not_not] at h apply hq obtain ⟨s, hs⟩ := Module.projective_def'.mp ‹Module.Projective R Q› have hx : q = Finsupp.linearCombination R id (s q) := (congrArg (fun g : Q →ₗ[R] Q => g q) hs).symm rw [hx, Finsupp.linearCombination_apply, Finsupp.sum] refine Submodule.sum_mem _ fun i _ => ?_ exact Submodule.smul_mem_smul (h ((Finsupp.lapply i).comp s)) Submodule.mem_top theorem rTensor_not_mem_lineBaseChange_sup (M : FullLattice 𝒪 K) (N : Submodule B (latticeBaseChange 𝒪 K B M)) (hN : Module.Invertible B (latticeBaseChange 𝒪 K B M ⧸ N)) (𝔭' : Ideal B') [𝔭'.IsPrime] (x : latticeBaseChange 𝒪 K B M) (hx : x ∉ N ⊔ (Ideal.comap f 𝔭' • ⊤ : Submodule B (latticeBaseChange 𝒪 K B M))) : LinearMap.rTensor (↥M.1) f.toLinearMap x ∉ lineBaseChange f M N ⊔ (𝔭' • ⊤ : Submodule B' (latticeBaseChange 𝒪 K B' M)) := by letI : Algebra B B' := f.toAlgebra haveI : IsScalarTower 𝒪 B B' := IsScalarTower.of_algebraMap_eq fun r => (f.commutes r).symm haveI := hN have hq : N.mkQ x ∉ (Ideal.comap f 𝔭' • ⊤ : Submodule B (latticeBaseChange 𝒪 K B M ⧸ N)) := by intro hq apply hx have : x ∈ ((Ideal.comap f 𝔭' • ⊤ : Submodule B (latticeBaseChange 𝒪 K B M)).map N.mkQ).comap N.mkQ := by rw [Submodule.mem_comap, Submodule.map_smul'', Submodule.map_top, Submodule.range_mkQ]; exact hq rwa [Submodule.comap_map_mkQ] at this obtain ⟨φ, hφ⟩ := exists_linearMap_apply_not_mem (Ideal.comap f 𝔭') (N.mkQ x) hq let ψ : latticeBaseChange 𝒪 K B' M →ₗ[B'] B' := (AlgebraTensorModule.rid B B' B').toLinearMap ∘ₗ (φ.baseChange B') ∘ₗ Module.Grassmannian.baseChangeMkQ B' N have hψx : ψ (LinearMap.rTensor (↥M.1) f.toLinearMap x) = f (φ (N.mkQ x)) := by simp only [ψ, LinearMap.comp_apply, LinearEquiv.coe_coe] rw [← cancelBaseChange_one_tmul f (fun _ => rfl) M x, Module.Grassmannian.baseChangeMkQ, LinearMap.comp_apply, LinearEquiv.coe_coe, LinearEquiv.symm_apply_apply, LinearMap.baseChange_tmul, Submodule.mkQ_apply, LinearMap.baseChange_tmul, AlgebraTensorModule.rid_tmul, Algebra.smul_def, mul_one] rfl have hψN : ∀ y ∈ lineBaseChange f M N, ψ y = 0 := by intro y hy rw [lineBaseChange_eq_ker f (fun _ => rfl) M N, LinearMap.mem_ker] at hy simp only [ψ, LinearMap.comp_apply, hy, map_zero] have hψ𝔭 : ∀ y ∈ (𝔭' • ⊤ : Submodule B' (latticeBaseChange 𝒪 K B' M)), ψ y ∈ 𝔭' := by intro y hy refine Submodule.smul_induction_on (p := fun y => ψ y ∈ 𝔭') hy (fun r hr n _ => ?_) (fun x y hx hy => ?_) · show ψ (r • n) ∈ 𝔭' rw [LinearMap.map_smul, smul_eq_mul]; exact Ideal.mul_mem_right _ _ hr · show ψ (x + y) ∈ 𝔭' rw [LinearMap.map_add]; exact Ideal.add_mem _ hx hy intro hmem obtain ⟨y, hy, z, hz, hyz⟩ := Submodule.mem_sup.mp hmem apply hφ rw [Ideal.mem_comap, ← hψx, ← hyz, map_add, hψN y hy, zero_add] exact hψ𝔭 z hz def DeligneDatum.map (d : DeligneDatum (K := K) π B) : DeligneDatum (K := K) π B' where line M := lineBaseChange f M (d.line M) invertible M := invertible_quotient_lineBaseChange f M (d.line M) (d.invertible M) mono h := by show (lineBaseChange f _ (d.line _)).map (inclBaseChange B' h) ≤ lineBaseChange f _ (d.line _) rw [lineBaseChange, lineBaseChange, Submodule.map_span, ← Set.image_comp] apply Submodule.span_mono rintro _ ⟨x, hx, rfl⟩ exact ⟨inclBaseChange B h x, d.mono h (Submodule.mem_map_of_mem hx), rTensor_inclBaseChange f h x⟩ homothety c M := by show lineBaseChange f _ (d.line _) = (lineBaseChange f _ (d.line _)).map (actBaseChange B' (scalarGL c) M).toLinearMap rw [lineBaseChange, lineBaseChange, Submodule.map_span, ← Set.image_comp, d.homothety c M, Submodule.map_coe, ← Set.image_comp] congr 1 apply Set.image_congr intro x _ exact rTensor_actBaseChange f (scalarGL c) M x nondeg 𝔭' h𝔭' := by haveI := h𝔭' obtain ⟨M', M, h, hπ, h1, h2⟩ := d.nondeg (Ideal.comap f 𝔭') (Ideal.IsPrime.comap f) refine ⟨M', M, h, hπ, fun v hv => ?_, fun v' hv' => ?_⟩ · rw [← rTensor_one_tmul f M v] exact rTensor_not_mem_lineBaseChange_sup f M (d.line M) (d.invertible M) 𝔭' _ (h1 v hv) · rw [← rTensor_one_tmul f M' v'] exact rTensor_not_mem_lineBaseChange_sup f M' (d.line M') (d.invertible M') 𝔭' _ (h2 v' hv') theorem DeligneDatum.isBaseChange_map (d : DeligneDatum (K := K) π B) : DeligneDatum.IsBaseChange (K := K) (π := π) f d (d.map π f) := fun _ => rfl end BaseChange variable (K) in def Omega : AlgFunctor 𝒪 where obj B _ _ := DeligneDatum (K := K) π B map f d := DeligneDatum.map π f d map_id d := by apply DeligneDatum.ext' funext M show lineBaseChange (AlgHom.id 𝒪 _) M (d.line M) = d.line M rw [lineBaseChange, AlgHom.toLinearMap_id, LinearMap.rTensor_id, LinearMap.id_coe, Set.image_id, Submodule.span_eq] map_comp f g d := by apply DeligneDatum.ext' funext M show lineBaseChange (g.comp f) M (d.line M) = lineBaseChange g M (lineBaseChange f M (d.line M)) rw [lineBaseChange, lineBaseChange, lineBaseChange, AlgHom.comp_toLinearMap, LinearMap.rTensor_comp, LinearMap.coe_comp, Set.image_comp] apply le_antisymm · exact Submodule.span_mono (Set.image_mono Submodule.subset_span) · rw [Submodule.span_le] rintro _ ⟨y, hy, rfl⟩ induction hy using Submodule.span_induction with | mem s hs => exact Submodule.subset_span ⟨s, hs, rfl⟩ | zero => rw [map_zero]; exact zero_mem _ | add a b _ _ ha hb => rw [map_add]; exact add_mem ha hb | smul b' a _ ha => rw [rTensor_smul_left]; exact Submodule.smul_mem _ _ ha theorem Omega_obj (B : Type) [CommRing B] [Algebra 𝒪 B] : (Omega K π).obj B = OmegaObj (K := K) π B := rfl theorem act_one_inv_val (M : FullLattice 𝒪 K) : M.1 = (FullLattice.act (1 : Matrix.GeneralLinearGroup (Fin 2) K)⁻¹ M).1 := by show M.1 = latticeMap (1 : Matrix.GeneralLinearGroup (Fin 2) K)⁻¹ M.1 rw [inv_one, latticeMap_one] theorem act_inv_act_inv_val (g h : Matrix.GeneralLinearGroup (Fin 2) K) (M : FullLattice 𝒪 K) : (FullLattice.act h⁻¹ (FullLattice.act g⁻¹ M)).1 = (FullLattice.act (g * h)⁻¹ M).1 := by show latticeMap h⁻¹ (latticeMap g⁻¹ M.1) = latticeMap (g * h)⁻¹ M.1 rw [← latticeMap_mul, _root_.mul_inv_rev] theorem actBaseChange_one_inv (M : FullLattice 𝒪 K) (x : latticeBaseChange 𝒪 K B M) : actBaseChange B (1 : Matrix.GeneralLinearGroup (Fin 2) K)⁻¹ M x = transportEquiv B (act_one_inv_val M) x := by induction x using TensorProduct.induction_on with | zero => simp only [LinearEquiv.map_zero] | add x y hx hy => simp only [LinearEquiv.map_add, hx, hy] | tmul b v => rw [actBaseChange_tmul, transportEquiv_tmul] congr 1 apply Subtype.ext rw [coe_latticeMapEquiv_apply, LinearEquiv.coe_ofEq_apply, inv_one, Units.val_one, Matrix.one_mulVec] theorem transport_actBaseChange_inv_inv (g h : Matrix.GeneralLinearGroup (Fin 2) K) (M : FullLattice 𝒪 K) (x : latticeBaseChange 𝒪 K B M) : transportEquiv B (act_inv_act_inv_val g h M) (actBaseChange B h⁻¹ (FullLattice.act g⁻¹ M) (actBaseChange B g⁻¹ M x)) = actBaseChange B (g * h)⁻¹ M x := by induction x using TensorProduct.induction_on with | zero => simp only [LinearEquiv.map_zero] | add x y hx hy => simp only [LinearEquiv.map_add, hx, hy] | tmul b v => have h1 : transportEquiv B (act_inv_act_inv_val g h M) (actBaseChange B h⁻¹ (FullLattice.act g⁻¹ M) (actBaseChange B g⁻¹ M (b ⊗ₜ[𝒪] v))) = b ⊗ₜ[𝒪] (LinearEquiv.ofEq (FullLattice.act h⁻¹ (FullLattice.act g⁻¹ M)).1 (FullLattice.act (g * h)⁻¹ M).1 (act_inv_act_inv_val g h M) (latticeMapEquiv h⁻¹ (FullLattice.act g⁻¹ M).1 (latticeMapEquiv g⁻¹ M.1 v))) := rfl rw [h1, actBaseChange_tmul] congr 1 apply Subtype.ext rw [LinearEquiv.coe_ofEq_apply, coe_latticeMapEquiv_apply, coe_latticeMapEquiv_apply, coe_latticeMapEquiv_apply, Matrix.mulVec_mulVec, ← Units.val_mul, _root_.mul_inv_rev] variable {B} in theorem DeligneDatum.map_pullback {B' : Type} [CommRing B'] [Algebra 𝒪 B'] (f : B →ₐ[𝒪] B') (g : Matrix.GeneralLinearGroup (Fin 2) K) (d : DeligneDatum (K := K) π B) : (DeligneDatum.pullback π B g d).map π f = DeligneDatum.pullback π B' g (d.map π f) := by apply DeligneDatum.ext' funext M show lineBaseChange f M ((d.line (FullLattice.act g M)).comap (actBaseChange B g M).toLinearMap) = (lineBaseChange f (FullLattice.act g M) (d.line (FullLattice.act g M))).comap (actBaseChange B' g M).toLinearMap rw [lineBaseChange, lineBaseChange, Submodule.comap_equiv_eq_map_symm, Submodule.comap_equiv_eq_map_symm, Submodule.map_span, Submodule.map_coe, Set.image_image, Set.image_image] congr 1 refine Set.image_congr fun y _ => ?_ apply (actBaseChange B' g M).injective rw [LinearEquiv.coe_coe, LinearEquiv.coe_coe, LinearEquiv.apply_symm_apply, ← rTensor_actBaseChange, LinearEquiv.apply_symm_apply] variable (K) in def Omega.action : AlgFunctor.GroupAction (Matrix.GeneralLinearGroup (Fin 2) K) (Omega K π) where act B _ _ g d := DeligneDatum.pullback π B g⁻¹ d act_one B _ _ d := by apply DeligneDatum.ext' funext M show (d.line (FullLattice.act (1 : Matrix.GeneralLinearGroup (Fin 2) K)⁻¹ M)).comap (actBaseChange B (1 : Matrix.GeneralLinearGroup (Fin 2) K)⁻¹ M).toLinearMap = d.line M rw [DeligneDatum.line_transport π d (act_one_inv_val M)] ext x simp only [Submodule.mem_comap, Submodule.mem_map, LinearEquiv.coe_coe] constructor · rintro ⟨y, hy, hyx⟩ rw [actBaseChange_one_inv] at hyx rwa [← (transportEquiv B (act_one_inv_val M)).injective hyx] · intro hx exact ⟨x, hx, (actBaseChange_one_inv B M x).symm⟩ act_mul B _ _ g h d := by apply DeligneDatum.ext' funext M show (d.line (FullLattice.act (g * h)⁻¹ M)).comap (actBaseChange B (g * h)⁻¹ M).toLinearMap = (((d.line (FullLattice.act h⁻¹ (FullLattice.act g⁻¹ M))).comap (actBaseChange B h⁻¹ (FullLattice.act g⁻¹ M)).toLinearMap)).comap (actBaseChange B g⁻¹ M).toLinearMap rw [DeligneDatum.line_transport π d (act_inv_act_inv_val g h M)] ext x simp only [Submodule.mem_comap, Submodule.mem_map, LinearEquiv.coe_coe] constructor · rintro ⟨y, hy, hyx⟩ rw [← transport_actBaseChange_inv_inv] at hyx rwa [← (transportEquiv B (act_inv_act_inv_val g h M)).injective hyx] · intro hx exact ⟨_, hx, transport_actBaseChange_inv_inv B g h M x⟩ act_map f g d := DeligneDatum.map_pullback π f g⁻¹ d end Functoriality end FormalOmega end CerednikDrinfeld end
Statements phrased using this module (232)
- Čerednik–Drinfeld uniformisation of the coarse fake elliptic curve tower
CerednikDrinfeld.QM.IsCoarseModuli.exists_cerednikDrinfeld_uniformization_of_span_eq_of_geometricallyConnected_of_squarefree_of_isUnit_two_of_geometricallyConnected_tower_of_isUnit_three7,014 below · depth 24 - Mumford embedding from Čerednik–Drinfeld uniformisation
CerednikDrinfeld.exists_mumfordEmbedding_of_cerednikDrinfeld_uniformization_one_zero_of_two_mul_dvd8,616 below · depth 24 - Mumford embedding from Čerednik–Drinfeld uniformisation
CerednikDrinfeld.exists_mumfordEmbedding_of_cerednikDrinfeld_uniformization_zero_one_of_two_mul_dvd8,615 below · depth 24 - Action laws for the twisted GL₂(K₀)-relation on Ω
CerednikDrinfeld.FormalOmega.OmegaNr.isTwistedAct_laws0 below · depth 25 - Čerednik–Drinfeld uniformisation at fine level, tower and Atkin–Lehner
CerednikDrinfeld.QM.IsFineModuli.exists_cerednikDrinfeld_uniformization_fine_level_atkinLehner_of_geometricallyConnected_of_squarefree_of_isUnit_two_of_geometricallyConnected_tower_of_isUnit_three7,008 below · depth 25 - Central, odd and even elements of the away-unit group
CerednikDrinfeld.awayUnits_central_odd_even_feed_one_zero_of_two_mul_dvd34 below · depth 25 - Parity of vdet describes Γ₂ at all levels
CerednikDrinfeld.awayUnits_central_odd_even_feed_zero_one_of_two_mul_dvd34 below · depth 25 - Scalar re-alignment of a Frobenius twist in Čerednik–Drinfeld descent
CerednikDrinfeld.cerednikDrinfeld_realign_of_frobTwist_eq_on_fixed1 below · depth 25 - Smooth, geometrically connected generic fibres of the coarse models
CerednikDrinfeld.coarseModuli_smooth_geometricallyConnected_feed_one_zero_of_two_mul_dvd5,772 below · depth 25 - Smoothness and geometric connectedness of the generic fibres
CerednikDrinfeld.coarseModuli_smooth_geometricallyConnected_feed_zero_one_of_two_mul_dvd5,772 below · depth 25 - Discreteness and cocompactness of Γ₁ on the lattice tree
CerednikDrinfeld.evenAwayUnits_finite_stabilizer_finite_orbits_feed_one_zero_of_two_mul_dvd3,794 below · depth 25 - Finite stabilisers and finitely many orbits for Γ₂ on the tree
CerednikDrinfeld.evenAwayUnits_finite_stabilizer_finite_orbits_feed_zero_one_of_two_mul_dvd3,793 below · depth 25 - Tame vertex stabilisers for Γ₁ on the q' side
CerednikDrinfeld.evenAwayUnits_v_card_stabilizer_eq_one_one_zero_of_two_mul_dvd3,793 below · depth 25 - Tame vertex stabilisers for the away-unit groups Γ₂
CerednikDrinfeld.evenAwayUnits_v_card_stabilizer_eq_one_zero_one_of_two_mul_dvd3,793 below · depth 25 - Virtual torsion-freeness of the even away-unit groups
CerednikDrinfeld.evenAwayUnits_virtuallyTorsionFree_feed_one_zero_of_two_mul_dvd37 below · depth 25 - Virtually torsion-free even away-unit groups at q
CerednikDrinfeld.evenAwayUnits_virtuallyTorsionFree_feed_zero_one_of_two_mul_dvd37 below · depth 25 - Function field of a Čerednik–Drinfeld quotient as Γ'-invariant meromorphic functions
CerednikDrinfeld.exists_ringEquiv_functionField_pullback_invariantFieldOf_smul_level_of_cerednikDrinfeld_quotient_of_tame_of_virtuallyTorsionFree_of_smooth721 below · depth 25 - Mumford embedding of the Shimura tower over ℚ_{q'}
CerednikDrinfeld.mumfordEmbedding_assembly_of_functionField_equiv_one_zero_of_two_mul_dvd5,797 below · depth 25 - Assembling the Mumford embedding from the function-field identification
CerednikDrinfeld.mumfordEmbedding_assembly_of_functionField_equiv_zero_one_of_two_mul_dvd5,797 below · depth 25 - Unique factorisation of invariant families through Theta_f
CerednikDrinfeld.QM.IsFineModuli.existsUnique_factor_of_cerednikDrinfeld_uniformization_fine878 below · depth 26 - Formal Čerednik–Drinfeld quotient property at tower level ℓ
CerednikDrinfeld.QM.IsFineModuli.existsUnique_factor_of_cerednikDrinfeld_uniformization_tower_of_isUnit_two44 below · depth 26 - Fine-level Čerednik–Drinfeld uniformisation with Atkin–Lehner and level lifts
CerednikDrinfeld.QM.IsFineModuli.exists_cerednikDrinfeld_uniformization_fine_level_atkinLehner_minusT_liftT_of_squarefree_of_isUnit_two_of_pow_smul_mem5,261 below · depth 26 - Surjectivity of the Čerednik–Drinfeld parametrisation on geometric points
CerednikDrinfeld.QM.IsFineModuli.forall_exists_eq_of_cerednikDrinfeld_uniformization_fine_minus_of_geometricallyConnected_of_squarefree_of_isUnit_two_of_isUnit_three5,820 below · depth 26 - Surjectivity of the tower-level Čerednik–Drinfeld uniformisation on geometric points
CerednikDrinfeld.QM.IsFineModuli.forall_exists_eq_of_cerednikDrinfeld_uniformization_tower_minus_of_geometricallyConnected_of_isUnit_two_of_isUnit_three5,870 below · depth 26 - Function field embedding into the Čerednik–Drinfeld model over C
CerednikDrinfeld.exists_ringHom_functionField_pullback_completion_of_moduliTowerWitness_one_zero_of_two_mul_dvd5,777 below · depth 26 - Equivariant embedding of ̄ F into the completed function field
CerednikDrinfeld.exists_ringHom_functionField_pullback_completion_of_moduliTowerWitness_zero_one_of_two_mul_dvd5,777 below · depth 26 - Integrality of the C-fibre of a Čerednik–Drinfeld quotient
CerednikDrinfeld.isIntegral_pullback_of_cerednikDrinfeld_quotient_of_smooth10 below · depth 26 - Mumford embedding read off from the function-field identification
CerednikDrinfeld.mumfordEmbedding_readoff_of_functionField_equiv_of_ringHom_one_zero_of_two_mul_dvd894 below · depth 26 - Reading off the Mumford embedding from Čerednik–Drinfeld data
CerednikDrinfeld.mumfordEmbedding_readoff_of_functionField_equiv_of_ringHom_zero_one_of_two_mul_dvd894 below · depth 26 - Determinant valuation of a split quaternion unit equals v_q(nrd)
CerednikDrinfeld.vdet_unitsMap_eq_padicValRat_nrd5 below · depth 26 - Points over algebraically closed π-nilpotent 𝒪-algebras
CerednikDrinfeld.FormalOmega.nonempty_corep_and_nonempty_omega_of_isAlgClosed3 below · depth 27 - Atkin–Lehner lift fixes the generic point of the geometric fibre
CerednikDrinfeld.QM.IsCoarseModuli.base_genericPoint_eq_of_comp_fst_eq_fst_comp_of_isAtkinLehnerQuotient_of_not_dvd765 below · depth 27 - Lifted degeneracy maps are dominant on geometric generic fibres
CerednikDrinfeld.QM.IsCoarseModuliT.base_genericPoint_eq_of_comp_fst_eq_fst_comp_degeneracy818 below · depth 27 - Invariance of a natural family under the Γₜ-orbit relation
CerednikDrinfeld.QM.IsFineModuli.apply_eq_apply_of_isPullback_of_frobTwist_eq_of_invariant8 below · depth 27 - Atkin–Lehner relations for the Čerednik–Drinfeld fine family
CerednikDrinfeld.QM.IsFineModuli.cerednikDrinfeld_fineFamily_atkinLehner_of_rigidifiedToG_heightNormalised_oneLegC5914 below · depth 27 - A Čerednik–Drinfel'd family on the fine moduli scheme
CerednikDrinfeld.QM.IsFineModuli.exists_cerednikDrinfeld_fineFamily_of_rigidifiedToG_heightNormalised_eq_oneLegC5_h23,615 below · depth 27 - Čerednik–Drinfeld uniformisation along the Hecke tower, one-leg form
CerednikDrinfeld.QM.IsFineModuli.exists_cerednikDrinfeld_towerFamily_liftT_of_rigidifiedToG_heightNormalised_eq_oneLegC51,301 below · depth 27 - Fibres of the fine Čerednik–Drinfeld uniformisation, flat-locally
CerednikDrinfeld.QM.IsFineModuli.exists_flat_family_isPullback_of_cerednikDrinfeld_uniformization_fine_eq16 below · depth 27 - Fpqc-local lifting through the fine Čerednik–Drinfeld uniformisation
CerednikDrinfeld.QM.IsFineModuli.exists_flat_family_lift_of_cerednikDrinfeld_uniformization_fine860 below · depth 27 - Openness of the image of a formally étale uniformisation family
CerednikDrinfeld.QM.IsFineModuli.exists_isOpen_inter_eq_image_of_formallyEtale858 below · depth 27 - Surjectivity of the fine-level Čerednik–Drinfeld family on geometric points
CerednikDrinfeld.QM.IsFineModuli.forall_exists_eq_of_geometricallyConnected_of_isOpen_of_nonempty_of_isUnit_two_of_isUnit_three4,651 below · depth 27 - Surjectivity of Čerednik–Drinfeld uniformisation at tower level ℓ
CerednikDrinfeld.QM.IsFineModuli.forall_exists_eq_tower_of_geometricallyConnected_of_isOpen_of_nonempty_of_isUnit_two_of_isUnit_three4,683 below · depth 27 - Universal property of the level-ℓ Čerednik–Drinfeld uniformisation family
CerednikDrinfeld.QM.IsFineModuliT.existsUnique_factor_of_cerednikDrinfeld_uniformization_fine36 below · depth 27 - Uniformised locus cut out by an open subset of M
CerednikDrinfeld.QM.exists_isOpen_forall_mem_and_iff_exists_uniformization_of_locallyOfFiniteType16 below · depth 27 - Drinfeld uniformisation of ̄ G_Φ over a Noetherian base
CerednikDrinfeld.SpecialFormal.ModuliPackage.exists_G_bijective_isActBy_iff_isTwistedAct_of_span_eq_of_isNoetherianRing818 below · depth 27 - Comparison of the two coarse models over the q'-adic completion
CerednikDrinfeld.exists_iso_pullback_completion_of_moduliTowerWitness_one_zero_of_two_mul_dvd5,594 below · depth 27 - The two models agree over the completion at q
CerednikDrinfeld.exists_iso_pullback_completion_of_moduliTowerWitness_zero_one_of_two_mul_dvd5,594 below · depth 27 - An away-from-r unit of det-valuation one at level ℓ
CerednikDrinfeld.exists_mem_inf_levelSubgroup_vdet_eq_one_of_isEichlerOrder_meetOrder91 below · depth 27 - Equivariant embedding of ̄ F into K(mathcal X_{0,C})
CerednikDrinfeld.exists_ringHom_functionField_of_iso_pullback_completion_one_zero_of_two_mul_dvd5,768 below · depth 27 - Čerednik–Drinfel'd embedding of ̄ F into K(mathcal X_{0,C})
CerednikDrinfeld.exists_ringHom_functionField_of_iso_pullback_completion_zero_one_of_two_mul_dvd5,768 below · depth 27 - Frobenius parity of the decomposition group action via ψ₀
CerednikDrinfeld.exists_smul_psi_eq_psi_frobenius_pow_iff_parity_of_decompositionSubgroup0 below · depth 27 - Deligne data depend only on the ideal (π)
CerednikDrinfeld.FormalOmega.DeligneDatum.exists_equiv_of_span_singleton_eq0 below · depth 28 - Local covering of a Deligne datum by standard edge charts
CerednikDrinfeld.FormalOmega.DeligneDatum.exists_finite_cover_isPullback_inEdgeChart_of_finite7 below · depth 28 - Homotheties act trivially on Drinfeld's formal upper half plane
CerednikDrinfeld.FormalOmega.Omega.action_scalarGL0 below · depth 28 - Transport of the widehatΩ⊗widehat𝒪^{nr} datum along a frame isomorphism
CerednikDrinfeld.FormalOmega.OmegaNr.exists_equiv_of_ringEquiv_frame0 below · depth 28 - Descent of a twisted-action relation to all π-nilpotent algebras
CerednikDrinfeld.FormalOmega.OmegaNr.forall_eq_of_isTwistedAct_of_forall_isNoetherianRing_of_forall_isIdempotentElem3 below · depth 28 - Unique extension of a natural family on Noetherian connected test algebras
CerednikDrinfeld.FormalOmega.existsUnique_extension_of_isNoetherianRing_of_forall_isIdempotentElem22 below · depth 28 - Unique natural extension of a family on connected Noetherian test algebras
CerednikDrinfeld.FormalOmega.existsUnique_extension_prod_const_of_isNoetherianRing_of_forall_isIdempotentElem23 below · depth 28 - Descent of a Frobenius-invariant family to the fixed subalgebra
CerednikDrinfeld.FormalOmega.existsUnique_factor_corep_fixedPoints_of_frobTwist_eq6 below · depth 28 - Exhaustion of corep(O^{nr})×Ω by Noetherian subalgebras
CerednikDrinfeld.FormalOmega.exists_finset_map_adjoin_eq_prod_corep_omega_of_irreducible18 below · depth 28 - Noetherian square-zero lifting suffices for Theta formal étaleness
CerednikDrinfeld.FormalOmega.forall_existsUnique_lift_of_forall_isNoetherianRing_existsUnique_lift28 below · depth 28 - Atkin–Lehner operators on the Čerednik–Drinfel'd uniformisation
CerednikDrinfeld.QM.IsFineModuli.cerednikDrinfeld_fineFamily_atkinLehner_of_rigidifiedToG_of_isNoetherianRing_heightNormalised_oneLegC5891 below · depth 28 - Orbit relation spreads from a field point to a localisation
CerednikDrinfeld.QM.IsFineModuli.exists_apply_ne_zero_forall_isPullback_of_cerednikDrinfeld_uniformization_fine_eq13 below · depth 28 - Čerednik–Drinfeld uniformising family on the fine moduli scheme
CerednikDrinfeld.QM.IsFineModuli.exists_cerednikDrinfeld_fineFamily_of_rigidifiedToG_of_isNoetherianRing_heightNormalised_eq_oneLegC5_h23,611 below · depth 28 - Čerednik–Drinfeld uniformisation of the away-from-r̄ r Hecke tower
CerednikDrinfeld.QM.IsFineModuli.exists_cerednikDrinfeld_towerFamily_liftT_of_rigidifiedToG_of_isNoetherianRing_heightNormalised_eq_oneLegC51,194 below · depth 28 - Field-valued fibres of the fine Čerednik–Drinfeld uniformisation
CerednikDrinfeld.QM.IsFineModuli.exists_isPullback_field_of_cerednikDrinfeld_uniformization_fine_eq1 below · depth 28 - Invariance at raised level of a twisted uniformising family
CerednikDrinfeld.QM.IsFineModuliT.apply_eq_apply_of_isPullback_of_frobTwist_eq_of_invariant8 below · depth 28 - Flat-local description of fibres of the level-ℓ fine uniformisation
CerednikDrinfeld.QM.IsFineModuliT.exists_flat_family_isPullback_of_cerednikDrinfeld_uniformization_fine_eq8 below · depth 28 - Edge-chart morphisms of a formally étale uniformisation are étale
CerednikDrinfeld.QM.etale_edgeChartMorphism_of_cerednikDrinfeld_uniformization_fine7 below · depth 28 - fpqc-local lifting for a formally étale uniformisation
CerednikDrinfeld.QM.exists_flat_family_lift_of_formallyEtale_of_locallyOfFiniteType18 below · depth 28 - Openness of the uniformised locus after nilpotent base change
CerednikDrinfeld.QM.exists_isOpen_forall_mem_iff_exists_uniformization_of_isPullback15 below · depth 28 - Frame change for the descended Drinfeld package on G
CerednikDrinfeld.SpecialFormal.ModuliPackage.exists_G_bijective_isActBy_iff_isTwistedAct_of_ringEquiv_frame_of_isNoetherianRing0 below · depth 28 - Equivariant gluing of G_Φ with Ω̂ over Noetherian bases
CerednikDrinfeld.SpecialFormal.ModuliPackage.exists_G_bijective_isActBy_iff_isTwistedAct_wittVector_of_exists_forall_bijective_of_isNoetherianRing28 below · depth 28 - Central vdet = 2, odd and even away units
CerednikDrinfeld.awayUnits_exists_central_vdet_two_and_exists_vdet_one_and_exists_even0 below · depth 28 - Čerednik–Drinfeld points see coefficients only through Fr²-invariants
CerednikDrinfeld.cerednikDrinfeld_apply_eq_of_forall_fr_fr_eq205 below · depth 28 - Finite vertex stabilisers and finitely many vertex orbits
CerednikDrinfeld.evenAwayUnits_finite_stabilizer_vertex_and_exists_finset_orbits_of_not_dvd61 below · depth 28 - Finitely many vertex orbits for the even level-ℓ group
CerednikDrinfeld.evenAwayUnits_inf_levelSubgroup_exists_finset_orbits63 below · depth 28 - Closedness of the uniformised locus in the special fibre
CerednikDrinfeld.exists_isClosed_iff_exists_theta_eq_of_cerednikDrinfeld_quotient207 below · depth 28 - Level compatibility of the pinned function-field embedding
CerednikDrinfeld.exists_ringHom_functionField_level_germ_app_degeneracy_eq_of_germ_eq_of_iso_pullback_completion_one_zero_of_two_mul_dvd5,748 below · depth 28 - Degeneracy compatibility of the pinned function-field embedding
CerednikDrinfeld.exists_ringHom_functionField_level_germ_app_degeneracy_eq_of_germ_eq_of_iso_pullback_completion_zero_one_of_two_mul_dvd5,748 below · depth 28 - Atkin–Lehner equivariance of the pinned function-field embedding
CerednikDrinfeld.germ_app_atkinLehner_eq_of_germ_eq_of_iso_pullback_completion_one_zero_of_two_mul_dvd742 below · depth 28 - Atkin–Lehner lifts act on germs through W₀ and W₁
CerednikDrinfeld.germ_app_atkinLehner_eq_of_germ_eq_of_iso_pullback_completion_zero_one_of_two_mul_dvd742 below · depth 28 - Decomposition-group equivariance of the pinned function field embedding
CerednikDrinfeld.germ_app_decomposition_eq_of_germ_eq_of_iso_pullback_completion_one_zero_of_two_mul_dvd25 below · depth 28 - Decomposition-group equivariance of the pinned function-field embedding
CerednikDrinfeld.germ_app_decomposition_eq_of_germ_eq_of_iso_pullback_completion_zero_one_of_two_mul_dvd25 below · depth 28 - Local equation for coincidence of two Deligne data
CerednikDrinfeld.FormalOmega.DeligneDatum.exists_finset_forall_map_eq_iff_of_map_eq1 below · depth 29 - Deligne data glue along a principal affine cover
CerednikDrinfeld.FormalOmega.Omega.existsUnique_glue_of_span_eq_top2 below · depth 29 - Deligne data inject along injective algebra maps
CerednikDrinfeld.FormalOmega.Omega.map_injective_of_injective0 below · depth 29 - Unique descent of morphisms along the Frobenius twist of Spec(B⊗𝒪̂^{nr})
CerednikDrinfeld.FormalOmega.existsUnique_specMap_includeLeft_comp_eq_of_specMap_frobenius_comp_eq5 below · depth 29 - Existence of lifts along arbitrary square-zero thickenings
CerednikDrinfeld.FormalOmega.exists_lift_of_forall_isNoetherianRing_existsUnique_lift26 below · depth 29 - Uniqueness of lifts beyond the Noetherian case
CerednikDrinfeld.FormalOmega.lift_eq_lift_of_forall_isNoetherianRing_existsUnique_lift26 below · depth 29 - Even rigidified pairs: existence, uniqueness, base change, lifting
CerednikDrinfeld.QM.FakeEllipticCurve.evenRigidifiedPair_exists_unique_pullback_lift_of_rigidifiedToG_conn_h23,498 below · depth 29 - Twisted and Pi-translates carry even rigidifications
CerednikDrinfeld.QM.FakeEllipticCurve.exists_even_rigidification_of_isActBy_of_isPiTranslate154 below · depth 29 - Transport of extra level structures along a rigidification
CerednikDrinfeld.QM.FakeEllipticCurve.exists_extraLevel_transport_and_iff_of_rigidification_normLevelTransport_oneLegC524 below · depth 29 - Norm level transport: existence and uniqueness of Pₙ
CerednikDrinfeld.QM.FakeEllipticCurve.exists_fullLevel_transport_and_eq_of_rigidification_normLevelTransport81 below · depth 29 - Fine Čerednik–Drinfeld family depends on ψ only through Frobenius invariants
CerednikDrinfeld.QM.IsFineModuli.cerednikDrinfeld_uniformization_fine_eq_of_forall_frobFixed_eq9 below · depth 29 - Lifting the uniformisation map to the level-ℓ tower
CerednikDrinfeld.QM.IsFineModuli.exists_fineFamilyT_lift_of_towerFamily_of_isNoetherianRing_heightNormalised_eq_oneLegC51,084 below · depth 29 - Formally étale Ω̂× G-family of fine moduli points
CerednikDrinfeld.QM.IsFineModuli.exists_fineFamily_of_evenRigidifiedPair_of_isNoetherianRing_heightNormalised_conn989 below · depth 29 - A level homomorphism describing the Čerednik–Drinfeld fibres
CerednikDrinfeld.QM.IsFineModuli.exists_levelHom_translate_fibre_of_fineFamily_of_isNoetherianRing_heightNormalised_conn_eq_oneLegC51,022 below · depth 29 - Čerednik–Drinfeld uniformisation family on the Hecke tower
CerednikDrinfeld.QM.IsFineModuli.exists_towerFamily_of_evenRigidifiedPair_of_heckeDictionary_of_isNoetherianRing_heightNormalised_oneLegC559 below · depth 29 - Hecke translate by s_ℓ matches the d₁ degeneracy leg
CerednikDrinfeld.QM.IsFineModuli.towerFamily_heckeTranslate_of_evenRigidifiedPair_of_isNoetherianRing_heightNormalised_oneLegC5759 below · depth 29 - Spreading of the Γ̃-orbit relation at level ℓ
CerednikDrinfeld.QM.IsFineModuliT.exists_apply_ne_zero_forall_isPullback_of_cerednikDrinfeld_uniformization_fine_eq6 below · depth 29 - Period of an e-translate is a pullback along E(e)
CerednikDrinfeld.SpecialFormal.Rigidified.isPullback_of_isTranslate_of_isTranslate_zero0 below · depth 29 - Bilinear relations between the two degeneracy legs transfer generically
CerednikDrinfeld.sum_mul_eq_zero_of_sum_phi_mul_phi_eq_zero_of_germ_eq_degeneracy_of_iso_pullback_completion_one_zero_of_two_mul_dvd749 below · depth 29 - Tower relations transfer to the degeneracy maps on function fields
CerednikDrinfeld.sum_mul_eq_zero_of_sum_phi_mul_phi_eq_zero_of_germ_eq_degeneracy_of_iso_pullback_completion_zero_one_of_two_mul_dvd749 below · depth 29 - Zariski sheaf property for Deligne data over a ring
CerednikDrinfeld.FormalOmega.DeligneDatum.eq_of_forall_map_eq_and_exists_forall_map_eq_of_span_eq_top3 below · depth 30 - Descent along Spec(B ⊗ 𝒪̂^{nr}) → Spec B: epimorphism
CerednikDrinfeld.FormalOmega.eq_of_specMap_includeLeft_comp_eq_of_isNilpotent2 below · depth 30 - Descent of T-points along B → B ⊗ 𝒪̂^{nr}
CerednikDrinfeld.FormalOmega.exists_specMap_includeLeft_comp_eq_of_specMap_frobenius_comp_eq4 below · depth 30 - Uniqueness of the normalised level transport
CerednikDrinfeld.QM.FakeEllipticCurve.FullLevel.eq_of_isNormLevelTransport_of_isNormLevelTransport75 below · depth 30 - Isomorphisms of rigidified curves over one leg come from Γ
CerednikDrinfeld.QM.FakeEllipticCurve.Rigidification.exists_mem_isPullback_of_isoVia_levelHom_of_translate_of_isAlgClosed_heightNormalised_eq_of_oneLeg_levelHomLaw859 below · depth 30 - Γ̃-translation of an even rigidification, with exact level transport
CerednikDrinfeld.QM.FakeEllipticCurve.Rigidification.exists_translate_level_eq_of_levelHom_of_character_of_isTwistedAct_heightNormalised_eq207 below · depth 30 - Existence of an even rigidified pair with prescribed Ω̂-image
CerednikDrinfeld.QM.FakeEllipticCurve.evenRigidifiedPair_exists_of_rigidifiedToG_of_isUnit_two3,489 below · depth 30 - Lifting even rigidifications along square-zero thickenings
CerednikDrinfeld.QM.FakeEllipticCurve.evenRigidifiedPair_lift_of_rigidifiedToG130 below · depth 30 - Pull-back of even rigidified pairs with transported Deligne datum
CerednikDrinfeld.QM.FakeEllipticCurve.evenRigidifiedPair_pullback_of_rigidifiedToG24 below · depth 30 - Uniqueness of rigidified pairs over a connected base
CerednikDrinfeld.QM.FakeEllipticCurve.evenRigidifiedPair_unique_of_rigidifiedToG_of_forall_isIdempotentElem_of_isUnit_two3,491 below · depth 30 - Iterated Frobenius rebase of a rigidification
CerednikDrinfeld.QM.FakeEllipticCurve.exists_rigidification_frobTwist_zpow_isActBy_scalar_extraLevel_of_rigidifiedToG153 below · depth 30 - Tower family of coarse points over connected Noetherian bases
CerednikDrinfeld.QM.IsCoarseModuliT.exists_towerFamily_connected_of_evenRigidifiedPair_of_heckeDictionary_of_isNoetherianRing_heightNormalised_oneLegC54 below · depth 30 - Extension of the Čerednik–Drinfeld tower family to Noetherian bases
CerednikDrinfeld.QM.IsCoarseModuliT.exists_towerFamily_of_towerFamily_connected_of_isNoetherianRing_heightNormalised_oneLegC550 below · depth 30 - Tower and fine uniformisations agree through the degeneracy map d₀
CerednikDrinfeld.QM.IsCoarseModuliT.towerFamily_comp_dZero_eq_fineFamily_comp_of_isNoetherianRing_heightNormalised_oneLegC52 below · depth 30 - Geometric fibres of the tower uniformisation maps Theta_T
CerednikDrinfeld.QM.IsCoarseModuliT.towerFamily_eq_iff_exists_isTwistedAct_of_isAlgClosed_heightNormalised_oneLegC50 below · depth 30 - Invariance of the tower parametrisation under Γ̃_ℓ
CerednikDrinfeld.QM.IsCoarseModuliT.towerFamily_eq_of_isTwistedAct_of_mem_of_isNoetherianRing_heightNormalised_oneLegC53 below · depth 30 - Equivariant Čerednik–Drinfeld family of fine moduli points
CerednikDrinfeld.QM.IsFineModuli.exists_cerednikDrinfeld_fineFamily_value_of_connected_of_isNoetherianRing_equivariant_heightNormalised_conn798 below · depth 30 - Čerednik–Drinfeld fine-level family on all Noetherian bases
CerednikDrinfeld.QM.IsFineModuli.exists_cerednikDrinfeld_fineFamily_value_of_value_of_connected_equivariant_heightNormalised_conn743 below · depth 30 - Fibres of the fine family over algebraically closed fields
CerednikDrinfeld.QM.IsFineModuli.fineFamily_eq_iff_exists_mem_levelHom_of_isAlgClosed_heightNormalised_eq_hC5oneLeg148 below · depth 30 - Lifting Theta_f-values along square-zero surjections
CerednikDrinfeld.QM.IsFineModuli.fineFamily_exists_lift_of_value_of_squareZero_heightNormalised_conn959 below · depth 30 - Uniqueness of the Ω-coordinate of lifts across square-zero thickenings
CerednikDrinfeld.QM.IsFineModuli.fineFamily_lift_unique_of_value_of_squareZero_heightNormalised_conn921 below · depth 30 - Γₜ-equivariance of the fine family Theta_f
CerednikDrinfeld.QM.IsFineModuli.fineFamily_twistedAct_levelHom_mul_eq_of_translate_heightNormalised_eq51 below · depth 30 - Level-ℓ fine uniformisation depends only on Frobenius-fixed coefficients
CerednikDrinfeld.QM.IsFineModuliT.cerednikDrinfeld_uniformization_fine_eq_of_forall_frobFixed_eq2 below · depth 30 - Level-ℓ fine uniformisation family: existence, value, compatibilities
CerednikDrinfeld.QM.IsFineModuliT.exists_fineFamilyT_value_compat_of_fineFamily_of_towerFamily_of_isNoetherianRing_oneLegC5898 below · depth 30 - Translation and fibres of the level-ℓ Čerednik–Drinfeld family
CerednikDrinfeld.QM.IsFineModuliT.fineFamilyT_translate_fibre_of_value_of_isNoetherianRing_eq_oneLegC5196 below · depth 30 - Density of place-indexed points on the level-ℓ curve
CerednikDrinfeld.dense_setOf_exists_place_comp_degeneracy_eq_pointEquivPlace_symm_restrictAlong_of_iso_pullback_completion_one_zero_of_two_mul_dvd747 below · depth 30 - Density of place-defined level points on the ℓ-level model
CerednikDrinfeld.dense_setOf_exists_place_comp_degeneracy_eq_pointEquivPlace_symm_restrictAlong_of_iso_pullback_completion_zero_one_of_two_mul_dvd747 below · depth 30 - Deligne data are determined on a finite Zariski cover
CerednikDrinfeld.FormalOmega.DeligneDatum.eq_of_forall_map_eq_of_span_eq_top0 below · depth 31 - Zariski gluing of Deligne data over a finite cover
CerednikDrinfeld.FormalOmega.DeligneDatum.exists_forall_map_eq_of_span_eq_top1 below · depth 31 - Formal rigidity for Ω̂: chart-wise representable functors
CerednikDrinfeld.FormalOmega.Omega.bijective_of_algFunctor_of_forall_existsUnique_lift_of_forall_bijective_of_forall_represents_inEdgeChart43 below · depth 31 - Label-ℓ locus maps bijectively to Ω̂
CerednikDrinfeld.FormalOmega.Omega.injective_surjective_labelPiece_of_algFunctor_of_forall_represents_inEdgeChart45 below · depth 31 - Twisted equivariance of the descended family ρ₂
CerednikDrinfeld.FormalOmega.descendedFamily_comp_frobenius_zpow_eq_of_isPullback1 below · depth 31 - Descent of a twisted Γ-invariant family to the Fr²-fixed subring
CerednikDrinfeld.FormalOmega.existsUnique_factor_corep_fixedPoints_frobenius_sq_of_forall_isTwistedAct_eq8 below · depth 31 - Frobenius descent for π-nilpotent algebras
CerednikDrinfeld.FormalOmega.existsUnique_tmul_one_eq_of_map_frobenius_eq1 below · depth 31 - Cyclic Galois levels over the fixed ring of Fr^m
CerednikDrinfeld.FormalOmega.fixedPoints_frobenius_levels0 below · depth 31 - Locally norm-transported full level structure on a rigidified curve
CerednikDrinfeld.QM.FakeEllipticCurve.Rigidification.exists_fullLevel_locally_isNormLevelTransport_of_connected_conn795 below · depth 31 - Isomorphic rigidified fake elliptic curves differ by Γₜ
CerednikDrinfeld.QM.FakeEllipticCurve.Rigidification.exists_mem_isTwistedAct_isTranslateBy_corr_of_isoVia_of_isAlgClosed_heightNormalised_eq_oneLeg731 below · depth 31 - Extra-level transport along an e_γ-translate, and stability detection
CerednikDrinfeld.QM.FakeEllipticCurve.Rigidification.forall_factorsThrough_iff_and_stable_of_isTranslateBy_corr_of_isAlgClosed_heightNormalised_eq_oneLeg25 below · depth 31 - Extra levels match along i iff e_γ stabilises K
CerednikDrinfeld.QM.FakeEllipticCurve.Rigidification.forall_factorsThrough_iff_iff_of_translate_corr_of_isAlgClosed_heightNormalised_eq_oneLeg0 below · depth 31 - Locally height-normalised full level structures coincide
CerednikDrinfeld.QM.FakeEllipticCurve.Rigidification.fullLevel_eq_of_locally_isNormLevelTransport_conn52 below · depth 31 - Local normalised level transport passes along an isomorphism
CerednikDrinfeld.QM.FakeEllipticCurve.Rigidification.locally_isNormLevelTransport_of_isoVia_of_corr_conn69 below · depth 31 - Transported level of a Γ-translate equals its χ-twist
CerednikDrinfeld.QM.FakeEllipticCurve.Rigidification.mapPt_pushPt_eq_of_translate_corr_of_isNormLevelTransport_of_isAlgClosed_heightNormalised_eq_oneLeg_levelHomLaw150 below · depth 31 - Height-normalised level of a rigidification translate
CerednikDrinfeld.QM.FakeEllipticCurve.Rigidification.normLevel_translate_eq_rpow_character_of_isTranslateBy_of_isActBy_heightNormalised_eq89 below · depth 31 - Hecke and Pi translates of even rigidifications preserve levels
CerednikDrinfeld.QM.FakeEllipticCurve.exists_even_rigidification_of_isActBy_of_isPiTranslate_normLevel_rpow176 below · depth 31 - Transport of the base full level along a rigidification
CerednikDrinfeld.QM.FakeEllipticCurve.exists_fullLevel_transport_and_eq_of_rigidification20 below · depth 31 - A locally constant GtimesFin 2 label on rigidified points
CerednikDrinfeld.QM.FakeEllipticCurve.exists_label_natural_iff_exists_ptR_eq_of_rigidifiedToG_connInj_pr825 below · depth 31
… and 82 more statements (search for the module name to find them).