-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAdeleRing.lean
80 lines (54 loc) · 2.49 KB
/
AdeleRing.lean
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/-
Copyright (c) 2024 Salvatore Mercuri. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Salvatore Mercuri
-/
import Mathlib.RingTheory.DedekindDomain.FiniteAdeleRing
import AdeleRingLocallyCompact.RingTheory.DedekindDomain.FinsetAdeleRing
import AdeleRingLocallyCompact.NumberTheory.NumberField.InfiniteAdeleRing
set_option linter.longLine false
/-!
# Adele Ring
We define the adele ring of a number field `K` as the direct product of the infinite adele ring
of `K` and the finite adele ring of `K`. We show that the adele ring of `K` is a
locally compact space.
## Main definitions
- `NumberField.AdeleRing K` is the adele ring of a number field `K`.
- `NumberField.AdeleRing.principalSubgroup K` is the subgroup of principal adeles `(x)ᵥ`.
## Main results
- `AdeleRing.locallyCompactSpace` : the adele ring of a number field is a locally compact space.
## References
* [J.W.S. Cassels, A. Frölich, *Algebraic Number Theory*][cassels1967algebraic]
* [M.I. de Frutos-Fernàndez, *Formalizing the Ring of Adèles of a Global Field*][defrutosfernandez2022]
## Tags
adele ring, dedekind domain
-/
noncomputable section
open DedekindDomain
namespace NumberField
variable (K : Type*) [Field K] [NumberField K]
/-- The adele ring of a number field. -/
def AdeleRing := InfiniteAdeleRing K × FiniteAdeleRing (𝓞 K) K
namespace AdeleRing
section DerivedInstances
instance : CommRing (AdeleRing K) := Prod.instCommRing
instance : Inhabited (AdeleRing K) := ⟨0⟩
instance : TopologicalSpace (AdeleRing K) := instTopologicalSpaceProd
instance : TopologicalRing (AdeleRing K) := instTopologicalRingProd
instance : Algebra K (AdeleRing K) := Prod.algebra _ _ _
end DerivedInstances
@[simp]
theorem algebraMap_fst_apply (x : K) : (algebraMap K (AdeleRing K) x).1 v = x := rfl
@[simp]
theorem algebraMap_snd_apply (x : K) : (algebraMap K (AdeleRing K) x).2 v = x := rfl
theorem algebraMap_injective : Function.Injective (algebraMap K (AdeleRing K)) :=
fun _ _ hxy => (algebraMap K (InfiniteAdeleRing K)).injective (Prod.ext_iff.1 hxy).1
/-- The adele ring of a number field is a locally compact space. -/
instance locallyCompactSpace : LocallyCompactSpace (AdeleRing K) := by
letI := FiniteAdeleRing.locallyCompactSpace (𝓞 K) K
exact Prod.locallyCompactSpace _ _
/-- The subgroup of principal adeles `(x)ᵥ` where `x ∈ K`. -/
def principalSubgroup : AddSubgroup (AdeleRing K) :=
(algebraMap K (AdeleRing K)).range.toAddSubgroup
end AdeleRing
end NumberField