@@ -314,6 +314,35 @@ theorem ContinuousOn.cfc' [TopologicalSpace X] {s : Set 𝕜} (hs : IsCompact s)
314314 filter_upwards [self_mem_nhdsWithin] with x hx
315315 exact ha x hx
316316
317+ /-- If `f : 𝕜 → 𝕜` is continuous on `s` and `a : X → A` is continuous on `t : Set X`,
318+ and `a x` satisfies the predicate `p` associated to `𝕜` and `s` is a common neighborhood of the
319+ spectra of `a x` for all `x ∈ t`, then `fun x ↦ cfc f (a x)` is continuous on `t`.
320+
321+ This is weaker than `ContinuousOn.cfc` since it requires `f` to be continuous on a *neighborhood* of
322+ the spectra, but in practice it is often easier to apply because `s` is not required to be compact,
323+ nor does it require an indexed family of compact sets. This is proven using `ContinuousOn.cfc` and
324+ `upperHemicontinuous_spectrum` to produce the necessary family of compact sets. -/
325+ theorem ContinuousOn.cfc_of_mem_nhdsSet [CompleteSpace A] [TopologicalSpace X] {s : Set 𝕜}
326+ (f : 𝕜 → 𝕜) {a : X → A} {t : Set X} (hs : s ∈ 𝓝ˢ (⋃ x ∈ t, spectrum 𝕜 (a x)))
327+ (ha_cont : ContinuousOn a t) (ha' : ∀ x ∈ t, p (a x) := by cfc_tac)
328+ (hf : ContinuousOn f s := by cfc_cont_tac) :
329+ ContinuousOn (fun x ↦ cfc f (a x)) t := by
330+ have hs' := hs
331+ simp only [nhdsSet_iUnion, mem_iSup] at hs'
332+ have (x : t) : ∃ S, IsCompact S ∧ (∀ᶠ (x' : A) in 𝓝 (a x), spectrum 𝕜 x' ⊆ S) ∧ S ⊆ s:= by
333+ obtain ⟨S, ⟨hS₁, hS₂⟩, hS₃⟩ :=
334+ spectrum.isCompact (𝕜 := 𝕜) (a x) |>.nhdsSet_basis_isCompact.mem_iff.mp (hs' x x.2 )
335+ refine ⟨S, hS₂, ?_, hS₃⟩
336+ exact upperHemicontinuous_spectrum 𝕜 A |>.upperHemicontinuousAt (a x) _ hS₁ |>.mono
337+ fun _ ↦ subset_of_mem_nhdsSet
338+ choose S hS₁ hS₂ hS₃ using this
339+ classical
340+ refine ha_cont.cfc (s := fun x : X ↦ if hx : x ∈ t then S ⟨x, hx⟩ else ∅) f
341+ (by simpa +contextual using hS₁) ?_ ha' ?_
342+ all_goals simp +contextual only [↓reduceDIte]
343+ · exact fun x₀ hx₀ ↦ ha_cont.continuousWithinAt hx₀ |>.eventually <| hS₂ ⟨x₀, hx₀⟩
344+ · exact fun x hx ↦ hf.mono <| hS₃ ⟨x, hx⟩
345+
317346/-- Suppose `a : X → Set A` is continuous and `a x` satisfies the predicate `p` for all `x`.
318347Suppose further that `s : X → Set 𝕜` is a family of compact sets `s x₀` contains the spectrum of
319348`a x` for all sufficiently close `x`. If `f : 𝕜 → 𝕜` is continuous on each `s x`, then
@@ -336,6 +365,21 @@ theorem Continuous.cfc' [TopologicalSpace X] {s : Set 𝕜} (hs : IsCompact s) (
336365 rw [← continuousOn_univ] at ha_cont ⊢
337366 exact ha_cont.cfc' hs f (fun x _ ↦ ha x) (fun x _ ↦ ha' x)
338367
368+ /-- If `f : 𝕜 → 𝕜` is continuous on `s` and `a : X → A` is continuous and `a x` satisfies the
369+ predicate `p` associated to `𝕜` and `s` is a common neighborhood of the spectra of `a x` for
370+ all `x`, then `fun x ↦ cfc f (a x)` is continuous.
371+
372+ This is weaker than `Continuous.cfc` since it requires `f` to be continuous on a *neighborhood* of
373+ the spectra, but in practice it is often easier to apply because `s` is not required to be compact,
374+ nor does it require an indexed family of compact sets. This is proven using `Continuous.cfc` and
375+ `upperHemicontinuous_spectrum` to produce the necessary family of compact sets. -/
376+ theorem Continuous.cfc_of_mem_nhdsSet [CompleteSpace A] [TopologicalSpace X] {s : Set 𝕜}
377+ (f : 𝕜 → 𝕜) {a : X → A} (hs : s ∈ 𝓝ˢ (⋃ x, spectrum 𝕜 (a x))) (ha_cont : Continuous a)
378+ (ha' : ∀ x, p (a x) := by cfc_tac) (hf : ContinuousOn f s := by cfc_cont_tac) :
379+ Continuous (fun x ↦ cfc f (a x)) := by
380+ rw [← continuousOn_univ] at ha_cont ⊢
381+ exact ha_cont.cfc_of_mem_nhdsSet f (by simpa) (by simpa)
382+
339383end RCLike
340384
341385section NNReal
@@ -437,6 +481,36 @@ theorem ContinuousOn.cfc_nnreal' [TopologicalSpace X] {s : Set ℝ≥0} (hs : Is
437481 filter_upwards [self_mem_nhdsWithin] with x hx
438482 exact ha x hx
439483
484+ /-- If `f : ℝ≥0 → ℝ≥0` is continuous on `s` and `a : X → A` is continuous on `t : Set X`,
485+ and `a x` is nonnegative for all `x ∈ t` and `s` is a common neighborhood of the
486+ spectra of `a x` for all `x ∈ t`, then `fun x ↦ cfc f (a x)` is continuous on `t`.
487+
488+ This is weaker than `ContinuousOn.cfc_nnreal` since it requires `f` to be continuous on a
489+ *neighborhood* of the spectra, but in practice it is often easier to apply because `s` is not
490+ required to be compact, nor does it require an indexed family of compact sets. This is proven using
491+ `ContinuousOn.cfc_nnreal` and `upperHemicontinuous_spectrum_nnreal` to produce the necessary family
492+ of compact sets. -/
493+ theorem ContinuousOn.cfc_nnreal_of_mem_nhdsSet [CompleteSpace A] [TopologicalSpace X] {s : Set ℝ≥0 }
494+ (f : ℝ≥0 → ℝ≥0 ) {a : X → A} {t : Set X} (hs : s ∈ 𝓝ˢ (⋃ x ∈ t, spectrum ℝ≥0 (a x)))
495+ (ha_cont : ContinuousOn a t) (ha' : ∀ x ∈ t, 0 ≤ a x := by cfc_tac)
496+ (hf : ContinuousOn f s := by cfc_cont_tac) :
497+ ContinuousOn (fun x ↦ cfc f (a x)) t := by
498+ have hs' := hs
499+ simp only [nhdsSet_iUnion, mem_iSup] at hs'
500+ have (x : t) : ∃ S, IsCompact S ∧ (∀ᶠ (x' : A) in 𝓝 (a x), spectrum ℝ≥0 x' ⊆ S) ∧ S ⊆ s:= by
501+ obtain ⟨S, ⟨hS₁, hS₂⟩, hS₃⟩ :=
502+ spectrum.isCompact_nnreal (a x) |>.nhdsSet_basis_isCompact.mem_iff.mp (hs' x x.2 )
503+ refine ⟨S, hS₂, ?_, hS₃⟩
504+ exact upperHemicontinuous_spectrum_nnreal A |>.upperHemicontinuousAt (a x) _ hS₁ |>.mono
505+ fun _ ↦ subset_of_mem_nhdsSet
506+ choose S hS₁ hS₂ hS₃ using this
507+ classical
508+ refine ha_cont.cfc_nnreal (s := fun x : X ↦ if hx : x ∈ t then S ⟨x, hx⟩ else ∅) f
509+ (by simpa +contextual using hS₁) ?_ ha' ?_
510+ all_goals simp +contextual only [↓reduceDIte]
511+ · exact fun x₀ hx₀ ↦ ha_cont.continuousWithinAt hx₀ |>.eventually <| hS₂ ⟨x₀, hx₀⟩
512+ · exact fun x hx ↦ hf.mono <| hS₃ ⟨x, hx⟩
513+
440514/-- Suppose `a : X → Set A` is a continuous family of nonnegative elements.
441515Suppose further that `s : X → Set ℝ≥0` is a family of compact sets such that `s x₀` contains the
442516spectrum of `a x` for all sufficiently close `x`. If `f : ℝ≥0 → ℝ≥0` is continuous on each `s x`,
@@ -459,6 +533,22 @@ theorem Continuous.cfc_nnreal' [TopologicalSpace X] {s : Set ℝ≥0} (hs : IsCo
459533 rw [← continuousOn_univ] at ha_cont ⊢
460534 exact ha_cont.cfc_nnreal' hs f (fun x _ ↦ ha x) (fun x _ ↦ ha' x)
461535
536+ /-- If `f : ℝ≥0 → ℝ≥0` is continuous on `s` and `a : X → A` is continuous and `a x` is nonnegative
537+ for all `x` and `s` is a common neighborhood of the spectra of `a x` for all `x`, then
538+ `fun x ↦ cfc f (a x)` is continuous.
539+
540+ This is weaker than `Continuous.cfc_nnreal` since it requires `f` to be continuous on a
541+ *neighborhood* of the spectra, but in practice it is often easier to apply because `s` is not
542+ required to be compact, nor does it require an indexed family of compact sets. This is proven using
543+ `Continuous.cfc_nnreal` and `upperHemicontinuous_spectrum_nnreal` to produce the necessary family
544+ of compact sets. -/
545+ theorem Continuous.cfc_nnreal_of_mem_nhdsSet [CompleteSpace A] [TopologicalSpace X] {s : Set ℝ≥0 }
546+ (f : ℝ≥0 → ℝ≥0 ) {a : X → A} (hs : s ∈ 𝓝ˢ (⋃ x, spectrum ℝ≥0 (a x))) (ha_cont : Continuous a)
547+ (ha' : ∀ x, 0 ≤ a x := by cfc_tac) (hf : ContinuousOn f s := by cfc_cont_tac) :
548+ Continuous (fun x ↦ cfc f (a x)) := by
549+ rw [← continuousOn_univ] at ha_cont ⊢
550+ exact ha_cont.cfc_nnreal_of_mem_nhdsSet f (by simpa) (by simpa)
551+
462552end NNReal
463553
464554end Right
@@ -731,6 +821,36 @@ theorem ContinuousOn.cfcₙ' [TopologicalSpace X] {s : Set 𝕜} (hs : IsCompact
731821 filter_upwards [self_mem_nhdsWithin] with x hx
732822 exact ha x hx
733823
824+ /-- If `f : 𝕜 → 𝕜` is continuous on `s` and `f 0 = 0` and `a : X → A` is continuous on `t : Set X`,
825+ and `a x` satisfies the predicate `p` associated to `𝕜` and `s` is a common neighborhood of the
826+ quasispectra of `a x` for all `x ∈ t`, then `fun x ↦ cfcₙ f (a x)` is continuous on `t`.
827+
828+ This is weaker than `ContinuousOn.cfcₙ` since it requires `f` to be continuous on a
829+ *neighborhood* of the quasispectra, but in practice it is often easier to apply because `s` is not
830+ required to be compact, nor does it require an indexed family of compact sets. This is proven using
831+ `ContinuousOn.cfcₙ` and `upperHemicontinuous_quasispectrum` to produce the necessary family of
832+ compact sets. -/
833+ theorem ContinuousOn.cfcₙ_of_mem_nhdsSet [CompleteSpace A] [TopologicalSpace X] {s : Set 𝕜}
834+ (f : 𝕜 → 𝕜) {a : X → A} {t : Set X} (hs : s ∈ 𝓝ˢ (⋃ x ∈ t, quasispectrum 𝕜 (a x)))
835+ (ha_cont : ContinuousOn a t) (ha' : ∀ x ∈ t, p (a x) := by cfc_tac)
836+ (hf : ContinuousOn f s := by cfc_cont_tac) (hf0 : f 0 = 0 := by cfc_zero_tac) :
837+ ContinuousOn (fun x ↦ cfcₙ f (a x)) t := by
838+ have hs' := hs
839+ simp only [nhdsSet_iUnion, mem_iSup] at hs'
840+ have (x : t) : ∃ S, IsCompact S ∧ (∀ᶠ (x' : A) in 𝓝 (a x), quasispectrum 𝕜 x' ⊆ S) ∧ S ⊆ s := by
841+ obtain ⟨S, ⟨hS₁, hS₂⟩, hS₃⟩ :=
842+ quasispectrum.isCompact (𝕜 := 𝕜) (a x) |>.nhdsSet_basis_isCompact.mem_iff.mp (hs' x x.2 )
843+ refine ⟨S, hS₂, ?_, hS₃⟩
844+ exact upperHemicontinuous_quasispectrum 𝕜 A |>.upperHemicontinuousAt (a x) _ hS₁ |>.mono
845+ fun _ ↦ subset_of_mem_nhdsSet
846+ choose S hS₁ hS₂ hS₃ using this
847+ classical
848+ refine ha_cont.cfcₙ (s := fun x : X ↦ if hx : x ∈ t then S ⟨x, hx⟩ else ∅) f
849+ (by simpa +contextual using hS₁) ?_ ha' ?_
850+ all_goals simp +contextual only [↓reduceDIte]
851+ · exact fun x₀ hx₀ ↦ ha_cont.continuousWithinAt hx₀ |>.eventually <| hS₂ ⟨x₀, hx₀⟩
852+ · exact fun x hx ↦ hf.mono <| hS₃ ⟨x, hx⟩
853+
734854/-- Suppose `a : X → Set A` is continuous and `a x` satisfies the predicate `p` for all `x`.
735855Suppose further that `s : X → Set 𝕜` is a family of compact sets `s x₀` contains the spectrum of
736856`a x` for all sufficiently close `x`. If `f : 𝕜 → 𝕜` is continuous on each `s x` and `f 0 = 0`, then
@@ -755,6 +875,23 @@ theorem Continuous.cfcₙ' [TopologicalSpace X] {s : Set 𝕜} (hs : IsCompact s
755875 rw [← continuousOn_univ] at ha_cont ⊢
756876 exact ha_cont.cfcₙ' hs f (fun x _ ↦ ha x) (fun x _ ↦ ha' x)
757877
878+ /-- If `f : 𝕜 → 𝕜` is continuous on `s` and `f 0 = 0` and `a : X → A` is continuous and `a x`
879+ satisfies the predicate `p` associated to `𝕜` and `s` is a common neighborhood of the quasispectra
880+ of `a x` for all `x`, then `fun x ↦ cfcₙ f (a x)` is continuous.
881+
882+ This is weaker than `Continuous.cfcₙ` since it requires `f` to be continuous on a *neighborhood* of
883+ the quasispectra, but in practice it is often easier to apply because `s` is not required to be
884+ compact, nor does it require an indexed family of compact sets. This is proven using
885+ `Continuous.cfcₙ` and `upperHemicontinuous_quasispectrum` to produce the necessary family of
886+ compact sets. -/
887+ theorem Continuous.cfcₙ_of_mem_nhdsSet [CompleteSpace A] [TopologicalSpace X] {s : Set 𝕜}
888+ (f : 𝕜 → 𝕜) {a : X → A} (hs : s ∈ 𝓝ˢ (⋃ x, quasispectrum 𝕜 (a x))) (ha_cont : Continuous a)
889+ (ha' : ∀ x, p (a x) := by cfc_tac) (hf : ContinuousOn f s := by cfc_cont_tac)
890+ (hf0 : f 0 = 0 := by cfc_zero_tac) :
891+ Continuous (fun x ↦ cfcₙ f (a x)) := by
892+ rw [← continuousOn_univ] at ha_cont ⊢
893+ exact ha_cont.cfcₙ_of_mem_nhdsSet f (by simpa) (by simpa)
894+
758895end RCLike
759896
760897section NNReal
@@ -859,6 +996,36 @@ theorem ContinuousOn.cfcₙ_nnreal' [TopologicalSpace X] {s : Set ℝ≥0} (hs :
859996 filter_upwards [self_mem_nhdsWithin] with x hx
860997 exact ha x hx
861998
999+ /-- If `f : ℝ≥0 → ℝ≥0` is continuous on `s` and `f 0 = 0` and `a : X → A` is continuous on
1000+ `t : Set X`, and `a x` is nonnegative for all `x ∈ t` and `s` is a common neighborhood of the
1001+ quasispectra of `a x` for all `x ∈ t`, then `fun x ↦ cfcₙ f (a x)` is continuous on `t`.
1002+
1003+ This is weaker than `ContinuousOn.cfcₙ_nnreal` since it requires `f` to be continuous on a
1004+ *neighborhood* of the quasispectra, but in practice it is often easier to apply because `s` is not
1005+ required to be compact, nor does it require an indexed family of compact sets. This is proven using
1006+ `ContinuousOn.cfcₙ_nnreal` and `upperHemicontinuous_quasispectrum_nnreal` to produce the necessary
1007+ family of compact sets. -/
1008+ theorem ContinuousOn.cfcₙ_nnreal_of_mem_nhdsSet [CompleteSpace A] [TopologicalSpace X] {s : Set ℝ≥0 }
1009+ (f : ℝ≥0 → ℝ≥0 ) {a : X → A} {t : Set X} (hs : s ∈ 𝓝ˢ (⋃ x ∈ t, quasispectrum ℝ≥0 (a x)))
1010+ (ha_cont : ContinuousOn a t) (ha' : ∀ x ∈ t, 0 ≤ a x := by cfc_tac)
1011+ (hf : ContinuousOn f s := by cfc_cont_tac) (hf0 : f 0 = 0 := by cfc_zero_tac) :
1012+ ContinuousOn (fun x ↦ cfcₙ f (a x)) t := by
1013+ have hs' := hs
1014+ simp only [nhdsSet_iUnion, mem_iSup] at hs'
1015+ have (x : t) : ∃ S, IsCompact S ∧ (∀ᶠ (x' : A) in 𝓝 (a x), quasispectrum ℝ≥0 x' ⊆ S) ∧ S ⊆ s:= by
1016+ obtain ⟨S, ⟨hS₁, hS₂⟩, hS₃⟩ :=
1017+ quasispectrum.isCompact_nnreal (a x) |>.nhdsSet_basis_isCompact.mem_iff.mp (hs' x x.2 )
1018+ refine ⟨S, hS₂, ?_, hS₃⟩
1019+ exact upperHemicontinuous_quasispectrum_nnreal A |>.upperHemicontinuousAt (a x) _ hS₁ |>.mono
1020+ fun _ ↦ subset_of_mem_nhdsSet
1021+ choose S hS₁ hS₂ hS₃ using this
1022+ classical
1023+ refine ha_cont.cfcₙ_nnreal (s := fun x : X ↦ if hx : x ∈ t then S ⟨x, hx⟩ else ∅) f
1024+ (by simpa +contextual using hS₁) ?_ ha' ?_
1025+ all_goals simp +contextual only [↓reduceDIte]
1026+ · exact fun x₀ hx₀ ↦ ha_cont.continuousWithinAt hx₀ |>.eventually <| hS₂ ⟨x₀, hx₀⟩
1027+ · exact fun x hx ↦ hf.mono <| hS₃ ⟨x, hx⟩
1028+
8621029/-- Suppose `a : X → Set A` is a continuous family of nonnegative elements.
8631030Suppose further that `s : X → Set ℝ≥0` is a family of compact sets such that `s x₀` contains the
8641031spectrum of `a x` for all sufficiently close `x`. If `f : ℝ≥0 → ℝ≥0` is continuous on each `s x`
@@ -883,6 +1050,23 @@ theorem Continuous.cfcₙ_nnreal' [TopologicalSpace X] {s : Set ℝ≥0} (hs : I
8831050 rw [← continuousOn_univ] at ha_cont ⊢
8841051 exact ha_cont.cfcₙ_nnreal' hs f (fun x _ ↦ ha x) (fun x _ ↦ ha' x)
8851052
1053+ /-- If `f : ℝ≥0 → ℝ≥0` is continuous on `s` and `f 0 = 0` and `a : X → A` is continuous and `a x` is
1054+ nonnegative for all `x` and `s` is a common neighborhood of the quasispectra of `a x` for all `x`,
1055+ then `fun x ↦ cfcₙ f (a x)` is continuous.
1056+
1057+ This is weaker than `Continuous.cfcₙ_nnreal` since it requires `f` to be continuous on a
1058+ *neighborhood* of the quasispectra, but in practice it is often easier to apply because `s` is not
1059+ required to be compact, nor does it require an indexed family of compact sets. This is proven using
1060+ `Continuous.cfcₙ_nnreal` and `upperHemicontinuous_quasispectrum_nnreal` to produce the necessary
1061+ family of compact sets. -/
1062+ theorem Continuous.cfcₙ_nnreal_of_mem_nhdsSet [CompleteSpace A] [TopologicalSpace X] {s : Set ℝ≥0 }
1063+ (f : ℝ≥0 → ℝ≥0 ) {a : X → A} (hs : s ∈ 𝓝ˢ (⋃ x, quasispectrum ℝ≥0 (a x)))
1064+ (ha_cont : Continuous a) (ha' : ∀ x, 0 ≤ a x := by cfc_tac)
1065+ (hf : ContinuousOn f s := by cfc_cont_tac) (hf0 : f 0 = 0 := by cfc_zero_tac) :
1066+ Continuous (fun x ↦ cfcₙ f (a x)) := by
1067+ rw [← continuousOn_univ] at ha_cont ⊢
1068+ exact ha_cont.cfcₙ_nnreal_of_mem_nhdsSet f (by simpa) (by simpa)
1069+
8861070end NNReal
8871071
8881072end Right
0 commit comments