Theorem: eq_sUnion_finset_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 (Set X)
hb : IsTopologicalBasis b
U : Set X
hUc : IsCompact U
hUo : IsOpen U
⊢ ∃ s, U = ⋃₀ (Subtype.val '' ↑s)
state_after: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
b : Set (Set X)
hb : IsTopologicalBasis b
U : Set X
hUc : IsCompact U
hUo : IsOpen U
hb' : b = range fun i => ↑i
⊢ ∃ s, U = ⋃₀ (Subtype.val '' ↑s)
tactic: have hb' : b = range (fun i ↦ i : b → Set X) := by simp
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
b : Set (Set X)
hb : IsTopologicalBasis b
U : Set X
hUc : IsCompact U
hUo : IsOpen U
hb' : b = range fun i => ↑i
⊢ ∃ s, U = ⋃₀ (Subtype.val '' ↑s)
state_after: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
b : Set (Set X)
hb : IsTopologicalBasis (range fun i => ↑i)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
hb' : b = range fun i => ↑i
⊢ ∃ s, U = ⋃₀ (Subtype.val '' ↑s)
tactic: rw [hb'] at hb
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
b : Set (Set X)
hb : IsTopologicalBasis (range fun i => ↑i)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
hb' : b = range fun i => ↑i
⊢ ∃ s, U = ⋃₀ (Subtype.val '' ↑s)
state_after: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s✝ t : Set X
b : Set (Set X)
hb : IsTopologicalBasis (range fun i => ↑i)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
hb' : b = range fun i => ↑i
s : Set ↑b
hs : s.Finite
hU : U = ⋃ i ∈ s, ↑i
⊢ ∃ s, U = ⋃₀ (Subtype.val '' ↑s)
tactic: choose s hs hU using eq_finite_iUnion_of_isTopologicalBasis_of_isCompact_open _ hb U hUc hUo
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s✝ t : Set X
b : Set (Set X)
hb : IsTopologicalBasis (range fun i => ↑i)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
hb' : b = range fun i => ↑i
s : Set ↑b
hs : s.Finite
hU : U = ⋃ i ∈ s, ↑i
⊢ ∃ s, U = ⋃₀ (Subtype.val '' ↑s)
state_after: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s✝ t : Set X
b : Set (Set X)
hb : IsTopologicalBasis (range fun i => ↑i)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
hb' : b = range fun i => ↑i
s : Set ↑b
hs : s.Finite
hU : U = ⋃ i ∈ s, ↑i
this : Finite ↑s
⊢ ∃ s, U = ⋃₀ (Subtype.val '' ↑s)
tactic: have : Finite s := hs
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s✝ t : Set X
b : Set (Set X)
hb : IsTopologicalBasis (range fun i => ↑i)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
hb' : b = range fun i => ↑i
s : Set ↑b
hs : s.Finite
hU : U = ⋃ i ∈ s, ↑i
this : Finite ↑s
⊢ ∃ s, U = ⋃₀ (Subtype.val '' ↑s)
state_after: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s✝ t : Set X
b : Set (Set X)
hb : IsTopologicalBasis (range fun i => ↑i)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
hb' : b = range fun i => ↑i
s : Set ↑b
hs : s.Finite
hU : U = ⋃ i ∈ s, ↑i
this : Finite ↑s
x✝ : Fintype ↑s := Fintype.ofFinite ↑s
⊢ ∃ s, U = ⋃₀ (Subtype.val '' ↑s)
tactic: let _ : Fintype s := Fintype.ofFinite _
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s✝ t : Set X
b : Set (Set X)
hb : IsTopologicalBasis (range fun i => ↑i)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
hb' : b = range fun i => ↑i
s : Set ↑b
hs : s.Finite
hU : U = ⋃ i ∈ s, ↑i
this : Finite ↑s
x✝ : Fintype ↑s := Fintype.ofFinite ↑s
⊢ ∃ s, U = ⋃₀ (Subtype.val '' ↑s)
state_after: case h
X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s✝ t : Set X
b : Set (Set X)
hb : IsTopologicalBasis (range fun i => ↑i)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
hb' : b = range fun i => ↑i
s : Set ↑b
hs : s.Finite
hU : U = ⋃ i ∈ s, ↑i
this : Finite ↑s
x✝ : Fintype ↑s := Fintype.ofFinite ↑s
⊢ U = ⋃₀ (Subtype.val '' ↑s.toFinset)
tactic: use s.toFinset
state_before: case h
X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s✝ t : Set X
b : Set (Set X)
hb : IsTopologicalBasis (range fun i => ↑i)
U : Set X
hUc : IsCompact U
hUo : IsOpen U
hb' : b = range fun i => ↑i
s : Set ↑b
hs : s.Finite
hU : U = ⋃ i ∈ s, ↑i
this : Finite ↑s
x✝ : Fintype ↑s := Fintype.ofFinite ↑s
⊢ U = ⋃₀ (Subtype.val '' ↑s.toFinset)
state_after: no goals
tactic: simp [hU]