Skip to content

Commit ec3711d

Browse files
committed
chore(Topology/ContinuousMap): remove assumptions (#24985)
- `ContinuousSMul R C(α, M)` and `ContinuousConstSMul R C(α, M)` no longer needs `LocallyCompactSpace α`. - `ContinuousLinearMap.compLeftContinuous` is upgraded to a continuous linear map. - `ContinuousLinearMap.compLeftContinuousCompact` is removed because it is a special case of the new `ContinuousLinearMap.compLeftContinuous`. - Also added `ContinuousLinearMap.const : M →L[R] C(α, M)`.
1 parent ecbc94e commit ec3711d

File tree

4 files changed

+39
-49
lines changed

4 files changed

+39
-49
lines changed

Mathlib/Topology/CompactOpen.lean

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,17 @@ protected def _root_.Homeomorph.arrowCongr (φ : X ≃ₜ Z) (ψ : Y ≃ₜ T) :
140140
continuous_toFun := continuous_postcomp _ |>.comp <| continuous_precomp _
141141
continuous_invFun := continuous_postcomp _ |>.comp <| continuous_precomp _
142142

143+
/-- The map from `X × C(Y, Z)` to `C(Y, X × Z)` is continuous. -/
144+
lemma continuous_prodMk_const : Continuous fun p : X × C(Y, Z) ↦ prodMk (const Y p.1) p.2 := by
145+
simp_rw [continuous_iff_continuousAt, ContinuousAt, ContinuousMap.tendsto_nhds_compactOpen]
146+
rintro ⟨r, f⟩ K hK U hU H
147+
obtain ⟨V, W, hV, hW, hrV, hKW, hVW⟩ := generalized_tube_lemma (isCompact_singleton (x := r))
148+
(hK.image f.continuous) hU (by simpa [Set.subset_def, forall_comm (α := X)])
149+
refine Filter.eventually_of_mem (prod_mem_nhds (hV.mem_nhds (by simpa using hrV))
150+
(ContinuousMap.eventually_mapsTo hK hW (Set.mapsTo'.mpr hKW))) ?_
151+
rintro ⟨r', f'⟩ ⟨hr'V, hf'⟩ x hxK
152+
exact hVW (Set.mk_mem_prod hr'V (hf' hxK))
153+
143154
variable [LocallyCompactPair Y Z]
144155

145156
/-- Composition is a continuous map from `C(X, Y) × C(Y, Z)` to `C(X, Z)`,
@@ -334,13 +345,9 @@ variable {X Y}
334345
theorem image_coev {y : Y} (s : Set X) : coev X Y y '' s = {y} ×ˢ s := by simp [singleton_prod]
335346

336347
/-- The coevaluation map `Y → C(X, Y × X)` is continuous (always). -/
337-
theorem continuous_coev : Continuous (coev X Y) := by
338-
have : ∀ {a K U}, MapsTo (coev X Y a) K U ↔ {a} ×ˢ K ⊆ U := by simp [singleton_prod, mapsTo']
339-
simp only [continuous_iff_continuousAt, ContinuousAt, tendsto_nhds_compactOpen, this]
340-
intro x K hK U hU hKU
341-
rcases generalized_tube_lemma isCompact_singleton hK hU hKU with ⟨V, W, hV, -, hxV, hKW, hVWU⟩
342-
filter_upwards [hV.mem_nhds (hxV rfl)] with a ha
343-
exact (prod_mono (singleton_subset_iff.mpr ha) hKW).trans hVWU
348+
theorem continuous_coev : Continuous (coev X Y) :=
349+
((continuous_prodMk_const (X := Y) (Y := X) (Z := X)).comp
350+
(.prodMk continuous_id (continuous_const (y := ContinuousMap.id _))):)
344351

345352
end Coev
346353

Mathlib/Topology/ContinuousMap/Algebra.lean

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -527,18 +527,13 @@ instance instSMul [SMul R M] [ContinuousConstSMul R M] : SMul R C(α, M) :=
527527
fun r f => ⟨r • ⇑f, f.continuous.const_smul r⟩⟩
528528

529529
@[to_additive]
530-
instance [LocallyCompactSpace α] [SMul R M] [ContinuousConstSMul R M] :
531-
ContinuousConstSMul R C(α, M) :=
532-
fun γ => continuous_of_continuous_uncurry _ (continuous_eval.const_smul γ)⟩
530+
instance [SMul R M] [ContinuousConstSMul R M] : ContinuousConstSMul R C(α, M) where
531+
continuous_const_smul r := continuous_postcomp ⟨_, continuous_const_smul r⟩
533532

534533
@[to_additive]
535-
instance [LocallyCompactSpace α] [TopologicalSpace R] [SMul R M] [ContinuousSMul R M] :
534+
instance [TopologicalSpace R] [SMul R M] [ContinuousSMul R M] :
536535
ContinuousSMul R C(α, M) :=
537-
by
538-
refine continuous_of_continuous_uncurry _ ?_
539-
have h : Continuous fun x : (R × C(α, M)) × α => x.fst.snd x.snd :=
540-
continuous_eval.comp (continuous_snd.prodMap continuous_id)
541-
exact (continuous_fst.comp continuous_fst).smul h⟩
536+
⟨(continuous_postcomp ⟨_, continuous_smul⟩).comp continuous_prodMk_const⟩
542537

543538
@[to_additive (attr := simp, norm_cast)]
544539
theorem coe_smul [SMul R M] [ContinuousConstSMul R M] (c : R) (f : C(α, M)) : ⇑(c • f) = c • ⇑f :=
@@ -594,13 +589,22 @@ instance module : Module R C(α, M) :=
594589

595590
variable (R)
596591

597-
/-- Composition on the left by a continuous linear map, as a `LinearMap`.
592+
/-- Composition on the left by a continuous linear map, as a `ContinuousLinearMap`.
598593
Similar to `LinearMap.compLeft`. -/
599594
@[simps]
600595
protected def _root_.ContinuousLinearMap.compLeftContinuous (α : Type*) [TopologicalSpace α]
601-
(g : M →L[R] M₂) : C(α, M) →ₗ[R] C(α, M₂) :=
602-
{ g.toLinearMap.toAddMonoidHom.compLeftContinuous α g.continuous with
603-
map_smul' := fun c _ => ext fun _ => g.map_smul' c _ }
596+
(g : M →L[R] M₂) : C(α, M) →L[R] C(α, M₂) where
597+
__ := g.toLinearMap.toAddMonoidHom.compLeftContinuous α g.continuous
598+
map_smul' := fun c _ => ext fun _ => g.map_smul' c _
599+
cont := ContinuousMap.continuous_postcomp _
600+
601+
/-- The constant map `x ↦ y ↦ x` as a `ContinuousLinearMap`. -/
602+
@[simps!]
603+
def _root_.ContinuousLinearMap.const (α : Type*) [TopologicalSpace α] : M →L[R] C(α, M) where
604+
toFun m := .const α m
605+
map_add' _ _ := rfl
606+
map_smul' _ _ := rfl
607+
cont := ContinuousMap.continuous_const'
604608

605609
/-- Coercion to a function as a `LinearMap`. -/
606610
@[simps]

Mathlib/Topology/ContinuousMap/Compact.lean

Lines changed: 6 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -371,34 +371,13 @@ end ContinuousMap
371371

372372
section CompLeft
373373

374-
variable (X : Type*) {𝕜 β γ : Type*} [TopologicalSpace X] [CompactSpace X]
375-
[NontriviallyNormedField 𝕜]
374+
@[deprecated (since := "2025-05-18")]
375+
alias ContinuousLinearMap.compLeftContinuousCompact :=
376+
ContinuousLinearMap.compLeftContinuous
376377

377-
variable [SeminormedAddCommGroup β] [NormedSpace 𝕜 β] [SeminormedAddCommGroup γ] [NormedSpace 𝕜 γ]
378-
379-
open ContinuousMap
380-
381-
/-- Postcomposition of continuous functions into a normed module by a continuous linear map is a
382-
continuous linear map.
383-
Transferred version of `ContinuousLinearMap.compLeftContinuousBounded`,
384-
upgraded version of `ContinuousLinearMap.compLeftContinuous`,
385-
similar to `LinearMap.compLeft`. -/
386-
protected def ContinuousLinearMap.compLeftContinuousCompact (g : β →L[𝕜] γ) :
387-
C(X, β) →L[𝕜] C(X, γ) :=
388-
(linearIsometryBoundedOfCompact X γ 𝕜).symm.toLinearIsometry.toContinuousLinearMap.comp <|
389-
(g.compLeftContinuousBounded X).comp <|
390-
(linearIsometryBoundedOfCompact X β 𝕜).toLinearIsometry.toContinuousLinearMap
391-
392-
@[simp]
393-
theorem ContinuousLinearMap.toLinear_compLeftContinuousCompact (g : β →L[𝕜] γ) :
394-
(g.compLeftContinuousCompact X : C(X, β) →ₗ[𝕜] C(X, γ)) = g.compLeftContinuous 𝕜 X := by
395-
ext f
396-
rfl
397-
398-
@[simp]
399-
theorem ContinuousLinearMap.compLeftContinuousCompact_apply (g : β →L[𝕜] γ) (f : C(X, β)) (x : X) :
400-
g.compLeftContinuousCompact X f x = g (f x) :=
401-
rfl
378+
@[deprecated (since := "2025-05-18")]
379+
alias ContinuousLinearMap.compLeftContinuousCompact_apply :=
380+
ContinuousLinearMap.compLeftContinuous_apply
402381

403382
end CompLeft
404383

Mathlib/Topology/ContinuousMap/StoneWeierstrass.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,7 @@ theorem ContinuousMap.starSubalgebra_topologicalClosure_eq_top_of_separatesPoint
396396
(A : StarSubalgebra 𝕜 C(X, 𝕜)) (hA : A.SeparatesPoints) : A.topologicalClosure = ⊤ := by
397397
rw [StarSubalgebra.eq_top_iff]
398398
-- Let `I` be the natural inclusion of `C(X, ℝ)` into `C(X, 𝕜)`
399-
let I : C(X, ℝ) →[ℝ] C(X, 𝕜) := ofRealCLM.compLeftContinuous ℝ X
399+
let I : C(X, ℝ) →L[ℝ] C(X, 𝕜) := ofRealCLM.compLeftContinuous ℝ X
400400
-- The main point of the proof is that its range (i.e., every real-valued function) is contained
401401
-- in the closure of `A`
402402
have key : LinearMap.range I ≤ (A.toSubmodule.restrictScalars ℝ).topologicalClosure := by
@@ -411,7 +411,7 @@ theorem ContinuousMap.starSubalgebra_topologicalClosure_eq_top_of_separatesPoint
411411
rw [← Submodule.map_top, ← SW]
412412
-- So it suffices to prove that the image under `I` of the closure of `A₀` is contained in the
413413
-- closure of `A`, which follows by abstract nonsense
414-
have h₁ := A₀.topologicalClosure_map ((@ofRealCLM 𝕜 _).compLeftContinuousCompact X)
414+
have h₁ := A₀.topologicalClosure_map I
415415
have h₂ := (A.toSubmodule.restrictScalars ℝ).map_comap_le I
416416
exact h₁.trans (Submodule.topologicalClosure_mono h₂)
417417
-- In particular, for a function `f` in `C(X, 𝕜)`, the real and imaginary parts of `f` are in the

0 commit comments

Comments
 (0)