Skip to content

Commit db778b5

Browse files
committed
split'
1 parent d181a58 commit db778b5

3 files changed

Lines changed: 110 additions & 77 deletions

File tree

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3595,6 +3595,7 @@ import Mathlib.Data.Real.Pi.Leibniz
35953595
import Mathlib.Data.Real.Pi.Wallis
35963596
import Mathlib.Data.Real.Pointwise
35973597
import Mathlib.Data.Real.Sign
3598+
import Mathlib.Data.Real.Spectrum
35983599
import Mathlib.Data.Real.Sqrt
35993600
import Mathlib.Data.Real.Star
36003601
import Mathlib.Data.Real.StarOrdered

Mathlib/Analysis/Normed/Algebra/Spectrum.lean

Lines changed: 4 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Jireh Loreaux
55
-/
66
import Mathlib.Algebra.Algebra.Spectrum.Quasispectrum
7-
import Mathlib.FieldTheory.IsAlgClosed.Spectrum
7+
import Mathlib.Analysis.Analytic.RadiusLiminf
88
import Mathlib.Analysis.Complex.Liouville
99
import Mathlib.Analysis.Complex.Polynomial.Basic
10-
import Mathlib.Analysis.Analytic.RadiusLiminf
11-
import Mathlib.Topology.Algebra.Module.CharacterSpace
1210
import Mathlib.Analysis.Normed.Algebra.Exponential
1311
import Mathlib.Analysis.Normed.Algebra.UnitizationL1
12+
import Mathlib.Data.Real.Spectrum
13+
import Mathlib.FieldTheory.IsAlgClosed.Spectrum
1414
import Mathlib.Tactic.ContinuousFunctionalCalculus
15+
import Mathlib.Topology.Algebra.Module.CharacterSpace
1516

1617
/-!
1718
# The spectrum of elements in a complete normed algebra
@@ -780,45 +781,6 @@ lemma spectralRadius_eq {𝕜₁ 𝕜₂ A : Type*} [NormedField 𝕜₁] [Norme
780781

781782
variable {A : Type*} [Ring A]
782783

783-
lemma nnreal_iff [Algebra ℝ A] {a : A} :
784-
SpectrumRestricts a ContinuousMap.realToNNReal ↔ ∀ x ∈ spectrum ℝ a, 0 ≤ x := by
785-
refine ⟨fun h x hx ↦ ?_, fun h ↦ ?_⟩
786-
· obtain ⟨x, -, rfl⟩ := h.algebraMap_image.symm ▸ hx
787-
exact coe_nonneg x
788-
· exact .of_subset_range_algebraMap (fun _ ↦ Real.toNNReal_coe) fun x hx ↦ ⟨⟨x, h x hx⟩, rfl⟩
789-
790-
lemma nnreal_of_nonneg {A : Type*} [Ring A] [PartialOrder A] [Algebra ℝ A]
791-
[NonnegSpectrumClass ℝ A] {a : A} (ha : 0 ≤ a) :
792-
SpectrumRestricts a ContinuousMap.realToNNReal :=
793-
nnreal_iff.mpr <| spectrum_nonneg_of_nonneg ha
794-
795-
lemma real_iff [Algebra ℂ A] {a : A} :
796-
SpectrumRestricts a Complex.reCLM ↔ ∀ x ∈ spectrum ℂ a, x = x.re := by
797-
refine ⟨fun h x hx ↦ ?_, fun h ↦ ?_⟩
798-
· obtain ⟨x, -, rfl⟩ := h.algebraMap_image.symm ▸ hx
799-
simp
800-
· exact .of_subset_range_algebraMap Complex.ofReal_re fun x hx ↦ ⟨x.re, (h x hx).symm⟩
801-
802-
lemma nnreal_le_iff [Algebra ℝ A] {a : A}
803-
(ha : SpectrumRestricts a ContinuousMap.realToNNReal) {r : ℝ≥0} :
804-
(∀ x ∈ spectrum ℝ≥0 a, r ≤ x) ↔ ∀ x ∈ spectrum ℝ a, r ≤ x := by
805-
simp [← ha.algebraMap_image]
806-
807-
lemma nnreal_lt_iff [Algebra ℝ A] {a : A}
808-
(ha : SpectrumRestricts a ContinuousMap.realToNNReal) {r : ℝ≥0} :
809-
(∀ x ∈ spectrum ℝ≥0 a, r < x) ↔ ∀ x ∈ spectrum ℝ a, r < x := by
810-
simp [← ha.algebraMap_image]
811-
812-
lemma le_nnreal_iff [Algebra ℝ A] {a : A}
813-
(ha : SpectrumRestricts a ContinuousMap.realToNNReal) {r : ℝ≥0} :
814-
(∀ x ∈ spectrum ℝ≥0 a, x ≤ r) ↔ ∀ x ∈ spectrum ℝ a, x ≤ r := by
815-
simp [← ha.algebraMap_image]
816-
817-
lemma lt_nnreal_iff [Algebra ℝ A] {a : A}
818-
(ha : SpectrumRestricts a ContinuousMap.realToNNReal) {r : ℝ≥0} :
819-
(∀ x ∈ spectrum ℝ≥0 a, x < r) ↔ ∀ x ∈ spectrum ℝ a, x < r := by
820-
simp [← ha.algebraMap_image]
821-
822784
lemma nnreal_iff_spectralRadius_le [Algebra ℝ A] {a : A} {t : ℝ≥0} (ht : spectralRadius ℝ a ≤ t) :
823785
SpectrumRestricts a ContinuousMap.realToNNReal ↔
824786
spectralRadius ℝ (algebraMap ℝ A t - a) ≤ t := by
@@ -879,39 +841,4 @@ lemma compactSpace {R S A : Type*} [Semifield R] [Field S] [NonUnitalRing A]
879841
rw [← isCompact_iff_compactSpace] at h_cpct ⊢
880842
exact h.image ▸ h_cpct.image (map_continuous f)
881843

882-
variable {A : Type*} [NonUnitalRing A]
883-
884-
lemma nnreal_iff [Module ℝ A] [IsScalarTower ℝ A A] [SMulCommClass ℝ A A] {a : A} :
885-
QuasispectrumRestricts a ContinuousMap.realToNNReal ↔ ∀ x ∈ σₙ ℝ a, 0 ≤ x := by
886-
rw [quasispectrumRestricts_iff_spectrumRestricts_inr,
887-
Unitization.quasispectrum_eq_spectrum_inr' _ ℝ, SpectrumRestricts.nnreal_iff]
888-
889-
lemma nnreal_of_nonneg [Module ℝ A] [IsScalarTower ℝ A A] [SMulCommClass ℝ A A] [PartialOrder A]
890-
[NonnegSpectrumClass ℝ A] {a : A} (ha : 0 ≤ a) :
891-
QuasispectrumRestricts a ContinuousMap.realToNNReal :=
892-
nnreal_iff.mpr <| quasispectrum_nonneg_of_nonneg _ ha
893-
894-
lemma real_iff [Module ℂ A] [IsScalarTower ℂ A A] [SMulCommClass ℂ A A] {a : A} :
895-
QuasispectrumRestricts a Complex.reCLM ↔ ∀ x ∈ σₙ ℂ a, x = x.re := by
896-
rw [quasispectrumRestricts_iff_spectrumRestricts_inr,
897-
Unitization.quasispectrum_eq_spectrum_inr' _ ℂ, SpectrumRestricts.real_iff]
898-
899-
lemma le_nnreal_iff [Module ℝ A] [IsScalarTower ℝ A A] [SMulCommClass ℝ A A] {a : A}
900-
(ha : QuasispectrumRestricts a ContinuousMap.realToNNReal) {r : ℝ≥0} :
901-
(∀ x ∈ quasispectrum ℝ≥0 a, x ≤ r) ↔ ∀ x ∈ quasispectrum ℝ a, x ≤ r := by
902-
simp [← ha.algebraMap_image]
903-
904-
lemma lt_nnreal_iff [Module ℝ A] [IsScalarTower ℝ A A] [SMulCommClass ℝ A A] {a : A}
905-
(ha : QuasispectrumRestricts a ContinuousMap.realToNNReal) {r : ℝ≥0} :
906-
(∀ x ∈ quasispectrum ℝ≥0 a, x < r) ↔ ∀ x ∈ quasispectrum ℝ a, x < r := by
907-
simp [← ha.algebraMap_image]
908-
909844
end QuasispectrumRestricts
910-
911-
variable {A : Type*} [Ring A] [PartialOrder A]
912-
913-
lemma coe_mem_spectrum_real_of_nonneg [Algebra ℝ A] [NonnegSpectrumClass ℝ A] {a : A} {x : ℝ≥0}
914-
(ha : 0 ≤ a := by cfc_tac) :
915-
(x : ℝ) ∈ spectrum ℝ a ↔ x ∈ spectrum ℝ≥0 a := by
916-
simp [← (SpectrumRestricts.nnreal_of_nonneg ha).algebraMap_image, Set.mem_image,
917-
NNReal.algebraMap_eq_coe]

Mathlib/Data/Real/Spectrum.lean

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
/-
2+
Copyright (c) 2021 Jireh Loreaux. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Jireh Loreaux
5+
-/
6+
import Mathlib.Algebra.Algebra.Spectrum.Quasispectrum
7+
import Mathlib.Analysis.Complex.Basic
8+
import Mathlib.Data.Complex.Basic
9+
import Mathlib.Topology.Instances.NNReal.Lemmas
10+
11+
/-!
12+
# Some lemmas on the spectrum and quasispectrum of elements and positivity
13+
14+
-/
15+
16+
namespace SpectrumRestricts
17+
18+
open NNReal ENNReal
19+
20+
variable {A : Type*} [Ring A]
21+
22+
lemma nnreal_iff [Algebra ℝ A] {a : A} :
23+
SpectrumRestricts a ContinuousMap.realToNNReal ↔ ∀ x ∈ spectrum ℝ a, 0 ≤ x := by
24+
refine ⟨fun h x hx ↦ ?_, fun h ↦ ?_⟩
25+
· obtain ⟨x, -, rfl⟩ := h.algebraMap_image.symm ▸ hx
26+
exact coe_nonneg x
27+
· exact .of_subset_range_algebraMap (fun _ ↦ Real.toNNReal_coe) fun x hx ↦ ⟨⟨x, h x hx⟩, rfl⟩
28+
29+
lemma nnreal_of_nonneg {A : Type*} [Ring A] [PartialOrder A] [Algebra ℝ A]
30+
[NonnegSpectrumClass ℝ A] {a : A} (ha : 0 ≤ a) :
31+
SpectrumRestricts a ContinuousMap.realToNNReal :=
32+
nnreal_iff.mpr <| spectrum_nonneg_of_nonneg ha
33+
34+
lemma real_iff [Algebra ℂ A] {a : A} :
35+
SpectrumRestricts a Complex.reCLM ↔ ∀ x ∈ spectrum ℂ a, x = x.re := by
36+
refine ⟨fun h x hx ↦ ?_, fun h ↦ ?_⟩
37+
· obtain ⟨x, -, rfl⟩ := h.algebraMap_image.symm ▸ hx
38+
simp
39+
· exact .of_subset_range_algebraMap Complex.ofReal_re fun x hx ↦ ⟨x.re, (h x hx).symm⟩
40+
41+
lemma nnreal_le_iff [Algebra ℝ A] {a : A}
42+
(ha : SpectrumRestricts a ContinuousMap.realToNNReal) {r : ℝ≥0} :
43+
(∀ x ∈ spectrum ℝ≥0 a, r ≤ x) ↔ ∀ x ∈ spectrum ℝ a, r ≤ x := by
44+
simp [← ha.algebraMap_image]
45+
46+
lemma nnreal_lt_iff [Algebra ℝ A] {a : A}
47+
(ha : SpectrumRestricts a ContinuousMap.realToNNReal) {r : ℝ≥0} :
48+
(∀ x ∈ spectrum ℝ≥0 a, r < x) ↔ ∀ x ∈ spectrum ℝ a, r < x := by
49+
simp [← ha.algebraMap_image]
50+
51+
lemma le_nnreal_iff [Algebra ℝ A] {a : A}
52+
(ha : SpectrumRestricts a ContinuousMap.realToNNReal) {r : ℝ≥0} :
53+
(∀ x ∈ spectrum ℝ≥0 a, x ≤ r) ↔ ∀ x ∈ spectrum ℝ a, x ≤ r := by
54+
simp [← ha.algebraMap_image]
55+
56+
lemma lt_nnreal_iff [Algebra ℝ A] {a : A}
57+
(ha : SpectrumRestricts a ContinuousMap.realToNNReal) {r : ℝ≥0} :
58+
(∀ x ∈ spectrum ℝ≥0 a, x < r) ↔ ∀ x ∈ spectrum ℝ a, x < r := by
59+
simp [← ha.algebraMap_image]
60+
61+
end SpectrumRestricts
62+
63+
namespace QuasispectrumRestricts
64+
65+
open NNReal ENNReal
66+
local notation "σₙ" => quasispectrum
67+
68+
variable {A : Type*} [NonUnitalRing A]
69+
70+
lemma nnreal_iff [Module ℝ A] [IsScalarTower ℝ A A] [SMulCommClass ℝ A A] {a : A} :
71+
QuasispectrumRestricts a ContinuousMap.realToNNReal ↔ ∀ x ∈ σₙ ℝ a, 0 ≤ x := by
72+
rw [quasispectrumRestricts_iff_spectrumRestricts_inr,
73+
Unitization.quasispectrum_eq_spectrum_inr' _ ℝ, SpectrumRestricts.nnreal_iff]
74+
75+
lemma nnreal_of_nonneg [Module ℝ A] [IsScalarTower ℝ A A] [SMulCommClass ℝ A A] [PartialOrder A]
76+
[NonnegSpectrumClass ℝ A] {a : A} (ha : 0 ≤ a) :
77+
QuasispectrumRestricts a ContinuousMap.realToNNReal :=
78+
nnreal_iff.mpr <| quasispectrum_nonneg_of_nonneg _ ha
79+
80+
lemma real_iff [Module ℂ A] [IsScalarTower ℂ A A] [SMulCommClass ℂ A A] {a : A} :
81+
QuasispectrumRestricts a Complex.reCLM ↔ ∀ x ∈ σₙ ℂ a, x = x.re := by
82+
rw [quasispectrumRestricts_iff_spectrumRestricts_inr,
83+
Unitization.quasispectrum_eq_spectrum_inr' _ ℂ, SpectrumRestricts.real_iff]
84+
85+
lemma le_nnreal_iff [Module ℝ A] [IsScalarTower ℝ A A] [SMulCommClass ℝ A A] {a : A}
86+
(ha : QuasispectrumRestricts a ContinuousMap.realToNNReal) {r : ℝ≥0} :
87+
(∀ x ∈ quasispectrum ℝ≥0 a, x ≤ r) ↔ ∀ x ∈ quasispectrum ℝ a, x ≤ r := by
88+
simp [← ha.algebraMap_image]
89+
90+
lemma lt_nnreal_iff [Module ℝ A] [IsScalarTower ℝ A A] [SMulCommClass ℝ A A] {a : A}
91+
(ha : QuasispectrumRestricts a ContinuousMap.realToNNReal) {r : ℝ≥0} :
92+
(∀ x ∈ quasispectrum ℝ≥0 a, x < r) ↔ ∀ x ∈ quasispectrum ℝ a, x < r := by
93+
simp [← ha.algebraMap_image]
94+
95+
end QuasispectrumRestricts
96+
97+
variable {A : Type*} [Ring A] [PartialOrder A]
98+
99+
open scoped NNReal
100+
101+
lemma coe_mem_spectrum_real_of_nonneg [Algebra ℝ A] [NonnegSpectrumClass ℝ A] {a : A} {x : ℝ≥0}
102+
(ha : 0 ≤ a := by cfc_tac) :
103+
(x : ℝ) ∈ spectrum ℝ a ↔ x ∈ spectrum ℝ≥0 a := by
104+
simp [← (SpectrumRestricts.nnreal_of_nonneg ha).algebraMap_image, Set.mem_image,
105+
NNReal.algebraMap_eq_coe]

0 commit comments

Comments
 (0)