@@ -111,6 +111,50 @@ end PR13703
111
111
112
112
end PRs -- section
113
113
114
+ section
115
+
116
+ @[simps!]
117
+ def bracketBilin (R L M) [CommRing R] [LieRing L] [LieAlgebra R L] [AddCommGroup M] [Module R M]
118
+ [LieRingModule L M] [LieModule R L M] :
119
+ L →ₗ[R] M →ₗ[R] M :=
120
+ LinearMap.mk₂ _ (Bracket.bracket)
121
+ add_lie smul_lie lie_add lie_smul
122
+
123
+ attribute [ext] Bracket
124
+
125
+ open scoped TensorProduct
126
+
127
+ noncomputable instance instLieAlgebra'
128
+ (S R A L : Type *) [CommRing S] [CommRing R] [CommRing A] [Algebra R A] [LieRing L] [LieAlgebra R L]
129
+ [Algebra S A] [SMulCommClass R S A] :
130
+ LieAlgebra S (A ⊗[R] L) where
131
+ lie_smul a x y := by
132
+ induction x using TensorProduct.induction_on generalizing y
133
+ · simp
134
+ · induction y using TensorProduct.induction_on
135
+ · simp
136
+ · simp [TensorProduct.smul_tmul']
137
+ · simp_all
138
+ · simp_all [add_lie]
139
+
140
+ variable (R A L M B : Type *)
141
+ variable [CommRing R] [CommRing A] [Ring B] [Algebra R A] [Algebra R B]
142
+
143
+ theorem diamond_fix :
144
+ LieAlgebra.ExtendScalars.instBracketTensorProduct R A B B = Ring.instBracket := by
145
+ ext x y
146
+ conv_lhs => rw [← @bracketBilin_apply_apply R _ _ _ _]
147
+ rw [← @bracketBilin_apply_apply R _ _ _ (_) (.ofAssociativeAlgebra) _ _ (_) (_) x y]
148
+ rotate_left
149
+ exact @lieAlgebraSelfModule _ _ _ (_) (_)
150
+ refine LinearMap.congr_fun₂ ?_ x y
151
+ ext xa xb ya yb
152
+ change @Bracket.bracket _ _ (_) (xa ⊗ₜ[R] xb) (ya ⊗ₜ[R] yb) = _
153
+ dsimp [Ring.lie_def]
154
+ rw [TensorProduct.tmul_sub, mul_comm]
155
+
156
+ end
157
+
114
158
end DedekindDomain
115
159
116
160
namespace AutomorphicForm
@@ -134,14 +178,12 @@ open Matrix
134
178
135
179
variable (n : ℕ)
136
180
variable (G : Type ) [TopologicalSpace G] [Group G]
137
- {E : Type } [NormedAddCommGroup E] [NormedSpace ℝ E]
138
- {H : Type } [TopologicalSpace H]
139
- [ChartedSpace H G]
140
- (I : ModelWithCorners ℝ E H)
141
- [LieGroup I G]
181
+ (E : Type ) [NormedAddCommGroup E] [NormedSpace ℝ E]
182
+ [ChartedSpace E G]
183
+ [LieGroup 𝓘(ℝ, E) G]
142
184
143
185
def action :
144
- LeftInvariantDerivation I G →ₗ⁅ℝ⁆ (Module.End ℝ C^∞⟮I , G; ℝ⟯) where
186
+ LeftInvariantDerivation 𝓘(ℝ, E) G →ₗ⁅ℝ⁆ (Module.End ℝ C^∞⟮𝓘(ℝ, E) , G; ℝ⟯) where
145
187
toFun l := Derivation.toLinearMap l
146
188
map_add' := by simp
147
189
map_smul' := by simp
@@ -181,75 +223,43 @@ def LieHom.baseChange
181
223
· simp_all only [add_lie, map_add]
182
224
183
225
def actionTensorC :
184
- ℂ ⊗[ℝ] LeftInvariantDerivation I G →ₗ⁅ℂ⁆ (ℂ ⊗[ℝ] (Module.End ℝ C^∞⟮I , G; ℝ⟯)) :=
226
+ ℂ ⊗[ℝ] LeftInvariantDerivation 𝓘(ℝ, E) G →ₗ⁅ℂ⁆ (ℂ ⊗[ℝ] (Module.End ℝ C^∞⟮𝓘(ℝ, E) , G; ℝ⟯)) :=
185
227
LieHom.baseChange _ (action _ _)
186
228
187
- section
188
- variable (R : Type *) (L : Type *)
189
- variable [CommRing R] [LieRing L] [LieAlgebra R L]
190
- variable {A : Type *} [Ring A] [Algebra R A] (f : L →ₗ⁅R⁆ A)
191
- variable {A' : Type *} [LieRing A'] [LieAlgebra R A']
192
-
193
- def lift' (e : A' ≃ₗ[R] A) (h : ∀ x y, e ⁅x, y⁆ = e x * e y - e y * e x) :
194
- (L →ₗ⁅R⁆ A') ≃ (UniversalEnvelopingAlgebra R L →ₐ[R] A) := by
195
- refine Equiv.trans ?_ (UniversalEnvelopingAlgebra.lift _)
196
- exact {
197
- toFun := fun l => {
198
- __ := e.toLinearMap ∘ₗ l.toLinearMap
199
- map_lie' := by
200
- simp
201
- intros x y
202
- rw [h, ← @LieRing.of_associative_ring_bracket]
203
- }
204
- invFun := fun l => {
205
- __ := e.symm.toLinearMap ∘ₗ l.toLinearMap
206
- map_lie' := by sorry
207
- }
208
- left_inv := by
209
- rw [Function.LeftInverse]
210
- intro x
211
- have h: ↑e.symm ∘ₗ e.toLinearMap ∘ₗ x.toLinearMap = x.toLinearMap := by
212
- rw [← LinearMap.comp_assoc]
213
- simp
214
- simp_rw [h]
215
- right_inv := by
216
- rw [Function.RightInverse, Function.LeftInverse]
217
- simp
218
- intro x
219
- have h: ↑e.toLinearMap ∘ₗ e.symm.toLinearMap ∘ₗ x.toLinearMap = x.toLinearMap := by
220
- rw [← LinearMap.comp_assoc]
221
- simp
222
- simp_rw [h]
223
- }
224
- end
225
-
226
229
def actionTensorCAlg :
227
- UniversalEnvelopingAlgebra ℂ (ℂ ⊗[ℝ] LeftInvariantDerivation I G) →ₐ[ℂ]
228
- ℂ ⊗[ℝ] (Module.End ℝ C^∞⟮I, G; 𝓘(ℝ, ℝ), ℝ⟯) :=
229
- have := lift' ℂ
230
- (ℂ ⊗[ℝ] LeftInvariantDerivation I G)
231
- (A' := ℂ ⊗[ℝ] (C^∞⟮I, G; ℝ⟯ →ₗ[ℝ] C^∞⟮I, G; ℝ⟯))
232
- (A := ℂ ⊗[ℝ] (C^∞⟮I, G; ℝ⟯ →ₗ[ℝ] C^∞⟮I, G; ℝ⟯))
233
- (.refl _ _)
234
- (fun x y => sorry )
235
- this (actionTensorC G I)
230
+ UniversalEnvelopingAlgebra ℂ (ℂ ⊗[ℝ] LeftInvariantDerivation 𝓘(ℝ, E) G) →ₐ[ℂ]
231
+ ℂ ⊗[ℝ] (Module.End ℝ C^∞⟮𝓘(ℝ, E), G; 𝓘(ℝ, ℝ), ℝ⟯) := by
232
+ have := actionTensorC G E; revert this
233
+ convert ⇑(UniversalEnvelopingAlgebra.lift ℂ
234
+ (L := ℂ ⊗[ℝ] LeftInvariantDerivation 𝓘(ℝ, E) G)
235
+ (A := ℂ ⊗[ℝ] (Module.End ℝ C^∞⟮𝓘(ℝ, E), G; ℝ⟯))) using 0
236
+ congr!
237
+ · dsimp [LieAlgebra.ExtendScalars.instLieRing, LieRing.ofAssociativeRing]; congr
238
+ apply diamond_fix
239
+ · change HEq ({..} : LieAlgebra ..) (@LieAlgebra.mk _ _ _ (_) _ _); congr!
236
240
237
241
def actionTensorCAlg' :
238
- UniversalEnvelopingAlgebra ℂ (ℂ ⊗[ℝ] LeftInvariantDerivation I G) →ₐ[ℂ]
239
- Module.End ℂ (ℂ ⊗[ℝ] C^∞⟮I , G; 𝓘(ℝ, ℝ), ℝ⟯) :=
240
- (LinearMap.tensorProductEnd ..).comp (actionTensorCAlg G I )
242
+ UniversalEnvelopingAlgebra ℂ (ℂ ⊗[ℝ] LeftInvariantDerivation 𝓘(ℝ, E) G) →ₐ[ℂ]
243
+ Module.End ℂ (ℂ ⊗[ℝ] C^∞⟮𝓘(ℝ, E) , G; 𝓘(ℝ, ℝ), ℝ⟯) :=
244
+ (LinearMap.tensorProductEnd ..).comp (actionTensorCAlg G E )
241
245
242
246
def actionTensorCAlg'2 :
243
- Subalgebra.center ℂ (UniversalEnvelopingAlgebra ℂ (ℂ ⊗[ℝ] LeftInvariantDerivation I G)) →ₐ[ℂ]
244
- Module.End ℂ (ℂ ⊗[ℝ] C^∞⟮I , G; 𝓘(ℝ, ℝ), ℝ⟯) :=
245
- (actionTensorCAlg' G I ).comp (SubalgebraClass.val _)
247
+ Subalgebra.center ℂ (UniversalEnvelopingAlgebra ℂ (ℂ ⊗[ℝ] LeftInvariantDerivation 𝓘(ℝ, E) G)) →ₐ[ℂ]
248
+ Module.End ℂ (ℂ ⊗[ℝ] C^∞⟮𝓘(ℝ, E) , G; 𝓘(ℝ, ℝ), ℝ⟯) :=
249
+ (actionTensorCAlg' G E ).comp (SubalgebraClass.val _)
246
250
247
- instance : Module ℝ C^∞⟮I , G; 𝓘(ℝ, ℝ), ℝ⟯ := inferInstance
248
- instance : Module ℂ C^∞⟮I , G; 𝓘(ℝ, ℂ), ℂ⟯ := sorry
251
+ instance : Module ℝ C^∞⟮𝓘(ℝ, E) , G; 𝓘(ℝ, ℝ), ℝ⟯ := inferInstance
252
+ instance : Module ℂ C^∞⟮𝓘(ℝ, E) , G; 𝓘(ℝ, ℂ), ℂ⟯ := sorry
249
253
250
- def actionTensorCAlg'3 :
251
- Subalgebra.center ℂ (UniversalEnvelopingAlgebra ℂ (ℂ ⊗[ℝ] LeftInvariantDerivation I G)) →ₐ[ℂ]
252
- Module.End ℂ (C^∞⟮I, G; 𝓘(ℝ, ℂ), ℂ⟯) := sorry
254
+ def Alg := UniversalEnvelopingAlgebra ℂ (ℂ ⊗[ℝ] LeftInvariantDerivation 𝓘(ℝ, E) G)
255
+ instance : Semiring (Alg G E) := inferInstanceAs (Semiring (UniversalEnvelopingAlgebra ..))
256
+ instance : Algebra ℂ (Alg G E) := inferInstanceAs (Algebra ℂ (UniversalEnvelopingAlgebra ..))
257
+
258
+ def Z := Subalgebra.center ℂ (Alg G E)
259
+ instance : CommSemiring (Z G E) := inferInstanceAs (CommSemiring (Subalgebra.center ..))
260
+ instance : AddCommMonoid (Z G E) := inferInstanceAs (AddCommMonoid (Subalgebra.center ..))
261
+
262
+ def actionTensorCAlg'3 : Z G E →ₐ[ℂ] Module.End ℂ C^∞⟮𝓘(ℝ, E), G; 𝓘(ℝ, ℂ), ℂ⟯ := sorry
253
263
254
264
255
265
-- algebra needs to be done
@@ -258,18 +268,13 @@ def actionTensorCAlg'3 :
258
268
-- Step 3: induced action of centre
259
269
260
270
variable {n : ℕ}
261
- structure IsSmooth (f :
262
- (GL (Fin n) (FiniteAdeleRing ℤ ℚ)) ×
263
- (GL (Fin n) ℝ)
264
- → ℂ) : Prop where
271
+ structure IsSmooth (f : GL (Fin n) (FiniteAdeleRing ℤ ℚ) × GL (Fin n) ℝ → ℂ) : Prop where
265
272
continuous : Continuous f
266
273
loc_cst (y : GL (Fin n) ℝ) :
267
274
IsLocallyConstant (fun x ↦ f (x, y))
268
275
smooth (x : GL (Fin n) (FiniteAdeleRing ℤ ℚ)) :
269
276
Smooth 𝓘(ℝ, Matrix (Fin n) (Fin n) ℝ) 𝓘(ℝ, ℂ) (fun y ↦ f (x, y))
270
277
271
- variable {n : ℕ}
272
-
273
278
open Matrix
274
279
275
280
noncomputable abbrev s (M : Matrix (Fin n) (Fin n) ℝ) : ℝ :=
@@ -321,29 +326,25 @@ structure IsConstantOn (U : Subgroup (GL (Fin n) (FiniteAdeleRing ℤ ℚ)))
321
326
f (x * u, y) = f (x, y)
322
327
323
328
def annihilator {R} [CommSemiring R]
324
- {M} [AddCommMonoid M] [Module R M]
325
- {N} [AddCommMonoid N] [Module R N]
326
- {P} [AddCommMonoid P] [Module R P]
327
- (action : M →ₗ[R] (N →ₗ[R] P)) (a : N) : Submodule R M :=
328
- { carrier := { x | action x a = 0 }
329
- add_mem' := sorry
330
- zero_mem' := sorry
331
- smul_mem' := sorry }
329
+ {M} [AddCommMonoid M] [Module R M]
330
+ {N} [AddCommMonoid N] [Module R N]
331
+ (a : M) : Submodule R (M →ₗ[R] N) :=
332
+ Submodule.compatibleMaps (Submodule.span R {a}) ⊥
332
333
333
334
/-- Automorphic forms for GL_n/Q with weight ρ. -/
334
335
structure AutomorphicFormForGLnOverQ (n : ℕ) (ρ : Weight n) where
335
- toFun : (GL (Fin n) (FiniteAdeleRing ℤ ℚ)) ×
336
- (GL (Fin n) ℝ) → ℂ
336
+ toFun : GL (Fin n) (FiniteAdeleRing ℤ ℚ) × GL (Fin n) ℝ → ℂ
337
337
is_smooth : IsSmooth toFun
338
338
is_periodic : ∀ (g : GL (Fin n) ℚ) (x : GL (Fin n) (FiniteAdeleRing ℤ ℚ)) (y : GL (Fin n) ℝ),
339
339
toFun (RingHom.GL (algebraMap _ _) _ g * x, RingHom.GL (algebraMap _ _) _ g * y) = toFun (x, y)
340
340
is_slowly_increasing (x : GL (Fin n) (FiniteAdeleRing ℤ ℚ)) :
341
341
IsSlowlyIncreasing (fun y ↦ toFun (x, y))
342
- has_finite_level: ∃ U, IsConstantOn U toFun
342
+ has_finite_level : ∃ U, IsConstantOn U toFun
343
343
is_finite_cod (x : GL (Fin n) (FiniteAdeleRing ℤ ℚ)) :
344
- FiniteDimensional ℂ (_ ⧸ annihilator
345
- (actionTensorCAlg'3 (GL (Fin n) ℝ) 𝓘(ℝ, Matrix (Fin n) (Fin n) ℝ)).toLinearMap
346
- ⟨fun y ↦ toFun (x, y), is_smooth.smooth x⟩)
344
+ haveI f : C^∞⟮𝓘(ℝ, _), _; 𝓘(ℝ, ℂ), ℂ⟯ := ⟨fun y ↦ toFun (x, y), is_smooth.smooth x⟩
345
+ letI m := (actionTensorCAlg'3 (GL (Fin n) ℝ) (Matrix (Fin n) (Fin n) ℝ)).toLinearMap
346
+ FiniteDimensional ℂ (Z (GL (Fin n) ℝ) (Matrix (Fin n) (Fin n) ℝ) ⧸ (annihilator f).comap m)
347
+ -- missing: invariance under compact open subgroup
347
348
-- missing: infinite part has a weight
348
349
349
350
namespace AutomorphicFormForGLnOverQ
0 commit comments