Theorem: exists_continuous_zero_one_of_isClosed
File: Mathlib/Topology/UrysohnsLemma.lean

tactic: let P : Set X → Prop := fun _ ↦ True
state_before: X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
s t : Set X
hs : IsClosed s
ht : IsClosed t
hd : Disjoint s t
⊢ ∃ f, EqOn (⇑f) 0 s ∧ EqOn (⇑f) 1 t ∧ ∀ (x : X), f x ∈ Icc 0 1
state_after: X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
s t : Set X
hs : IsClosed s
ht : IsClosed t
hd : Disjoint s t
P : Set X → Prop := fun x => True
⊢ ∃ f, EqOn (⇑f) 0 s ∧ EqOn (⇑f) 1 t ∧ ∀ (x : X), f x ∈ Icc 0 1

tactic: set c : Urysohns.CU P :=
{ C := s
  U := tᶜ
  P_C := trivial
  closed_C := hs
  open_U := ht.isOpen_compl
  subset := disjoint_left.1 hd
  hP := by
    rintro c u c_closed - u_open cu
    rcases normal_exists_closure_subset c_closed u_open cu with ⟨v, v_open, cv, hv⟩
    exact ⟨v, v_open, cv, hv, trivial⟩ }
state_before: X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
s t : Set X
hs : IsClosed s
ht : IsClosed t
hd : Disjoint s t
P : Set X → Prop := fun x => True
⊢ ∃ f, EqOn (⇑f) 0 s ∧ EqOn (⇑f) 1 t ∧ ∀ (x : X), f x ∈ Icc 0 1
state_after: X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
s t : Set X
hs : IsClosed s
ht : IsClosed t
hd : Disjoint s t
P : Set X → Prop := fun x => True
c : Urysohns.CU P := { C := s, U := tᶜ, P_C := trivial, closed_C := hs, open_U := ⋯, subset := ⋯, hP := ⋯ }
⊢ ∃ f, EqOn (⇑f) 0 s ∧ EqOn (⇑f) 1 t ∧ ∀ (x : X), f x ∈ Icc 0 1

tactic: exact ⟨⟨c.lim, c.continuous_lim⟩, c.lim_of_mem_C, fun x hx => c.lim_of_nmem_U _ fun h => h hx,
  c.lim_mem_Icc⟩
state_before: X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
s t : Set X
hs : IsClosed s
ht : IsClosed t
hd : Disjoint s t
P : Set X → Prop := fun x => True
c : Urysohns.CU P := { C := s, U := tᶜ, P_C := trivial, closed_C := hs, open_U := ⋯, subset := ⋯, hP := ⋯ }
⊢ ∃ f, EqOn (⇑f) 0 s ∧ EqOn (⇑f) 1 t ∧ ∀ (x : X), f x ∈ Icc 0 1
state_after: no goals

tactic: rintro c u c_closed - u_open cu
state_before: X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
s t : Set X
hs : IsClosed s
ht : IsClosed t
hd : Disjoint s t
P : Set X → Prop := fun x => True
⊢ ∀ {c u : Set X}, IsClosed c → P c → IsOpen u → c ⊆ u → ∃ v, IsOpen v ∧ c ⊆ v ∧ closure v ⊆ u ∧ P (closure v)
state_after: X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
s t : Set X
hs : IsClosed s
ht : IsClosed t
hd : Disjoint s t
P : Set X → Prop := fun x => True
c u : Set X
c_closed : IsClosed c
u_open : IsOpen u
cu : c ⊆ u
⊢ ∃ v, IsOpen v ∧ c ⊆ v ∧ closure v ⊆ u ∧ P (closure v)

tactic: rcases normal_exists_closure_subset c_closed u_open cu with ⟨v, v_open, cv, hv⟩
state_before: X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
s t : Set X
hs : IsClosed s
ht : IsClosed t
hd : Disjoint s t
P : Set X → Prop := fun x => True
c u : Set X
c_closed : IsClosed c
u_open : IsOpen u
cu : c ⊆ u
⊢ ∃ v, IsOpen v ∧ c ⊆ v ∧ closure v ⊆ u ∧ P (closure v)
state_after: case intro.intro.intro
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
s t : Set X
hs : IsClosed s
ht : IsClosed t
hd : Disjoint s t
P : Set X → Prop := fun x => True
c u : Set X
c_closed : IsClosed c
u_open : IsOpen u
cu : c ⊆ u
v : Set X
v_open : IsOpen v
cv : c ⊆ v
hv : closure v ⊆ u
⊢ ∃ v, IsOpen v ∧ c ⊆ v ∧ closure v ⊆ u ∧ P (closure v)

tactic: exact ⟨v, v_open, cv, hv, trivial⟩
state_before: case intro.intro.intro
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
s t : Set X
hs : IsClosed s
ht : IsClosed t
hd : Disjoint s t
P : Set X → Prop := fun x => True
c u : Set X
c_closed : IsClosed c
u_open : IsOpen u
cu : c ⊆ u
v : Set X
v_open : IsOpen v
cv : c ⊆ v
hv : closure v ⊆ u
⊢ ∃ v, IsOpen v ∧ c ⊆ v ∧ closure v ⊆ u ∧ P (closure v)
state_after: no goals