Theorem: Filter.coprod_cocompact
File: Mathlib/Topology/SubsetProperties.lean

tactic: ext S
state_before: α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
⊢ Filter.coprod (cocompact α) (cocompact β) = cocompact (α × β)

tactic: simp only [mem_coprod_iff, exists_prop, mem_comap, Filter.mem_cocompact]
state_before: case a
α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
S : Set (α × β)
⊢ S ∈ Filter.coprod (cocompact α) (cocompact β) ↔ S ∈ cocompact (α × β)

tactic: constructor
state_before: case a
α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
S : Set (α × β)
⊢ ((∃ t₁, (∃ t, IsCompact t ∧ tᶜ ⊆ t₁) ∧ Prod.fst ⁻¹' t₁ ⊆ S) ∧
      ∃ t₂, (∃ t, IsCompact t ∧ tᶜ ⊆ t₂) ∧ Prod.snd ⁻¹' t₂ ⊆ S) ↔
    ∃ t, IsCompact t ∧ tᶜ ⊆ S

tactic: rintro ⟨⟨A, ⟨t, ht, hAt⟩, hAS⟩, B, ⟨t', ht', hBt'⟩, hBS⟩
state_before: case a.mp
α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
S : Set (α × β)
⊢ ((∃ t₁, (∃ t, IsCompact t ∧ tᶜ ⊆ t₁) ∧ Prod.fst ⁻¹' t₁ ⊆ S) ∧
      ∃ t₂, (∃ t, IsCompact t ∧ tᶜ ⊆ t₂) ∧ Prod.snd ⁻¹' t₂ ⊆ S) →
    ∃ t, IsCompact t ∧ tᶜ ⊆ S

tactic: refine' ⟨t ×ˢ t', ht.prod ht', _⟩
state_before: case a.mp.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S : Set (α × β)
A : Set α
hAS : Prod.fst ⁻¹' A ⊆ S
t : Set α
ht : IsCompact t
hAt : tᶜ ⊆ A
B : Set β
hBS : Prod.snd ⁻¹' B ⊆ S
t' : Set β
ht' : IsCompact t'
hBt' : t'ᶜ ⊆ B
⊢ ∃ t, IsCompact t ∧ tᶜ ⊆ S

tactic: refine' Subset.trans _ (union_subset hAS hBS)
state_before: case a.mp.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S : Set (α × β)
A : Set α
hAS : Prod.fst ⁻¹' A ⊆ S
t : Set α
ht : IsCompact t
hAt : tᶜ ⊆ A
B : Set β
hBS : Prod.snd ⁻¹' B ⊆ S
t' : Set β
ht' : IsCompact t'
hBt' : t'ᶜ ⊆ B
⊢ (t ×ˢ t')ᶜ ⊆ S

tactic: rw [compl_subset_comm] at hAt hBt'⊢
state_before: case a.mp.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S : Set (α × β)
A : Set α
hAS : Prod.fst ⁻¹' A ⊆ S
t : Set α
ht : IsCompact t
hAt : tᶜ ⊆ A
B : Set β
hBS : Prod.snd ⁻¹' B ⊆ S
t' : Set β
ht' : IsCompact t'
hBt' : t'ᶜ ⊆ B
⊢ (t ×ˢ t')ᶜ ⊆ Prod.fst ⁻¹' A ∪ Prod.snd ⁻¹' B

tactic: refine' Subset.trans (fun x => _) (Set.prod_mono hAt hBt')
state_before: case a.mp.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S : Set (α × β)
A : Set α
hAS : Prod.fst ⁻¹' A ⊆ S
t : Set α
ht : IsCompact t
hAt : Aᶜ ⊆ t
B : Set β
hBS : Prod.snd ⁻¹' B ⊆ S
t' : Set β
ht' : IsCompact t'
hBt' : Bᶜ ⊆ t'
⊢ (Prod.fst ⁻¹' A ∪ Prod.snd ⁻¹' B)ᶜ ⊆ t ×ˢ t'

tactic: simp only [compl_union, mem_inter_iff, mem_prod, mem_preimage, mem_compl_iff]
state_before: case a.mp.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S : Set (α × β)
A : Set α
hAS : Prod.fst ⁻¹' A ⊆ S
t : Set α
ht : IsCompact t
hAt : Aᶜ ⊆ t
B : Set β
hBS : Prod.snd ⁻¹' B ⊆ S
t' : Set β
ht' : IsCompact t'
hBt' : Bᶜ ⊆ t'
x : α × β
⊢ x ∈ (Prod.fst ⁻¹' A ∪ Prod.snd ⁻¹' B)ᶜ → x ∈ Aᶜ ×ˢ Bᶜ

tactic: tauto
state_before: case a.mp.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S : Set (α × β)
A : Set α
hAS : Prod.fst ⁻¹' A ⊆ S
t : Set α
ht : IsCompact t
hAt : Aᶜ ⊆ t
B : Set β
hBS : Prod.snd ⁻¹' B ⊆ S
t' : Set β
ht' : IsCompact t'
hBt' : Bᶜ ⊆ t'
x : α × β
⊢ ¬x.fst ∈ A ∧ ¬x.snd ∈ B → ¬x.fst ∈ A ∧ ¬x.snd ∈ B

tactic: rintro ⟨t, ht, htS⟩
state_before: case a.mpr
α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
S : Set (α × β)
⊢ (∃ t, IsCompact t ∧ tᶜ ⊆ S) →
    (∃ t₁, (∃ t, IsCompact t ∧ tᶜ ⊆ t₁) ∧ Prod.fst ⁻¹' t₁ ⊆ S) ∧
      ∃ t₂, (∃ t, IsCompact t ∧ tᶜ ⊆ t₂) ∧ Prod.snd ⁻¹' t₂ ⊆ S

tactic: refine' ⟨⟨(Prod.fst '' t)ᶜ, _, _⟩, ⟨(Prod.snd '' t)ᶜ, _, _⟩⟩
state_before: case a.mpr.intro.intro
α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S t : Set (α × β)
ht : IsCompact t
htS : tᶜ ⊆ S
⊢ (∃ t₁, (∃ t, IsCompact t ∧ tᶜ ⊆ t₁) ∧ Prod.fst ⁻¹' t₁ ⊆ S) ∧ ∃ t₂, (∃ t, IsCompact t ∧ tᶜ ⊆ t₂) ∧ Prod.snd ⁻¹' t₂ ⊆ S

tactic: exact ⟨Prod.fst '' t, ht.image continuous_fst, Subset.rfl⟩
state_before: case a.mpr.intro.intro.refine'_1
α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S t : Set (α × β)
ht : IsCompact t
htS : tᶜ ⊆ S
⊢ ∃ t_1, IsCompact t_1 ∧ t_1ᶜ ⊆ (Prod.fst '' t)ᶜ

tactic: rw [preimage_compl]
state_before: case a.mpr.intro.intro.refine'_2
α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S t : Set (α × β)
ht : IsCompact t
htS : tᶜ ⊆ S
⊢ Prod.fst ⁻¹' (Prod.fst '' t)ᶜ ⊆ S

tactic: rw [compl_subset_comm] at htS⊢
state_before: case a.mpr.intro.intro.refine'_2
α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S t : Set (α × β)
ht : IsCompact t
htS : tᶜ ⊆ S
⊢ (Prod.fst ⁻¹' (Prod.fst '' t))ᶜ ⊆ S

tactic: exact htS.trans (subset_preimage_image Prod.fst _)
state_before: case a.mpr.intro.intro.refine'_2
α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S t : Set (α × β)
ht : IsCompact t
htS : Sᶜ ⊆ t
⊢ Sᶜ ⊆ Prod.fst ⁻¹' (Prod.fst '' t)

tactic: exact ⟨Prod.snd '' t, ht.image continuous_snd, Subset.rfl⟩
state_before: case a.mpr.intro.intro.refine'_3
α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S t : Set (α × β)
ht : IsCompact t
htS : tᶜ ⊆ S
⊢ ∃ t_1, IsCompact t_1 ∧ t_1ᶜ ⊆ (Prod.snd '' t)ᶜ

tactic: rw [preimage_compl]
state_before: case a.mpr.intro.intro.refine'_4
α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S t : Set (α × β)
ht : IsCompact t
htS : tᶜ ⊆ S
⊢ Prod.snd ⁻¹' (Prod.snd '' t)ᶜ ⊆ S

tactic: rw [compl_subset_comm] at htS⊢
state_before: case a.mpr.intro.intro.refine'_4
α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S t : Set (α × β)
ht : IsCompact t
htS : tᶜ ⊆ S
⊢ (Prod.snd ⁻¹' (Prod.snd '' t))ᶜ ⊆ S

tactic: exact htS.trans (subset_preimage_image Prod.snd _)
state_before: case a.mpr.intro.intro.refine'_4
α : Type u
β : Type v
ι : Type ?u.99857
π : ι → Type ?u.99862
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S t : Set (α × β)
ht : IsCompact t
htS : Sᶜ ⊆ t
⊢ Sᶜ ⊆ Prod.snd ⁻¹' (Prod.snd '' t)