Skip to content

Commit 82ce028

Browse files
feat(Analysis/Normed/Algebra/GelfandMazur): new file (#29649)
This adds two versions of the *Gelfand-Mazur* *Theorem*: ```lean NormedAlgebra.Complex.nonempty_algEquiv (F : Type*) [NormedRing F] [NormOneClass F] [NormMulClass F] [NormedAlgebra ℂ F] [Nontrivial F] : Nonempty (ℂ ≃ₐ[ℂ] F) NormedAlgebra.Real.nonempty_algEquiv_or (F : Type*) [NormedField F] [NormedAlgebra ℝ F] : Nonempty (F ≃ₐ[ℝ] ℝ) ∨ Nonempty (F ≃ₐ[ℝ] ℂ) ``` The version for complex algebras differs in its assumptions from the existing version [NormedRing.algEquivComplexOfComplete](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Analysis/Normed/Algebra/Spectrum.html#NormedRing.algEquivComplexOfComplete) (nontrivial normed algebra with multiplicative norm vs. complete division ring with submultiplicative norm). A version for real algebras is not yet in Mathlib; it is needed in the context of implementing (absolute) heights; see [Heights](https://github.com/MichaelStollBayreuth/Heights). Following a suggestion by @j-loreaux, we also add some API for the `Bornology.cobounded` filter.
1 parent 7df0b99 commit 82ce028

File tree

9 files changed

+506
-15
lines changed

9 files changed

+506
-15
lines changed

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1809,6 +1809,7 @@ import Mathlib.Analysis.Normed.Algebra.Basic
18091809
import Mathlib.Analysis.Normed.Algebra.DualNumber
18101810
import Mathlib.Analysis.Normed.Algebra.Exponential
18111811
import Mathlib.Analysis.Normed.Algebra.GelfandFormula
1812+
import Mathlib.Analysis.Normed.Algebra.GelfandMazur
18121813
import Mathlib.Analysis.Normed.Algebra.MatrixExponential
18131814
import Mathlib.Analysis.Normed.Algebra.QuaternionExponential
18141815
import Mathlib.Analysis.Normed.Algebra.Spectrum

Mathlib/Analysis/Calculus/TangentCone.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -562,7 +562,7 @@ theorem tangentConeAt_mono_field : tangentConeAt 𝕜 s x ⊆ tangentConeAt 𝕜
562562
· intro β hβ
563563
rw [mem_map, mem_atTop_sets]
564564
obtain ⟨n, hn⟩ := mem_atTop_sets.1
565-
(mem_map.1 (h₁ (algebraMap_cobounded_le_cobounded (𝕜 := 𝕜) (𝕜' := 𝕜') hβ)))
565+
(mem_map.1 (h₁ (tendsto_algebraMap_cobounded (𝕜 := 𝕜) (𝕜' := 𝕜') hβ)))
566566
use n, fun _ _ ↦ by simp_all
567567
· simpa
568568

Mathlib/Analysis/Complex/PhragmenLindelof.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,7 @@ theorem quadrant_III (hd : DiffContOnCl ℂ f (Iio 0 ×ℂ Iio 0))
516516
· rcases hB with ⟨c, hc, B, hO⟩
517517
refine ⟨c, hc, B, ?_⟩
518518
simpa only [Function.comp_def, norm_neg]
519-
using hO.comp_tendsto (tendsto_neg_cobounded.inf H.tendsto)
519+
using hO.comp_tendsto (Filter.tendsto_neg_cobounded.inf H.tendsto)
520520
· rw [comp_apply, ← ofReal_neg]
521521
exact hre (-x) (neg_nonpos.2 hx)
522522
· rw [comp_apply, ← neg_mul, ← ofReal_neg]
@@ -580,7 +580,7 @@ theorem quadrant_IV (hd : DiffContOnCl ℂ f (Ioi 0 ×ℂ Iio 0))
580580
· rcases hB with ⟨c, hc, B, hO⟩
581581
refine ⟨c, hc, B, ?_⟩
582582
simpa only [Function.comp_def, norm_neg]
583-
using hO.comp_tendsto (tendsto_neg_cobounded.inf H.tendsto)
583+
using hO.comp_tendsto (Filter.tendsto_neg_cobounded.inf H.tendsto)
584584
· rw [comp_apply, ← ofReal_neg]
585585
exact hre (-x) (neg_nonneg.2 hx)
586586
· rw [comp_apply, ← neg_mul, ← ofReal_neg]

Mathlib/Analysis/Normed/Algebra/GelfandMazur.lean

Lines changed: 411 additions & 0 deletions
Large diffs are not rendered by default.

Mathlib/Analysis/Normed/Module/Basic.lean

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -298,18 +298,20 @@ end NNReal
298298

299299
variable (𝕜)
300300

301-
/--
302-
Preimages of cobounded sets under the algebra map are cobounded.
303-
-/
304-
theorem algebraMap_cobounded_le_cobounded [NormOneClass 𝕜'] :
305-
Filter.map (algebraMap 𝕜 𝕜') (Bornology.cobounded 𝕜) ≤ Bornology.cobounded 𝕜' := by
301+
open Filter Bornology in
302+
/-- Preimages of cobounded sets under the algebra map are cobounded. -/
303+
@[simp]
304+
theorem tendsto_algebraMap_cobounded (𝕜 𝕜' : Type*) [NormedField 𝕜] [SeminormedRing 𝕜']
305+
[NormedAlgebra 𝕜 𝕜'] [NormOneClass 𝕜'] :
306+
Tendsto (algebraMap 𝕜 𝕜') (cobounded 𝕜) (cobounded 𝕜') := by
306307
intro c hc
307-
rw [Filter.mem_map, ← Bornology.isCobounded_def, ← Bornology.isBounded_compl_iff,
308-
isBounded_iff_forall_norm_le]
309-
obtain ⟨s, hs⟩ := isBounded_iff_forall_norm_le.1
310-
(Bornology.isBounded_compl_iff.2 (Bornology.isCobounded_def.1 hc))
311-
use s
312-
exact fun x hx ↦ by simpa [norm_algebraMap, norm_one] using hs ((algebraMap 𝕜 𝕜') x) hx
308+
rw [mem_map]
309+
rw [← isCobounded_def, ← isBounded_compl_iff, isBounded_iff_forall_norm_le] at hc ⊢
310+
obtain ⟨s, hs⟩ := hc
311+
exact ⟨s, fun x hx ↦ by simpa using hs (algebraMap 𝕜 𝕜' x) hx⟩
312+
313+
@[deprecated (since := "2025-11-04")] alias
314+
algebraMap_cobounded_le_cobounded := tendsto_algebraMap_cobounded
313315

314316
/-- In a normed algebra, the inclusion of the base field in the extended field is an isometry. -/
315317
theorem algebraMap_isometry [NormOneClass 𝕜'] : Isometry (algebraMap 𝕜 𝕜') := by

Mathlib/Order/Filter/Prod.lean

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,20 @@ theorem Tendsto.prodMap_coprod {δ : Type*} {f : α → γ} {g : β → δ} {a :
535535
Tendsto (Prod.map f g) (a.coprod b) (c.coprod d) :=
536536
map_prodMap_coprod_le.trans (coprod_mono hf hg)
537537

538+
lemma Tendsto.coprod_of_prod_top_right {f : α × β → γ} {la : Filter α} {lb : Filter β}
539+
{lc : Filter γ} (h₁ : ∀ s : Set α, s ∈ la → Tendsto f (𝓟 sᶜ ×ˢ lb) lc)
540+
(h₂ : Tendsto f (la ×ˢ ⊤) lc) :
541+
Tendsto f (la.coprod lb) lc := by
542+
simp_all [tendsto_prod_iff, coprod_eq_prod_top_sup_top_prod]
543+
grind
544+
545+
lemma Tendsto.coprod_of_prod_top_left {f : α × β → γ} {la : Filter α} {lb : Filter β}
546+
{lc : Filter γ} (h₁ : ∀ s : Set β, s ∈ lb → Tendsto f (la ×ˢ 𝓟 sᶜ) lc)
547+
(h₂ : Tendsto f (⊤ ×ˢ lb) lc) :
548+
Tendsto f (la.coprod lb) lc := by
549+
simp_all [tendsto_prod_iff, coprod_eq_prod_top_sup_top_prod]
550+
grind
551+
538552
end Coprod
539553

540554
end Filter

Mathlib/Topology/Bornology/BoundedOperation.lean

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ lemma boundedSub_of_lipschitzWith_sub [PseudoMetricSpace R] [Sub R] {K : NNReal}
6666

6767
end bounded_sub
6868

69-
7069
section bounded_mul
7170
/-!
7271
### Bounded multiplication and addition
@@ -158,6 +157,46 @@ lemma SeminormedAddCommGroup.lipschitzWith_sub :
158157

159158
instance : BoundedSub R := boundedSub_of_lipschitzWith_sub SeminormedAddCommGroup.lipschitzWith_sub
160159

160+
open Filter Pointwise Bornology
161+
162+
/-
163+
TODO:
164+
* Generalize the following to bornologies and `BoundedFoo` classes.
165+
* Add `BoundedNeg`, `BoundedInv` and `BoundedDiv` in the process.
166+
-/
167+
168+
@[simp]
169+
lemma tendsto_add_const_cobounded (x : R) :
170+
Tendsto (· + x) (cobounded R) (cobounded R) := by
171+
intro s hs
172+
rw [mem_map]
173+
rw [← isCobounded_def, ← isBounded_compl_iff] at hs ⊢
174+
rw [← Set.preimage_compl]
175+
convert isBounded_sub hs (t := {x}) isBounded_singleton using 1
176+
ext y
177+
simp [sub_eq_iff_eq_add]
178+
179+
@[simp]
180+
lemma tendsto_const_add_cobounded (x : R) :
181+
Tendsto (x + ·) (cobounded R) (cobounded R) := by
182+
intro s hs
183+
rw [mem_map]
184+
rw [← isCobounded_def, ← isBounded_compl_iff] at hs ⊢
185+
rw [← Set.preimage_compl]
186+
convert isBounded_add isBounded_singleton (s := {-x}) hs using 1
187+
ext y
188+
simp
189+
190+
@[simp]
191+
theorem tendsto_sub_const_cobounded (x : R) :
192+
Tendsto (· - x) (cobounded R) (cobounded R) := by
193+
simpa only [sub_eq_add_neg] using tendsto_add_const_cobounded (-x)
194+
195+
@[simp]
196+
theorem tendsto_const_sub_cobounded (x : R) :
197+
Tendsto (x - ·) (cobounded R) (cobounded R) := by
198+
simpa only [sub_eq_add_neg] using (tendsto_const_add_cobounded x).comp tendsto_neg_cobounded
199+
161200
end SeminormedAddCommGroup
162201

163202
section NonUnitalSeminormedRing

docs/1000.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1997,6 +1997,13 @@ Q2226650:
19971997

19981998
Q2226677:
19991999
title: Gelfand–Mazur theorem
2000+
decls:
2001+
- NormedRing.algEquivComplexOfComplete
2002+
- NormedAlgebra.Complex.algEquivOfNormMul
2003+
- NormedAlgebra.Real.nonempty_algEquiv_or
2004+
authors: Jireh Loreaux, Michael Stoll
2005+
date: 2021, 2025
2006+
comment: "The first two are over the complex numbers (with different assumptions), the third is over the real numbers."
20002007

20012008
Q2226682:
20022009
title: Gelfand–Naimark theorem

docs/references.bib

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3922,6 +3922,23 @@ @Article{ orzech1971
39223922
url = {https://doi.org/10.2307/2316897}
39233923
}
39243924

3925+
@Article{ ostrowski1916,
3926+
author = {Ostrowski, Alexander},
3927+
title = {\"Uber einige {L}\"osungen der {F}unktionalgleichung
3928+
{$\psi(x)\cdot\psi(x)=\psi(xy)$}},
3929+
journal = {Acta Math.},
3930+
fjournal = {Acta Mathematica},
3931+
volume = {41},
3932+
year = {1916},
3933+
number = {1},
3934+
pages = {271--284},
3935+
issn = {0001-5962,1871-2509},
3936+
mrclass = {99-04},
3937+
mrnumber = {1555153},
3938+
doi = {10.1007/BF02422947},
3939+
url = {https://doi.org/10.1007/BF02422947}
3940+
}
3941+
39253942
@Article{ oudom_guin_2008,
39263943
author = {Oudom, J.-M. and Guin, D.},
39273944
title = {On the {Lie} enveloping algebra of a pre-{Lie} algebra},

0 commit comments

Comments
 (0)