Theorem: Filter.coprodᵢ_cocompact
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✝¹
X✝ : ι → Type u_2
inst✝¹ : (i : ι) → TopologicalSpace (X✝ i)
X : ι → Type u_3
inst✝ : (d : ι) → TopologicalSpace (X d)
⊢ (Filter.coprodᵢ fun d => cocompact (X d)) = cocompact ((d : ι) → X d)
state_after: X✝¹ : Type u
Y : Type v
ι : Type u_1
inst✝³ : TopologicalSpace X✝¹
inst✝² : TopologicalSpace Y
s t : Set X✝¹
X✝ : ι → Type u_2
inst✝¹ : (i : ι) → TopologicalSpace (X✝ i)
X : ι → Type u_3
inst✝ : (d : ι) → TopologicalSpace (X d)
⊢ cocompact ((d : ι) → X d) ≤ Filter.coprodᵢ fun d => cocompact (X d)
tactic: refine le_antisymm (iSup_le fun i => Filter.comap_cocompact_le (continuous_apply i)) ?_
state_before: X✝¹ : Type u
Y : Type v
ι : Type u_1
inst✝³ : TopologicalSpace X✝¹
inst✝² : TopologicalSpace Y
s t : Set X✝¹
X✝ : ι → Type u_2
inst✝¹ : (i : ι) → TopologicalSpace (X✝ i)
X : ι → Type u_3
inst✝ : (d : ι) → TopologicalSpace (X d)
⊢ cocompact ((d : ι) → X d) ≤ Filter.coprodᵢ fun d => cocompact (X d)
state_after: X✝¹ : Type u
Y : Type v
ι : Type u_1
inst✝³ : TopologicalSpace X✝¹
inst✝² : TopologicalSpace Y
s✝ t : Set X✝¹
X✝ : ι → Type u_2
inst✝¹ : (i : ι) → TopologicalSpace (X✝ i)
X : ι → Type u_3
inst✝ : (d : ι) → TopologicalSpace (X d)
s : Set ((i : ι) → X i)
H : sᶜ ∈ Filter.coprodᵢ fun d => cocompact (X d)
⊢ sᶜ ∈ cocompact ((d : ι) → X d)
tactic: refine compl_surjective.forall.2 fun s H => ?_
state_before: X✝¹ : Type u
Y : Type v
ι : Type u_1
inst✝³ : TopologicalSpace X✝¹
inst✝² : TopologicalSpace Y
s✝ t : Set X✝¹
X✝ : ι → Type u_2
inst✝¹ : (i : ι) → TopologicalSpace (X✝ i)
X : ι → Type u_3
inst✝ : (d : ι) → TopologicalSpace (X d)
s : Set ((i : ι) → X i)
H : sᶜ ∈ Filter.coprodᵢ fun d => cocompact (X d)
⊢ sᶜ ∈ cocompact ((d : ι) → X d)
state_after: X✝¹ : Type u
Y : Type v
ι : Type u_1
inst✝³ : TopologicalSpace X✝¹
inst✝² : TopologicalSpace Y
s✝ t : Set X✝¹
X✝ : ι → Type u_2
inst✝¹ : (i : ι) → TopologicalSpace (X✝ i)
X : ι → Type u_3
inst✝ : (d : ι) → TopologicalSpace (X d)
s : Set ((i : ι) → X i)
H : ∀ (i : ι), ∃ t, IsCompact t ∧ s ⊆ eval i ⁻¹' t
⊢ ∃ t, IsCompact t ∧ s ⊆ t
tactic: simp only [compl_mem_coprodᵢ, Filter.mem_cocompact, compl_subset_compl, image_subset_iff] at H ⊢
state_before: X✝¹ : Type u
Y : Type v
ι : Type u_1
inst✝³ : TopologicalSpace X✝¹
inst✝² : TopologicalSpace Y
s✝ t : Set X✝¹
X✝ : ι → Type u_2
inst✝¹ : (i : ι) → TopologicalSpace (X✝ i)
X : ι → Type u_3
inst✝ : (d : ι) → TopologicalSpace (X d)
s : Set ((i : ι) → X i)
H : ∀ (i : ι), ∃ t, IsCompact t ∧ s ⊆ eval i ⁻¹' t
⊢ ∃ t, IsCompact t ∧ s ⊆ t
state_after: X✝¹ : Type u
Y : Type v
ι : Type u_1
inst✝³ : TopologicalSpace X✝¹
inst✝² : TopologicalSpace Y
s✝ t : Set X✝¹
X✝ : ι → Type u_2
inst✝¹ : (i : ι) → TopologicalSpace (X✝ i)
X : ι → Type u_3
inst✝ : (d : ι) → TopologicalSpace (X d)
s : Set ((i : ι) → X i)
K : (i : ι) → Set (X i)
hKc : ∀ (i : ι), IsCompact (K i)
htK : ∀ (i : ι), s ⊆ eval i ⁻¹' K i
⊢ ∃ t, IsCompact t ∧ s ⊆ t
tactic: choose K hKc htK using H
state_before: X✝¹ : Type u
Y : Type v
ι : Type u_1
inst✝³ : TopologicalSpace X✝¹
inst✝² : TopologicalSpace Y
s✝ t : Set X✝¹
X✝ : ι → Type u_2
inst✝¹ : (i : ι) → TopologicalSpace (X✝ i)
X : ι → Type u_3
inst✝ : (d : ι) → TopologicalSpace (X d)
s : Set ((i : ι) → X i)
K : (i : ι) → Set (X i)
hKc : ∀ (i : ι), IsCompact (K i)
htK : ∀ (i : ι), s ⊆ eval i ⁻¹' K i
⊢ ∃ t, IsCompact t ∧ s ⊆ t
state_after: no goals
tactic: exact ⟨Set.pi univ K, isCompact_univ_pi hKc, fun f hf i _ => htK i hf⟩