1
1
/-
2
2
Copyright (c) 2024 Kevin Buzzard. All rights reserved.
3
3
Released under Apache 2.0 license as described in the file LICENSE.
4
- Authors: Kevin Buzzard
4
+ Authors: Kevin Buzzard, Ludwig Monnerjahn, Hannah Scholz
5
5
-/
6
6
import Mathlib.Geometry.Manifold.Instances.UnitsOfNormedAlgebra
7
7
import Mathlib.LinearAlgebra.Matrix.GeneralLinearGroup.Basic
8
8
import Mathlib.NumberTheory.NumberField.Basic
9
9
import Mathlib.RingTheory.DedekindDomain.FiniteAdeleRing
10
+ import Mathlib.Algebra.Group.Subgroup.Pointwise
10
11
import FLT.HIMExperiments.module_topology
11
12
12
13
/-
@@ -20,27 +21,20 @@ variable (F : Type*) [Field F] [NumberField F]
20
21
21
22
variable (D : Type *) [Ring D] [Algebra F D] [FiniteDimensional F D]
22
23
23
- #check DedekindDomain.FiniteAdeleRing
24
-
25
24
open DedekindDomain
26
25
27
26
open scoped NumberField
28
27
29
- #check FiniteAdeleRing (𝓞 F) F
30
-
31
28
-- my work (two PRs)
32
29
instance : TopologicalSpace (FiniteAdeleRing (𝓞 F) F) := sorry
33
30
instance : TopologicalRing (FiniteAdeleRing (𝓞 F) F) := sorry
34
31
35
32
open scoped TensorProduct
36
33
37
- #check D ⊗[F] (FiniteAdeleRing (𝓞 F) F)
38
-
39
34
section missing_instances
40
35
41
36
variable {R D A : Type *} [CommRing R] [Ring D] [CommRing A] [Algebra R D] [Algebra R A]
42
37
43
- --TODO:
44
38
instance : Algebra A (D ⊗[R] A) :=
45
39
Algebra.TensorProduct.includeRight.toRingHom.toAlgebra' (by
46
40
simp only [AlgHom.toRingHom_eq_coe, RingHom.coe_coe, Algebra.TensorProduct.includeRight_apply]
@@ -54,10 +48,7 @@ instance : Algebra A (D ⊗[R] A) :=
54
48
rw [left_distrib, hx, hy, right_distrib]
55
49
)
56
50
57
-
58
-
59
51
instance [Module.Finite R D] : Module.Finite A (D ⊗[R] A) := sorry
60
-
61
52
instance [Module.Free R D] : Module.Free A (D ⊗[R] A) := sorry
62
53
63
54
-- #synth Ring (D ⊗[ F ] FiniteAdeleRing (𝓞 F) F)
@@ -165,34 +156,55 @@ instance addCommGroup : AddCommGroup (AutomorphicForm F D M) where
165
156
add_left_neg := by intros; ext; simp
166
157
add_comm := by intros; ext; simp [add_comm]
167
158
168
- -- this should be a SMul instance first, and then a simp lemma SMul_eval, and then one_smul etc are easy
169
- instance : MulAction (Dfx F D) (AutomorphicForm F D M) where
170
- smul g φ := {
171
- toFun := fun x => φ (x*g),
159
+ open ConjAct
160
+ open scoped Pointwise
161
+
162
+ lemma conjAct_mem {G: Type *} [Group G] (U: Subgroup G) (g: G) (x : G):
163
+ x ∈ toConjAct g • U ↔ ∃ u ∈ U, g * u * g⁻¹ = x := by rfl
164
+
165
+ lemma toConjAct_open {G : Type *} [Group G] [TopologicalSpace G] [TopologicalGroup G]
166
+ (U : Subgroup G) (hU : IsOpen (U : Set G)) (g : G) : IsOpen (toConjAct g • U : Set G) := by
167
+ have this1 := continuous_mul_left g⁻¹
168
+ have this2 := continuous_mul_right g
169
+ rw [continuous_def] at this1 this2
170
+ specialize this2 U hU
171
+ specialize this1 _ this2
172
+ convert this1 using 1
173
+ ext x
174
+ convert conjAct_mem _ _ _ using 1
175
+ simp only [Set.mem_preimage, SetLike.mem_coe]
176
+ refine ⟨?_, ?_⟩ <;> intro h
177
+ · use g⁻¹ * x * g -- duh
178
+ simp [h]
179
+ group
180
+ · rcases h with ⟨u, hu, rfl⟩
181
+ group
182
+ exact hu
183
+
184
+ instance : SMul (Dfx F D) (AutomorphicForm F D M) where
185
+ smul g φ := { -- (g • f) (x) := f(xg) -- x(gf)=(xg)f
186
+ toFun := fun x => φ (x * g)
172
187
left_invt := by
173
188
intros d x
174
- simp only [← φ.left_invt d x]
175
- rw [mul_assoc]
189
+ simp only [← φ.left_invt d x, mul_assoc]
176
190
exact φ.left_invt d (x * g)
177
191
loc_cst := by
178
192
rcases φ.loc_cst with ⟨U, openU, hU⟩
179
- use U -- not mathematically correct
193
+ use toConjAct g • U
180
194
constructor
181
- · exact openU
195
+ · apply toConjAct_open _ openU
182
196
· intros x u umem
183
197
simp only
184
- sorry
185
- } -- (g • f) (x) := f(xg) -- x(gf)=(xg)f
186
- one_smul := by
187
- intros φ
188
- ext df
189
- -- missing simp lemma
190
- change φ (df * 1 ) = φ df
191
- simp
192
- mul_smul := by
193
- intros g h φ
194
- sorry
195
- -- if M is an R-module (e.g. if M = R!), then Automorphic forms are also an R-module
196
- -- with the action being 0on the coefficients.
197
-
198
- example (a b c :ℝ ): a * b * c = (a * b) * c := rfl
198
+ rw[conjAct_mem] at umem
199
+ obtain ⟨ugu, hugu, eq⟩ := umem
200
+ rw[←eq, ←mul_assoc, ←mul_assoc, inv_mul_cancel_right, hU (x*g) ugu hugu]
201
+ }
202
+
203
+ @[simp]
204
+ lemma sMul_eval (g : Dfx F D) (f : AutomorphicForm F D M) (x : (D ⊗[F] FiniteAdeleRing (𝓞 F) F)ˣ) :
205
+ (g • f) x = f (x * g) := rfl
206
+
207
+ instance : MulAction (Dfx F D) (AutomorphicForm F D M) where
208
+ smul := (. • .)
209
+ one_smul := by intros; ext; simp only [sMul_eval, mul_one]
210
+ mul_smul := by intros; ext; simp only [sMul_eval, mul_assoc]
0 commit comments