Theorem: IsCompact.nonempty_iInter_of_directed_nonempty_isCompact_isClosed
File: Mathlib/Topology/Compactness/Compact.lean

Proof steps:
state_before: X : Type u
Y : Type v
ι✝ : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
ι : Type v
hι : Nonempty ι
t : ι → Set X
htd : Directed (fun x x_1 => x ⊇ x_1) t
htn : ∀ (i : ι), (t i).Nonempty
htc : ∀ (i : ι), IsCompact (t i)
htcl : ∀ (i : ι), IsClosed (t i)
⊢ (⋂ i, t i).Nonempty
state_after: X : Type u
Y : Type v
ι✝ : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
ι : Type v
hι : Nonempty ι
t : ι → Set X
htd : Directed (fun x x_1 => x ⊇ x_1) t
htn : ∀ (i : ι), (t i).Nonempty
htc : ∀ (i : ι), IsCompact (t i)
htcl : ∀ (i : ι), IsClosed (t i)
i₀ : ι := hι.some
⊢ (⋂ i, t i).Nonempty
tactic: let i₀ := hι.some
state_before: X : Type u
Y : Type v
ι✝ : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
ι : Type v
hι : Nonempty ι
t : ι → Set X
htd : Directed (fun x x_1 => x ⊇ x_1) t
htn : ∀ (i : ι), (t i).Nonempty
htc : ∀ (i : ι), IsCompact (t i)
htcl : ∀ (i : ι), IsClosed (t i)
i₀ : ι := hι.some
⊢ (⋂ i, t i).Nonempty
state_after: X : Type u
Y : Type v
ι✝ : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
ι : Type v
hι : Nonempty ι
t : ι → Set X
htd : Directed (fun x x_1 => x ⊇ x_1) t
htn : ∀ (i : ι), (t i).Nonempty
htc : ∀ (i : ι), IsCompact (t i)
htcl : ∀ (i : ι), IsClosed (t i)
i₀ : ι := hι.some
⊢ (t i₀ ∩ ⋂ i, t i).Nonempty
tactic: suffices (t i₀ ∩ ⋂ i, t i).Nonempty by
    rwa [inter_eq_right.mpr (iInter_subset _ i₀)] at this
state_before: X : Type u
Y : Type v
ι✝ : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
ι : Type v
hι : Nonempty ι
t : ι → Set X
htd : Directed (fun x x_1 => x ⊇ x_1) t
htn : ∀ (i : ι), (t i).Nonempty
htc : ∀ (i : ι), IsCompact (t i)
htcl : ∀ (i : ι), IsClosed (t i)
i₀ : ι := hι.some
⊢ (t i₀ ∩ ⋂ i, t i).Nonempty
state_after: X : Type u
Y : Type v
ι✝ : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
ι : Type v
hι : Nonempty ι
t : ι → Set X
htd : Directed (fun x x_1 => x ⊇ x_1) t
htc : ∀ (i : ι), IsCompact (t i)
htcl : ∀ (i : ι), IsClosed (t i)
i₀ : ι := hι.some
htn : ∀ (i : ι), t i ≠ ∅
⊢ t i₀ ∩ ⋂ i, t i ≠ ∅
tactic: simp only [nonempty_iff_ne_empty] at htn ⊢
state_before: X : Type u
Y : Type v
ι✝ : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
ι : Type v
hι : Nonempty ι
t : ι → Set X
htd : Directed (fun x x_1 => x ⊇ x_1) t
htc : ∀ (i : ι), IsCompact (t i)
htcl : ∀ (i : ι), IsClosed (t i)
i₀ : ι := hι.some
htn : ∀ (i : ι), t i ≠ ∅
⊢ t i₀ ∩ ⋂ i, t i ≠ ∅
state_after: X : Type u
Y : Type v
ι✝ : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
ι : Type v
hι : Nonempty ι
t : ι → Set X
htd : Directed (fun x x_1 => x ⊇ x_1) t
htc : ∀ (i : ι), IsCompact (t i)
htcl : ∀ (i : ι), IsClosed (t i)
i₀ : ι := hι.some
htn : ∀ (i : ι), t i ≠ ∅
⊢ ¬(Directed (fun x x_1 => x ⊇ x_1) t → ∃ i, t i₀ ∩ t i = ∅)
tactic: apply mt ((htc i₀).elim_directed_family_closed t htcl)
state_before: X : Type u
Y : Type v
ι✝ : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
ι : Type v
hι : Nonempty ι
t : ι → Set X
htd : Directed (fun x x_1 => x ⊇ x_1) t
htc : ∀ (i : ι), IsCompact (t i)
htcl : ∀ (i : ι), IsClosed (t i)
i₀ : ι := hι.some
htn : ∀ (i : ι), t i ≠ ∅
⊢ ¬(Directed (fun x x_1 => x ⊇ x_1) t → ∃ i, t i₀ ∩ t i = ∅)
state_after: X : Type u
Y : Type v
ι✝ : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
ι : Type v
hι : Nonempty ι
t : ι → Set X
htd : Directed (fun x x_1 => x ⊇ x_1) t
htc : ∀ (i : ι), IsCompact (t i)
htcl : ∀ (i : ι), IsClosed (t i)
i₀ : ι := hι.some
htn : ∀ (i : ι), t i ≠ ∅
⊢ Directed (fun x x_1 => x ⊇ x_1) t ∧ ∀ (i : ι), (t i₀ ∩ t i).Nonempty
tactic: push_neg
state_before: X : Type u
Y : Type v
ι✝ : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
ι : Type v
hι : Nonempty ι
t : ι → Set X
htd : Directed (fun x x_1 => x ⊇ x_1) t
htc : ∀ (i : ι), IsCompact (t i)
htcl : ∀ (i : ι), IsClosed (t i)
i₀ : ι := hι.some
htn : ∀ (i : ι), t i ≠ ∅
⊢ Directed (fun x x_1 => x ⊇ x_1) t ∧ ∀ (i : ι), (t i₀ ∩ t i).Nonempty
state_after: X : Type u
Y : Type v
ι✝ : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
ι : Type v
hι : Nonempty ι
t : ι → Set X
htd : Directed (fun x x_1 => x ⊇ x_1) t
htc : ∀ (i : ι), IsCompact (t i)
htcl : ∀ (i : ι), IsClosed (t i)
i₀ : ι := hι.some
htn : ∀ (i : ι), (t i).Nonempty
⊢ Directed (fun x x_1 => x ⊇ x_1) t ∧ ∀ (i : ι), (t i₀ ∩ t i).Nonempty
tactic: simp only [← nonempty_iff_ne_empty] at htn ⊢
state_before: X : Type u
Y : Type v
ι✝ : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
ι : Type v
hι : Nonempty ι
t : ι → Set X
htd : Directed (fun x x_1 => x ⊇ x_1) t
htc : ∀ (i : ι), IsCompact (t i)
htcl : ∀ (i : ι), IsClosed (t i)
i₀ : ι := hι.some
htn : ∀ (i : ι), (t i).Nonempty
⊢ Directed (fun x x_1 => x ⊇ x_1) t ∧ ∀ (i : ι), (t i₀ ∩ t i).Nonempty
state_after: X : Type u
Y : Type v
ι✝ : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
ι : Type v
hι : Nonempty ι
t : ι → Set X
htd : Directed (fun x x_1 => x ⊇ x_1) t
htc : ∀ (i : ι), IsCompact (t i)
htcl : ∀ (i : ι), IsClosed (t i)
i₀ : ι := hι.some
htn : ∀ (i : ι), (t i).Nonempty
i : ι
⊢ (t i₀ ∩ t i).Nonempty
tactic: refine ⟨htd, fun i => ?_⟩
state_before: X : Type u
Y : Type v
ι✝ : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
ι : Type v
hι : Nonempty ι
t : ι → Set X
htd : Directed (fun x x_1 => x ⊇ x_1) t
htc : ∀ (i : ι), IsCompact (t i)
htcl : ∀ (i : ι), IsClosed (t i)
i₀ : ι := hι.some
htn : ∀ (i : ι), (t i).Nonempty
i : ι
⊢ (t i₀ ∩ t i).Nonempty
state_after: case intro.intro
X : Type u
Y : Type v
ι✝ : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
ι : Type v
hι : Nonempty ι
t : ι → Set X
htd : Directed (fun x x_1 => x ⊇ x_1) t
htc : ∀ (i : ι), IsCompact (t i)
htcl : ∀ (i : ι), IsClosed (t i)
i₀ : ι := hι.some
htn : ∀ (i : ι), (t i).Nonempty
i j : ι
hji₀ : t i₀ ⊇ t j
hji : t i ⊇ t j
⊢ (t i₀ ∩ t i).Nonempty
tactic: rcases htd i₀ i with ⟨j, hji₀, hji⟩
state_before: case intro.intro
X : Type u
Y : Type v
ι✝ : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t✝ : Set X
ι : Type v
hι : Nonempty ι
t : ι → Set X
htd : Directed (fun x x_1 => x ⊇ x_1) t
htc : ∀ (i : ι), IsCompact (t i)
htcl : ∀ (i : ι), IsClosed (t i)
i₀ : ι := hι.some
htn : ∀ (i : ι), (t i).Nonempty
i j : ι
hji₀ : t i₀ ⊇ t j
hji : t i ⊇ t j
⊢ (t i₀ ∩ t i).Nonempty
state_after: no goals
tactic: exact (htn j).mono (subset_inter hji₀ hji)