@@ -13,6 +13,8 @@ public import Mathlib.Analysis.Normed.Ring.Units
1313public import Mathlib.Analysis.SpecialFunctions.Pow.Continuity
1414public import Mathlib.FieldTheory.IsAlgClosed.Spectrum
1515public import Mathlib.Topology.Algebra.Module.CharacterSpace
16+ public import Mathlib.Topology.Semicontinuity.Hemicontinuity
17+ import Mathlib.Topology.MetricSpace.Sequences
1618
1719/-!
1820# The spectrum of elements in a complete normed algebra
@@ -689,3 +691,62 @@ lemma compactSpace {R S A : Type*} [Semifield R] [Field S] [NonUnitalRing A]
689691 exact h.image βΈ h_cpct.image (map_continuous f)
690692
691693end QuasispectrumRestricts
694+
695+ section UpperHemicontinuous
696+
697+ open Filter Set Topology
698+
699+ variable (π A)
700+
701+ lemma upperHemicontinuous_spectrum [NormedField π] [ProperSpace π]
702+ [NormedRing A] [NormedAlgebra π A] [CompleteSpace A] :
703+ UpperHemicontinuous (spectrum π : A β Set π) := by
704+ /- It suffices to use the sequential characterization of upper hemicontinuity.
705+ Suppose that `a : β β A` converges to `aβ`, `x : β β π` converges to `xβ`, and for all `n`,
706+ `x n β spectrum π (a n)`. -/
707+ rw [upperHemicontinuous_iff]
708+ refine fun aβ β¦ .of_sequences
709+ (isCompact_closedBall 0 ((βaββ + 1 ) * β(1 : A)β)).isSeqCompact ?_ <|
710+ fun a ha x hx_mem xβ hxβ¦ ?_
711+ /- We must show that `spectrum π (a n)` is eventually contained in some fixed compact set
712+ (we've chosen `closedBall 0 ((βaββ + 1) * β(1 : A)β)`). This follows since the spectrum of any
713+ `b` is bounded `βbβ * β1β` and `a` converges to `aβ`. -/
714+ Β· filter_upwards [Metric.closedBall_mem_nhds aβ zero_lt_one] with a ha
715+ apply spectrum.subset_closedBall_norm_mul a |>.trans <| Metric.closedBall_subset_closedBall ?_
716+ gcongr
717+ apply norm_le_norm_add_norm_sub' a aβ |>.trans
718+ gcongr
719+ simpa [dist_eq_norm] using ha
720+ /- Finally, `xβ β spectrum π aβ` since `algebraMap π A xβ - aβ` is not invertible, being itself
721+ the limit of the non-invertible elements `algebraMap π A (x n) - (a n)`. -/
722+ Β· exact nonunits.isClosed.mem_of_tendsto
723+ (continuous_algebraMap π A |>.tendsto xβ |>.comp hx |>.sub ha) <| .of_forall hx_mem
724+
725+ /-- The map `a β¦ spectrum ββ₯0 a` is upper hemicontinuous. -/
726+ theorem upperHemicontinuous_spectrum_nnreal [NormedRing A] [NormedAlgebra β A] [CompleteSpace A] :
727+ UpperHemicontinuous (spectrum ββ₯0 : A β Set ββ₯0 ) := by
728+ obtain β¨β¨hβ, -β©, hββ© : IsClosedEmbedding ((β) : ββ₯0 β β) := isometry_subtype_coe.isClosedEmbedding
729+ exact upperHemicontinuous_spectrum β A |>.isInducing_comp hβ hβ
730+
731+ open WithLp in
732+ /-- The map `a β¦ quasispectrum π a` is upper hemicontinuous. -/
733+ theorem upperHemicontinuous_quasispectrum [NontriviallyNormedField π] [ProperSpace π]
734+ [NonUnitalNormedRing A] [NormedSpace π A] [SMulCommClass π A A] [IsScalarTower π A A]
735+ [CompleteSpace A] :
736+ UpperHemicontinuous (quasispectrum π : A β Set π) := by
737+ convert upperHemicontinuous_spectrum π (WithLp 1 (Unitization π A)) |>.comp
738+ unitization_isometry_inr.continuous
739+ ext1 a
740+ rw [Unitization.quasispectrum_eq_spectrum_inr,
741+ β AlgEquiv.spectrum_eq (unitizationAlgEquiv π (π := π) (A := A) |>.symm)]
742+ congr
743+
744+ /-- The map `a β¦ quasispectrum ββ₯0 a` is upper hemicontinuous. -/
745+ theorem upperHemicontinuous_quasispectrum_nnreal [NonUnitalNormedRing A]
746+ [NormedSpace β A] [SMulCommClass β A A] [IsScalarTower β A A] [CompleteSpace A] :
747+ UpperHemicontinuous (quasispectrum ββ₯0 : A β Set ββ₯0 ) := by
748+ obtain β¨β¨hβ, -β©, hββ© : IsClosedEmbedding ((β) : ββ₯0 β β) := isometry_subtype_coe.isClosedEmbedding
749+ simpa [β NNReal.algebraMap_eq_coe] using
750+ upperHemicontinuous_quasispectrum β A |>.isInducing_comp hβ hβ
751+
752+ end UpperHemicontinuous
0 commit comments