Skip to content

Commit 85bf2f2

Browse files
authored
Merge pull request #104 from digama0/aut_gln
more tweaks to AutomorphicFormForGLnOverQ
2 parents b29d98c + 94c95c6 commit 85bf2f2

File tree

1 file changed

+87
-86
lines changed

1 file changed

+87
-86
lines changed

FLT/GlobalLanglandsConjectures/GLnDefs.lean

+87-86
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,50 @@ end PR13703
111111

112112
end PRs -- section
113113

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+
114158
end DedekindDomain
115159

116160
namespace AutomorphicForm
@@ -134,14 +178,12 @@ open Matrix
134178

135179
variable (n : ℕ)
136180
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]
142184

143185
def action :
144-
LeftInvariantDerivation I G →ₗ⁅ℝ⁆ (Module.End ℝ C^∞⟮I, G; ℝ⟯) where
186+
LeftInvariantDerivation 𝓘(ℝ, E) G →ₗ⁅ℝ⁆ (Module.End ℝ C^∞⟮𝓘(ℝ, E), G; ℝ⟯) where
145187
toFun l := Derivation.toLinearMap l
146188
map_add' := by simp
147189
map_smul' := by simp
@@ -181,75 +223,43 @@ def LieHom.baseChange
181223
· simp_all only [add_lie, map_add]
182224

183225
def actionTensorC :
184-
ℂ ⊗[ℝ] LeftInvariantDerivation I G →ₗ⁅ℂ⁆ (ℂ ⊗[ℝ] (Module.End ℝ C^∞⟮I, G; ℝ⟯)) :=
226+
ℂ ⊗[ℝ] LeftInvariantDerivation 𝓘(ℝ, E) G →ₗ⁅ℂ⁆ (ℂ ⊗[ℝ] (Module.End ℝ C^∞⟮𝓘(ℝ, E), G; ℝ⟯)) :=
185227
LieHom.baseChange _ (action _ _)
186228

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-
226229
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!
236240

237241
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)
241245

242246
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 _)
246250

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
249253

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
253263

254264

255265
-- algebra needs to be done
@@ -258,18 +268,13 @@ def actionTensorCAlg'3 :
258268
-- Step 3: induced action of centre
259269

260270
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
265272
continuous : Continuous f
266273
loc_cst (y : GL (Fin n) ℝ) :
267274
IsLocallyConstant (fun x ↦ f (x, y))
268275
smooth (x : GL (Fin n) (FiniteAdeleRing ℤ ℚ)) :
269276
Smooth 𝓘(ℝ, Matrix (Fin n) (Fin n) ℝ) 𝓘(ℝ, ℂ) (fun y ↦ f (x, y))
270277

271-
variable {n : ℕ}
272-
273278
open Matrix
274279

275280
noncomputable abbrev s (M : Matrix (Fin n) (Fin n) ℝ) : ℝ :=
@@ -321,29 +326,25 @@ structure IsConstantOn (U : Subgroup (GL (Fin n) (FiniteAdeleRing ℤ ℚ)))
321326
f (x * u, y) = f (x, y)
322327

323328
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}) ⊥
332333

333334
/-- Automorphic forms for GL_n/Q with weight ρ. -/
334335
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) ℝ → ℂ
337337
is_smooth : IsSmooth toFun
338338
is_periodic : ∀ (g : GL (Fin n) ℚ) (x : GL (Fin n) (FiniteAdeleRing ℤ ℚ)) (y : GL (Fin n) ℝ),
339339
toFun (RingHom.GL (algebraMap _ _) _ g * x, RingHom.GL (algebraMap _ _) _ g * y) = toFun (x, y)
340340
is_slowly_increasing (x : GL (Fin n) (FiniteAdeleRing ℤ ℚ)) :
341341
IsSlowlyIncreasing (fun y ↦ toFun (x, y))
342-
has_finite_level: ∃ U, IsConstantOn U toFun
342+
has_finite_level : ∃ U, IsConstantOn U toFun
343343
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
347348
-- missing: infinite part has a weight
348349

349350
namespace AutomorphicFormForGLnOverQ

0 commit comments

Comments
 (0)