Paper XI · Lean source

ActualIntegralGeneralLinear.lean

Selected results recorded Coverage and evidence

Compiler/replay evidence is reported for a subset or bounded block. No whole-work coverage is implied.

This viewer reads the retained source; it does not run Lean or assign new claim mappings.

Local imports (4)

PaperXI/ActualIntegralGeneralLinear.lean219 lines

Original source pathformalization/PaperXI/ActualIntegralGeneralLinear.lean
Skip declarations and read code

Skip source text

1 import PaperXI.ActualResidueGeneralLinear
2 import PaperXI.QuotientRepresentation
3 import PaperXI.SmoothDegreeQuotient
4 import PaperXI.FiniteRepresentation
5 import Mathlib.Topology.Algebra.Group.Matrix
6 import Mathlib.Topology.Algebra.Ring.Compact
7 
8 /-!
9 # The actual compact open integral subgroup of `GL_n(K)`
10 
11 The subgroup is the image of `GL_n(𝒪[K])` in the given local field's matrix
12 group. Its compactness, openness and actual residue quotient are derived from
13 the entrywise maps. Inflation therefore gives smooth irreducible actions on
14 this actual subgroup from actual irreducible finite residue representations.
15 -/
16 set_option autoImplicit false
17 noncomputable section
18 namespace PaperXI.ActualIntegralGeneralLinear
19 
20 open Matrix ValuativeRel Topology
21 open ActualResidueGeneralLinear
22 
23 variable (K : Type*) [Field K] [ValuativeRel K]
24 variable (n : Type*) [Fintype n] [DecidableEq n]
25 
26 /-- Entrywise inclusion into the actual ambient general linear group. -/
27 def embedding : GeneralLinearGroup n 𝒪[K] →* GeneralLinearGroup n K :=
28   GeneralLinearGroup.map (valuation K).integer.subtype
29 
30 @[simp] theorem embedding_apply (g : GeneralLinearGroup n 𝒪[K]) (i j : n) :
31     embedding K n g i j = (g i j : K) := rfl
32 
33 theorem embedding_injective : Function.Injective (embedding K n) := by
34   intro g h he
35   apply GeneralLinearGroup.ext
36   intro i j
37   apply Subtype.ext
38   exact congrArg (fun A : GeneralLinearGroup n K => A i j) he
39 
40 /-- The actual integral subgroup inside `GL_n(K)`. -/
41 def integralSubgroup : Subgroup (GeneralLinearGroup n K) := (embedding K n).range
42 
43 /-- Integral matrices are identified with their actual ambient subgroup. -/
44 def integralEquiv : GeneralLinearGroup n 𝒪[K] ≃* integralSubgroup K n :=
45   MonoidHom.ofInjective (embedding_injective K n)
46 
47 @[simp] theorem integralEquiv_coe (g : GeneralLinearGroup n 𝒪[K]) :
48     (integralEquiv K n g : GeneralLinearGroup n K) = embedding K n g := rfl
49 
50 @[simp] theorem embedding_integralEquiv_symm (g : integralSubgroup K n) :
51     embedding K n ((integralEquiv K n).symm g) = g :=
52   congrArg Subtype.val ((integralEquiv K n).apply_symm_apply g)
53 
54 /-- Membership is exactly integrality of both the matrix and its inverse. -/
55 theorem mem_integralSubgroup (g : GeneralLinearGroup n K) :
56     g ∈ integralSubgroup K n ↔
57       (∀ i j, g i j ∈ (valuation K).integer) ∧
58       (∀ i j, g⁻¹ i j ∈ (valuation K).integer) := by
59   constructor
60   · rintro ⟨h, rfl⟩
61     exact ⟨fun i j => (h i j).property, fun i j => (h⁻¹ i j).property⟩
62   · rintro ⟨hg, hi⟩
63     let A : Matrix n n 𝒪[K] := fun i j => ⟨g i j, hg i j⟩
64     let B : Matrix n n 𝒪[K] := fun i j => ⟨g⁻¹ i j, hi i j⟩
65     have hA : A.map ((valuation K).integer.subtype) = (g : Matrix n n K) := rfl
66     have hB : B.map ((valuation K).integer.subtype) =
67         ((g⁻¹ : GeneralLinearGroup n K) : Matrix n n K) := rfl
68     have hab : A * B = 1 := by
69       apply Matrix.map_injective Subtype.val_injective
70       change (RingHom.mapMatrix (valuation K).integer.subtype) (A * B) =
71         (RingHom.mapMatrix (valuation K).integer.subtype) 1
72       rw [map_mul, map_one]
73       exact g.mul_inv
74     have hba : B * A = 1 := by
75       apply Matrix.map_injective Subtype.val_injective
76       change (RingHom.mapMatrix (valuation K).integer.subtype) (B * A) =
77         (RingHom.mapMatrix (valuation K).integer.subtype) 1
78       rw [map_mul, map_one]
79       exact g.inv_mul
80     exact ⟨⟨A, B, hab, hba⟩, Units.ext hA⟩
81 
82 variable [TopologicalSpace K] [IsNonarchimedeanLocalField K]
83 
84 theorem field_t2Space : T2Space K := by
85   let := IsTopologicalAddGroup.rightUniformSpace K
86   have := isUniformAddGroup_of_addCommGroup (G := K)
87   infer_instance
88 
89 local instance : T2Space K := field_t2Space K
90 
91 omit [IsNonarchimedeanLocalField K] in
92 theorem embedding_isEmbedding : IsEmbedding (embedding K n) :=
93   (IsEmbedding.subtypeVal : IsEmbedding ((valuation K).integer.subtype)).generalLinearGroup_map
94 
95 omit [IsNonarchimedeanLocalField K] in
96 theorem embedding_continuous : Continuous (embedding K n) :=
97   (embedding_isEmbedding K n).continuous
98 
99 omit [IsNonarchimedeanLocalField K] in
100 theorem integralEquiv_symm_continuous : Continuous (integralEquiv K n).symm := by
101   apply (embedding_isEmbedding K n).continuous_iff.mpr
102   have he : embedding K n ∘ (integralEquiv K n).symm =
103       (Subtype.val : integralSubgroup K n → GeneralLinearGroup n K) := by
104     funext g
105     exact embedding_integralEquiv_symm K n g
106   rw [he]
107   exact continuous_subtype_val
108 
109 /-- Compactness is inherited from finite matrices over the actual compact
110 integer ring and the topology on units. -/
111 theorem integralSubgroup_compact : IsCompact (integralSubgroup K n : Set (GeneralLinearGroup n K)) := by
112   let : CompactSpace 𝒪[K] := inferInstance
113   let : CompactSpace (Matrix n n 𝒪[K]) := inferInstanceAs (CompactSpace (n → n → 𝒪[K]))
114   let : T1Space (Matrix n n 𝒪[K]) := inferInstance
115   let : ContinuousMul (Matrix n n 𝒪[K]) := inferInstance
116   let : CompactSpace (GeneralLinearGroup n 𝒪[K]) := inferInstance
117   exact isCompact_range (embedding_continuous K n)
118 
119 /-- Integrality of a matrix and its inverse are open entrywise conditions. -/
120 theorem integralSubgroup_open : IsOpen (integralSubgroup K n : Set (GeneralLinearGroup n K)) := by
121   let U : Submonoid (Matrix n n K) := (valuation K).integer.matrix.toSubmonoid
122   have he : (integralSubgroup K n : Set (GeneralLinearGroup n K)) =
123       (U.units : Set (GeneralLinearGroup n K)) := by
124     ext g
125     exact mem_integralSubgroup K n g
126   rw [he]
127   apply Submonoid.isOpen_units
128   exact (Valuation.isOpen_integer (v := valuation K)).matrix
129 
130 /-- Literal residue reduction on the actual subgroup of the ambient group. -/
131 def reductionOnSubgroup : integralSubgroup K n →* GeneralLinearGroup n 𝓀[K] :=
132   (reduction K n).comp (integralEquiv K n).symm.toMonoidHom
133 
134 @[simp] theorem reductionOnSubgroup_integralEquiv (g : GeneralLinearGroup n 𝒪[K]) :
135     reductionOnSubgroup K n (integralEquiv K n g) = reduction K n g := by
136   simp [reductionOnSubgroup]
137 
138 theorem reductionOnSubgroup_surjective : Function.Surjective (reductionOnSubgroup K n) :=
139   (reduction_surjective K n).comp (integralEquiv K n).symm.surjective
140 
141 /-- The congruence kernel is given by entrywise congruence to the identity. -/
142 theorem mem_reduction_kernel (g : GeneralLinearGroup n 𝒪[K]) :
143     g ∈ (reduction K n).ker ↔
144       ∀ i j, g i j - (1 : Matrix n n 𝒪[K]) i j ∈ IsLocalRing.maximalIdeal 𝒪[K] := by
145   change reduction K n g = 1 ↔ _
146   rw [GeneralLinearGroup.ext_iff]
147   simp only [reduction_apply, GeneralLinearGroup.coe_one]
148   apply forall_congr'
149   intro i
150   apply forall_congr'
151   intro j
152   rw [← IsLocalRing.residue_eq_zero_iff, map_sub, sub_eq_zero]
153   simp [Matrix.one_apply]
154 
155 /-- The principal congruence kernel is open in the actual integral group. -/
156 theorem reduction_kernel_open : IsOpen ((reduction K n).ker : Set (GeneralLinearGroup n 𝒪[K])) := by
157   have he : ((reduction K n).ker : Set (GeneralLinearGroup n 𝒪[K])) =
158       ⋂ i, ⋂ j, {g : GeneralLinearGroup n 𝒪[K] |
159         g i j - (1 : Matrix n n 𝒪[K]) i j ∈ IsLocalRing.maximalIdeal 𝒪[K]} := by
160     ext g
161     simp only [Set.mem_iInter, Set.mem_ofPred_eq]
162     exact mem_reduction_kernel K n g
163   rw [he]
164   apply isOpen_iInter_of_finite
165   intro i
166   apply isOpen_iInter_of_finite
167   intro j
168   apply (IsLocalRing.isOpen_maximalIdeal 𝒪[K]).preimage
169   fun_prop
170 
171 theorem reductionOnSubgroup_kernel_open :
172     IsOpen ((reductionOnSubgroup K n).ker : Set (integralSubgroup K n)) :=
173   (reduction_kernel_open K n).preimage (integralEquiv_symm_continuous K n)
174 
175 /-- The actual principal-congruence quotient is the full finite residue
176 general linear group, by the proved surjectivity of entrywise reduction. -/
177 def residueQuotientEquiv :
178     integralSubgroup K n ⧸ (reductionOnSubgroup K n).ker ≃* GeneralLinearGroup n 𝓀[K] :=
179   QuotientGroup.quotientKerEquivOfSurjective (reductionOnSubgroup K n)
180     (reductionOnSubgroup_surjective K n)
181 
182 theorem finite_residue_quotient :
183     Finite (integralSubgroup K n ⧸ (reductionOnSubgroup K n).ker) :=
184   Finite.of_injective (residueQuotientEquiv K n) (residueQuotientEquiv K n).injective
185 
186 variable {V : Type*} [AddCommGroup V] [Module ℂ V]
187 variable (σ : Representation ℂ (GeneralLinearGroup n 𝓀[K]) V)
188 
189 /-- Inflation on the actual ambient integral subgroup, using its literal
190 entrywise residue quotient. -/
191 def inflated : Representation ℂ (integralSubgroup K n) V :=
192   σ.comp (reductionOnSubgroup K n)
193 
194 @[simp] theorem inflated_integralEquiv (g : GeneralLinearGroup n 𝒪[K]) :
195     inflated K n σ (integralEquiv K n g) = σ (reduction K n g) := by
196   simp [inflated]
197 
198 /-- Irreducibility is preserved by the proved surjective actual residue map. -/
199 theorem inflated_irreducible [Representation.IsIrreducible σ] :
200     Representation.IsIrreducible (inflated K n σ) :=
201   (QuotientRepresentation.irreducible_comp_iff (reductionOnSubgroup K n)
202     (reductionOnSubgroup_surjective K n) σ).mpr inferInstance
203 
204 /-- The open principal-congruence kernel fixes every vector after inflation. -/
205 theorem inflated_isSmooth : SmoothDegreeQuotient.IsSmooth (inflated K n σ) := by
206   intro v
207   apply Subgroup.isOpen_mono (H₁ := (reductionOnSubgroup K n).ker) _
208     (reductionOnSubgroup_kernel_open K n)
209   intro g hg
210   change σ (reductionOnSubgroup K n g) v = v
211   rw [show reductionOnSubgroup K n g = 1 from hg, map_one]
212   rfl
213 
214 /-- Finite dimension follows from the actual finite residue group and
215 irreducibility of its supplied representation. -/
216 theorem inflated_finiteDimensional [Representation.IsIrreducible σ] :
217     FiniteDimensional ℂ V := FiniteRepresentation.finiteDimensional σ
218 
219 end PaperXI.ActualIntegralGeneralLinear

Back to source controls

Original file and source record

This copy matches the recorded source file. Its publication here does not change the work’s review status.

SHA-256: 37fadf54dfd99b1032584b0bd3b561824077296be369ecc43f74deffb3847996

Original source on GitHub

Back to Paper XI: Packets, Arithmetic Realization, and Conditional Comparison