@@ -230,6 +230,9 @@ theorem tendsto_approx_atTop (c : CU P) (x : X) :
230
230
theorem lim_of_mem_C (c : CU P) (x : X) (h : x ∈ c.C) : c.lim x = 0 := by
231
231
simp only [CU.lim, approx_of_mem_C, h, ciSup_const]
232
232
233
+ theorem disjoint_C_support_lim (c : CU P) : Disjoint c.C (Function.support c.lim) :=
234
+ Function.disjoint_support_iff.mpr (fun x hx => lim_of_mem_C c x hx)
235
+
233
236
theorem lim_of_nmem_U (c : CU P) (x : X) (h : x ∉ c.U) : c.lim x = 1 := by
234
237
simp only [CU.lim, approx_of_nmem_U c _ h, ciSup_const]
235
238
@@ -431,6 +434,54 @@ theorem exists_continuous_one_zero_of_isCompact_of_isGδ [RegularSpace X] [Local
431
434
· apply le_trans _ hu.le
432
435
exact tsum_le_tsum (fun n ↦ I n x) (S x) u_sum
433
436
437
+ /-- A variation of Urysohn's lemma. In a `T2Space X`, for a closed set `t` and a relatively
438
+ compact open set `s` such that `t ⊆ s`, there is a continuous function `f` supported in `s`,
439
+ `f x = 1` on `t` and `0 ≤ f x ≤ 1`. -/
440
+ lemma exists_tsupport_one_of_isOpen_isClosed [T2Space X] {s t : Set X}
441
+ (hs : IsOpen s) (hscp : IsCompact (closure s)) (ht : IsClosed t) (hst : t ⊆ s) : ∃ f : C(X, ℝ),
442
+ tsupport f ⊆ s ∧ EqOn f 1 t ∧ ∀ x, f x ∈ Icc (0 : ℝ) 1 := by
443
+ -- separate `sᶜ` and `t` by `u` and `v`.
444
+ rw [← compl_compl s] at hscp
445
+ obtain ⟨u, v, huIsOpen, hvIsOpen, hscompl_subset_u, ht_subset_v, hDjsjointuv⟩ :=
446
+ SeparatedNhds.of_isClosed_isCompact_closure_compl_isClosed (isClosed_compl_iff.mpr hs)
447
+ hscp ht (HasSubset.Subset.disjoint_compl_left hst)
448
+ rw [← subset_compl_iff_disjoint_right] at hDjsjointuv
449
+ have huvc : closure u ⊆ vᶜ := closure_minimal hDjsjointuv hvIsOpen.isClosed_compl
450
+ -- although `sᶜ` is not compact, `closure s` is compact and we can apply
451
+ -- `SeparatedNhds.of_isClosed_isCompact_closure_compl_isClosed`. To apply the condition
452
+ -- recursively, we need to make sure that `sᶜ ⊆ C`.
453
+ let P : Set X → Prop := fun C => sᶜ ⊆ C
454
+ set c : Urysohns.CU P :=
455
+ { C := closure u
456
+ U := tᶜ
457
+ P_C := hscompl_subset_u.trans subset_closure
458
+ closed_C := isClosed_closure
459
+ open_U := ht.isOpen_compl
460
+ subset := subset_compl_comm.mp
461
+ (Subset.trans ht_subset_v (subset_compl_comm.mp huvc))
462
+ hP := by
463
+ intro c u0 cIsClosed Pc u0IsOpen csubu0
464
+ obtain ⟨u1, hu1⟩ := SeparatedNhds.of_isClosed_isCompact_closure_compl_isClosed cIsClosed
465
+ (IsCompact.of_isClosed_subset hscp isClosed_closure
466
+ (closure_mono (compl_subset_compl.mpr Pc)))
467
+ (isClosed_compl_iff.mpr u0IsOpen) (HasSubset.Subset.disjoint_compl_right csubu0)
468
+ simp_rw [← subset_compl_iff_disjoint_right, compl_subset_comm (s := u0)] at hu1
469
+ obtain ⟨v1, hu1, hv1, hcu1, hv1u, hu1v1⟩ := hu1
470
+ refine ⟨u1, hu1, hcu1, ?_, (Pc.trans hcu1).trans subset_closure⟩
471
+ exact closure_minimal hu1v1 hv1.isClosed_compl |>.trans hv1u }
472
+ -- `c.lim = 0` on `closure u` and `c.lim = 1` on `t`, so that `tsupport c.lim ⊆ s`.
473
+ use ⟨c.lim, c.continuous_lim⟩
474
+ simp only [ContinuousMap.coe_mk]
475
+ refine ⟨?_, ?_, Urysohns.CU.lim_mem_Icc c⟩
476
+ · apply Subset.trans _ (compl_subset_comm.mp hscompl_subset_u)
477
+ rw [← IsClosed.closure_eq (isClosed_compl_iff.mpr huIsOpen)]
478
+ apply closure_mono
479
+ exact Disjoint.subset_compl_right (disjoint_of_subset_right subset_closure
480
+ (Disjoint.symm (Urysohns.CU.disjoint_C_support_lim c)))
481
+ · intro x hx
482
+ apply Urysohns.CU.lim_of_nmem_U
483
+ exact not_mem_compl_iff.mpr hx
484
+
434
485
theorem exists_continuous_nonneg_pos [RegularSpace X] [LocallyCompactSpace X] (x : X) :
435
486
∃ f : C(X, ℝ), HasCompactSupport f ∧ 0 ≤ (f : X → ℝ) ∧ f x ≠ 0 := by
436
487
rcases exists_compact_mem_nhds x with ⟨k, hk, k_mem⟩
0 commit comments