Theorem: TopologicalSpace.Opens.isCompactElement_iff
File: Mathlib/Topology/Sets/Opens.lean

tactic: rw [isCompact_iff_finite_subcover, CompleteLattice.isCompactElement_iff]
state_before: ι : Type ?u.43879
α : Type u_1
β : Type ?u.43885
γ : Type ?u.43888
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
s : Opens α
⊢ CompleteLattice.IsCompactElement s ↔ IsCompact ↑s

tactic: refine' ⟨_, fun H ι U hU => _⟩
state_before: ι : Type ?u.43879
α : Type u_1
β : Type ?u.43885
γ : Type ?u.43888
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
s : Opens α
⊢ (∀ (ι : Type u_1) (s_1 : ι → Opens α), s ≤ iSup s_1 → ∃ t, s ≤ Finset.sup t s_1) ↔
    ∀ {ι : Type u_1} (U : ι → Set α),
      (∀ (i : ι), IsOpen (U i)) → (↑s ⊆ ⋃ (i : ι), U i) → ∃ t, ↑s ⊆ ⋃ (i : ι) (_ : i ∈ t), U i

tactic: introv H hU hU'
state_before: case refine'_1
ι : Type ?u.43879
α : Type u_1
β : Type ?u.43885
γ : Type ?u.43888
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
s : Opens α
⊢ (∀ (ι : Type u_1) (s_1 : ι → Opens α), s ≤ iSup s_1 → ∃ t, s ≤ Finset.sup t s_1) →
    ∀ {ι : Type u_1} (U : ι → Set α),
      (∀ (i : ι), IsOpen (U i)) → (↑s ⊆ ⋃ (i : ι), U i) → ∃ t, ↑s ⊆ ⋃ (i : ι) (_ : i ∈ t), U i

tactic: obtain ⟨t, ht⟩ := H ι (fun i => ⟨U i, hU i⟩) (by simpa)
state_before: case refine'_1
ι✝ : Type ?u.43879
α : Type u_1
β : Type ?u.43885
γ : Type ?u.43888
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
s : Opens α
H : ∀ (ι : Type u_1) (s_1 : ι → Opens α), s ≤ iSup s_1 → ∃ t, s ≤ Finset.sup t s_1
ι : Type u_1
U : ι → Set α
hU : ∀ (i : ι), IsOpen (U i)
hU' : ↑s ⊆ ⋃ (i : ι), U i
⊢ ∃ t, ↑s ⊆ ⋃ (i : ι) (_ : i ∈ t), U i

tactic: refine' ⟨t, Set.Subset.trans ht _⟩
state_before: case refine'_1.intro
ι✝ : Type ?u.43879
α : Type u_1
β : Type ?u.43885
γ : Type ?u.43888
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
s : Opens α
H : ∀ (ι : Type u_1) (s_1 : ι → Opens α), s ≤ iSup s_1 → ∃ t, s ≤ Finset.sup t s_1
ι : Type u_1
U : ι → Set α
hU : ∀ (i : ι), IsOpen (U i)
hU' : ↑s ⊆ ⋃ (i : ι), U i
t : Finset ι
ht : s ≤ Finset.sup t fun i => { carrier := U i, is_open' := (_ : IsOpen (U i)) }
⊢ ∃ t, ↑s ⊆ ⋃ (i : ι) (_ : i ∈ t), U i

tactic: rw [coe_finset_sup, Finset.sup_eq_iSup]
state_before: case refine'_1.intro
ι✝ : Type ?u.43879
α : Type u_1
β : Type ?u.43885
γ : Type ?u.43888
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
s : Opens α
H : ∀ (ι : Type u_1) (s_1 : ι → Opens α), s ≤ iSup s_1 → ∃ t, s ≤ Finset.sup t s_1
ι : Type u_1
U : ι → Set α
hU : ∀ (i : ι), IsOpen (U i)
hU' : ↑s ⊆ ⋃ (i : ι), U i
t : Finset ι
ht : s ≤ Finset.sup t fun i => { carrier := U i, is_open' := (_ : IsOpen (U i)) }
⊢ ↑(Finset.sup t fun i => { carrier := U i, is_open' := (_ : IsOpen (U i)) }) ⊆ ⋃ (i : ι) (_ : i ∈ t), U i

tactic: rfl
state_before: case refine'_1.intro
ι✝ : Type ?u.43879
α : Type u_1
β : Type ?u.43885
γ : Type ?u.43888
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
s : Opens α
H : ∀ (ι : Type u_1) (s_1 : ι → Opens α), s ≤ iSup s_1 → ∃ t, s ≤ Finset.sup t s_1
ι : Type u_1
U : ι → Set α
hU : ∀ (i : ι), IsOpen (U i)
hU' : ↑s ⊆ ⋃ (i : ι), U i
t : Finset ι
ht : s ≤ Finset.sup t fun i => { carrier := U i, is_open' := (_ : IsOpen (U i)) }
⊢ (⨆ (a : ι) (_ : a ∈ t), (SetLike.coe ∘ fun i => { carrier := U i, is_open' := (_ : IsOpen (U i)) }) a) ⊆
    ⋃ (i : ι) (_ : i ∈ t), U i

tactic: simpa
state_before: ι✝ : Type ?u.43879
α : Type u_1
β : Type ?u.43885
γ : Type ?u.43888
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
s : Opens α
H : ∀ (ι : Type u_1) (s_1 : ι → Opens α), s ≤ iSup s_1 → ∃ t, s ≤ Finset.sup t s_1
ι : Type u_1
U : ι → Set α
hU : ∀ (i : ι), IsOpen (U i)
hU' : ↑s ⊆ ⋃ (i : ι), U i
⊢ s ≤ ⨆ (i : ι), { carrier := U i, is_open' := (_ : IsOpen (U i)) }

tactic: obtain ⟨t, ht⟩ :=
  H (fun i => U i) (fun i => (U i).isOpen) (by simpa using show (s : Set α) ⊆ ↑(iSup U) from hU)
state_before: case refine'_2
ι✝ : Type ?u.43879
α : Type u_1
β : Type ?u.43885
γ : Type ?u.43888
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
s : Opens α
H :
  ∀ {ι : Type u_1} (U : ι → Set α),
    (∀ (i : ι), IsOpen (U i)) → (↑s ⊆ ⋃ (i : ι), U i) → ∃ t, ↑s ⊆ ⋃ (i : ι) (_ : i ∈ t), U i
ι : Type u_1
U : ι → Opens α
hU : s ≤ iSup U
⊢ ∃ t, s ≤ Finset.sup t U

tactic: refine' ⟨t, Set.Subset.trans ht _⟩
state_before: case refine'_2.intro
ι✝ : Type ?u.43879
α : Type u_1
β : Type ?u.43885
γ : Type ?u.43888
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
s : Opens α
H :
  ∀ {ι : Type u_1} (U : ι → Set α),
    (∀ (i : ι), IsOpen (U i)) → (↑s ⊆ ⋃ (i : ι), U i) → ∃ t, ↑s ⊆ ⋃ (i : ι) (_ : i ∈ t), U i
ι : Type u_1
U : ι → Opens α
hU : s ≤ iSup U
t : Finset ι
ht : ↑s ⊆ ⋃ (i : ι) (_ : i ∈ t), ↑(U i)
⊢ ∃ t, s ≤ Finset.sup t U

tactic: simp only [Set.iUnion_subset_iff]
state_before: case refine'_2.intro
ι✝ : Type ?u.43879
α : Type u_1
β : Type ?u.43885
γ : Type ?u.43888
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
s : Opens α
H :
  ∀ {ι : Type u_1} (U : ι → Set α),
    (∀ (i : ι), IsOpen (U i)) → (↑s ⊆ ⋃ (i : ι), U i) → ∃ t, ↑s ⊆ ⋃ (i : ι) (_ : i ∈ t), U i
ι : Type u_1
U : ι → Opens α
hU : s ≤ iSup U
t : Finset ι
ht : ↑s ⊆ ⋃ (i : ι) (_ : i ∈ t), ↑(U i)
⊢ (⋃ (i : ι) (_ : i ∈ t), ↑(U i)) ⊆ ↑(Finset.sup t U)

tactic: show ∀ i ∈ t, U i ≤ t.sup U
state_before: case refine'_2.intro
ι✝ : Type ?u.43879
α : Type u_1
β : Type ?u.43885
γ : Type ?u.43888
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
s : Opens α
H :
  ∀ {ι : Type u_1} (U : ι → Set α),
    (∀ (i : ι), IsOpen (U i)) → (↑s ⊆ ⋃ (i : ι), U i) → ∃ t, ↑s ⊆ ⋃ (i : ι) (_ : i ∈ t), U i
ι : Type u_1
U : ι → Opens α
hU : s ≤ iSup U
t : Finset ι
ht : ↑s ⊆ ⋃ (i : ι) (_ : i ∈ t), ↑(U i)
⊢ ∀ (i : ι), i ∈ t → ↑(U i) ⊆ ↑(Finset.sup t U)

tactic: exact fun i => Finset.le_sup
state_before: case refine'_2.intro
ι✝ : Type ?u.43879
α : Type u_1
β : Type ?u.43885
γ : Type ?u.43888
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
s : Opens α
H :
  ∀ {ι : Type u_1} (U : ι → Set α),
    (∀ (i : ι), IsOpen (U i)) → (↑s ⊆ ⋃ (i : ι), U i) → ∃ t, ↑s ⊆ ⋃ (i : ι) (_ : i ∈ t), U i
ι : Type u_1
U : ι → Opens α
hU : s ≤ iSup U
t : Finset ι
ht : ↑s ⊆ ⋃ (i : ι) (_ : i ∈ t), ↑(U i)
⊢ ∀ (i : ι), i ∈ t → U i ≤ Finset.sup t U

tactic: simpa using show (s : Set α) ⊆ ↑(iSup U) from hU
state_before: ι✝ : Type ?u.43879
α : Type u_1
β : Type ?u.43885
γ : Type ?u.43888
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
s : Opens α
H :
  ∀ {ι : Type u_1} (U : ι → Set α),
    (∀ (i : ι), IsOpen (U i)) → (↑s ⊆ ⋃ (i : ι), U i) → ∃ t, ↑s ⊆ ⋃ (i : ι) (_ : i ∈ t), U i
ι : Type u_1
U : ι → Opens α
hU : s ≤ iSup U
⊢ ↑s ⊆ ⋃ (i : ι), (fun i => ↑(U i)) i