Theorem: IsClosed.exists_minimal_nonempty_closed_subset
File: Mathlib/Topology/SubsetProperties.lean

tactic: let opens := { U : Set α | Sᶜ ⊆ U ∧ IsOpen U ∧ Uᶜ.Nonempty }
state_before: α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
⊢ ∃ V, V ⊆ S ∧ Set.Nonempty V ∧ IsClosed V ∧ ∀ (V' : Set α), V' ⊆ V → Set.Nonempty V' → IsClosed V' → V' = V

tactic: refine' ⟨Uᶜ, Set.compl_subset_comm.mp Uc, Ucne, Uo.isClosed_compl, _⟩
state_before: case intro.intro.intro.intro
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
U : Set α
h : ∀ (a : Set α), a ∈ opens → U ⊆ a → a = U
Uc : Sᶜ ⊆ U
Uo : IsOpen U
Ucne : Set.Nonempty (Uᶜ)
⊢ ∃ V, V ⊆ S ∧ Set.Nonempty V ∧ IsClosed V ∧ ∀ (V' : Set α), V' ⊆ V → Set.Nonempty V' → IsClosed V' → V' = V

tactic: intro V' V'sub V'ne V'cls
state_before: case intro.intro.intro.intro
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
U : Set α
h : ∀ (a : Set α), a ∈ opens → U ⊆ a → a = U
Uc : Sᶜ ⊆ U
Uo : IsOpen U
Ucne : Set.Nonempty (Uᶜ)
⊢ ∀ (V' : Set α), V' ⊆ Uᶜ → Set.Nonempty V' → IsClosed V' → V' = Uᶜ

tactic: have : V'ᶜ = U := by
  refine' h (V'ᶜ) ⟨_, isOpen_compl_iff.mpr V'cls, _⟩ (Set.subset_compl_comm.mp V'sub)
  exact Set.Subset.trans Uc (Set.subset_compl_comm.mp V'sub)
  simp only [compl_compl, V'ne]
state_before: case intro.intro.intro.intro
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
U : Set α
h : ∀ (a : Set α), a ∈ opens → U ⊆ a → a = U
Uc : Sᶜ ⊆ U
Uo : IsOpen U
Ucne : Set.Nonempty (Uᶜ)
V' : Set α
V'sub : V' ⊆ Uᶜ
V'ne : Set.Nonempty V'
V'cls : IsClosed V'
⊢ V' = Uᶜ

tactic: rw [← this, compl_compl]
state_before: case intro.intro.intro.intro
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
U : Set α
h : ∀ (a : Set α), a ∈ opens → U ⊆ a → a = U
Uc : Sᶜ ⊆ U
Uo : IsOpen U
Ucne : Set.Nonempty (Uᶜ)
V' : Set α
V'sub : V' ⊆ Uᶜ
V'ne : Set.Nonempty V'
V'cls : IsClosed V'
this : V'ᶜ = U
⊢ V' = Uᶜ

tactic: by_cases hcne : c.Nonempty
state_before: α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
⊢ ∃ ub, ub ∈ opens ∧ ∀ (s : Set α), s ∈ c → s ⊆ ub

tactic: obtain ⟨U₀, hU₀⟩ := hcne
state_before: case pos
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
hcne : Set.Nonempty c
⊢ ∃ ub, ub ∈ opens ∧ ∀ (s : Set α), s ∈ c → s ⊆ ub

tactic: haveI : Nonempty { U // U ∈ c } := ⟨⟨U₀, hU₀⟩⟩
state_before: case pos.intro
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
⊢ ∃ ub, ub ∈ opens ∧ ∀ (s : Set α), s ∈ c → s ⊆ ub

tactic: obtain ⟨U₀compl, -, -⟩ := hc hU₀
state_before: case pos.intro
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
⊢ ∃ ub, ub ∈ opens ∧ ∀ (s : Set α), s ∈ c → s ⊆ ub

tactic: use ⋃₀ c
state_before: case pos.intro.intro.intro
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ ∃ ub, ub ∈ opens ∧ ∀ (s : Set α), s ∈ c → s ⊆ ub

tactic: refine' ⟨⟨_, _, _⟩, fun U hU a ha => ⟨U, hU, ha⟩⟩
state_before: case pos.intro.intro.intro
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ ⋃₀ c ∈ opens ∧ ∀ (s : Set α), s ∈ c → s ⊆ ⋃₀ c

tactic: exact fun a ha => ⟨U₀, hU₀, U₀compl ha⟩
state_before: case pos.intro.intro.intro.refine'_1
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ Sᶜ ⊆ ⋃₀ c

tactic: exact isOpen_sUnion fun _ h => (hc h).2.1
state_before: case pos.intro.intro.intro.refine'_2
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ IsOpen (⋃₀ c)

tactic: convert_to (⋂ U : { U // U ∈ c }, U.1ᶜ).Nonempty
state_before: case pos.intro.intro.intro.refine'_3
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ Set.Nonempty ((⋃₀ c)ᶜ)

tactic: apply IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed
state_before: case pos.intro.intro.intro.refine'_3
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ Set.Nonempty (⋂ (U : { U // U ∈ c }), ↑Uᶜ)

tactic: ext
state_before: case h.e'_2
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ (⋃₀ c)ᶜ = ⋂ (U : { U // U ∈ c }), ↑Uᶜ

tactic: simp only [not_exists, exists_prop, not_and, Set.mem_iInter, Subtype.forall,
  mem_setOf_eq, mem_compl_iff, mem_sUnion]
state_before: case h.e'_2.h
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
x✝ : α
⊢ x✝ ∈ (⋃₀ c)ᶜ ↔ x✝ ∈ ⋂ (U : { U // U ∈ c }), ↑Uᶜ

tactic: rintro ⟨U, hU⟩ ⟨U', hU'⟩
state_before: case pos.intro.intro.intro.refine'_3.hZd
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ Directed (fun x x_1 => x ⊇ x_1) fun i => ↑iᶜ

tactic: obtain ⟨V, hVc, hVU, hVU'⟩ := hz.directedOn U hU U' hU'
state_before: case pos.intro.intro.intro.refine'_3.hZd.mk.mk
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
U : Set α
hU : U ∈ c
U' : Set α
hU' : U' ∈ c
⊢ ∃ z,
    (fun x x_1 => x ⊇ x_1) ((fun i => ↑iᶜ) { val := U, property := hU }) ((fun i => ↑iᶜ) z) ∧
      (fun x x_1 => x ⊇ x_1) ((fun i => ↑iᶜ) { val := U', property := hU' }) ((fun i => ↑iᶜ) z)

tactic: exact ⟨⟨V, hVc⟩, Set.compl_subset_compl.mpr hVU, Set.compl_subset_compl.mpr hVU'⟩
state_before: case pos.intro.intro.intro.refine'_3.hZd.mk.mk.intro.intro.intro
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
U : Set α
hU : U ∈ c
U' : Set α
hU' : U' ∈ c
V : Set α
hVc : V ∈ c
hVU : U ⊆ V
hVU' : U' ⊆ V
⊢ ∃ z,
    (fun x x_1 => x ⊇ x_1) ((fun i => ↑iᶜ) { val := U, property := hU }) ((fun i => ↑iᶜ) z) ∧
      (fun x x_1 => x ⊇ x_1) ((fun i => ↑iᶜ) { val := U', property := hU' }) ((fun i => ↑iᶜ) z)

tactic: exact fun U => (hc U.2).2.2
state_before: case pos.intro.intro.intro.refine'_3.hZn
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ ∀ (i : { U // U ∈ c }), Set.Nonempty (↑iᶜ)

tactic: exact fun U => (hc U.2).2.1.isClosed_compl.isCompact
state_before: case pos.intro.intro.intro.refine'_3.hZc
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ ∀ (i : { U // U ∈ c }), IsCompact (↑iᶜ)

tactic: exact fun U => (hc U.2).2.1.isClosed_compl
state_before: case pos.intro.intro.intro.refine'_3.hZcl
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ ∀ (i : { U // U ∈ c }), IsClosed (↑iᶜ)

tactic: use Sᶜ
state_before: case neg
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
hcne : ¬Set.Nonempty c
⊢ ∃ ub, ub ∈ opens ∧ ∀ (s : Set α), s ∈ c → s ⊆ ub

tactic: refine' ⟨⟨Set.Subset.refl _, isOpen_compl_iff.mpr hS, _⟩, fun U Uc => (hcne ⟨U, Uc⟩).elim⟩
state_before: case neg
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
hcne : ¬Set.Nonempty c
⊢ Sᶜ ∈ opens ∧ ∀ (s : Set α), s ∈ c → s ⊆ Sᶜ

tactic: rw [compl_compl]
state_before: case neg
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
hcne : ¬Set.Nonempty c
⊢ Set.Nonempty (Sᶜᶜ)

tactic: exact hne
state_before: case neg
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
hcne : ¬Set.Nonempty c
⊢ Set.Nonempty S

tactic: refine' h (V'ᶜ) ⟨_, isOpen_compl_iff.mpr V'cls, _⟩ (Set.subset_compl_comm.mp V'sub)
state_before: α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
U : Set α
h : ∀ (a : Set α), a ∈ opens → U ⊆ a → a = U
Uc : Sᶜ ⊆ U
Uo : IsOpen U
Ucne : Set.Nonempty (Uᶜ)
V' : Set α
V'sub : V' ⊆ Uᶜ
V'ne : Set.Nonempty V'
V'cls : IsClosed V'
⊢ V'ᶜ = U

tactic: exact Set.Subset.trans Uc (Set.subset_compl_comm.mp V'sub)
state_before: case refine'_1
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
U : Set α
h : ∀ (a : Set α), a ∈ opens → U ⊆ a → a = U
Uc : Sᶜ ⊆ U
Uo : IsOpen U
Ucne : Set.Nonempty (Uᶜ)
V' : Set α
V'sub : V' ⊆ Uᶜ
V'ne : Set.Nonempty V'
V'cls : IsClosed V'
⊢ Sᶜ ⊆ V'ᶜ

case refine'_2
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
U : Set α
h : ∀ (a : Set α), a ∈ opens → U ⊆ a → a = U
Uc : Sᶜ ⊆ U
Uo : IsOpen U
Ucne : Set.Nonempty (Uᶜ)
V' : Set α
V'sub : V' ⊆ Uᶜ
V'ne : Set.Nonempty V'
V'cls : IsClosed V'
⊢ Set.Nonempty (V'ᶜᶜ)

tactic: simp only [compl_compl, V'ne]
state_before: case refine'_2
α : Type u
β : Type v
ι : Type ?u.151556
π : ι → Type ?u.151561
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty (Uᶜ)}
U : Set α
h : ∀ (a : Set α), a ∈ opens → U ⊆ a → a = U
Uc : Sᶜ ⊆ U
Uo : IsOpen U
Ucne : Set.Nonempty (Uᶜ)
V' : Set α
V'sub : V' ⊆ Uᶜ
V'ne : Set.Nonempty V'
V'cls : IsClosed V'
⊢ Set.Nonempty (V'ᶜᶜ)