Skip to content

Commit ec44b79

Browse files
K is discrete in the adeles of K (#257) (#362)
* Prove zero_discrete for all number fields before generalizing from zero. * Move the proofs below prerequisite theorems * Prove NumberField.AdeleRing.zero_discrete
1 parent 769dc04 commit ec44b79

File tree

4 files changed

+139
-115
lines changed

4 files changed

+139
-115
lines changed

FLT/NumberField/AdeleRing.lean

+128-104
Original file line numberDiff line numberDiff line change
@@ -28,110 +28,6 @@ instance NumberField.AdeleRing.locallyCompactSpace : LocallyCompactSpace (AdeleR
2828

2929
end LocallyCompact
3030

31-
section Discrete
32-
33-
open DedekindDomain
34-
35-
theorem Rat.AdeleRing.zero_discrete : ∃ U : Set (AdeleRing (𝓞 ℚ) ℚ),
36-
IsOpen U ∧ (algebraMap ℚ (AdeleRing (𝓞 ℚ) ℚ)) ⁻¹' U = {0} := by
37-
let integralAdeles := {f : FiniteAdeleRing (𝓞 ℚ) ℚ |
38-
∀ v , f v ∈ IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers ℚ v}
39-
use {f | ∀ v, f v ∈ (Metric.ball 0 1)} ×ˢ integralAdeles
40-
refine ⟨?_, ?_⟩
41-
· apply IsOpen.prod
42-
. rw [Set.setOf_forall]
43-
apply isOpen_iInter_of_finite
44-
intro v
45-
exact Metric.isOpen_ball.preimage (continuous_apply v)
46-
let basis := FiniteAdeleRing.submodulesRingBasis (𝓞 ℚ) ℚ
47-
let integralAdeles' := basis.toRing_subgroups_basis.openAddSubgroup 1
48-
suffices h : integralAdeles = ↑integralAdeles' by
49-
rw [h]
50-
exact integralAdeles'.isOpen
51-
ext x
52-
simp only [← FiniteAdeleRing.exists_finiteIntegralAdele_iff, FiniteAdeleRing.ext_iff,
53-
SetCoe.ext_iff, Set.mem_setOf_eq, RingSubgroupsBasis.openAddSubgroup, Submonoid.one_def,
54-
map_one, SetLike.mem_coe, ← OpenAddSubgroup.mem_toAddSubgroup, Submodule.mem_toAddSubgroup,
55-
Submodule.mem_span_singleton, Algebra.smul_def', mul_one, integralAdeles, integralAdeles']
56-
apply exists_congr
57-
intro a
58-
exact eq_comm
59-
· apply subset_antisymm
60-
· intro x hx
61-
rw [Set.mem_preimage] at hx
62-
simp only [Set.mem_singleton_iff]
63-
have : (algebraMap ℚ (AdeleRing (𝓞 ℚ) ℚ)) x =
64-
(algebraMap ℚ (InfiniteAdeleRing ℚ) x, algebraMap ℚ (FiniteAdeleRing (𝓞 ℚ) ℚ) x)
65-
· rfl
66-
rw [this] at hx
67-
clear this
68-
rw [Set.mem_prod] at hx
69-
obtain ⟨h1, h2⟩ := hx
70-
dsimp only at h1 h2
71-
simp only [Metric.mem_ball, dist_zero_right, Set.mem_setOf_eq,
72-
InfiniteAdeleRing.algebraMap_apply, UniformSpace.Completion.norm_coe] at h1
73-
simp only [integralAdeles, Set.mem_setOf_eq] at h2
74-
specialize h1 Rat.infinitePlace
75-
change ‖(x : ℂ)‖ < 1 at h1
76-
simp at h1
77-
have intx: ∃ (y:ℤ), y = x
78-
· obtain ⟨z, hz⟩ := IsDedekindDomain.HeightOneSpectrum.mem_integers_of_valuation_le_one
79-
ℚ x <| fun v ↦ by
80-
specialize h2 v
81-
letI : UniformSpace ℚ := v.adicValued.toUniformSpace
82-
rw [IsDedekindDomain.HeightOneSpectrum.mem_adicCompletionIntegers] at h2
83-
rwa [← IsDedekindDomain.HeightOneSpectrum.valuedAdicCompletion_eq_valuation']
84-
use Rat.ringOfIntegersEquiv z
85-
rw [← hz]
86-
apply Rat.ringOfIntegersEquiv_eq_algebraMap
87-
obtain ⟨y, rfl⟩ := intx
88-
simp only [abs_lt] at h1
89-
norm_cast at h1 ⊢
90-
-- We need the next line because `norm_cast` is for some reason producing a `negSucc 0`.
91-
-- I haven't been able to isolate this behaviour even in a standalone lemma.
92-
-- We could also make `omega` more robust against accidental appearances of `negSucc`.
93-
rw [Int.negSucc_eq] at h1
94-
omega
95-
· intro x
96-
simp only [Set.mem_singleton_iff, Set.mem_preimage]
97-
rintro rfl
98-
simp only [map_zero]
99-
change (0, 0) ∈ _
100-
simp only [Prod.mk_zero_zero, Set.mem_prod, Prod.fst_zero, Prod.snd_zero]
101-
constructor
102-
· simp only [Metric.mem_ball, dist_zero_right, Set.mem_setOf_eq]
103-
intro v
104-
have : ‖(0:InfiniteAdeleRing ℚ) v‖ = 0
105-
· simp only [norm_eq_zero]
106-
rfl
107-
simp [this, zero_lt_one]
108-
· simp only [integralAdeles, Set.mem_setOf_eq]
109-
intro v
110-
apply zero_mem
111-
112-
-- Maybe this discreteness isn't even stated in the best way?
113-
-- I'm ambivalent about how it's stated
114-
open Pointwise in
115-
theorem Rat.AdeleRing.discrete : ∀ q : ℚ, ∃ U : Set (AdeleRing (𝓞 ℚ) ℚ),
116-
IsOpen U ∧ (algebraMap ℚ (AdeleRing (𝓞 ℚ) ℚ)) ⁻¹' U = {q} := by
117-
obtain ⟨V, hV, hV0⟩ := zero_discrete
118-
intro q
119-
set ι := algebraMap ℚ (AdeleRing (𝓞 ℚ) ℚ) with
120-
set qₐ := ι q with hqₐ
121-
set f := Homeomorph.subLeft qₐ with hf
122-
use f ⁻¹' V, f.isOpen_preimage.mpr hV
123-
have : f ∘ ι = ι ∘ Homeomorph.subLeft q := by ext; simp [hf, hqₐ]
124-
rw [← Set.preimage_comp, this, Set.preimage_comp, hV0]
125-
ext
126-
simp only [Set.mem_preimage, Homeomorph.subLeft_apply, Set.mem_singleton_iff, sub_eq_zero, eq_comm]
127-
128-
variable (K : Type*) [Field K] [NumberField K]
129-
130-
theorem NumberField.AdeleRing.discrete : ∀ k : K, ∃ U : Set (AdeleRing (𝓞 K) K),
131-
IsOpen U ∧ (algebraMap K (AdeleRing (𝓞 K) K)) ⁻¹' U = {k} := sorry -- issue #257
132-
133-
end Discrete
134-
13531
section BaseChange
13632

13733
namespace NumberField.AdeleRing
@@ -257,6 +153,134 @@ end NumberField.AdeleRing
257153

258154
end BaseChange
259155

156+
section Discrete
157+
158+
open DedekindDomain
159+
160+
theorem Rat.AdeleRing.zero_discrete : ∃ U : Set (AdeleRing (𝓞 ℚ) ℚ),
161+
IsOpen U ∧ (algebraMap ℚ (AdeleRing (𝓞 ℚ) ℚ)) ⁻¹' U = {0} := by
162+
let integralAdeles := {f : FiniteAdeleRing (𝓞 ℚ) ℚ |
163+
∀ v , f v ∈ IsDedekindDomain.HeightOneSpectrum.adicCompletionIntegers ℚ v}
164+
use {f | ∀ v, f v ∈ (Metric.ball 0 1)} ×ˢ integralAdeles
165+
refine ⟨?_, ?_⟩
166+
· apply IsOpen.prod
167+
. rw [Set.setOf_forall]
168+
apply isOpen_iInter_of_finite
169+
intro v
170+
exact Metric.isOpen_ball.preimage (continuous_apply v)
171+
let basis := FiniteAdeleRing.submodulesRingBasis (𝓞 ℚ) ℚ
172+
let integralAdeles' := basis.toRing_subgroups_basis.openAddSubgroup 1
173+
suffices h : integralAdeles = ↑integralAdeles' by
174+
rw [h]
175+
exact integralAdeles'.isOpen
176+
ext x
177+
simp only [← FiniteAdeleRing.exists_finiteIntegralAdele_iff, FiniteAdeleRing.ext_iff,
178+
SetCoe.ext_iff, Set.mem_setOf_eq, RingSubgroupsBasis.openAddSubgroup, Submonoid.one_def,
179+
map_one, SetLike.mem_coe, ← OpenAddSubgroup.mem_toAddSubgroup, Submodule.mem_toAddSubgroup,
180+
Submodule.mem_span_singleton, Algebra.smul_def', mul_one, integralAdeles, integralAdeles']
181+
apply exists_congr
182+
intro a
183+
exact eq_comm
184+
· apply subset_antisymm
185+
· intro x hx
186+
rw [Set.mem_preimage] at hx
187+
simp only [Set.mem_singleton_iff]
188+
have : (algebraMap ℚ (AdeleRing (𝓞 ℚ) ℚ)) x =
189+
(algebraMap ℚ (InfiniteAdeleRing ℚ) x, algebraMap ℚ (FiniteAdeleRing (𝓞 ℚ) ℚ) x)
190+
· rfl
191+
rw [this] at hx
192+
clear this
193+
rw [Set.mem_prod] at hx
194+
obtain ⟨h1, h2⟩ := hx
195+
dsimp only at h1 h2
196+
simp only [Metric.mem_ball, dist_zero_right, Set.mem_setOf_eq,
197+
InfiniteAdeleRing.algebraMap_apply, UniformSpace.Completion.norm_coe] at h1
198+
simp only [integralAdeles, Set.mem_setOf_eq] at h2
199+
specialize h1 Rat.infinitePlace
200+
change ‖(x : ℂ)‖ < 1 at h1
201+
simp at h1
202+
have intx: ∃ (y:ℤ), y = x
203+
· obtain ⟨z, hz⟩ := IsDedekindDomain.HeightOneSpectrum.mem_integers_of_valuation_le_one
204+
ℚ x <| fun v ↦ by
205+
specialize h2 v
206+
letI : UniformSpace ℚ := v.adicValued.toUniformSpace
207+
rw [IsDedekindDomain.HeightOneSpectrum.mem_adicCompletionIntegers] at h2
208+
rwa [← IsDedekindDomain.HeightOneSpectrum.valuedAdicCompletion_eq_valuation']
209+
use Rat.ringOfIntegersEquiv z
210+
rw [← hz]
211+
apply Rat.ringOfIntegersEquiv_eq_algebraMap
212+
obtain ⟨y, rfl⟩ := intx
213+
simp only [abs_lt] at h1
214+
norm_cast at h1 ⊢
215+
-- We need the next line because `norm_cast` is for some reason producing a `negSucc 0`.
216+
-- I haven't been able to isolate this behaviour even in a standalone lemma.
217+
-- We could also make `omega` more robust against accidental appearances of `negSucc`.
218+
rw [Int.negSucc_eq] at h1
219+
omega
220+
· intro x
221+
simp only [Set.mem_singleton_iff, Set.mem_preimage]
222+
rintro rfl
223+
simp only [map_zero]
224+
change (0, 0) ∈ _
225+
simp only [Prod.mk_zero_zero, Set.mem_prod, Prod.fst_zero, Prod.snd_zero]
226+
constructor
227+
· simp only [Metric.mem_ball, dist_zero_right, Set.mem_setOf_eq]
228+
intro v
229+
have : ‖(0:InfiniteAdeleRing ℚ) v‖ = 0
230+
· simp only [norm_eq_zero]
231+
rfl
232+
simp [this, zero_lt_one]
233+
· simp only [integralAdeles, Set.mem_setOf_eq]
234+
intro v
235+
apply zero_mem
236+
237+
variable (K : Type*) [Field K] [NumberField K]
238+
239+
theorem NumberField.AdeleRing.zero_discrete : ∃ U : Set (AdeleRing (𝓞 K) K),
240+
IsOpen U ∧ (algebraMap K (AdeleRing (𝓞 K) K)) ⁻¹' U = {0} := by
241+
obtain ⟨V, hV, hV0⟩ := Rat.AdeleRing.zero_discrete
242+
use (piEquiv ℚ K) '' {f | ∀i, f i ∈ V }
243+
constructor
244+
. rw [← (piEquiv ℚ K).coe_toHomeomorph, Homeomorph.isOpen_image, Set.setOf_forall]
245+
apply isOpen_iInter_of_finite
246+
intro i
247+
exact hV.preimage (continuous_apply i)
248+
rw [Set.eq_singleton_iff_unique_mem]
249+
constructor
250+
. rw [Set.eq_singleton_iff_unique_mem, Set.mem_preimage, map_zero] at hV0
251+
simp only [Set.mem_preimage, map_zero, Set.mem_image,
252+
EmbeddingLike.map_eq_zero_iff, exists_eq_right, Pi.zero_apply]
253+
exact fun _ => hV0.left
254+
intro x ⟨y, hy, hyx⟩
255+
apply (Module.Finite.equivPi ℚ K).injective
256+
set f := Module.Finite.equivPi ℚ K x
257+
let g := fun i => algebraMap ℚ (AdeleRing (𝓞 ℚ) ℚ) (f i)
258+
have hfg : ∀ i, (algebraMap _ _) (f i) = g i := fun i => rfl
259+
have hg := piEquiv_apply_of_algebraMap hfg
260+
simp only [LinearEquiv.symm_apply_apply, f, ← hyx, EquivLike.apply_eq_iff_eq] at hg
261+
subst hg
262+
ext i
263+
rw [map_zero, Pi.zero_apply, ← Set.mem_singleton_iff, ← hV0, Set.mem_preimage]
264+
exact hy i
265+
266+
-- Maybe this discreteness isn't even stated in the best way?
267+
-- I'm ambivalent about how it's stated
268+
open Pointwise in
269+
theorem NumberField.AdeleRing.discrete : ∀ x : K, ∃ U : Set (AdeleRing (𝓞 K) K),
270+
IsOpen U ∧ (algebraMap K (AdeleRing (𝓞 K) K)) ⁻¹' U = {x} := by
271+
obtain ⟨V, hV, hV0⟩ := zero_discrete K
272+
intro x
273+
set ι := algebraMap K (AdeleRing (𝓞 K) K) with
274+
set xₐ := ι x with hxₐ
275+
set f := Homeomorph.subLeft xₐ with hf
276+
use f ⁻¹' V, f.isOpen_preimage.mpr hV
277+
have : f ∘ ι = ι ∘ Equiv.subLeft x := by ext; simp [hf, hxₐ]
278+
rw [← Set.preimage_comp, this, Set.preimage_comp, hV0]
279+
ext
280+
simp only [Set.mem_preimage, Equiv.subLeft_apply, Set.mem_singleton_iff, sub_eq_zero, eq_comm]
281+
282+
end Discrete
283+
260284
section Compact
261285

262286
open NumberField

blueprint/lean_decls

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ DedekindDomain.FiniteAdeleRing.baseChangeAlgEquiv
7272
NumberField.InfiniteAdeleRing.baseChangeEquiv
7373
NumberField.AdeleRing.baseChangeEquiv
7474
Rat.AdeleRing.zero_discrete
75-
Rat.AdeleRing.discrete
75+
NumberField.AdeleRing.zero_discrete
7676
NumberField.AdeleRing.discrete
7777
Rat.AdeleRing.cocompact
7878
NumberField.AdeleRing.cocompact

blueprint/src/chapter/AdeleMiniproject.tex

+9-9
Original file line numberDiff line numberDiff line change
@@ -399,15 +399,15 @@ \section{Discreteness and compactness}
399399
\end{proof}
400400

401401
\begin{theorem}
402-
\lean{Rat.AdeleRing.discrete}
403-
\label{Rat.AdeleRing.discrete}
402+
\lean{NumberField.AdeleRing.zero_discrete}
403+
\label{NumberField.AdeleRing.zero_discrete}
404404
\leanok
405-
The rationals $\Q$ are a discrete subgroup of $\A_{\Q}$.
405+
There's an open subset of $\A_{K}$ whose intersection with $K$ is $\{0\}$.
406406
\end{theorem}
407407
\begin{proof}
408-
If $q\in\Q$ and $U$ is the open subset in the previous lemma, then
409-
it's easily checked that $\Q\cap U=\{0\}$ implies $\Q\cap (U+q)=\{q\}$,
410-
and $U+q$ is open.
408+
By a previous result, we have $\A_K=K\otimes_{\Q}\A_{\Q}$.
409+
Choose a basis of $K/\Q$; then $K$ can be identified with $\Q^n\subseteq(\A_{\Q})^n$
410+
and the result follows from the previous theorem.
411411
\end{proof}
412412

413413
\begin{theorem}
@@ -417,9 +417,9 @@ \section{Discreteness and compactness}
417417
The additive subgroup $K$ of $\A_K$ is discrete.
418418
\end{theorem}
419419
\begin{proof}
420-
By a previous result, we have $\A_K=K\otimes_{\Q}\A_{\Q}$.
421-
Choose a basis of $K/\Q$; then $K$ can be identified with $\Q^n\subseteq(\A_{\Q})^n$
422-
and the result follows from the previous theorem.
420+
If $x\in K$ and $U$ is the open subset in the previous lemma, then
421+
it's easily checked that $K\cap U=\{0\}$ implies $K\cap (U+x)=\{x\}$,
422+
and $U+x$ is open.
423423
\end{proof}
424424

425425
For compactness we follow the same approach.

blueprint/src/chapter/FujisakiProject.tex

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ \section{The proof}
9090
of size $d$ then this identifies $D$ with $\Q^d$,
9191
$D_{\A}$ with $\A_{\Q}^d$, and $D\backslash D_{\A}$ with
9292
$(\Q\backslash\A_{\Q})^d$. Now $\Q$ is discrete in $\A_{\Q}$
93-
by theorem~\ref{Rat.AdeleRing.discrete}, and the quotient
93+
by theorem~\ref{NumberField.AdeleRing.discrete}, and the quotient
9494
$\Q\backslash \A_{\Q}$ is compact by theorem~\ref{Rat.AdeleRing.cocompact}.
9595
Hence $D$ is discrete in $D_{\A}$
9696
and the quotient $D\backslash D_{\A}$ is compact.

0 commit comments

Comments
 (0)