Theorem: eq_finite_iUnion_of_isTopologicalBasis_of_isCompact_open
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
b : ι → Set X
hb : IsTopologicalBasis (range b)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
⊢ ∃ s, s.Finite ∧ U = ⋃ i ∈ s, b i
state_after: case intro.intro.intro
X : Type u
Y✝ : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y✝
s t : Set X
b : ι → Set X
hb : IsTopologicalBasis (range b)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
Y : Type u
f : Y → Set X
e : U = ⋃ i, f i
hf : ∀ (i : Y), f i ∈ range b
⊢ ∃ s, s.Finite ∧ U = ⋃ i ∈ s, b i
tactic: obtain ⟨Y, f, e, hf⟩ := hb.open_eq_iUnion hUo
state_before: case intro.intro.intro
X : Type u
Y✝ : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y✝
s t : Set X
b : ι → Set X
hb : IsTopologicalBasis (range b)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
Y : Type u
f : Y → Set X
e : U = ⋃ i, f i
hf : ∀ (i : Y), f i ∈ range b
⊢ ∃ s, s.Finite ∧ U = ⋃ i ∈ s, b i
state_after: case intro.intro.intro
X : Type u
Y✝ : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y✝
s t : Set X
b : ι → Set X
hb : IsTopologicalBasis (range b)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
Y : Type u
f : Y → Set X
e : U = ⋃ i, f i
f' : Y → ι
hf' : ∀ (i : Y), b (f' i) = f i
⊢ ∃ s, s.Finite ∧ U = ⋃ i ∈ s, b i
tactic: choose f' hf' using hf
state_before: case intro.intro.intro
X : Type u
Y✝ : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y✝
s t : Set X
b : ι → Set X
hb : IsTopologicalBasis (range b)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
Y : Type u
f : Y → Set X
e : U = ⋃ i, f i
f' : Y → ι
hf' : ∀ (i : Y), b (f' i) = f i
⊢ ∃ s, s.Finite ∧ U = ⋃ i ∈ s, b i
state_after: case intro.intro.intro
X : Type u
Y✝ : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y✝
s t : Set X
b : ι → Set X
hb : IsTopologicalBasis (range b)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
Y : Type u
f : Y → Set X
e : U = ⋃ i, f i
f' : Y → ι
hf' : ∀ (i : Y), b (f' i) = f i
this : b ∘ f' = f
⊢ ∃ s, s.Finite ∧ U = ⋃ i ∈ s, b i
tactic: have : b ∘ f' = f := funext hf'
state_before: case intro.intro.intro
X : Type u
Y✝ : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y✝
s t : Set X
b : ι → Set X
hb : IsTopologicalBasis (range b)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
Y : Type u
f : Y → Set X
e : U = ⋃ i, f i
f' : Y → ι
hf' : ∀ (i : Y), b (f' i) = f i
this : b ∘ f' = f
⊢ ∃ s, s.Finite ∧ U = ⋃ i ∈ s, b i
state_after: case intro.intro.intro
X : Type u
Y✝ : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y✝
s t : Set X
b : ι → Set X
hb : IsTopologicalBasis (range b)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
Y : Type u
f' : Y → ι
e : U = ⋃ i, (b ∘ f') i
hf' : ∀ (i : Y), b (f' i) = (b ∘ f') i
⊢ ∃ s, s.Finite ∧ U = ⋃ i ∈ s, b i
tactic: subst this
state_before: case intro.intro.intro
X : Type u
Y✝ : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y✝
s t : Set X
b : ι → Set X
hb : IsTopologicalBasis (range b)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
Y : Type u
f' : Y → ι
e : U = ⋃ i, (b ∘ f') i
hf' : ∀ (i : Y), b (f' i) = (b ∘ f') i
⊢ ∃ s, s.Finite ∧ U = ⋃ i ∈ s, b i
state_after: case intro.intro.intro.intro
X : Type u
Y✝ : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y✝
s t✝ : Set X
b : ι → Set X
hb : IsTopologicalBasis (range b)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
Y : Type u
f' : Y → ι
e : U = ⋃ i, (b ∘ f') i
hf' : ∀ (i : Y), b (f' i) = (b ∘ f') i
t : Finset Y
ht : U ⊆ ⋃ i ∈ t, (b ∘ f') i
⊢ ∃ s, s.Finite ∧ U = ⋃ i ∈ s, b i
tactic: obtain ⟨t, ht⟩ :=
    hUc.elim_finite_subcover (b ∘ f') (fun i => hb.isOpen (Set.mem_range_self _)) (by rw [e])
state_before: case intro.intro.intro.intro
X : Type u
Y✝ : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y✝
s t✝ : Set X
b : ι → Set X
hb : IsTopologicalBasis (range b)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
Y : Type u
f' : Y → ι
e : U = ⋃ i, (b ∘ f') i
hf' : ∀ (i : Y), b (f' i) = (b ∘ f') i
t : Finset Y
ht : U ⊆ ⋃ i ∈ t, (b ∘ f') i
⊢ ∃ s, s.Finite ∧ U = ⋃ i ∈ s, b i
state_after: case intro.intro.intro.intro.refine_1
X : Type u
Y✝ : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y✝
s t✝ : Set X
b : ι → Set X
hb : IsTopologicalBasis (range b)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
Y : Type u
f' : Y → ι
e : U = ⋃ i, (b ∘ f') i
hf' : ∀ (i : Y), b (f' i) = (b ∘ f') i
t : Finset Y
ht : U ⊆ ⋃ i ∈ t, (b ∘ f') i
⊢ U ≤ ⋃ i ∈ ↑(Finset.image f' t), b i

case intro.intro.intro.intro.refine_2
X : Type u
Y✝ : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y✝
s t✝ : Set X
b : ι → Set X
hb : IsTopologicalBasis (range b)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
Y : Type u
f' : Y → ι
e : U = ⋃ i, (b ∘ f') i
hf' : ∀ (i : Y), b (f' i) = (b ∘ f') i
t : Finset Y
ht : U ⊆ ⋃ i ∈ t, (b ∘ f') i
⊢ ⋃ i ∈ ↑(Finset.image f' t), b i ≤ U
tactic: refine ⟨t.image f', Set.toFinite _, le_antisymm ?_ ?_⟩