[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hs : IsCompact s
f : Filter α
hf : ∀ (a : α), a ∈ s → sᶜ ∈ 𝓝 a ⊓ f
⊢ sᶜ ∈ f
[PROOFSTEP]
contrapose! hf
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hs : IsCompact s
f : Filter α
hf : ¬sᶜ ∈ f
⊢ ∃ a, a ∈ s ∧ ¬sᶜ ∈ 𝓝 a ⊓ f
[PROOFSTEP]
simp only [not_mem_iff_inf_principal_compl, compl_compl, inf_assoc] at hf ⊢
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hs : IsCompact s
f : Filter α
hf : NeBot (f ⊓ 𝓟 s)
⊢ ∃ a, a ∈ s ∧ NeBot (𝓝 a ⊓ (f ⊓ 𝓟 s))
[PROOFSTEP]
exact @hs _ hf inf_le_right
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hs : IsCompact s
f : Filter α
hf : ∀ (a : α), a ∈ s → ∃ t, t ∈ 𝓝[s] a ∧ tᶜ ∈ f
⊢ sᶜ ∈ f
[PROOFSTEP]
refine' hs.compl_mem_sets fun a ha => _
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hs : IsCompact s
f : Filter α
hf : ∀ (a : α), a ∈ s → ∃ t, t ∈ 𝓝[s] a ∧ tᶜ ∈ f
a : α
ha : a ∈ s
⊢ sᶜ ∈ 𝓝 a ⊓ f
[PROOFSTEP]
rcases hf a ha with ⟨t, ht, hst⟩
[GOAL]
case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
hs : IsCompact s
f : Filter α
hf : ∀ (a : α), a ∈ s → ∃ t, t ∈ 𝓝[s] a ∧ tᶜ ∈ f
a : α
ha : a ∈ s
t : Set α
ht : t ∈ 𝓝[s] a
hst : tᶜ ∈ f
⊢ sᶜ ∈ 𝓝 a ⊓ f
[PROOFSTEP]
replace ht := mem_inf_principal.1 ht
[GOAL]
case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
hs : IsCompact s
f : Filter α
hf : ∀ (a : α), a ∈ s → ∃ t, t ∈ 𝓝[s] a ∧ tᶜ ∈ f
a : α
ha : a ∈ s
t : Set α
hst : tᶜ ∈ f
ht : {x | x ∈ s → x ∈ t} ∈ 𝓝 a
⊢ sᶜ ∈ 𝓝 a ⊓ f
[PROOFSTEP]
apply mem_inf_of_inter ht hst
[GOAL]
case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
hs : IsCompact s
f : Filter α
hf : ∀ (a : α), a ∈ s → ∃ t, t ∈ 𝓝[s] a ∧ tᶜ ∈ f
a : α
ha : a ∈ s
t : Set α
hst : tᶜ ∈ f
ht : {x | x ∈ s → x ∈ t} ∈ 𝓝 a
⊢ {x | x ∈ s → x ∈ t} ∩ tᶜ ⊆ sᶜ
[PROOFSTEP]
rintro x ⟨h₁, h₂⟩ hs
[GOAL]
case intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
hs✝ : IsCompact s
f : Filter α
hf : ∀ (a : α), a ∈ s → ∃ t, t ∈ 𝓝[s] a ∧ tᶜ ∈ f
a : α
ha : a ∈ s
t : Set α
hst : tᶜ ∈ f
ht : {x | x ∈ s → x ∈ t} ∈ 𝓝 a
x : α
h₁ : x ∈ {x | x ∈ s → x ∈ t}
h₂ : x ∈ tᶜ
hs : x ∈ s
⊢ False
[PROOFSTEP]
exact h₂ (h₁ hs)
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
hs : IsCompact s
p : Set α → Prop
he : p ∅
hmono : ∀ ⦃s t : Set α⦄, s ⊆ t → p t → p s
hunion : ∀ ⦃s t : Set α⦄, p s → p t → p (s ∪ t)
hnhds : ∀ (x : α), x ∈ s → ∃ t, t ∈ 𝓝[s] x ∧ p t
⊢ p s
[PROOFSTEP]
let f : Filter α :=
  { sets := {t | p tᶜ}
    univ_sets := by simpa
    sets_of_superset := fun ht₁ ht => hmono (compl_subset_compl.2 ht) ht₁
    inter_sets := fun ht₁ ht₂ => by simp [compl_inter, hunion ht₁ ht₂] }
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
hs : IsCompact s
p : Set α → Prop
he : p ∅
hmono : ∀ ⦃s t : Set α⦄, s ⊆ t → p t → p s
hunion : ∀ ⦃s t : Set α⦄, p s → p t → p (s ∪ t)
hnhds : ∀ (x : α), x ∈ s → ∃ t, t ∈ 𝓝[s] x ∧ p t
⊢ univ ∈ {t | p tᶜ}
[PROOFSTEP]
simpa
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
hs : IsCompact s
p : Set α → Prop
he : p ∅
hmono : ∀ ⦃s t : Set α⦄, s ⊆ t → p t → p s
hunion : ∀ ⦃s t : Set α⦄, p s → p t → p (s ∪ t)
hnhds : ∀ (x : α), x ∈ s → ∃ t, t ∈ 𝓝[s] x ∧ p t
x✝ y✝ : Set α
ht₁ : x✝ ∈ {t | p tᶜ}
ht₂ : y✝ ∈ {t | p tᶜ}
⊢ x✝ ∩ y✝ ∈ {t | p tᶜ}
[PROOFSTEP]
simp [compl_inter, hunion ht₁ ht₂]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
hs : IsCompact s
p : Set α → Prop
he : p ∅
hmono : ∀ ⦃s t : Set α⦄, s ⊆ t → p t → p s
hunion : ∀ ⦃s t : Set α⦄, p s → p t → p (s ∪ t)
hnhds : ∀ (x : α), x ∈ s → ∃ t, t ∈ 𝓝[s] x ∧ p t
f : Filter α :=
  { sets := {t | p tᶜ}, univ_sets := (_ : univ ∈ {t | p tᶜ}),
    sets_of_superset := (_ : ∀ {x y : Set α}, x ∈ {t | p tᶜ} → x ⊆ y → p yᶜ),
    inter_sets := (_ : ∀ {x y : Set α}, x ∈ {t | p tᶜ} → y ∈ {t | p tᶜ} → p (x ∩ y)ᶜ) }
⊢ p s
[PROOFSTEP]
have : sᶜ ∈ f := hs.compl_mem_sets_of_nhdsWithin (by simpa using hnhds)
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
hs : IsCompact s
p : Set α → Prop
he : p ∅
hmono : ∀ ⦃s t : Set α⦄, s ⊆ t → p t → p s
hunion : ∀ ⦃s t : Set α⦄, p s → p t → p (s ∪ t)
hnhds : ∀ (x : α), x ∈ s → ∃ t, t ∈ 𝓝[s] x ∧ p t
f : Filter α :=
  { sets := {t | p tᶜ}, univ_sets := (_ : univ ∈ {t | p tᶜ}),
    sets_of_superset := (_ : ∀ {x y : Set α}, x ∈ {t | p tᶜ} → x ⊆ y → p yᶜ),
    inter_sets := (_ : ∀ {x y : Set α}, x ∈ {t | p tᶜ} → y ∈ {t | p tᶜ} → p (x ∩ y)ᶜ) }
⊢ ∀ (a : α), a ∈ s → ∃ t, t ∈ 𝓝[s] a ∧ tᶜ ∈ f
[PROOFSTEP]
simpa using hnhds
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
hs : IsCompact s
p : Set α → Prop
he : p ∅
hmono : ∀ ⦃s t : Set α⦄, s ⊆ t → p t → p s
hunion : ∀ ⦃s t : Set α⦄, p s → p t → p (s ∪ t)
hnhds : ∀ (x : α), x ∈ s → ∃ t, t ∈ 𝓝[s] x ∧ p t
f : Filter α :=
  { sets := {t | p tᶜ}, univ_sets := (_ : univ ∈ {t | p tᶜ}),
    sets_of_superset := (_ : ∀ {x y : Set α}, x ∈ {t | p tᶜ} → x ⊆ y → p yᶜ),
    inter_sets := (_ : ∀ {x y : Set α}, x ∈ {t | p tᶜ} → y ∈ {t | p tᶜ} → p (x ∩ y)ᶜ) }
this : sᶜ ∈ f
⊢ p s
[PROOFSTEP]
rwa [← compl_compl s]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hs : IsCompact s
ht : IsClosed t
⊢ IsCompact (s ∩ t)
[PROOFSTEP]
intro f hnf hstf
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hs : IsCompact s
ht : IsClosed t
f : Filter α
hnf : NeBot f
hstf : f ≤ 𝓟 (s ∩ t)
⊢ ∃ a, a ∈ s ∩ t ∧ ClusterPt a f
[PROOFSTEP]
obtain ⟨a, hsa, ha⟩ : ∃ a ∈ s, ClusterPt a f := hs (le_trans hstf (le_principal_iff.2 (inter_subset_left _ _)))
[GOAL]
case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hs : IsCompact s
ht : IsClosed t
f : Filter α
hnf : NeBot f
hstf : f ≤ 𝓟 (s ∩ t)
a : α
hsa : a ∈ s
ha : ClusterPt a f
⊢ ∃ a, a ∈ s ∩ t ∧ ClusterPt a f
[PROOFSTEP]
have : a ∈ t := ht.mem_of_nhdsWithin_neBot <| ha.mono <| le_trans hstf (le_principal_iff.2 (inter_subset_right _ _))
[GOAL]
case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hs : IsCompact s
ht : IsClosed t
f : Filter α
hnf : NeBot f
hstf : f ≤ 𝓟 (s ∩ t)
a : α
hsa : a ∈ s
ha : ClusterPt a f
this : a ∈ t
⊢ ∃ a, a ∈ s ∩ t ∧ ClusterPt a f
[PROOFSTEP]
exact ⟨a, ⟨hsa, this⟩, ha⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : α → β
hs : IsCompact s
hf : ContinuousOn f s
⊢ IsCompact (f '' s)
[PROOFSTEP]
intro l lne ls
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : α → β
hs : IsCompact s
hf : ContinuousOn f s
l : Filter β
lne : NeBot l
ls : l ≤ 𝓟 (f '' s)
⊢ ∃ a, a ∈ f '' s ∧ ClusterPt a l
[PROOFSTEP]
have : NeBot (l.comap f ⊓ 𝓟 s) := comap_inf_principal_neBot_of_image_mem lne (le_principal_iff.1 ls)
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : α → β
hs : IsCompact s
hf : ContinuousOn f s
l : Filter β
lne : NeBot l
ls : l ≤ 𝓟 (f '' s)
this : NeBot (comap f l ⊓ 𝓟 s)
⊢ ∃ a, a ∈ f '' s ∧ ClusterPt a l
[PROOFSTEP]
obtain ⟨a, has, ha⟩ : ∃ a ∈ s, ClusterPt a (l.comap f ⊓ 𝓟 s) := @hs _ this inf_le_right
[GOAL]
case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : α → β
hs : IsCompact s
hf : ContinuousOn f s
l : Filter β
lne : NeBot l
ls : l ≤ 𝓟 (f '' s)
this : NeBot (comap f l ⊓ 𝓟 s)
a : α
has : a ∈ s
ha : ClusterPt a (comap f l ⊓ 𝓟 s)
⊢ ∃ a, a ∈ f '' s ∧ ClusterPt a l
[PROOFSTEP]
haveI := ha.neBot
[GOAL]
case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : α → β
hs : IsCompact s
hf : ContinuousOn f s
l : Filter β
lne : NeBot l
ls : l ≤ 𝓟 (f '' s)
this✝ : NeBot (comap f l ⊓ 𝓟 s)
a : α
has : a ∈ s
ha : ClusterPt a (comap f l ⊓ 𝓟 s)
this : NeBot (𝓝 a ⊓ (comap f l ⊓ 𝓟 s))
⊢ ∃ a, a ∈ f '' s ∧ ClusterPt a l
[PROOFSTEP]
use f a, mem_image_of_mem f has
[GOAL]
case right
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : α → β
hs : IsCompact s
hf : ContinuousOn f s
l : Filter β
lne : NeBot l
ls : l ≤ 𝓟 (f '' s)
this✝ : NeBot (comap f l ⊓ 𝓟 s)
a : α
has : a ∈ s
ha : ClusterPt a (comap f l ⊓ 𝓟 s)
this : NeBot (𝓝 a ⊓ (comap f l ⊓ 𝓟 s))
⊢ ClusterPt (f a) l
[PROOFSTEP]
have : Tendsto f (𝓝 a ⊓ (comap f l ⊓ 𝓟 s)) (𝓝 (f a) ⊓ l) :=
  by
  convert (hf a has).inf (@tendsto_comap _ _ f l) using 1
  rw [nhdsWithin]
  ac_rfl
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : α → β
hs : IsCompact s
hf : ContinuousOn f s
l : Filter β
lne : NeBot l
ls : l ≤ 𝓟 (f '' s)
this✝ : NeBot (comap f l ⊓ 𝓟 s)
a : α
has : a ∈ s
ha : ClusterPt a (comap f l ⊓ 𝓟 s)
this : NeBot (𝓝 a ⊓ (comap f l ⊓ 𝓟 s))
⊢ Tendsto f (𝓝 a ⊓ (comap f l ⊓ 𝓟 s)) (𝓝 (f a) ⊓ l)
[PROOFSTEP]
convert (hf a has).inf (@tendsto_comap _ _ f l) using 1
[GOAL]
case h.e'_4
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : α → β
hs : IsCompact s
hf : ContinuousOn f s
l : Filter β
lne : NeBot l
ls : l ≤ 𝓟 (f '' s)
this✝ : NeBot (comap f l ⊓ 𝓟 s)
a : α
has : a ∈ s
ha : ClusterPt a (comap f l ⊓ 𝓟 s)
this : NeBot (𝓝 a ⊓ (comap f l ⊓ 𝓟 s))
⊢ 𝓝 a ⊓ (comap f l ⊓ 𝓟 s) = 𝓝[s] a ⊓ comap f l
[PROOFSTEP]
rw [nhdsWithin]
[GOAL]
case h.e'_4
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : α → β
hs : IsCompact s
hf : ContinuousOn f s
l : Filter β
lne : NeBot l
ls : l ≤ 𝓟 (f '' s)
this✝ : NeBot (comap f l ⊓ 𝓟 s)
a : α
has : a ∈ s
ha : ClusterPt a (comap f l ⊓ 𝓟 s)
this : NeBot (𝓝 a ⊓ (comap f l ⊓ 𝓟 s))
⊢ 𝓝 a ⊓ (comap f l ⊓ 𝓟 s) = 𝓝 a ⊓ 𝓟 s ⊓ comap f l
[PROOFSTEP]
ac_rfl
[GOAL]
case right
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : α → β
hs : IsCompact s
hf : ContinuousOn f s
l : Filter β
lne : NeBot l
ls : l ≤ 𝓟 (f '' s)
this✝¹ : NeBot (comap f l ⊓ 𝓟 s)
a : α
has : a ∈ s
ha : ClusterPt a (comap f l ⊓ 𝓟 s)
this✝ : NeBot (𝓝 a ⊓ (comap f l ⊓ 𝓟 s))
this : Tendsto f (𝓝 a ⊓ (comap f l ⊓ 𝓟 s)) (𝓝 (f a) ⊓ l)
⊢ ClusterPt (f a) l
[PROOFSTEP]
exact this.neBot
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
⊢ IsCompact s ↔ ∀ (f : Ultrafilter α), ↑f ≤ 𝓟 s → ∃ a, a ∈ s ∧ ↑f ≤ 𝓝 a
[PROOFSTEP]
refine' (forall_neBot_le_iff _).trans _
[GOAL]
case refine'_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
⊢ Monotone fun f => ∃ a, a ∈ s ∧ ClusterPt a f
[PROOFSTEP]
rintro f g hle ⟨a, has, haf⟩
[GOAL]
case refine'_1.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f g : Filter α
hle : f ≤ g
a : α
has : a ∈ s
haf : ClusterPt a f
⊢ ∃ a, a ∈ s ∧ ClusterPt a g
[PROOFSTEP]
exact ⟨a, has, haf.mono hle⟩
[GOAL]
case refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
⊢ (∀ (f : Ultrafilter α), ↑f ≤ 𝓟 s → ∃ a, a ∈ s ∧ ClusterPt a ↑f) ↔
    ∀ (f : Ultrafilter α), ↑f ≤ 𝓟 s → ∃ a, a ∈ s ∧ ↑f ≤ 𝓝 a
[PROOFSTEP]
simp only [Ultrafilter.clusterPt_iff]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
hs : IsCompact s
U : α → Set α
hU : ∀ (x : α), x ∈ s → U x ∈ 𝓝 x
t : Finset ↑s
ht : s ⊆ ⋃ (x : ↑s) (_ : x ∈ t), U ↑x
⊢ s ⊆ ⋃ (x : α) (_ : x ∈ Finset.image Subtype.val t), U x
[PROOFSTEP]
rwa [Finset.set_biUnion_finset_image]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
l : Filter α
hs : IsCompact s
⊢ Disjoint (𝓝ˢ s) l ↔ ∀ (x : α), x ∈ s → Disjoint (𝓝 x) l
[PROOFSTEP]
refine' ⟨fun h x hx => h.mono_left <| nhds_le_nhdsSet hx, fun H => _⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
l : Filter α
hs : IsCompact s
H : ∀ (x : α), x ∈ s → Disjoint (𝓝 x) l
⊢ Disjoint (𝓝ˢ s) l
[PROOFSTEP]
choose! U hxU hUl using fun x hx => (nhds_basis_opens x).disjoint_iff_left.1 (H x hx)
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
l : Filter α
hs : IsCompact s
H : ∀ (x : α), x ∈ s → Disjoint (𝓝 x) l
U : α → Set α
hxU : ∀ (x : α), x ∈ s → x ∈ U x ∧ IsOpen (U x)
hUl : ∀ (x : α), x ∈ s → (U x)ᶜ ∈ l
⊢ Disjoint (𝓝ˢ s) l
[PROOFSTEP]
choose hxU hUo using hxU
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
l : Filter α
hs : IsCompact s
H : ∀ (x : α), x ∈ s → Disjoint (𝓝 x) l
U : α → Set α
hUl : ∀ (x : α), x ∈ s → (U x)ᶜ ∈ l
hxU : ∀ (x : α), x ∈ s → x ∈ U x
hUo : ∀ (x : α), x ∈ s → IsOpen (U x)
⊢ Disjoint (𝓝ˢ s) l
[PROOFSTEP]
rcases hs.elim_nhds_subcover U fun x hx => (hUo x hx).mem_nhds (hxU x hx) with ⟨t, hts, hst⟩
[GOAL]
case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
l : Filter α
hs : IsCompact s
H : ∀ (x : α), x ∈ s → Disjoint (𝓝 x) l
U : α → Set α
hUl : ∀ (x : α), x ∈ s → (U x)ᶜ ∈ l
hxU : ∀ (x : α), x ∈ s → x ∈ U x
hUo : ∀ (x : α), x ∈ s → IsOpen (U x)
t : Finset α
hts : ∀ (x : α), x ∈ t → x ∈ s
hst : s ⊆ ⋃ (x : α) (_ : x ∈ t), U x
⊢ Disjoint (𝓝ˢ s) l
[PROOFSTEP]
refine' (hasBasis_nhdsSet _).disjoint_iff_left.2 ⟨⋃ x ∈ t, U x, ⟨isOpen_biUnion fun x hx => hUo x (hts x hx), hst⟩, _⟩
[GOAL]
case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
l : Filter α
hs : IsCompact s
H : ∀ (x : α), x ∈ s → Disjoint (𝓝 x) l
U : α → Set α
hUl : ∀ (x : α), x ∈ s → (U x)ᶜ ∈ l
hxU : ∀ (x : α), x ∈ s → x ∈ U x
hUo : ∀ (x : α), x ∈ s → IsOpen (U x)
t : Finset α
hts : ∀ (x : α), x ∈ t → x ∈ s
hst : s ⊆ ⋃ (x : α) (_ : x ∈ t), U x
⊢ (⋃ (x : α) (_ : x ∈ t), U x)ᶜ ∈ l
[PROOFSTEP]
rw [compl_iUnion₂, biInter_finset_mem]
[GOAL]
case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
l : Filter α
hs : IsCompact s
H : ∀ (x : α), x ∈ s → Disjoint (𝓝 x) l
U : α → Set α
hUl : ∀ (x : α), x ∈ s → (U x)ᶜ ∈ l
hxU : ∀ (x : α), x ∈ s → x ∈ U x
hUo : ∀ (x : α), x ∈ s → IsOpen (U x)
t : Finset α
hts : ∀ (x : α), x ∈ t → x ∈ s
hst : s ⊆ ⋃ (x : α) (_ : x ∈ t), U x
⊢ ∀ (i : α), i ∈ t → (U i)ᶜ ∈ l
[PROOFSTEP]
exact fun x hx => hUl x (hts x hx)
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
l : Filter α
hs : IsCompact s
⊢ Disjoint l (𝓝ˢ s) ↔ ∀ (x : α), x ∈ s → Disjoint l (𝓝 x)
[PROOFSTEP]
simpa only [disjoint_comm] using hs.disjoint_nhdsSet_left
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
ι : Type v
hι : Nonempty ι
hs : IsCompact s
Z : ι → Set α
hZc : ∀ (i : ι), IsClosed (Z i)
hsZ : s ∩ ⋂ (i : ι), Z i = ∅
hdZ : Directed (fun x x_1 => x ⊇ x_1) Z
⊢ s ⊆ ⋃ (i : ι), (compl ∘ Z) i
[PROOFSTEP]
simpa only [subset_def, not_forall, eq_empty_iff_forall_not_mem, mem_iUnion, exists_prop, mem_inter_iff, not_and,
  iff_self_iff, mem_iInter, mem_compl_iff] using hsZ
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
ι : Type v
hι : Nonempty ι
hs : IsCompact s
Z : ι → Set α
hZc : ∀ (i : ι), IsClosed (Z i)
hsZ : s ∩ ⋂ (i : ι), Z i = ∅
hdZ : Directed (fun x x_1 => x ⊇ x_1) Z
t : ι
ht : s ⊆ (compl ∘ Z) t
⊢ s ∩ Z t = ∅
[PROOFSTEP]
simpa only [subset_def, not_forall, eq_empty_iff_forall_not_mem, mem_iUnion, exists_prop, mem_inter_iff, not_and,
  iff_self_iff, mem_iInter, mem_compl_iff] using ht
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
ι : Type v
hs : IsCompact s
Z : ι → Set α
hZc : ∀ (i : ι), IsClosed (Z i)
hsZ : s ∩ ⋂ (i : ι), Z i = ∅
⊢ s ∩ ⋂ (i : Finset ι) (i_1 : ι) (_ : i_1 ∈ i), Z i_1 = ∅
[PROOFSTEP]
rwa [← iInter_eq_iInter_finset]
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t : Set α
ι : Type u_3
f : ι → Set α
hf : LocallyFinite f
s : Set α
hs : IsCompact s
⊢ Set.Finite {i | Set.Nonempty (f i ∩ s)}
[PROOFSTEP]
choose U hxU hUf using hf
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t : Set α
ι : Type u_3
f : ι → Set α
s : Set α
hs : IsCompact s
U : α → Set α
hxU : ∀ (x : α), U x ∈ 𝓝 x
hUf : ∀ (x : α), Set.Finite {i | Set.Nonempty (f i ∩ U x)}
⊢ Set.Finite {i | Set.Nonempty (f i ∩ s)}
[PROOFSTEP]
rcases hs.elim_nhds_subcover U fun x _ => hxU x with ⟨t, -, hsU⟩
[GOAL]
case intro.intro
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ : Set α
ι : Type u_3
f : ι → Set α
s : Set α
hs : IsCompact s
U : α → Set α
hxU : ∀ (x : α), U x ∈ 𝓝 x
hUf : ∀ (x : α), Set.Finite {i | Set.Nonempty (f i ∩ U x)}
t : Finset α
hsU : s ⊆ ⋃ (x : α) (_ : x ∈ t), U x
⊢ Set.Finite {i | Set.Nonempty (f i ∩ s)}
[PROOFSTEP]
refine' (t.finite_toSet.biUnion fun x _ => hUf x).subset _
[GOAL]
case intro.intro
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ : Set α
ι : Type u_3
f : ι → Set α
s : Set α
hs : IsCompact s
U : α → Set α
hxU : ∀ (x : α), U x ∈ 𝓝 x
hUf : ∀ (x : α), Set.Finite {i | Set.Nonempty (f i ∩ U x)}
t : Finset α
hsU : s ⊆ ⋃ (x : α) (_ : x ∈ t), U x
⊢ {i | Set.Nonempty (f i ∩ s)} ⊆ ⋃ (i : α) (_ : i ∈ ↑t), {i_1 | Set.Nonempty (f i_1 ∩ U i)}
[PROOFSTEP]
rintro i ⟨x, hx⟩
[GOAL]
case intro.intro.intro
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ : Set α
ι : Type u_3
f : ι → Set α
s : Set α
hs : IsCompact s
U : α → Set α
hxU : ∀ (x : α), U x ∈ 𝓝 x
hUf : ∀ (x : α), Set.Finite {i | Set.Nonempty (f i ∩ U x)}
t : Finset α
hsU : s ⊆ ⋃ (x : α) (_ : x ∈ t), U x
i : ι
x : α
hx : x ∈ f i ∩ s
⊢ i ∈ ⋃ (i : α) (_ : i ∈ ↑t), {i_1 | Set.Nonempty (f i_1 ∩ U i)}
[PROOFSTEP]
rcases mem_iUnion₂.1 (hsU hx.2) with ⟨c, hct, hcx⟩
[GOAL]
case intro.intro.intro.intro.intro
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ : Set α
ι : Type u_3
f : ι → Set α
s : Set α
hs : IsCompact s
U : α → Set α
hxU : ∀ (x : α), U x ∈ 𝓝 x
hUf : ∀ (x : α), Set.Finite {i | Set.Nonempty (f i ∩ U x)}
t : Finset α
hsU : s ⊆ ⋃ (x : α) (_ : x ∈ t), U x
i : ι
x : α
hx : x ∈ f i ∩ s
c : α
hct : c ∈ t
hcx : x ∈ U c
⊢ i ∈ ⋃ (i : α) (_ : i ∈ ↑t), {i_1 | Set.Nonempty (f i_1 ∩ U i)}
[PROOFSTEP]
exact mem_biUnion hct ⟨x, hx.1, hcx⟩
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
ι : Type v
hs : IsCompact s
Z : ι → Set α
hZc : ∀ (i : ι), IsClosed (Z i)
hsZ : ∀ (t : Finset ι), Set.Nonempty (s ∩ ⋂ (i : ι) (_ : i ∈ t), Z i)
⊢ Set.Nonempty (s ∩ ⋂ (i : ι), Z i)
[PROOFSTEP]
simp only [nonempty_iff_ne_empty] at hsZ ⊢
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
ι : Type v
hs : IsCompact s
Z : ι → Set α
hZc : ∀ (i : ι), IsClosed (Z i)
hsZ : ∀ (t : Finset ι), s ∩ ⋂ (i : ι) (_ : i ∈ t), Z i ≠ ∅
⊢ s ∩ ⋂ (i : ι), Z i ≠ ∅
[PROOFSTEP]
apply mt (hs.elim_finite_subfamily_closed Z hZc)
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
ι : Type v
hs : IsCompact s
Z : ι → Set α
hZc : ∀ (i : ι), IsClosed (Z i)
hsZ : ∀ (t : Finset ι), s ∩ ⋂ (i : ι) (_ : i ∈ t), Z i ≠ ∅
⊢ ¬∃ t, s ∩ ⋂ (i : ι) (_ : i ∈ t), Z i = ∅
[PROOFSTEP]
push_neg
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
ι : Type v
hs : IsCompact s
Z : ι → Set α
hZc : ∀ (i : ι), IsClosed (Z i)
hsZ : ∀ (t : Finset ι), s ∩ ⋂ (i : ι) (_ : i ∈ t), Z i ≠ ∅
⊢ ∀ (t : Finset ι), s ∩ ⋂ (i : ι) (_ : i ∈ t), Z i ≠ ∅
[PROOFSTEP]
exact hsZ
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
ι : Type v
hι : Nonempty ι
Z : ι → Set α
hZd : Directed (fun x x_1 => x ⊇ x_1) Z
hZn : ∀ (i : ι), Set.Nonempty (Z i)
hZc : ∀ (i : ι), IsCompact (Z i)
hZcl : ∀ (i : ι), IsClosed (Z i)
⊢ Set.Nonempty (⋂ (i : ι), Z i)
[PROOFSTEP]
let i₀ := hι.some
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
ι : Type v
hι : Nonempty ι
Z : ι → Set α
hZd : Directed (fun x x_1 => x ⊇ x_1) Z
hZn : ∀ (i : ι), Set.Nonempty (Z i)
hZc : ∀ (i : ι), IsCompact (Z i)
hZcl : ∀ (i : ι), IsClosed (Z i)
i₀ : ι := Nonempty.some hι
⊢ Set.Nonempty (⋂ (i : ι), Z i)
[PROOFSTEP]
suffices (Z i₀ ∩ ⋂ i, Z i).Nonempty by rwa [inter_eq_right_iff_subset.mpr (iInter_subset _ i₀)] at this 
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
ι : Type v
hι : Nonempty ι
Z : ι → Set α
hZd : Directed (fun x x_1 => x ⊇ x_1) Z
hZn : ∀ (i : ι), Set.Nonempty (Z i)
hZc : ∀ (i : ι), IsCompact (Z i)
hZcl : ∀ (i : ι), IsClosed (Z i)
i₀ : ι := Nonempty.some hι
this : Set.Nonempty (Z i₀ ∩ ⋂ (i : ι), Z i)
⊢ Set.Nonempty (⋂ (i : ι), Z i)
[PROOFSTEP]
rwa [inter_eq_right_iff_subset.mpr (iInter_subset _ i₀)] at this 
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
ι : Type v
hι : Nonempty ι
Z : ι → Set α
hZd : Directed (fun x x_1 => x ⊇ x_1) Z
hZn : ∀ (i : ι), Set.Nonempty (Z i)
hZc : ∀ (i : ι), IsCompact (Z i)
hZcl : ∀ (i : ι), IsClosed (Z i)
i₀ : ι := Nonempty.some hι
⊢ Set.Nonempty (Z i₀ ∩ ⋂ (i : ι), Z i)
[PROOFSTEP]
simp only [nonempty_iff_ne_empty] at hZn ⊢
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
ι : Type v
hι : Nonempty ι
Z : ι → Set α
hZd : Directed (fun x x_1 => x ⊇ x_1) Z
hZc : ∀ (i : ι), IsCompact (Z i)
hZcl : ∀ (i : ι), IsClosed (Z i)
i₀ : ι := Nonempty.some hι
hZn : ∀ (i : ι), Z i ≠ ∅
⊢ Z (Nonempty.some hι) ∩ ⋂ (i : ι), Z i ≠ ∅
[PROOFSTEP]
apply mt ((hZc i₀).elim_directed_family_closed Z hZcl)
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
ι : Type v
hι : Nonempty ι
Z : ι → Set α
hZd : Directed (fun x x_1 => x ⊇ x_1) Z
hZc : ∀ (i : ι), IsCompact (Z i)
hZcl : ∀ (i : ι), IsClosed (Z i)
i₀ : ι := Nonempty.some hι
hZn : ∀ (i : ι), Z i ≠ ∅
⊢ ¬(Directed (fun x x_1 => x ⊇ x_1) Z → ∃ i, Z i₀ ∩ Z i = ∅)
[PROOFSTEP]
push_neg
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
ι : Type v
hι : Nonempty ι
Z : ι → Set α
hZd : Directed (fun x x_1 => x ⊇ x_1) Z
hZc : ∀ (i : ι), IsCompact (Z i)
hZcl : ∀ (i : ι), IsClosed (Z i)
i₀ : ι := Nonempty.some hι
hZn : ∀ (i : ι), Z i ≠ ∅
⊢ Directed (fun x x_1 => x ⊇ x_1) Z ∧ ∀ (i : ι), Z (Nonempty.some hι) ∩ Z i ≠ ∅
[PROOFSTEP]
simp only [← nonempty_iff_ne_empty] at hZn ⊢
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
ι : Type v
hι : Nonempty ι
Z : ι → Set α
hZd : Directed (fun x x_1 => x ⊇ x_1) Z
hZc : ∀ (i : ι), IsCompact (Z i)
hZcl : ∀ (i : ι), IsClosed (Z i)
i₀ : ι := Nonempty.some hι
hZn : ∀ (i : ι), Set.Nonempty (Z i)
⊢ Directed (fun x x_1 => x ⊇ x_1) Z ∧ ∀ (i : ι), Set.Nonempty (Z (Nonempty.some hι) ∩ Z i)
[PROOFSTEP]
refine' ⟨hZd, fun i => _⟩
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
ι : Type v
hι : Nonempty ι
Z : ι → Set α
hZd : Directed (fun x x_1 => x ⊇ x_1) Z
hZc : ∀ (i : ι), IsCompact (Z i)
hZcl : ∀ (i : ι), IsClosed (Z i)
i₀ : ι := Nonempty.some hι
hZn : ∀ (i : ι), Set.Nonempty (Z i)
i : ι
⊢ Set.Nonempty (Z (Nonempty.some hι) ∩ Z i)
[PROOFSTEP]
rcases hZd i₀ i with ⟨j, hji₀, hji⟩
[GOAL]
case intro.intro
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
ι : Type v
hι : Nonempty ι
Z : ι → Set α
hZd : Directed (fun x x_1 => x ⊇ x_1) Z
hZc : ∀ (i : ι), IsCompact (Z i)
hZcl : ∀ (i : ι), IsClosed (Z i)
i₀ : ι := Nonempty.some hι
hZn : ∀ (i : ι), Set.Nonempty (Z i)
i j : ι
hji₀ : Z i₀ ⊇ Z j
hji : Z i ⊇ Z j
⊢ Set.Nonempty (Z (Nonempty.some hι) ∩ Z i)
[PROOFSTEP]
exact (hZn j).mono (subset_inter hji₀ hji)
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
b : Set ι
c : ι → Set α
hs : IsCompact s
hc₁ : ∀ (i : ι), i ∈ b → IsOpen (c i)
hc₂ : s ⊆ ⋃ (i : ι) (_ : i ∈ b), c i
⊢ ∃ b', b' ⊆ b ∧ Set.Finite b' ∧ s ⊆ ⋃ (i : ι) (_ : i ∈ b'), c i
[PROOFSTEP]
simp only [Subtype.forall', biUnion_eq_iUnion] at hc₁ hc₂ 
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
b : Set ι
c : ι → Set α
hs : IsCompact s
hc₁ : ∀ (x : { a // a ∈ b }), IsOpen (c ↑x)
hc₂ : s ⊆ ⋃ (x : ↑b), c ↑x
⊢ ∃ b', b' ⊆ b ∧ Set.Finite b' ∧ s ⊆ ⋃ (i : ι) (_ : i ∈ b'), c i
[PROOFSTEP]
rcases hs.elim_finite_subcover (fun i => c i : b → Set α) hc₁ hc₂ with ⟨d, hd⟩
[GOAL]
case intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
b : Set ι
c : ι → Set α
hs : IsCompact s
hc₁ : ∀ (x : { a // a ∈ b }), IsOpen (c ↑x)
hc₂ : s ⊆ ⋃ (x : ↑b), c ↑x
d : Finset ↑b
hd : s ⊆ ⋃ (i : ↑b) (_ : i ∈ d), c ↑i
⊢ ∃ b', b' ⊆ b ∧ Set.Finite b' ∧ s ⊆ ⋃ (i : ι) (_ : i ∈ b'), c i
[PROOFSTEP]
refine' ⟨Subtype.val '' d.toSet, _, d.finite_toSet.image _, _⟩
[GOAL]
case intro.refine'_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
b : Set ι
c : ι → Set α
hs : IsCompact s
hc₁ : ∀ (x : { a // a ∈ b }), IsOpen (c ↑x)
hc₂ : s ⊆ ⋃ (x : ↑b), c ↑x
d : Finset ↑b
hd : s ⊆ ⋃ (i : ↑b) (_ : i ∈ d), c ↑i
⊢ Subtype.val '' ↑d ⊆ b
[PROOFSTEP]
simp
[GOAL]
case intro.refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
b : Set ι
c : ι → Set α
hs : IsCompact s
hc₁ : ∀ (x : { a // a ∈ b }), IsOpen (c ↑x)
hc₂ : s ⊆ ⋃ (x : ↑b), c ↑x
d : Finset ↑b
hd : s ⊆ ⋃ (i : ↑b) (_ : i ∈ d), c ↑i
⊢ s ⊆ ⋃ (i : ι) (_ : i ∈ Subtype.val '' ↑d), c i
[PROOFSTEP]
rwa [biUnion_image]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
h : ∀ {ι : Type u} (U : ι → Set α), (∀ (i : ι), IsOpen (U i)) → s ⊆ ⋃ (i : ι), U i → ∃ t, s ⊆ ⋃ (i : ι) (_ : i ∈ t), U i
f : Filter α
hf : NeBot f
hfs : f ≤ 𝓟 s
⊢ ∃ a, a ∈ s ∧ ClusterPt a f
[PROOFSTEP]
contrapose! h
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : Filter α
hf : NeBot f
hfs : f ≤ 𝓟 s
h : ∀ (a : α), a ∈ s → ¬ClusterPt a f
⊢ Exists fun {ι} =>
    ∃ U, (∀ (i : ι), IsOpen (U i)) ∧ s ⊆ ⋃ (i : ι), U i ∧ ∀ (t : Finset ι), ¬s ⊆ ⋃ (i : ι) (_ : i ∈ t), U i
[PROOFSTEP]
simp only [ClusterPt, not_neBot, ← disjoint_iff, SetCoe.forall', (nhds_basis_opens _).disjoint_iff_left] at h 
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : Filter α
hf : NeBot f
hfs : f ≤ 𝓟 s
h : ∀ (x : ↑s), ∃ i, (↑x ∈ i ∧ IsOpen i) ∧ iᶜ ∈ f
⊢ Exists fun {ι} =>
    ∃ U, (∀ (i : ι), IsOpen (U i)) ∧ s ⊆ ⋃ (i : ι), U i ∧ ∀ (t : Finset ι), ¬s ⊆ ⋃ (i : ι) (_ : i ∈ t), U i
[PROOFSTEP]
choose U hU hUf using h
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : Filter α
hf : NeBot f
hfs : f ≤ 𝓟 s
U : ↑s → Set α
hU : ∀ (x : ↑s), ↑x ∈ U x ∧ IsOpen (U x)
hUf : ∀ (x : ↑s), (U x)ᶜ ∈ f
⊢ Exists fun {ι} =>
    ∃ U, (∀ (i : ι), IsOpen (U i)) ∧ s ⊆ ⋃ (i : ι), U i ∧ ∀ (t : Finset ι), ¬s ⊆ ⋃ (i : ι) (_ : i ∈ t), U i
[PROOFSTEP]
refine ⟨s, U, fun x => (hU x).2, fun x hx => mem_iUnion.2 ⟨⟨x, hx⟩, (hU _).1⟩, fun t ht => ?_⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
f : Filter α
hf : NeBot f
hfs : f ≤ 𝓟 s
U : ↑s → Set α
hU : ∀ (x : ↑s), ↑x ∈ U x ∧ IsOpen (U x)
hUf : ∀ (x : ↑s), (U x)ᶜ ∈ f
t : Finset ↑s
ht : s ⊆ ⋃ (i : ↑s) (_ : i ∈ t), U i
⊢ False
[PROOFSTEP]
refine compl_not_mem (le_principal_iff.1 hfs) ?_
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
f : Filter α
hf : NeBot f
hfs : f ≤ 𝓟 s
U : ↑s → Set α
hU : ∀ (x : ↑s), ↑x ∈ U x ∧ IsOpen (U x)
hUf : ∀ (x : ↑s), (U x)ᶜ ∈ f
t : Finset ↑s
ht : s ⊆ ⋃ (i : ↑s) (_ : i ∈ t), U i
⊢ sᶜ ∈ f
[PROOFSTEP]
refine mem_of_superset ((biInter_finset_mem t).2 fun x _ => hUf x) ?_
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
f : Filter α
hf : NeBot f
hfs : f ≤ 𝓟 s
U : ↑s → Set α
hU : ∀ (x : ↑s), ↑x ∈ U x ∧ IsOpen (U x)
hUf : ∀ (x : ↑s), (U x)ᶜ ∈ f
t : Finset ↑s
ht : s ⊆ ⋃ (i : ↑s) (_ : i ∈ t), U i
⊢ ⋂ (i : ↑s) (_ : i ∈ t), (U i)ᶜ ⊆ sᶜ
[PROOFSTEP]
rw [subset_compl_comm, compl_iInter₂]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
f : Filter α
hf : NeBot f
hfs : f ≤ 𝓟 s
U : ↑s → Set α
hU : ∀ (x : ↑s), ↑x ∈ U x ∧ IsOpen (U x)
hUf : ∀ (x : ↑s), (U x)ᶜ ∈ f
t : Finset ↑s
ht : s ⊆ ⋃ (i : ↑s) (_ : i ∈ t), U i
⊢ s ⊆ ⋃ (i : ↑s) (_ : i ∈ t), (U i)ᶜᶜ
[PROOFSTEP]
simpa only [compl_compl]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
h :
  ∀ {ι : Type u} (Z : ι → Set α),
    (∀ (i : ι), IsClosed (Z i)) → s ∩ ⋂ (i : ι), Z i = ∅ → ∃ t, s ∩ ⋂ (i : ι) (_ : i ∈ t), Z i = ∅
ι✝ : Type u
U : ι✝ → Set α
hUo : ∀ (i : ι✝), IsOpen (U i)
hsU : s ⊆ ⋃ (i : ι✝), U i
⊢ ∃ t, s ⊆ ⋃ (i : ι✝) (_ : i ∈ t), U i
[PROOFSTEP]
rw [← disjoint_compl_right_iff_subset, compl_iUnion, disjoint_iff] at hsU 
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
h :
  ∀ {ι : Type u} (Z : ι → Set α),
    (∀ (i : ι), IsClosed (Z i)) → s ∩ ⋂ (i : ι), Z i = ∅ → ∃ t, s ∩ ⋂ (i : ι) (_ : i ∈ t), Z i = ∅
ι✝ : Type u
U : ι✝ → Set α
hUo : ∀ (i : ι✝), IsOpen (U i)
hsU : s ⊓ ⋂ (i : ι✝), (U i)ᶜ = ⊥
⊢ ∃ t, s ⊆ ⋃ (i : ι✝) (_ : i ∈ t), U i
[PROOFSTEP]
rcases h (fun i => (U i)ᶜ) (fun i => (hUo _).isClosed_compl) hsU with ⟨t, ht⟩
[GOAL]
case intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
h :
  ∀ {ι : Type u} (Z : ι → Set α),
    (∀ (i : ι), IsClosed (Z i)) → s ∩ ⋂ (i : ι), Z i = ∅ → ∃ t, s ∩ ⋂ (i : ι) (_ : i ∈ t), Z i = ∅
ι✝ : Type u
U : ι✝ → Set α
hUo : ∀ (i : ι✝), IsOpen (U i)
hsU : s ⊓ ⋂ (i : ι✝), (U i)ᶜ = ⊥
t : Finset ι✝
ht : s ∩ ⋂ (i : ι✝) (_ : i ∈ t), (U i)ᶜ = ∅
⊢ ∃ t, s ⊆ ⋃ (i : ι✝) (_ : i ∈ t), U i
[PROOFSTEP]
refine ⟨t, ?_⟩
[GOAL]
case intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
h :
  ∀ {ι : Type u} (Z : ι → Set α),
    (∀ (i : ι), IsClosed (Z i)) → s ∩ ⋂ (i : ι), Z i = ∅ → ∃ t, s ∩ ⋂ (i : ι) (_ : i ∈ t), Z i = ∅
ι✝ : Type u
U : ι✝ → Set α
hUo : ∀ (i : ι✝), IsOpen (U i)
hsU : s ⊓ ⋂ (i : ι✝), (U i)ᶜ = ⊥
t : Finset ι✝
ht : s ∩ ⋂ (i : ι✝) (_ : i ∈ t), (U i)ᶜ = ∅
⊢ s ⊆ ⋃ (i : ι✝) (_ : i ∈ t), U i
[PROOFSTEP]
rwa [← disjoint_compl_right_iff_subset, compl_iUnion₂, disjoint_iff]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
x₀ : α
K : Set β
hK : IsCompact K
P : α → β → Prop
hP : ∀ (y : β), y ∈ K → ∀ᶠ (z : α × β) in 𝓝 (x₀, y), P z.fst z.snd
⊢ ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ K → P x y
[PROOFSTEP]
refine' hK.induction_on _ _ _ _
[GOAL]
case refine'_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
x₀ : α
K : Set β
hK : IsCompact K
P : α → β → Prop
hP : ∀ (y : β), y ∈ K → ∀ᶠ (z : α × β) in 𝓝 (x₀, y), P z.fst z.snd
⊢ ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ ∅ → P x y
[PROOFSTEP]
exact eventually_of_forall fun x y => False.elim
[GOAL]
case refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
x₀ : α
K : Set β
hK : IsCompact K
P : α → β → Prop
hP : ∀ (y : β), y ∈ K → ∀ᶠ (z : α × β) in 𝓝 (x₀, y), P z.fst z.snd
⊢ ∀ ⦃s t : Set β⦄, s ⊆ t → (∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ t → P x y) → ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ s → P x y
[PROOFSTEP]
intro s t hst ht
[GOAL]
case refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ : Set α
x₀ : α
K : Set β
hK : IsCompact K
P : α → β → Prop
hP : ∀ (y : β), y ∈ K → ∀ᶠ (z : α × β) in 𝓝 (x₀, y), P z.fst z.snd
s t : Set β
hst : s ⊆ t
ht : ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ t → P x y
⊢ ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ s → P x y
[PROOFSTEP]
refine' ht.mono fun x h y hys => h y <| hst hys
[GOAL]
case refine'_3
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
x₀ : α
K : Set β
hK : IsCompact K
P : α → β → Prop
hP : ∀ (y : β), y ∈ K → ∀ᶠ (z : α × β) in 𝓝 (x₀, y), P z.fst z.snd
⊢ ∀ ⦃s t : Set β⦄,
    (∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ s → P x y) →
      (∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ t → P x y) → ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ s ∪ t → P x y
[PROOFSTEP]
intro s t hs ht
[GOAL]
case refine'_3
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ : Set α
x₀ : α
K : Set β
hK : IsCompact K
P : α → β → Prop
hP : ∀ (y : β), y ∈ K → ∀ᶠ (z : α × β) in 𝓝 (x₀, y), P z.fst z.snd
s t : Set β
hs : ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ s → P x y
ht : ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ t → P x y
⊢ ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ s ∪ t → P x y
[PROOFSTEP]
filter_upwards [hs, ht]
[GOAL]
case h
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ : Set α
x₀ : α
K : Set β
hK : IsCompact K
P : α → β → Prop
hP : ∀ (y : β), y ∈ K → ∀ᶠ (z : α × β) in 𝓝 (x₀, y), P z.fst z.snd
s t : Set β
hs : ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ s → P x y
ht : ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ t → P x y
⊢ ∀ (a : α), (∀ (y : β), y ∈ s → P a y) → (∀ (y : β), y ∈ t → P a y) → ∀ (y : β), y ∈ s ∪ t → P a y
[PROOFSTEP]
rintro x h1 h2 y (hys | hyt)
[GOAL]
case h.inl
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ : Set α
x₀ : α
K : Set β
hK : IsCompact K
P : α → β → Prop
hP : ∀ (y : β), y ∈ K → ∀ᶠ (z : α × β) in 𝓝 (x₀, y), P z.fst z.snd
s t : Set β
hs : ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ s → P x y
ht : ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ t → P x y
x : α
h1 : ∀ (y : β), y ∈ s → P x y
h2 : ∀ (y : β), y ∈ t → P x y
y : β
hys : y ∈ s
⊢ P x y
case h.inr
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ : Set α
x₀ : α
K : Set β
hK : IsCompact K
P : α → β → Prop
hP : ∀ (y : β), y ∈ K → ∀ᶠ (z : α × β) in 𝓝 (x₀, y), P z.fst z.snd
s t : Set β
hs : ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ s → P x y
ht : ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ t → P x y
x : α
h1 : ∀ (y : β), y ∈ s → P x y
h2 : ∀ (y : β), y ∈ t → P x y
y : β
hyt : y ∈ t
⊢ P x y
[PROOFSTEP]
exacts [h1 y hys, h2 y hyt]
[GOAL]
case refine'_4
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
x₀ : α
K : Set β
hK : IsCompact K
P : α → β → Prop
hP : ∀ (y : β), y ∈ K → ∀ᶠ (z : α × β) in 𝓝 (x₀, y), P z.fst z.snd
⊢ ∀ (x : β), x ∈ K → ∃ t, t ∈ 𝓝[K] x ∧ ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ t → P x y
[PROOFSTEP]
intro y hyK
[GOAL]
case refine'_4
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
x₀ : α
K : Set β
hK : IsCompact K
P : α → β → Prop
hP : ∀ (y : β), y ∈ K → ∀ᶠ (z : α × β) in 𝓝 (x₀, y), P z.fst z.snd
y : β
hyK : y ∈ K
⊢ ∃ t, t ∈ 𝓝[K] y ∧ ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ t → P x y
[PROOFSTEP]
specialize hP y hyK
[GOAL]
case refine'_4
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
x₀ : α
K : Set β
hK : IsCompact K
P : α → β → Prop
y : β
hyK : y ∈ K
hP : ∀ᶠ (z : α × β) in 𝓝 (x₀, y), P z.fst z.snd
⊢ ∃ t, t ∈ 𝓝[K] y ∧ ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ t → P x y
[PROOFSTEP]
rw [nhds_prod_eq, eventually_prod_iff] at hP 
[GOAL]
case refine'_4
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
x₀ : α
K : Set β
hK : IsCompact K
P : α → β → Prop
y : β
hyK : y ∈ K
hP :
  ∃ pa,
    (∀ᶠ (x : α) in 𝓝 x₀, pa x) ∧
      ∃ pb, (∀ᶠ (y : β) in 𝓝 y, pb y) ∧ ∀ {x : α}, pa x → ∀ {y : β}, pb y → P (x, y).fst (x, y).snd
⊢ ∃ t, t ∈ 𝓝[K] y ∧ ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ t → P x y
[PROOFSTEP]
rcases hP with ⟨p, hp, q, hq, hpq⟩
[GOAL]
case refine'_4.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
x₀ : α
K : Set β
hK : IsCompact K
P : α → β → Prop
y : β
hyK : y ∈ K
p : α → Prop
hp : ∀ᶠ (x : α) in 𝓝 x₀, p x
q : β → Prop
hq : ∀ᶠ (y : β) in 𝓝 y, q y
hpq : ∀ {x : α}, p x → ∀ {y : β}, q y → P (x, y).fst (x, y).snd
⊢ ∃ t, t ∈ 𝓝[K] y ∧ ∀ᶠ (x : α) in 𝓝 x₀, ∀ (y : β), y ∈ t → P x y
[PROOFSTEP]
exact ⟨{y | q y}, mem_nhdsWithin_of_mem_nhds hq, eventually_of_mem hp @hpq⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
a : α
f : Filter α
hf : NeBot f
hfa : f ≤ 𝓟 {a}
⊢ 𝓟 {a} ≤ 𝓝 a
[PROOFSTEP]
simpa only [principal_singleton] using pure_le_nhds a
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t : Set α
s : Set ι
f : ι → Set α
hs : Set.Finite s
hf : ∀ (i : ι), i ∈ s → IsCompact (f i)
l : Ultrafilter α
hl : ↑l ≤ 𝓟 (⋃ (i : ι) (_ : i ∈ s), f i)
⊢ ∃ a, a ∈ ⋃ (i : ι) (_ : i ∈ s), f i ∧ ↑l ≤ 𝓝 a
[PROOFSTEP]
rw [le_principal_iff, Ultrafilter.mem_coe, Ultrafilter.finite_biUnion_mem_iff hs] at hl 
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t : Set α
s : Set ι
f : ι → Set α
hs : Set.Finite s
hf : ∀ (i : ι), i ∈ s → IsCompact (f i)
l : Ultrafilter α
hl : ∃ i, i ∈ s ∧ f i ∈ l
⊢ ∃ a, a ∈ ⋃ (i : ι) (_ : i ∈ s), f i ∧ ↑l ≤ 𝓝 a
[PROOFSTEP]
rcases hl with ⟨i, his, hi⟩
[GOAL]
case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t : Set α
s : Set ι
f : ι → Set α
hs : Set.Finite s
hf : ∀ (i : ι), i ∈ s → IsCompact (f i)
l : Ultrafilter α
i : ι
his : i ∈ s
hi : f i ∈ l
⊢ ∃ a, a ∈ ⋃ (i : ι) (_ : i ∈ s), f i ∧ ↑l ≤ 𝓝 a
[PROOFSTEP]
rcases(hf i his).ultrafilter_le_nhds _ (le_principal_iff.2 hi) with ⟨x, hxi, hlx⟩
[GOAL]
case intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t : Set α
s : Set ι
f : ι → Set α
hs : Set.Finite s
hf : ∀ (i : ι), i ∈ s → IsCompact (f i)
l : Ultrafilter α
i : ι
his : i ∈ s
hi : f i ∈ l
x : α
hxi : x ∈ f i
hlx : ↑l ≤ 𝓝 x
⊢ ∃ a, a ∈ ⋃ (i : ι) (_ : i ∈ s), f i ∧ ↑l ≤ 𝓝 a
[PROOFSTEP]
exact ⟨x, mem_iUnion₂.2 ⟨i, his, hxi⟩, hlx⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
S : Set (Set α)
hf : Set.Finite S
hc : ∀ (s : Set α), s ∈ S → IsCompact s
⊢ IsCompact (⋃₀ S)
[PROOFSTEP]
rw [sUnion_eq_biUnion]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
S : Set (Set α)
hf : Set.Finite S
hc : ∀ (s : Set α), s ∈ S → IsCompact s
⊢ IsCompact (⋃ (i : Set α) (_ : i ∈ S), i)
[PROOFSTEP]
exact hf.isCompact_biUnion hc
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
inst✝ : DiscreteTopology α
s : Set α
hs : IsCompact s
⊢ Set.Finite s
[PROOFSTEP]
have : ∀ x : α, ({ x } : Set α) ∈ 𝓝 x := by simp [nhds_discrete]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
inst✝ : DiscreteTopology α
s : Set α
hs : IsCompact s
⊢ ∀ (x : α), {x} ∈ 𝓝 x
[PROOFSTEP]
simp [nhds_discrete]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
inst✝ : DiscreteTopology α
s : Set α
hs : IsCompact s
this : ∀ (x : α), {x} ∈ 𝓝 x
⊢ Set.Finite s
[PROOFSTEP]
rcases hs.elim_nhds_subcover (fun x => { x }) fun x _ => this x with ⟨t, _, hst⟩
[GOAL]
case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t✝ : Set α
inst✝ : DiscreteTopology α
s : Set α
hs : IsCompact s
this : ∀ (x : α), {x} ∈ 𝓝 x
t : Finset α
left✝ : ∀ (x : α), x ∈ t → x ∈ s
hst : s ⊆ ⋃ (x : α) (_ : x ∈ t), {x}
⊢ Set.Finite s
[PROOFSTEP]
simp only [← t.set_biUnion_coe, biUnion_of_singleton] at hst 
[GOAL]
case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t✝ : Set α
inst✝ : DiscreteTopology α
s : Set α
hs : IsCompact s
this : ∀ (x : α), {x} ∈ 𝓝 x
t : Finset α
left✝ : ∀ (x : α), x ∈ t → x ∈ s
hst : s ⊆ ↑t
⊢ Set.Finite s
[PROOFSTEP]
exact t.finite_toSet.subset hst
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hs : IsCompact s
ht : IsCompact t
⊢ IsCompact (s ∪ t)
[PROOFSTEP]
rw [union_eq_iUnion]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hs : IsCompact s
ht : IsCompact t
⊢ IsCompact (⋃ (b : Bool), bif b then s else t)
[PROOFSTEP]
exact isCompact_iUnion fun b => by cases b <;> assumption
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hs : IsCompact s
ht : IsCompact t
b : Bool
⊢ IsCompact (bif b then s else t)
[PROOFSTEP]
cases b
[GOAL]
case false
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hs : IsCompact s
ht : IsCompact t
⊢ IsCompact (bif false then s else t)
[PROOFSTEP]
assumption
[GOAL]
case true
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hs : IsCompact s
ht : IsCompact t
⊢ IsCompact (bif true then s else t)
[PROOFSTEP]
assumption
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
ι : Type u_3
inst✝ : Nonempty ι
V : ι → Set α
hV : Directed (fun x x_1 => x ⊇ x_1) V
hV_cpct : ∀ (i : ι), IsCompact (V i)
hV_closed : ∀ (i : ι), IsClosed (V i)
U : Set α
hU : ∀ (x : α), x ∈ ⋂ (i : ι), V i → U ∈ 𝓝 x
⊢ ∃ i, V i ⊆ U
[PROOFSTEP]
obtain ⟨W, hsubW, W_op, hWU⟩ := exists_open_set_nhds hU
[GOAL]
case intro.intro.intro
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
ι : Type u_3
inst✝ : Nonempty ι
V : ι → Set α
hV : Directed (fun x x_1 => x ⊇ x_1) V
hV_cpct : ∀ (i : ι), IsCompact (V i)
hV_closed : ∀ (i : ι), IsClosed (V i)
U : Set α
hU : ∀ (x : α), x ∈ ⋂ (i : ι), V i → U ∈ 𝓝 x
W : Set α
hsubW : ⋂ (i : ι), V i ⊆ W
W_op : IsOpen W
hWU : W ⊆ U
⊢ ∃ i, V i ⊆ U
[PROOFSTEP]
suffices : ∃ i, V i ⊆ W
[GOAL]
case intro.intro.intro
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
ι : Type u_3
inst✝ : Nonempty ι
V : ι → Set α
hV : Directed (fun x x_1 => x ⊇ x_1) V
hV_cpct : ∀ (i : ι), IsCompact (V i)
hV_closed : ∀ (i : ι), IsClosed (V i)
U : Set α
hU : ∀ (x : α), x ∈ ⋂ (i : ι), V i → U ∈ 𝓝 x
W : Set α
hsubW : ⋂ (i : ι), V i ⊆ W
W_op : IsOpen W
hWU : W ⊆ U
this : ∃ i, V i ⊆ W
⊢ ∃ i, V i ⊆ U
[PROOFSTEP]
exact this.imp fun i hi => hi.trans hWU
[GOAL]
case this
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
ι : Type u_3
inst✝ : Nonempty ι
V : ι → Set α
hV : Directed (fun x x_1 => x ⊇ x_1) V
hV_cpct : ∀ (i : ι), IsCompact (V i)
hV_closed : ∀ (i : ι), IsClosed (V i)
U : Set α
hU : ∀ (x : α), x ∈ ⋂ (i : ι), V i → U ∈ 𝓝 x
W : Set α
hsubW : ⋂ (i : ι), V i ⊆ W
W_op : IsOpen W
hWU : W ⊆ U
⊢ ∃ i, V i ⊆ W
[PROOFSTEP]
by_contra' H
[GOAL]
case this
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
ι : Type u_3
inst✝ : Nonempty ι
V : ι → Set α
hV : Directed (fun x x_1 => x ⊇ x_1) V
hV_cpct : ∀ (i : ι), IsCompact (V i)
hV_closed : ∀ (i : ι), IsClosed (V i)
U : Set α
hU : ∀ (x : α), x ∈ ⋂ (i : ι), V i → U ∈ 𝓝 x
W : Set α
hsubW : ⋂ (i : ι), V i ⊆ W
W_op : IsOpen W
hWU : W ⊆ U
H : ∀ (i : ι), ¬V i ⊆ W
⊢ False
[PROOFSTEP]
replace H : ∀ i, (V i ∩ Wᶜ).Nonempty := fun i => Set.inter_compl_nonempty_iff.mpr (H i)
[GOAL]
case this
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
ι : Type u_3
inst✝ : Nonempty ι
V : ι → Set α
hV : Directed (fun x x_1 => x ⊇ x_1) V
hV_cpct : ∀ (i : ι), IsCompact (V i)
hV_closed : ∀ (i : ι), IsClosed (V i)
U : Set α
hU : ∀ (x : α), x ∈ ⋂ (i : ι), V i → U ∈ 𝓝 x
W : Set α
hsubW : ⋂ (i : ι), V i ⊆ W
W_op : IsOpen W
hWU : W ⊆ U
H : ∀ (i : ι), Set.Nonempty (V i ∩ Wᶜ)
⊢ False
[PROOFSTEP]
have : (⋂ i, V i ∩ Wᶜ).Nonempty :=
  by
  refine'
    IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed _ (fun i j => _) H
      (fun i => (hV_cpct i).inter_right W_op.isClosed_compl) fun i => (hV_closed i).inter W_op.isClosed_compl
  rcases hV i j with ⟨k, hki, hkj⟩
  refine' ⟨k, ⟨fun x => _, fun x => _⟩⟩ <;> simp only [and_imp, mem_inter_iff, mem_compl_iff] <;> tauto
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
ι : Type u_3
inst✝ : Nonempty ι
V : ι → Set α
hV : Directed (fun x x_1 => x ⊇ x_1) V
hV_cpct : ∀ (i : ι), IsCompact (V i)
hV_closed : ∀ (i : ι), IsClosed (V i)
U : Set α
hU : ∀ (x : α), x ∈ ⋂ (i : ι), V i → U ∈ 𝓝 x
W : Set α
hsubW : ⋂ (i : ι), V i ⊆ W
W_op : IsOpen W
hWU : W ⊆ U
H : ∀ (i : ι), Set.Nonempty (V i ∩ Wᶜ)
⊢ Set.Nonempty (⋂ (i : ι), V i ∩ Wᶜ)
[PROOFSTEP]
refine'
  IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed _ (fun i j => _) H
    (fun i => (hV_cpct i).inter_right W_op.isClosed_compl) fun i => (hV_closed i).inter W_op.isClosed_compl
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
ι : Type u_3
inst✝ : Nonempty ι
V : ι → Set α
hV : Directed (fun x x_1 => x ⊇ x_1) V
hV_cpct : ∀ (i : ι), IsCompact (V i)
hV_closed : ∀ (i : ι), IsClosed (V i)
U : Set α
hU : ∀ (x : α), x ∈ ⋂ (i : ι), V i → U ∈ 𝓝 x
W : Set α
hsubW : ⋂ (i : ι), V i ⊆ W
W_op : IsOpen W
hWU : W ⊆ U
H : ∀ (i : ι), Set.Nonempty (V i ∩ Wᶜ)
i j : ι
⊢ ∃ z, (fun x x_1 => x ⊇ x_1) (V i ∩ Wᶜ) (V z ∩ Wᶜ) ∧ (fun x x_1 => x ⊇ x_1) (V j ∩ Wᶜ) (V z ∩ Wᶜ)
[PROOFSTEP]
rcases hV i j with ⟨k, hki, hkj⟩
[GOAL]
case intro.intro
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
ι : Type u_3
inst✝ : Nonempty ι
V : ι → Set α
hV : Directed (fun x x_1 => x ⊇ x_1) V
hV_cpct : ∀ (i : ι), IsCompact (V i)
hV_closed : ∀ (i : ι), IsClosed (V i)
U : Set α
hU : ∀ (x : α), x ∈ ⋂ (i : ι), V i → U ∈ 𝓝 x
W : Set α
hsubW : ⋂ (i : ι), V i ⊆ W
W_op : IsOpen W
hWU : W ⊆ U
H : ∀ (i : ι), Set.Nonempty (V i ∩ Wᶜ)
i j k : ι
hki : V i ⊇ V k
hkj : V j ⊇ V k
⊢ ∃ z, (fun x x_1 => x ⊇ x_1) (V i ∩ Wᶜ) (V z ∩ Wᶜ) ∧ (fun x x_1 => x ⊇ x_1) (V j ∩ Wᶜ) (V z ∩ Wᶜ)
[PROOFSTEP]
refine' ⟨k, ⟨fun x => _, fun x => _⟩⟩
[GOAL]
case intro.intro.refine'_1
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
ι : Type u_3
inst✝ : Nonempty ι
V : ι → Set α
hV : Directed (fun x x_1 => x ⊇ x_1) V
hV_cpct : ∀ (i : ι), IsCompact (V i)
hV_closed : ∀ (i : ι), IsClosed (V i)
U : Set α
hU : ∀ (x : α), x ∈ ⋂ (i : ι), V i → U ∈ 𝓝 x
W : Set α
hsubW : ⋂ (i : ι), V i ⊆ W
W_op : IsOpen W
hWU : W ⊆ U
H : ∀ (i : ι), Set.Nonempty (V i ∩ Wᶜ)
i j k : ι
hki : V i ⊇ V k
hkj : V j ⊇ V k
x : α
⊢ x ∈ V k ∩ Wᶜ → x ∈ V i ∩ Wᶜ
[PROOFSTEP]
simp only [and_imp, mem_inter_iff, mem_compl_iff]
[GOAL]
case intro.intro.refine'_2
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
ι : Type u_3
inst✝ : Nonempty ι
V : ι → Set α
hV : Directed (fun x x_1 => x ⊇ x_1) V
hV_cpct : ∀ (i : ι), IsCompact (V i)
hV_closed : ∀ (i : ι), IsClosed (V i)
U : Set α
hU : ∀ (x : α), x ∈ ⋂ (i : ι), V i → U ∈ 𝓝 x
W : Set α
hsubW : ⋂ (i : ι), V i ⊆ W
W_op : IsOpen W
hWU : W ⊆ U
H : ∀ (i : ι), Set.Nonempty (V i ∩ Wᶜ)
i j k : ι
hki : V i ⊇ V k
hkj : V j ⊇ V k
x : α
⊢ x ∈ V k ∩ Wᶜ → x ∈ V j ∩ Wᶜ
[PROOFSTEP]
simp only [and_imp, mem_inter_iff, mem_compl_iff]
[GOAL]
case intro.intro.refine'_1
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
ι : Type u_3
inst✝ : Nonempty ι
V : ι → Set α
hV : Directed (fun x x_1 => x ⊇ x_1) V
hV_cpct : ∀ (i : ι), IsCompact (V i)
hV_closed : ∀ (i : ι), IsClosed (V i)
U : Set α
hU : ∀ (x : α), x ∈ ⋂ (i : ι), V i → U ∈ 𝓝 x
W : Set α
hsubW : ⋂ (i : ι), V i ⊆ W
W_op : IsOpen W
hWU : W ⊆ U
H : ∀ (i : ι), Set.Nonempty (V i ∩ Wᶜ)
i j k : ι
hki : V i ⊇ V k
hkj : V j ⊇ V k
x : α
⊢ x ∈ V k → ¬x ∈ W → x ∈ V i ∧ ¬x ∈ W
[PROOFSTEP]
tauto
[GOAL]
case intro.intro.refine'_2
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
ι : Type u_3
inst✝ : Nonempty ι
V : ι → Set α
hV : Directed (fun x x_1 => x ⊇ x_1) V
hV_cpct : ∀ (i : ι), IsCompact (V i)
hV_closed : ∀ (i : ι), IsClosed (V i)
U : Set α
hU : ∀ (x : α), x ∈ ⋂ (i : ι), V i → U ∈ 𝓝 x
W : Set α
hsubW : ⋂ (i : ι), V i ⊆ W
W_op : IsOpen W
hWU : W ⊆ U
H : ∀ (i : ι), Set.Nonempty (V i ∩ Wᶜ)
i j k : ι
hki : V i ⊇ V k
hkj : V j ⊇ V k
x : α
⊢ x ∈ V k → ¬x ∈ W → x ∈ V j ∧ ¬x ∈ W
[PROOFSTEP]
tauto
[GOAL]
case this
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
ι : Type u_3
inst✝ : Nonempty ι
V : ι → Set α
hV : Directed (fun x x_1 => x ⊇ x_1) V
hV_cpct : ∀ (i : ι), IsCompact (V i)
hV_closed : ∀ (i : ι), IsClosed (V i)
U : Set α
hU : ∀ (x : α), x ∈ ⋂ (i : ι), V i → U ∈ 𝓝 x
W : Set α
hsubW : ⋂ (i : ι), V i ⊆ W
W_op : IsOpen W
hWU : W ⊆ U
H : ∀ (i : ι), Set.Nonempty (V i ∩ Wᶜ)
this : Set.Nonempty (⋂ (i : ι), V i ∩ Wᶜ)
⊢ False
[PROOFSTEP]
have : ¬⋂ i : ι, V i ⊆ W := by simpa [← iInter_inter, inter_compl_nonempty_iff]
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
ι : Type u_3
inst✝ : Nonempty ι
V : ι → Set α
hV : Directed (fun x x_1 => x ⊇ x_1) V
hV_cpct : ∀ (i : ι), IsCompact (V i)
hV_closed : ∀ (i : ι), IsClosed (V i)
U : Set α
hU : ∀ (x : α), x ∈ ⋂ (i : ι), V i → U ∈ 𝓝 x
W : Set α
hsubW : ⋂ (i : ι), V i ⊆ W
W_op : IsOpen W
hWU : W ⊆ U
H : ∀ (i : ι), Set.Nonempty (V i ∩ Wᶜ)
this : Set.Nonempty (⋂ (i : ι), V i ∩ Wᶜ)
⊢ ¬⋂ (i : ι), V i ⊆ W
[PROOFSTEP]
simpa [← iInter_inter, inter_compl_nonempty_iff]
[GOAL]
case this
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
ι : Type u_3
inst✝ : Nonempty ι
V : ι → Set α
hV : Directed (fun x x_1 => x ⊇ x_1) V
hV_cpct : ∀ (i : ι), IsCompact (V i)
hV_closed : ∀ (i : ι), IsClosed (V i)
U : Set α
hU : ∀ (x : α), x ∈ ⋂ (i : ι), V i → U ∈ 𝓝 x
W : Set α
hsubW : ⋂ (i : ι), V i ⊆ W
W_op : IsOpen W
hWU : W ⊆ U
H : ∀ (i : ι), Set.Nonempty (V i ∩ Wᶜ)
this✝ : Set.Nonempty (⋂ (i : ι), V i ∩ Wᶜ)
this : ¬⋂ (i : ι), V i ⊆ W
⊢ False
[PROOFSTEP]
contradiction
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
⊢ IsCompact U ∧ IsOpen U ↔ ∃ s, Set.Finite s ∧ U = ⋃ (i : ι) (_ : i ∈ s), b i
[PROOFSTEP]
constructor
[GOAL]
case mp
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
⊢ IsCompact U ∧ IsOpen U → ∃ s, Set.Finite s ∧ U = ⋃ (i : ι) (_ : i ∈ s), b i
[PROOFSTEP]
rintro ⟨h₁, h₂⟩
[GOAL]
case mp.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
h₁ : IsCompact U
h₂ : IsOpen U
⊢ ∃ s, Set.Finite s ∧ U = ⋃ (i : ι) (_ : i ∈ s), b i
[PROOFSTEP]
obtain ⟨β, f, e, hf⟩ := hb.open_eq_iUnion h₂
[GOAL]
case mp.intro.intro.intro.intro
α : Type u
β✝ : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
s t : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
h₁ : IsCompact U
h₂ : IsOpen U
β : Type u
f : β → Set α
e : U = ⋃ (i : β), f i
hf : ∀ (i : β), f i ∈ range b
⊢ ∃ s, Set.Finite s ∧ U = ⋃ (i : ι) (_ : i ∈ s), b i
[PROOFSTEP]
choose f' hf' using hf
[GOAL]
case mp.intro.intro.intro.intro
α : Type u
β✝ : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
s t : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
h₁ : IsCompact U
h₂ : IsOpen U
β : Type u
f : β → Set α
e : U = ⋃ (i : β), f i
f' : β → ι
hf' : ∀ (i : β), b (f' i) = f i
⊢ ∃ s, Set.Finite s ∧ U = ⋃ (i : ι) (_ : i ∈ s), b i
[PROOFSTEP]
have : b ∘ f' = f := funext hf'
[GOAL]
case mp.intro.intro.intro.intro
α : Type u
β✝ : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
s t : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
h₁ : IsCompact U
h₂ : IsOpen U
β : Type u
f : β → Set α
e : U = ⋃ (i : β), f i
f' : β → ι
hf' : ∀ (i : β), b (f' i) = f i
this : b ∘ f' = f
⊢ ∃ s, Set.Finite s ∧ U = ⋃ (i : ι) (_ : i ∈ s), b i
[PROOFSTEP]
subst this
[GOAL]
case mp.intro.intro.intro.intro
α : Type u
β✝ : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
s t : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
h₁ : IsCompact U
h₂ : IsOpen U
β : Type u
f' : β → ι
e : U = ⋃ (i : β), (b ∘ f') i
hf' : ∀ (i : β), b (f' i) = (b ∘ f') i
⊢ ∃ s, Set.Finite s ∧ U = ⋃ (i : ι) (_ : i ∈ s), b i
[PROOFSTEP]
obtain ⟨t, ht⟩ := h₁.elim_finite_subcover (b ∘ f') (fun i => hb.isOpen (Set.mem_range_self _)) (by rw [e])
[GOAL]
α : Type u
β✝ : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
s t : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
h₁ : IsCompact U
h₂ : IsOpen U
β : Type u
f' : β → ι
e : U = ⋃ (i : β), (b ∘ f') i
hf' : ∀ (i : β), b (f' i) = (b ∘ f') i
⊢ U ⊆ ⋃ (i : β), (b ∘ f') i
[PROOFSTEP]
rw [e]
[GOAL]
case mp.intro.intro.intro.intro.intro
α : Type u
β✝ : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
s t✝ : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
h₁ : IsCompact U
h₂ : IsOpen U
β : Type u
f' : β → ι
e : U = ⋃ (i : β), (b ∘ f') i
hf' : ∀ (i : β), b (f' i) = (b ∘ f') i
t : Finset β
ht : U ⊆ ⋃ (i : β) (_ : i ∈ t), (b ∘ f') i
⊢ ∃ s, Set.Finite s ∧ U = ⋃ (i : ι) (_ : i ∈ s), b i
[PROOFSTEP]
refine' ⟨t.image f', Set.Finite.intro inferInstance, le_antisymm _ _⟩
[GOAL]
case mp.intro.intro.intro.intro.intro.refine'_1
α : Type u
β✝ : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
s t✝ : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
h₁ : IsCompact U
h₂ : IsOpen U
β : Type u
f' : β → ι
e : U = ⋃ (i : β), (b ∘ f') i
hf' : ∀ (i : β), b (f' i) = (b ∘ f') i
t : Finset β
ht : U ⊆ ⋃ (i : β) (_ : i ∈ t), (b ∘ f') i
⊢ U ≤ ⋃ (i : ι) (_ : i ∈ ↑(Finset.image f' t)), b i
[PROOFSTEP]
refine' Set.Subset.trans ht _
[GOAL]
case mp.intro.intro.intro.intro.intro.refine'_1
α : Type u
β✝ : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
s t✝ : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
h₁ : IsCompact U
h₂ : IsOpen U
β : Type u
f' : β → ι
e : U = ⋃ (i : β), (b ∘ f') i
hf' : ∀ (i : β), b (f' i) = (b ∘ f') i
t : Finset β
ht : U ⊆ ⋃ (i : β) (_ : i ∈ t), (b ∘ f') i
⊢ ⋃ (i : β) (_ : i ∈ t), (b ∘ f') i ⊆ ⋃ (i : ι) (_ : i ∈ ↑(Finset.image f' t)), b i
[PROOFSTEP]
simp only [Set.iUnion_subset_iff]
[GOAL]
case mp.intro.intro.intro.intro.intro.refine'_1
α : Type u
β✝ : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
s t✝ : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
h₁ : IsCompact U
h₂ : IsOpen U
β : Type u
f' : β → ι
e : U = ⋃ (i : β), (b ∘ f') i
hf' : ∀ (i : β), b (f' i) = (b ∘ f') i
t : Finset β
ht : U ⊆ ⋃ (i : β) (_ : i ∈ t), (b ∘ f') i
⊢ ∀ (i : β), i ∈ t → (b ∘ f') i ⊆ ⋃ (i : ι) (_ : i ∈ ↑(Finset.image f' t)), b i
[PROOFSTEP]
intro i hi
[GOAL]
case mp.intro.intro.intro.intro.intro.refine'_1
α : Type u
β✝ : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
s t✝ : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
h₁ : IsCompact U
h₂ : IsOpen U
β : Type u
f' : β → ι
e : U = ⋃ (i : β), (b ∘ f') i
hf' : ∀ (i : β), b (f' i) = (b ∘ f') i
t : Finset β
ht : U ⊆ ⋃ (i : β) (_ : i ∈ t), (b ∘ f') i
i : β
hi : i ∈ t
⊢ (b ∘ f') i ⊆ ⋃ (i : ι) (_ : i ∈ ↑(Finset.image f' t)), b i
[PROOFSTEP]
erw [← Set.iUnion_subtype (fun x : ι => x ∈ t.image f') fun i => b i.1]
[GOAL]
case mp.intro.intro.intro.intro.intro.refine'_1
α : Type u
β✝ : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
s t✝ : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
h₁ : IsCompact U
h₂ : IsOpen U
β : Type u
f' : β → ι
e : U = ⋃ (i : β), (b ∘ f') i
hf' : ∀ (i : β), b (f' i) = (b ∘ f') i
t : Finset β
ht : U ⊆ ⋃ (i : β) (_ : i ∈ t), (b ∘ f') i
i : β
hi : i ∈ t
⊢ (b ∘ f') i ⊆ ⋃ (x : { x // x ∈ Finset.image f' t }), b ↑x
[PROOFSTEP]
exact Set.subset_iUnion (fun i : t.image f' => b i) ⟨_, Finset.mem_image_of_mem _ hi⟩
[GOAL]
case mp.intro.intro.intro.intro.intro.refine'_2
α : Type u
β✝ : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
s t✝ : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
h₁ : IsCompact U
h₂ : IsOpen U
β : Type u
f' : β → ι
e : U = ⋃ (i : β), (b ∘ f') i
hf' : ∀ (i : β), b (f' i) = (b ∘ f') i
t : Finset β
ht : U ⊆ ⋃ (i : β) (_ : i ∈ t), (b ∘ f') i
⊢ ⋃ (i : ι) (_ : i ∈ ↑(Finset.image f' t)), b i ≤ U
[PROOFSTEP]
apply Set.iUnion₂_subset
[GOAL]
case mp.intro.intro.intro.intro.intro.refine'_2.h
α : Type u
β✝ : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
s t✝ : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
h₁ : IsCompact U
h₂ : IsOpen U
β : Type u
f' : β → ι
e : U = ⋃ (i : β), (b ∘ f') i
hf' : ∀ (i : β), b (f' i) = (b ∘ f') i
t : Finset β
ht : U ⊆ ⋃ (i : β) (_ : i ∈ t), (b ∘ f') i
⊢ ∀ (i : ι), i ∈ ↑(Finset.image f' t) → b i ⊆ U
[PROOFSTEP]
rintro i hi
[GOAL]
case mp.intro.intro.intro.intro.intro.refine'_2.h
α : Type u
β✝ : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
s t✝ : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
h₁ : IsCompact U
h₂ : IsOpen U
β : Type u
f' : β → ι
e : U = ⋃ (i : β), (b ∘ f') i
hf' : ∀ (i : β), b (f' i) = (b ∘ f') i
t : Finset β
ht : U ⊆ ⋃ (i : β) (_ : i ∈ t), (b ∘ f') i
i : ι
hi : i ∈ ↑(Finset.image f' t)
⊢ b i ⊆ U
[PROOFSTEP]
obtain ⟨j, -, rfl⟩ := Finset.mem_image.mp hi
[GOAL]
case mp.intro.intro.intro.intro.intro.refine'_2.h.intro.intro
α : Type u
β✝ : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
s t✝ : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
h₁ : IsCompact U
h₂ : IsOpen U
β : Type u
f' : β → ι
e : U = ⋃ (i : β), (b ∘ f') i
hf' : ∀ (i : β), b (f' i) = (b ∘ f') i
t : Finset β
ht : U ⊆ ⋃ (i : β) (_ : i ∈ t), (b ∘ f') i
j : β
hi : f' j ∈ ↑(Finset.image f' t)
⊢ b (f' j) ⊆ U
[PROOFSTEP]
rw [e]
[GOAL]
case mp.intro.intro.intro.intro.intro.refine'_2.h.intro.intro
α : Type u
β✝ : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
s t✝ : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
h₁ : IsCompact U
h₂ : IsOpen U
β : Type u
f' : β → ι
e : U = ⋃ (i : β), (b ∘ f') i
hf' : ∀ (i : β), b (f' i) = (b ∘ f') i
t : Finset β
ht : U ⊆ ⋃ (i : β) (_ : i ∈ t), (b ∘ f') i
j : β
hi : f' j ∈ ↑(Finset.image f' t)
⊢ b (f' j) ⊆ ⋃ (i : β), (b ∘ f') i
[PROOFSTEP]
exact Set.subset_iUnion (b ∘ f') j
[GOAL]
case mpr
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
U : Set α
⊢ (∃ s, Set.Finite s ∧ U = ⋃ (i : ι) (_ : i ∈ s), b i) → IsCompact U ∧ IsOpen U
[PROOFSTEP]
rintro ⟨s, hs, rfl⟩
[GOAL]
case mpr.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
s : Set ι
hs : Set.Finite s
⊢ IsCompact (⋃ (i : ι) (_ : i ∈ s), b i) ∧ IsOpen (⋃ (i : ι) (_ : i ∈ s), b i)
[PROOFSTEP]
constructor
[GOAL]
case mpr.intro.intro.left
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
s : Set ι
hs : Set.Finite s
⊢ IsCompact (⋃ (i : ι) (_ : i ∈ s), b i)
[PROOFSTEP]
exact hs.isCompact_biUnion fun i _ => hb' i
[GOAL]
case mpr.intro.intro.right
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t : Set α
b : ι → Set α
hb : IsTopologicalBasis (range b)
hb' : ∀ (i : ι), IsCompact (b i)
s : Set ι
hs : Set.Finite s
⊢ IsOpen (⋃ (i : ι) (_ : i ∈ s), b i)
[PROOFSTEP]
exact isOpen_biUnion fun i _ => hb.isOpen (Set.mem_range_self _)
[GOAL]
α✝ : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α✝
inst✝² : TopologicalSpace β
s t : Set α✝
α : Type u_3
inst✝¹ : TopologicalSpace α
inst✝ : DiscreteTopology α
⊢ cocompact α = cofinite
[PROOFSTEP]
simp only [cocompact, hasBasis_cofinite.eq_biInf, isCompact_iff_finite]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : α → β
b : β
hf : Tendsto f (cocompact α) (𝓝 b)
hfc : Continuous f
⊢ IsCompact (insert b (range f))
[PROOFSTEP]
intro l hne hle
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : α → β
b : β
hf : Tendsto f (cocompact α) (𝓝 b)
hfc : Continuous f
l : Filter β
hne : NeBot l
hle : l ≤ 𝓟 (insert b (range f))
⊢ ∃ a, a ∈ insert b (range f) ∧ ClusterPt a l
[PROOFSTEP]
by_cases hb : ClusterPt b l
[GOAL]
case pos
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : α → β
b : β
hf : Tendsto f (cocompact α) (𝓝 b)
hfc : Continuous f
l : Filter β
hne : NeBot l
hle : l ≤ 𝓟 (insert b (range f))
hb : ClusterPt b l
⊢ ∃ a, a ∈ insert b (range f) ∧ ClusterPt a l
[PROOFSTEP]
exact ⟨b, Or.inl rfl, hb⟩
[GOAL]
case neg
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : α → β
b : β
hf : Tendsto f (cocompact α) (𝓝 b)
hfc : Continuous f
l : Filter β
hne : NeBot l
hle : l ≤ 𝓟 (insert b (range f))
hb : ¬ClusterPt b l
⊢ ∃ a, a ∈ insert b (range f) ∧ ClusterPt a l
[PROOFSTEP]
simp only [clusterPt_iff, not_forall, ← not_disjoint_iff_nonempty_inter, not_not] at hb 
[GOAL]
case neg
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : α → β
b : β
hf : Tendsto f (cocompact α) (𝓝 b)
hfc : Continuous f
l : Filter β
hne : NeBot l
hle : l ≤ 𝓟 (insert b (range f))
hb : ∃ x h x_1 h, Disjoint x x_1
⊢ ∃ a, a ∈ insert b (range f) ∧ ClusterPt a l
[PROOFSTEP]
rcases hb with ⟨s, hsb, t, htl, hd⟩
[GOAL]
case neg.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ : Set α
f : α → β
b : β
hf : Tendsto f (cocompact α) (𝓝 b)
hfc : Continuous f
l : Filter β
hne : NeBot l
hle : l ≤ 𝓟 (insert b (range f))
s : Set β
hsb : s ∈ 𝓝 b
t : Set β
htl : t ∈ l
hd : Disjoint s t
⊢ ∃ a, a ∈ insert b (range f) ∧ ClusterPt a l
[PROOFSTEP]
rcases mem_cocompact.1 (hf hsb) with ⟨K, hKc, hKs⟩
[GOAL]
case neg.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ : Set α
f : α → β
b : β
hf : Tendsto f (cocompact α) (𝓝 b)
hfc : Continuous f
l : Filter β
hne : NeBot l
hle : l ≤ 𝓟 (insert b (range f))
s : Set β
hsb : s ∈ 𝓝 b
t : Set β
htl : t ∈ l
hd : Disjoint s t
K : Set α
hKc : IsCompact K
hKs : Kᶜ ⊆ f ⁻¹' s
⊢ ∃ a, a ∈ insert b (range f) ∧ ClusterPt a l
[PROOFSTEP]
have : f '' K ∈ l := by
  filter_upwards [htl, le_principal_iff.1 hle] with y hyt hyf
  rcases hyf with (rfl | ⟨x, rfl⟩)
  exacts [(hd.le_bot ⟨mem_of_mem_nhds hsb, hyt⟩).elim,
    mem_image_of_mem _ (not_not.1 fun hxK => hd.le_bot ⟨hKs hxK, hyt⟩)]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ : Set α
f : α → β
b : β
hf : Tendsto f (cocompact α) (𝓝 b)
hfc : Continuous f
l : Filter β
hne : NeBot l
hle : l ≤ 𝓟 (insert b (range f))
s : Set β
hsb : s ∈ 𝓝 b
t : Set β
htl : t ∈ l
hd : Disjoint s t
K : Set α
hKc : IsCompact K
hKs : Kᶜ ⊆ f ⁻¹' s
⊢ f '' K ∈ l
[PROOFSTEP]
filter_upwards [htl, le_principal_iff.1 hle] with y hyt hyf
[GOAL]
case h
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ : Set α
f : α → β
b : β
hf : Tendsto f (cocompact α) (𝓝 b)
hfc : Continuous f
l : Filter β
hne : NeBot l
hle : l ≤ 𝓟 (insert b (range f))
s : Set β
hsb : s ∈ 𝓝 b
t : Set β
htl : t ∈ l
hd : Disjoint s t
K : Set α
hKc : IsCompact K
hKs : Kᶜ ⊆ f ⁻¹' s
y : β
hyt : y ∈ t
hyf : y ∈ insert b (range f)
⊢ y ∈ f '' K
[PROOFSTEP]
rcases hyf with (rfl | ⟨x, rfl⟩)
[GOAL]
case h.inl
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ : Set α
f : α → β
hfc : Continuous f
l : Filter β
hne : NeBot l
s t : Set β
htl : t ∈ l
hd : Disjoint s t
K : Set α
hKc : IsCompact K
hKs : Kᶜ ⊆ f ⁻¹' s
y : β
hyt : y ∈ t
hf : Tendsto f (cocompact α) (𝓝 y)
hle : l ≤ 𝓟 (insert y (range f))
hsb : s ∈ 𝓝 y
⊢ y ∈ f '' K
case h.inr.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ : Set α
f : α → β
b : β
hf : Tendsto f (cocompact α) (𝓝 b)
hfc : Continuous f
l : Filter β
hne : NeBot l
hle : l ≤ 𝓟 (insert b (range f))
s : Set β
hsb : s ∈ 𝓝 b
t : Set β
htl : t ∈ l
hd : Disjoint s t
K : Set α
hKc : IsCompact K
hKs : Kᶜ ⊆ f ⁻¹' s
x : α
hyt : f x ∈ t
⊢ f x ∈ f '' K
[PROOFSTEP]
exacts [(hd.le_bot ⟨mem_of_mem_nhds hsb, hyt⟩).elim, mem_image_of_mem _ (not_not.1 fun hxK => hd.le_bot ⟨hKs hxK, hyt⟩)]
[GOAL]
case neg.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ : Set α
f : α → β
b : β
hf : Tendsto f (cocompact α) (𝓝 b)
hfc : Continuous f
l : Filter β
hne : NeBot l
hle : l ≤ 𝓟 (insert b (range f))
s : Set β
hsb : s ∈ 𝓝 b
t : Set β
htl : t ∈ l
hd : Disjoint s t
K : Set α
hKc : IsCompact K
hKs : Kᶜ ⊆ f ⁻¹' s
this : f '' K ∈ l
⊢ ∃ a, a ∈ insert b (range f) ∧ ClusterPt a l
[PROOFSTEP]
rcases hKc.image hfc (le_principal_iff.2 this) with ⟨y, hy, hyl⟩
[GOAL]
case neg.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ : Set α
f : α → β
b : β
hf : Tendsto f (cocompact α) (𝓝 b)
hfc : Continuous f
l : Filter β
hne : NeBot l
hle : l ≤ 𝓟 (insert b (range f))
s : Set β
hsb : s ∈ 𝓝 b
t : Set β
htl : t ∈ l
hd : Disjoint s t
K : Set α
hKc : IsCompact K
hKs : Kᶜ ⊆ f ⁻¹' s
this : f '' K ∈ l
y : β
hy : y ∈ f '' K
hyl : ClusterPt y l
⊢ ∃ a, a ∈ insert b (range f) ∧ ClusterPt a l
[PROOFSTEP]
exact ⟨y, Or.inr <| image_subset_range _ _ hy, hyl⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : ι → α
a : α
hf : Tendsto f cofinite (𝓝 a)
⊢ IsCompact (insert a (range f))
[PROOFSTEP]
letI : TopologicalSpace ι := ⊥
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : ι → α
a : α
hf : Tendsto f cofinite (𝓝 a)
this : TopologicalSpace ι := ⊥
⊢ IsCompact (insert a (range f))
[PROOFSTEP]
haveI h : DiscreteTopology ι := ⟨rfl⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : ι → α
a : α
hf : Tendsto f cofinite (𝓝 a)
this : TopologicalSpace ι := ⊥
h : DiscreteTopology ι
⊢ IsCompact (insert a (range f))
[PROOFSTEP]
rw [← cocompact_eq_cofinite ι] at hf 
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : ι → α
a : α
this : TopologicalSpace ι := ⊥
hf : Tendsto f (cocompact ι) (𝓝 a)
h : DiscreteTopology ι
⊢ IsCompact (insert a (range f))
[PROOFSTEP]
exact hf.isCompact_insert_range_of_cocompact continuous_of_discreteTopology
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
⊢ HasBasis (coclosedCompact α) (fun s => IsClosed s ∧ IsCompact s) compl
[PROOFSTEP]
simp only [Filter.coclosedCompact, iInf_and']
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
⊢ HasBasis (⨅ (s : Set α) (_ : IsClosed s ∧ IsCompact s), 𝓟 sᶜ) (fun s => IsClosed s ∧ IsCompact s) compl
[PROOFSTEP]
refine' hasBasis_biInf_principal' _ ⟨∅, isClosed_empty, isCompact_empty⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
⊢ ∀ (i : Set α),
    IsClosed i ∧ IsCompact i →
      ∀ (j : Set α), IsClosed j ∧ IsCompact j → ∃ k, (IsClosed k ∧ IsCompact k) ∧ kᶜ ⊆ iᶜ ∧ kᶜ ⊆ jᶜ
[PROOFSTEP]
rintro s ⟨hs₁, hs₂⟩ t ⟨ht₁, ht₂⟩
[GOAL]
case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ s : Set α
hs₁ : IsClosed s
hs₂ : IsCompact s
t : Set α
ht₁ : IsClosed t
ht₂ : IsCompact t
⊢ ∃ k, (IsClosed k ∧ IsCompact k) ∧ kᶜ ⊆ sᶜ ∧ kᶜ ⊆ tᶜ
[PROOFSTEP]
exact
  ⟨s ∪ t,
    ⟨⟨hs₁.union ht₁, hs₂.union ht₂⟩, compl_subset_compl.2 (subset_union_left _ _),
      compl_subset_compl.2 (subset_union_right _ _)⟩⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
⊢ s ∈ coclosedCompact α ↔ ∃ t, IsClosed t ∧ IsCompact t ∧ tᶜ ⊆ s
[PROOFSTEP]
simp only [hasBasis_coclosedCompact.mem_iff, and_assoc]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
⊢ s ∈ coclosedCompact α ↔ ∃ t, IsClosed t ∧ IsCompact t ∧ sᶜ ⊆ t
[PROOFSTEP]
simp only [mem_coclosedCompact, compl_subset_comm]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
⊢ IsBounded s ↔ ∃ t, IsCompact t ∧ s ⊆ t
[PROOFSTEP]
change sᶜ ∈ Filter.cocompact α ↔ _
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
⊢ sᶜ ∈ cocompact α ↔ ∃ t, IsCompact t ∧ s ⊆ t
[PROOFSTEP]
rw [Filter.mem_cocompact]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
⊢ (∃ t, IsCompact t ∧ tᶜ ⊆ sᶜ) ↔ ∃ t, IsCompact t ∧ s ⊆ t
[PROOFSTEP]
simp
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ s : Set α
t : Set β
H : NhdsContainBoxes s t
n : Set (β × α)
hn : IsOpen n
hp : t ×ˢ s ⊆ n
⊢ s ×ˢ t ⊆ Prod.swap ⁻¹' n
[PROOFSTEP]
rwa [← image_subset_iff, image_swap_prod]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ s : Set α
t : Set β
H : NhdsContainBoxes s t
n : Set (β × α)
hn : IsOpen n
hp : t ×ˢ s ⊆ n
u : Set α
v : Set β
uo : IsOpen u
vo : IsOpen v
su : s ⊆ u
tv : t ⊆ v
p : u ×ˢ v ⊆ Prod.swap ⁻¹' n
⊢ v ×ˢ u ⊆ n
[PROOFSTEP]
rwa [← image_subset_iff, image_swap_prod] at p 
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
x : α
y : β
n : Set (α × β)
hn : IsOpen n
hp : {x} ×ˢ {y} ⊆ n
⊢ (x, y) ∈ {x} ×ˢ {y}
[PROOFSTEP]
simp
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
x : α
y : β
n : Set (α × β)
hn : IsOpen n
hp : {x} ×ˢ {y} ⊆ n
u : Set α
v : Set β
uo : IsOpen u
vo : IsOpen v
xu : x ∈ u
yv : y ∈ v
hp' : u ×ˢ v ⊆ n
⊢ {x} ⊆ u
[PROOFSTEP]
simpa
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
x : α
y : β
n : Set (α × β)
hn : IsOpen n
hp : {x} ×ˢ {y} ⊆ n
u : Set α
v : Set β
uo : IsOpen u
vo : IsOpen v
xu : x ∈ u
yv : y ∈ v
hp' : u ×ˢ v ⊆ n
⊢ {y} ⊆ v
[PROOFSTEP]
simpa
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ s : Set α
hs : IsCompact s
t : Set β
H : ∀ (x : α), x ∈ s → NhdsContainBoxes {x} t
n : Set (α × β)
hn : IsOpen n
hp : s ×ˢ t ⊆ n
x✝ : ↑s
x : α
hx : x ∈ s
⊢ {x} ⊆ s
[PROOFSTEP]
simpa
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ s : Set α
hs : IsCompact s
t : Set β
H : ∀ (x : α), x ∈ s → NhdsContainBoxes {x} t
n : Set (α × β)
hn : IsOpen n
hp : s ×ˢ t ⊆ n
this : ∀ (x : ↑s), ∃ uv, IsOpen uv.fst ∧ IsOpen uv.snd ∧ {↑x} ⊆ uv.fst ∧ t ⊆ uv.snd ∧ uv.fst ×ˢ uv.snd ⊆ n
uvs : ↑s → Set α × Set β
h :
  ∀ (x : ↑s),
    IsOpen (uvs x).fst ∧ IsOpen (uvs x).snd ∧ {↑x} ⊆ (uvs x).fst ∧ t ⊆ (uvs x).snd ∧ (uvs x).fst ×ˢ (uvs x).snd ⊆ n
x : α
hx : x ∈ s
⊢ x ∈ (uvs { val := x, property := hx }).fst
[PROOFSTEP]
simpa using (h ⟨x, hx⟩).2.2.1
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ s : Set α
hs : IsCompact s
t : Set β
H : ∀ (x : α), x ∈ s → NhdsContainBoxes {x} t
n : Set (α × β)
hn : IsOpen n
hp : s ×ˢ t ⊆ n
this✝² : ∀ (x : ↑s), ∃ uv, IsOpen uv.fst ∧ IsOpen uv.snd ∧ {↑x} ⊆ uv.fst ∧ t ⊆ uv.snd ∧ uv.fst ×ˢ uv.snd ⊆ n
uvs : ↑s → Set α × Set β
h :
  ∀ (x : ↑s),
    IsOpen (uvs x).fst ∧ IsOpen (uvs x).snd ∧ {↑x} ⊆ (uvs x).fst ∧ t ⊆ (uvs x).snd ∧ (uvs x).fst ×ˢ (uvs x).snd ⊆ n
us_cover : s ⊆ ⋃ (i : ↑s), (uvs i).fst
s0 : Finset ↑s
s0_cover : s ⊆ ⋃ (i : ↑s) (_ : i ∈ s0), (uvs i).fst
u : Set α := ⋃ (i : ↑s) (_ : i ∈ s0), (uvs i).fst
v : Set β := ⋂ (i : ↑s) (_ : i ∈ s0), (uvs i).snd
this✝¹ : IsOpen u
this✝ : IsOpen v
this : t ⊆ v
x✝¹ : α × β
x' : α
y' : β
x✝ : (x', y') ∈ u ×ˢ v
hx' : (x', y').fst ∈ u
hy' : (x', y').snd ∈ v
⊢ ∃ i, i ∈ s0 ∧ x' ∈ (uvs i).fst
[PROOFSTEP]
simpa using hx'
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
inst✝¹ : CompactSpace α
f : Filter α
inst✝ : NeBot f
⊢ ∃ x, ClusterPt x f
[PROOFSTEP]
simpa using isCompact_univ (show f ≤ 𝓟 univ by simp)
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
inst✝¹ : CompactSpace α
f : Filter α
inst✝ : NeBot f
⊢ f ≤ 𝓟 univ
[PROOFSTEP]
simp
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
U : α → Set α
hU : ∀ (x : α), U x ∈ 𝓝 x
⊢ ∃ t, ⋃ (x : α) (_ : x ∈ t), U x = ⊤
[PROOFSTEP]
obtain ⟨t, -, s⟩ := IsCompact.elim_nhds_subcover isCompact_univ U fun x _ => hU x
[GOAL]
case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t✝ : Set α
inst✝ : CompactSpace α
U : α → Set α
hU : ∀ (x : α), U x ∈ 𝓝 x
t : Finset α
s : univ ⊆ ⋃ (x : α) (_ : x ∈ t), U x
⊢ ∃ t, ⋃ (x : α) (_ : x ∈ t), U x = ⊤
[PROOFSTEP]
exact ⟨t, top_unique s⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
h :
  ∀ {ι : Type u} (Z : ι → Set α), (∀ (i : ι), IsClosed (Z i)) → ⋂ (i : ι), Z i = ∅ → ∃ t, ⋂ (i : ι) (_ : i ∈ t), Z i = ∅
ι✝ : Type u
Z : ι✝ → Set α
⊢ (∀ (i : ι✝), IsClosed (Z i)) → univ ∩ ⋂ (i : ι✝), Z i = ∅ → ∃ t, univ ∩ ⋂ (i : ι✝) (_ : i ∈ t), Z i = ∅
[PROOFSTEP]
simpa using h Z
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : NoncompactSpace α
⊢ NeBot (cocompact α)
[PROOFSTEP]
refine' Filter.hasBasis_cocompact.neBot_iff.2 fun hs => _
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : NoncompactSpace α
i✝ : Set α
hs : IsCompact i✝
⊢ Set.Nonempty i✝ᶜ
[PROOFSTEP]
contrapose hs
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : NoncompactSpace α
i✝ : Set α
hs : ¬Set.Nonempty i✝ᶜ
⊢ ¬IsCompact i✝
[PROOFSTEP]
rw [not_nonempty_iff_eq_empty, compl_empty_iff] at hs 
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : NoncompactSpace α
i✝ : Set α
hs : i✝ = univ
⊢ ¬IsCompact i✝
[PROOFSTEP]
rw [hs]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : NoncompactSpace α
i✝ : Set α
hs : i✝ = univ
⊢ ¬IsCompact univ
[PROOFSTEP]
exact noncompact_univ α
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
⊢ NeBot (cocompact ℤ)
[PROOFSTEP]
simp only [Filter.cocompact_eq_cofinite, Filter.cofinite_neBot]
  -- Note: We can't make this into an instance because it loops with `Finite.compactSpace`.
[GOAL]
α✝ : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α✝
inst✝³ : TopologicalSpace β
s t : Set α✝
α : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : CompactSpace α
inst✝ : Infinite α
⊢ ∃ z, NeBot (𝓝[{z}ᶜ] z)
[PROOFSTEP]
by_contra' H
[GOAL]
α✝ : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α✝
inst✝³ : TopologicalSpace β
s t : Set α✝
α : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : CompactSpace α
inst✝ : Infinite α
H : ∀ (z : α), ¬NeBot (𝓝[{z}ᶜ] z)
⊢ False
[PROOFSTEP]
simp_rw [not_neBot] at H 
[GOAL]
α✝ : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α✝
inst✝³ : TopologicalSpace β
s t : Set α✝
α : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : CompactSpace α
inst✝ : Infinite α
H : ∀ (z : α), 𝓝[{z}ᶜ] z = ⊥
⊢ False
[PROOFSTEP]
haveI := discreteTopology_iff_nhds_ne.2 H
[GOAL]
α✝ : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α✝
inst✝³ : TopologicalSpace β
s t : Set α✝
α : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : CompactSpace α
inst✝ : Infinite α
H : ∀ (z : α), 𝓝[{z}ᶜ] z = ⊥
this : DiscreteTopology α
⊢ False
[PROOFSTEP]
exact Infinite.not_finite (finite_of_compact_of_discrete : Finite α)
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
ι : Type u_3
inst✝ : CompactSpace α
f : ι → Set α
hf : LocallyFinite f
⊢ Set.Finite {i | Set.Nonempty (f i)}
[PROOFSTEP]
simpa only [inter_univ] using hf.finite_nonempty_inter_compact isCompact_univ
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
ι : Type u_3
inst✝ : CompactSpace α
f : ι → Set α
hf : LocallyFinite f
hne : ∀ (i : ι), Set.Nonempty (f i)
⊢ Set.Finite univ
[PROOFSTEP]
simpa only [hne] using hf.finite_nonempty_of_compact
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : α → β
hf : Continuous f
⊢ comap f (cocompact β) ≤ cocompact α
[PROOFSTEP]
rw [(Filter.hasBasis_cocompact.comap f).le_basis_iff Filter.hasBasis_cocompact]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : α → β
hf : Continuous f
⊢ ∀ (i' : Set α), IsCompact i' → ∃ i, IsCompact i ∧ f ⁻¹' iᶜ ⊆ i'ᶜ
[PROOFSTEP]
intro t ht
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
f : α → β
hf : Continuous f
t : Set α
ht : IsCompact t
⊢ ∃ i, IsCompact i ∧ f ⁻¹' iᶜ ⊆ tᶜ
[PROOFSTEP]
refine' ⟨f '' t, ht.image hf, _⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
f : α → β
hf : Continuous f
t : Set α
ht : IsCompact t
⊢ f ⁻¹' (f '' t)ᶜ ⊆ tᶜ
[PROOFSTEP]
simpa using t.subset_preimage_image f
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
f : α → β
hf : Continuous f
⊢ IsCompact (range f)
[PROOFSTEP]
rw [← image_univ]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
f : α → β
hf : Continuous f
⊢ IsCompact (f '' univ)
[PROOFSTEP]
exact isCompact_univ.image hf
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t : Set α
X : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : CompactSpace X
Y : Type u_4
inst✝ : TopologicalSpace Y
s : Set (X × Y)
hs : IsClosed s
⊢ IsClosed (Prod.snd '' s)
[PROOFSTEP]
rw [← isOpen_compl_iff, isOpen_iff_mem_nhds]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t : Set α
X : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : CompactSpace X
Y : Type u_4
inst✝ : TopologicalSpace Y
s : Set (X × Y)
hs : IsClosed s
⊢ ∀ (a : Y), a ∈ (Prod.snd '' s)ᶜ → (Prod.snd '' s)ᶜ ∈ 𝓝 a
[PROOFSTEP]
intro y hy
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t : Set α
X : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : CompactSpace X
Y : Type u_4
inst✝ : TopologicalSpace Y
s : Set (X × Y)
hs : IsClosed s
y : Y
hy : y ∈ (Prod.snd '' s)ᶜ
⊢ (Prod.snd '' s)ᶜ ∈ 𝓝 y
[PROOFSTEP]
have : univ ×ˢ { y } ⊆ sᶜ
[GOAL]
case this
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t : Set α
X : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : CompactSpace X
Y : Type u_4
inst✝ : TopologicalSpace Y
s : Set (X × Y)
hs : IsClosed s
y : Y
hy : y ∈ (Prod.snd '' s)ᶜ
⊢ univ ×ˢ {y} ⊆ sᶜ
[PROOFSTEP]
exact fun (x, y') ⟨_, rfl⟩ hs => hy ⟨(x, y'), hs, rfl⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t : Set α
X : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : CompactSpace X
Y : Type u_4
inst✝ : TopologicalSpace Y
s : Set (X × Y)
hs : IsClosed s
y : Y
hy : y ∈ (Prod.snd '' s)ᶜ
this : univ ×ˢ {y} ⊆ sᶜ
⊢ (Prod.snd '' s)ᶜ ∈ 𝓝 y
[PROOFSTEP]
rcases generalized_tube_lemma isCompact_univ isCompact_singleton hs.isOpen_compl this with ⟨U, V, -, hVo, hU, hV, hs⟩
[GOAL]
case intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t : Set α
X : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : CompactSpace X
Y : Type u_4
inst✝ : TopologicalSpace Y
s : Set (X × Y)
hs✝ : IsClosed s
y : Y
hy : y ∈ (Prod.snd '' s)ᶜ
this : univ ×ˢ {y} ⊆ sᶜ
U : Set X
V : Set Y
hVo : IsOpen V
hU : univ ⊆ U
hV : {y} ⊆ V
hs : U ×ˢ V ⊆ sᶜ
⊢ (Prod.snd '' s)ᶜ ∈ 𝓝 y
[PROOFSTEP]
refine mem_nhds_iff.2 ⟨V, ?_, hVo, hV rfl⟩
[GOAL]
case intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t : Set α
X : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : CompactSpace X
Y : Type u_4
inst✝ : TopologicalSpace Y
s : Set (X × Y)
hs✝ : IsClosed s
y : Y
hy : y ∈ (Prod.snd '' s)ᶜ
this : univ ×ˢ {y} ⊆ sᶜ
U : Set X
V : Set Y
hVo : IsOpen V
hU : univ ⊆ U
hV : {y} ⊆ V
hs : U ×ˢ V ⊆ sᶜ
⊢ V ⊆ (Prod.snd '' s)ᶜ
[PROOFSTEP]
rintro _ hzV ⟨z, hzs, rfl⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t : Set α
X : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : CompactSpace X
Y : Type u_4
inst✝ : TopologicalSpace Y
s : Set (X × Y)
hs✝ : IsClosed s
y : Y
hy : y ∈ (Prod.snd '' s)ᶜ
this : univ ×ˢ {y} ⊆ sᶜ
U : Set X
V : Set Y
hVo : IsOpen V
hU : univ ⊆ U
hV : {y} ⊆ V
hs : U ×ˢ V ⊆ sᶜ
z : X × Y
hzs : z ∈ s
hzV : z.snd ∈ V
⊢ False
[PROOFSTEP]
exact hs ⟨hU trivial, hzV⟩ hzs
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t : Set α
f : α → β
hf : Inducing f
s : Set α
⊢ IsCompact (f '' s) ↔ IsCompact s
[PROOFSTEP]
refine ⟨fun hs F F_ne_bot F_le => ?_, fun hs => hs.image hf.continuous⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t : Set α
f : α → β
hf : Inducing f
s : Set α
hs : IsCompact (f '' s)
F : Filter α
F_ne_bot : NeBot F
F_le : F ≤ 𝓟 s
⊢ ∃ a, a ∈ s ∧ ClusterPt a F
[PROOFSTEP]
obtain ⟨_, ⟨x, x_in : x ∈ s, rfl⟩, hx : ClusterPt (f x) (map f F)⟩ := hs ((map_mono F_le).trans_eq map_principal)
[GOAL]
case intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t : Set α
f : α → β
hf : Inducing f
s : Set α
hs : IsCompact (f '' s)
F : Filter α
F_ne_bot : NeBot F
F_le : F ≤ 𝓟 s
x : α
x_in : x ∈ s
hx : ClusterPt (f x) (map f F)
⊢ ∃ a, a ∈ s ∧ ClusterPt a F
[PROOFSTEP]
exact ⟨x, x_in, hf.mapClusterPt_iff.1 hx⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : α → β
hf : ClosedEmbedding f
K : Set β
hK : IsCompact K
⊢ IsCompact (f ⁻¹' K)
[PROOFSTEP]
replace hK := hK.inter_right hf.closed_range
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
f : α → β
hf : ClosedEmbedding f
K : Set β
hK : IsCompact (K ∩ range f)
⊢ IsCompact (f ⁻¹' K)
[PROOFSTEP]
rwa [← hf.toInducing.isCompact_iff, image_preimage_eq_inter_range]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
⊢ IsCompact s ↔ IsCompact univ
[PROOFSTEP]
rw [isCompact_iff_isCompact_in_subtype, image_univ, Subtype.range_coe]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
hs : IsCompact s
hs' : Set.Infinite s
⊢ ∃ z, z ∈ s ∧ NeBot (𝓝[{z}ᶜ] z ⊓ 𝓟 s)
[PROOFSTEP]
by_contra' H
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
hs : IsCompact s
hs' : Set.Infinite s
H : ∀ (z : α), z ∈ s → ¬NeBot (𝓝[{z}ᶜ] z ⊓ 𝓟 s)
⊢ False
[PROOFSTEP]
simp_rw [not_neBot] at H 
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
hs : IsCompact s
hs' : Set.Infinite s
H : ∀ (z : α), z ∈ s → 𝓝[{z}ᶜ] z ⊓ 𝓟 s = ⊥
⊢ False
[PROOFSTEP]
exact hs' (hs.finite <| discreteTopology_subtype_iff.mpr H)
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
h : CompactSpace β
f : α → β
hf : ClosedEmbedding f
⊢ IsCompact univ
[PROOFSTEP]
rw [← hf.toInducing.isCompact_iff, image_univ]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
h : CompactSpace β
f : α → β
hf : ClosedEmbedding f
⊢ IsCompact (range f)
[PROOFSTEP]
exact hf.closed_range.isCompact
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ s : Set α
t : Set β
hs : IsCompact s
ht : IsCompact t
⊢ IsCompact (s ×ˢ t)
[PROOFSTEP]
rw [isCompact_iff_ultrafilter_le_nhds] at hs ht ⊢
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ s : Set α
t : Set β
hs : ∀ (f : Ultrafilter α), ↑f ≤ 𝓟 s → ∃ a, a ∈ s ∧ ↑f ≤ 𝓝 a
ht : ∀ (f : Ultrafilter β), ↑f ≤ 𝓟 t → ∃ a, a ∈ t ∧ ↑f ≤ 𝓝 a
⊢ ∀ (f : Ultrafilter (α × β)), ↑f ≤ 𝓟 (s ×ˢ t) → ∃ a, a ∈ s ×ˢ t ∧ ↑f ≤ 𝓝 a
[PROOFSTEP]
intro f hfs
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ s : Set α
t : Set β
hs : ∀ (f : Ultrafilter α), ↑f ≤ 𝓟 s → ∃ a, a ∈ s ∧ ↑f ≤ 𝓝 a
ht : ∀ (f : Ultrafilter β), ↑f ≤ 𝓟 t → ∃ a, a ∈ t ∧ ↑f ≤ 𝓝 a
f : Ultrafilter (α × β)
hfs : ↑f ≤ 𝓟 (s ×ˢ t)
⊢ ∃ a, a ∈ s ×ˢ t ∧ ↑f ≤ 𝓝 a
[PROOFSTEP]
rw [le_principal_iff] at hfs 
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ s : Set α
t : Set β
hs : ∀ (f : Ultrafilter α), ↑f ≤ 𝓟 s → ∃ a, a ∈ s ∧ ↑f ≤ 𝓝 a
ht : ∀ (f : Ultrafilter β), ↑f ≤ 𝓟 t → ∃ a, a ∈ t ∧ ↑f ≤ 𝓝 a
f : Ultrafilter (α × β)
hfs : s ×ˢ t ∈ ↑f
⊢ ∃ a, a ∈ s ×ˢ t ∧ ↑f ≤ 𝓝 a
[PROOFSTEP]
obtain ⟨a : α, sa : a ∈ s, ha : map Prod.fst f.1 ≤ 𝓝 a⟩ :=
  hs (f.map Prod.fst) (le_principal_iff.2 <| mem_map.2 <| mem_of_superset hfs fun x => And.left)
[GOAL]
case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ s : Set α
t : Set β
hs : ∀ (f : Ultrafilter α), ↑f ≤ 𝓟 s → ∃ a, a ∈ s ∧ ↑f ≤ 𝓝 a
ht : ∀ (f : Ultrafilter β), ↑f ≤ 𝓟 t → ∃ a, a ∈ t ∧ ↑f ≤ 𝓝 a
f : Ultrafilter (α × β)
hfs : s ×ˢ t ∈ ↑f
a : α
sa : a ∈ s
ha : map Prod.fst ↑f ≤ 𝓝 a
⊢ ∃ a, a ∈ s ×ˢ t ∧ ↑f ≤ 𝓝 a
[PROOFSTEP]
obtain ⟨b : β, tb : b ∈ t, hb : map Prod.snd f.1 ≤ 𝓝 b⟩ :=
  ht (f.map Prod.snd) (le_principal_iff.2 <| mem_map.2 <| mem_of_superset hfs fun x => And.right)
[GOAL]
case intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ s : Set α
t : Set β
hs : ∀ (f : Ultrafilter α), ↑f ≤ 𝓟 s → ∃ a, a ∈ s ∧ ↑f ≤ 𝓝 a
ht : ∀ (f : Ultrafilter β), ↑f ≤ 𝓟 t → ∃ a, a ∈ t ∧ ↑f ≤ 𝓝 a
f : Ultrafilter (α × β)
hfs : s ×ˢ t ∈ ↑f
a : α
sa : a ∈ s
ha : map Prod.fst ↑f ≤ 𝓝 a
b : β
tb : b ∈ t
hb : map Prod.snd ↑f ≤ 𝓝 b
⊢ ∃ a, a ∈ s ×ˢ t ∧ ↑f ≤ 𝓝 a
[PROOFSTEP]
rw [map_le_iff_le_comap] at ha hb 
[GOAL]
case intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ s : Set α
t : Set β
hs : ∀ (f : Ultrafilter α), ↑f ≤ 𝓟 s → ∃ a, a ∈ s ∧ ↑f ≤ 𝓝 a
ht : ∀ (f : Ultrafilter β), ↑f ≤ 𝓟 t → ∃ a, a ∈ t ∧ ↑f ≤ 𝓝 a
f : Ultrafilter (α × β)
hfs : s ×ˢ t ∈ ↑f
a : α
sa : a ∈ s
ha : ↑f ≤ comap Prod.fst (𝓝 a)
b : β
tb : b ∈ t
hb : ↑f ≤ comap Prod.snd (𝓝 b)
⊢ ∃ a, a ∈ s ×ˢ t ∧ ↑f ≤ 𝓝 a
[PROOFSTEP]
refine' ⟨⟨a, b⟩, ⟨sa, tb⟩, _⟩
[GOAL]
case intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ s : Set α
t : Set β
hs : ∀ (f : Ultrafilter α), ↑f ≤ 𝓟 s → ∃ a, a ∈ s ∧ ↑f ≤ 𝓝 a
ht : ∀ (f : Ultrafilter β), ↑f ≤ 𝓟 t → ∃ a, a ∈ t ∧ ↑f ≤ 𝓝 a
f : Ultrafilter (α × β)
hfs : s ×ˢ t ∈ ↑f
a : α
sa : a ∈ s
ha : ↑f ≤ comap Prod.fst (𝓝 a)
b : β
tb : b ∈ t
hb : ↑f ≤ comap Prod.snd (𝓝 b)
⊢ ↑f ≤ 𝓝 (a, b)
[PROOFSTEP]
rw [nhds_prod_eq]
[GOAL]
case intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ s : Set α
t : Set β
hs : ∀ (f : Ultrafilter α), ↑f ≤ 𝓟 s → ∃ a, a ∈ s ∧ ↑f ≤ 𝓝 a
ht : ∀ (f : Ultrafilter β), ↑f ≤ 𝓟 t → ∃ a, a ∈ t ∧ ↑f ≤ 𝓝 a
f : Ultrafilter (α × β)
hfs : s ×ˢ t ∈ ↑f
a : α
sa : a ∈ s
ha : ↑f ≤ comap Prod.fst (𝓝 a)
b : β
tb : b ∈ t
hb : ↑f ≤ comap Prod.snd (𝓝 b)
⊢ ↑f ≤ 𝓝 a ×ˢ 𝓝 b
[PROOFSTEP]
exact le_inf ha hb
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
inst✝¹ : CompactSpace α
inst✝ : CompactSpace β
⊢ IsCompact univ
[PROOFSTEP]
rw [← univ_prod_univ]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
inst✝¹ : CompactSpace α
inst✝ : CompactSpace β
⊢ IsCompact (univ ×ˢ univ)
[PROOFSTEP]
exact isCompact_univ.prod isCompact_univ
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
inst✝¹ : CompactSpace α
inst✝ : CompactSpace β
⊢ IsCompact univ
[PROOFSTEP]
rw [← range_inl_union_range_inr]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
inst✝¹ : CompactSpace α
inst✝ : CompactSpace β
⊢ IsCompact (range Sum.inl ∪ range Sum.inr)
[PROOFSTEP]
exact (isCompact_range continuous_inl).union (isCompact_range continuous_inr)
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s t : Set α
inst✝² : Finite ι
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), CompactSpace (π i)
⊢ CompactSpace ((i : ι) × π i)
[PROOFSTEP]
refine' ⟨_⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s t : Set α
inst✝² : Finite ι
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), CompactSpace (π i)
⊢ IsCompact univ
[PROOFSTEP]
rw [Sigma.univ]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s t : Set α
inst✝² : Finite ι
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), CompactSpace (π i)
⊢ IsCompact (⋃ (a : ι), range (Sigma.mk a))
[PROOFSTEP]
exact isCompact_iUnion fun i => isCompact_range continuous_sigmaMk
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
⊢ Filter.coprod (cocompact α) (cocompact β) = cocompact (α × β)
[PROOFSTEP]
ext S
[GOAL]
case a
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
S : Set (α × β)
⊢ S ∈ Filter.coprod (cocompact α) (cocompact β) ↔ S ∈ cocompact (α × β)
[PROOFSTEP]
simp only [mem_coprod_iff, exists_prop, mem_comap, Filter.mem_cocompact]
[GOAL]
case a
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
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
[PROOFSTEP]
constructor
[GOAL]
case a.mp
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
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
[PROOFSTEP]
rintro ⟨⟨A, ⟨t, ht, hAt⟩, hAS⟩, B, ⟨t', ht', hBt'⟩, hBS⟩
[GOAL]
case a.mp.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
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
[PROOFSTEP]
refine' ⟨t ×ˢ t', ht.prod ht', _⟩
[GOAL]
case a.mp.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
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
[PROOFSTEP]
refine' Subset.trans _ (union_subset hAS hBS)
[GOAL]
case a.mp.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
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
[PROOFSTEP]
rw [compl_subset_comm] at hAt hBt' ⊢
[GOAL]
case a.mp.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
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'
[PROOFSTEP]
refine' Subset.trans (fun x => _) (Set.prod_mono hAt hBt')
[GOAL]
case a.mp.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
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ᶜ
[PROOFSTEP]
simp only [compl_union, mem_inter_iff, mem_prod, mem_preimage, mem_compl_iff]
[GOAL]
case a.mp.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
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
[PROOFSTEP]
tauto
[GOAL]
case a.mpr
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
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
[PROOFSTEP]
rintro ⟨t, ht, htS⟩
[GOAL]
case a.mpr.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
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
[PROOFSTEP]
refine' ⟨⟨(Prod.fst '' t)ᶜ, _, _⟩, ⟨(Prod.snd '' t)ᶜ, _, _⟩⟩
[GOAL]
case a.mpr.intro.intro.refine'_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
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)ᶜ
[PROOFSTEP]
exact ⟨Prod.fst '' t, ht.image continuous_fst, Subset.rfl⟩
[GOAL]
case a.mpr.intro.intro.refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S t : Set (α × β)
ht : IsCompact t
htS : tᶜ ⊆ S
⊢ Prod.fst ⁻¹' (Prod.fst '' t)ᶜ ⊆ S
[PROOFSTEP]
rw [preimage_compl]
[GOAL]
case a.mpr.intro.intro.refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S t : Set (α × β)
ht : IsCompact t
htS : tᶜ ⊆ S
⊢ (Prod.fst ⁻¹' (Prod.fst '' t))ᶜ ⊆ S
[PROOFSTEP]
rw [compl_subset_comm] at htS ⊢
[GOAL]
case a.mpr.intro.intro.refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S t : Set (α × β)
ht : IsCompact t
htS : Sᶜ ⊆ t
⊢ Sᶜ ⊆ Prod.fst ⁻¹' (Prod.fst '' t)
[PROOFSTEP]
exact htS.trans (subset_preimage_image Prod.fst _)
[GOAL]
case a.mpr.intro.intro.refine'_3
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
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)ᶜ
[PROOFSTEP]
exact ⟨Prod.snd '' t, ht.image continuous_snd, Subset.rfl⟩
[GOAL]
case a.mpr.intro.intro.refine'_4
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S t : Set (α × β)
ht : IsCompact t
htS : tᶜ ⊆ S
⊢ Prod.snd ⁻¹' (Prod.snd '' t)ᶜ ⊆ S
[PROOFSTEP]
rw [preimage_compl]
[GOAL]
case a.mpr.intro.intro.refine'_4
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S t : Set (α × β)
ht : IsCompact t
htS : tᶜ ⊆ S
⊢ (Prod.snd ⁻¹' (Prod.snd '' t))ᶜ ⊆ S
[PROOFSTEP]
rw [compl_subset_comm] at htS ⊢
[GOAL]
case a.mpr.intro.intro.refine'_4
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
S t : Set (α × β)
ht : IsCompact t
htS : Sᶜ ⊆ t
⊢ Sᶜ ⊆ Prod.snd ⁻¹' (Prod.snd '' t)
[PROOFSTEP]
exact htS.trans (subset_preimage_image Prod.snd _)
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
⊢ NoncompactSpace (α × β) ↔ NoncompactSpace α ∧ Nonempty β ∨ Nonempty α ∧ NoncompactSpace β
[PROOFSTEP]
simp [← Filter.cocompact_neBot_iff, ← Filter.coprod_cocompact, Filter.coprod_neBot_iff]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
inst✝ : (i : ι) → TopologicalSpace (π i)
s : (i : ι) → Set (π i)
⊢ (∀ (i : ι), IsCompact (s i)) → IsCompact {x | ∀ (i : ι), x i ∈ s i}
[PROOFSTEP]
simp only [isCompact_iff_ultrafilter_le_nhds, nhds_pi, Filter.pi, exists_prop, mem_setOf_eq, le_iInf_iff,
  le_principal_iff]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
inst✝ : (i : ι) → TopologicalSpace (π i)
s : (i : ι) → Set (π i)
⊢ (∀ (i : ι) (f : Ultrafilter (π i)), s i ∈ ↑f → ∃ a, a ∈ s i ∧ ↑f ≤ 𝓝 a) →
    ∀ (f : Ultrafilter ((i : ι) → π i)),
      {x | ∀ (i : ι), x i ∈ s i} ∈ ↑f → ∃ a, (∀ (i : ι), a i ∈ s i) ∧ ∀ (i : ι), ↑f ≤ comap (Function.eval i) (𝓝 (a i))
[PROOFSTEP]
intro h f hfs
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
inst✝ : (i : ι) → TopologicalSpace (π i)
s : (i : ι) → Set (π i)
h : ∀ (i : ι) (f : Ultrafilter (π i)), s i ∈ ↑f → ∃ a, a ∈ s i ∧ ↑f ≤ 𝓝 a
f : Ultrafilter ((i : ι) → π i)
hfs : {x | ∀ (i : ι), x i ∈ s i} ∈ ↑f
⊢ ∃ a, (∀ (i : ι), a i ∈ s i) ∧ ∀ (i : ι), ↑f ≤ comap (Function.eval i) (𝓝 (a i))
[PROOFSTEP]
have : ∀ i : ι, ∃ a, a ∈ s i ∧ Tendsto (Function.eval i) f (𝓝 a) :=
  by
  refine fun i => h i (f.map _) (mem_map.2 ?_)
  exact mem_of_superset hfs fun x hx => hx i
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
inst✝ : (i : ι) → TopologicalSpace (π i)
s : (i : ι) → Set (π i)
h : ∀ (i : ι) (f : Ultrafilter (π i)), s i ∈ ↑f → ∃ a, a ∈ s i ∧ ↑f ≤ 𝓝 a
f : Ultrafilter ((i : ι) → π i)
hfs : {x | ∀ (i : ι), x i ∈ s i} ∈ ↑f
⊢ ∀ (i : ι), ∃ a, a ∈ s i ∧ Tendsto (Function.eval i) (↑f) (𝓝 a)
[PROOFSTEP]
refine fun i => h i (f.map _) (mem_map.2 ?_)
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
inst✝ : (i : ι) → TopologicalSpace (π i)
s : (i : ι) → Set (π i)
h : ∀ (i : ι) (f : Ultrafilter (π i)), s i ∈ ↑f → ∃ a, a ∈ s i ∧ ↑f ≤ 𝓝 a
f : Ultrafilter ((i : ι) → π i)
hfs : {x | ∀ (i : ι), x i ∈ s i} ∈ ↑f
i : ι
⊢ Function.eval i ⁻¹' s i ∈ ↑f
[PROOFSTEP]
exact mem_of_superset hfs fun x hx => hx i
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
inst✝ : (i : ι) → TopologicalSpace (π i)
s : (i : ι) → Set (π i)
h : ∀ (i : ι) (f : Ultrafilter (π i)), s i ∈ ↑f → ∃ a, a ∈ s i ∧ ↑f ≤ 𝓝 a
f : Ultrafilter ((i : ι) → π i)
hfs : {x | ∀ (i : ι), x i ∈ s i} ∈ ↑f
this : ∀ (i : ι), ∃ a, a ∈ s i ∧ Tendsto (Function.eval i) (↑f) (𝓝 a)
⊢ ∃ a, (∀ (i : ι), a i ∈ s i) ∧ ∀ (i : ι), ↑f ≤ comap (Function.eval i) (𝓝 (a i))
[PROOFSTEP]
choose a ha using this
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
inst✝ : (i : ι) → TopologicalSpace (π i)
s : (i : ι) → Set (π i)
h : ∀ (i : ι) (f : Ultrafilter (π i)), s i ∈ ↑f → ∃ a, a ∈ s i ∧ ↑f ≤ 𝓝 a
f : Ultrafilter ((i : ι) → π i)
hfs : {x | ∀ (i : ι), x i ∈ s i} ∈ ↑f
a : (i : ι) → π i
ha : ∀ (i : ι), a i ∈ s i ∧ Tendsto (Function.eval i) (↑f) (𝓝 (a i))
⊢ ∃ a, (∀ (i : ι), a i ∈ s i) ∧ ∀ (i : ι), ↑f ≤ comap (Function.eval i) (𝓝 (a i))
[PROOFSTEP]
exact ⟨a, fun i => (ha i).left, fun i => (ha i).right.le_comap⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
inst✝ : (i : ι) → TopologicalSpace (π i)
s : (i : ι) → Set (π i)
h : ∀ (i : ι), IsCompact (s i)
⊢ IsCompact (Set.pi univ s)
[PROOFSTEP]
convert isCompact_pi_infinite h
[GOAL]
case h.e'_3
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
inst✝ : (i : ι) → TopologicalSpace (π i)
s : (i : ι) → Set (π i)
h : ∀ (i : ι), IsCompact (s i)
⊢ Set.pi univ s = {x | ∀ (i : ι), x i ∈ s i}
[PROOFSTEP]
simp only [← mem_univ_pi, setOf_mem_eq]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), CompactSpace (π i)
⊢ IsCompact univ
[PROOFSTEP]
rw [← pi_univ univ]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), CompactSpace (π i)
⊢ IsCompact (Set.pi univ fun i => univ)
[PROOFSTEP]
exact isCompact_univ_pi fun i => isCompact_univ
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
inst✝¹ : (i : ι) → TopologicalSpace (π i)
δ : Type u_3
κ : δ → Type u_4
inst✝ : (d : δ) → TopologicalSpace (κ d)
⊢ (Filter.coprodᵢ fun d => cocompact (κ d)) = cocompact ((d : δ) → κ d)
[PROOFSTEP]
refine' le_antisymm (iSup_le fun i => Filter.comap_cocompact_le (continuous_apply i)) _
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
inst✝¹ : (i : ι) → TopologicalSpace (π i)
δ : Type u_3
κ : δ → Type u_4
inst✝ : (d : δ) → TopologicalSpace (κ d)
⊢ cocompact ((d : δ) → κ d) ≤ Filter.coprodᵢ fun d => cocompact (κ d)
[PROOFSTEP]
refine' compl_surjective.forall.2 fun s H => _
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s✝ t : Set α
inst✝¹ : (i : ι) → TopologicalSpace (π i)
δ : Type u_3
κ : δ → Type u_4
inst✝ : (d : δ) → TopologicalSpace (κ d)
s : Set ((i : δ) → κ i)
H : sᶜ ∈ Filter.coprodᵢ fun d => cocompact (κ d)
⊢ sᶜ ∈ cocompact ((d : δ) → κ d)
[PROOFSTEP]
simp only [compl_mem_coprodᵢ, Filter.mem_cocompact, compl_subset_compl, image_subset_iff] at H ⊢
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s✝ t : Set α
inst✝¹ : (i : ι) → TopologicalSpace (π i)
δ : Type u_3
κ : δ → Type u_4
inst✝ : (d : δ) → TopologicalSpace (κ d)
s : Set ((i : δ) → κ i)
H : ∀ (i : δ), ∃ t, IsCompact t ∧ s ⊆ Function.eval i ⁻¹' t
⊢ ∃ t, IsCompact t ∧ s ⊆ t
[PROOFSTEP]
choose K hKc htK using H
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s✝ t : Set α
inst✝¹ : (i : ι) → TopologicalSpace (π i)
δ : Type u_3
κ : δ → Type u_4
inst✝ : (d : δ) → TopologicalSpace (κ d)
s : Set ((i : δ) → κ i)
K : (i : δ) → Set (κ i)
hKc : ∀ (i : δ), IsCompact (K i)
htK : ∀ (i : δ), s ⊆ Function.eval i ⁻¹' K i
⊢ ∃ t, IsCompact t ∧ s ⊆ t
[PROOFSTEP]
exact ⟨Set.pi univ K, isCompact_univ_pi hKc, fun f hf i _ => htK i hf⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
r : α → α → Prop
inst✝ : CompactSpace α
⊢ IsCompact univ
[PROOFSTEP]
rw [← range_quot_mk]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
r : α → α → Prop
inst✝ : CompactSpace α
⊢ IsCompact (range (mk r))
[PROOFSTEP]
exact isCompact_range continuous_quot_mk
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : LocallyCompactSpace α
x : α
⊢ ∀ (t : Set α), t ∈ 𝓝 x → ∃ r, r ∈ 𝓝 x ∧ IsCompact r ∧ r ⊆ t
[PROOFSTEP]
simpa only [and_comm] using LocallyCompactSpace.local_compact_nhds x
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s t✝ : Set α
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), LocallyCompactSpace (π i)
inst✝ : Finite ι
t : (i : ι) → π i
n : Set ((i : ι) → π i)
hn : n ∈ 𝓝 t
⊢ ∃ s, s ∈ 𝓝 t ∧ s ⊆ n ∧ IsCompact s
[PROOFSTEP]
rw [nhds_pi, Filter.mem_pi] at hn 
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s t✝ : Set α
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), LocallyCompactSpace (π i)
inst✝ : Finite ι
t : (i : ι) → π i
n : Set ((i : ι) → π i)
hn : ∃ I, Set.Finite I ∧ ∃ t_1, (∀ (i : ι), t_1 i ∈ 𝓝 (t i)) ∧ Set.pi I t_1 ⊆ n
⊢ ∃ s, s ∈ 𝓝 t ∧ s ⊆ n ∧ IsCompact s
[PROOFSTEP]
obtain ⟨s, -, n', hn', hsub⟩ := hn
[GOAL]
case intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t✝ : Set α
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), LocallyCompactSpace (π i)
inst✝ : Finite ι
t : (i : ι) → π i
n : Set ((i : ι) → π i)
s : Set ι
n' : (i : ι) → Set (π i)
hn' : ∀ (i : ι), n' i ∈ 𝓝 (t i)
hsub : Set.pi s n' ⊆ n
⊢ ∃ s, s ∈ 𝓝 t ∧ s ⊆ n ∧ IsCompact s
[PROOFSTEP]
choose n'' hn'' hsub' hc using fun i => LocallyCompactSpace.local_compact_nhds (t i) (n' i) (hn' i)
[GOAL]
case intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t✝ : Set α
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), LocallyCompactSpace (π i)
inst✝ : Finite ι
t : (i : ι) → π i
n : Set ((i : ι) → π i)
s : Set ι
n' : (i : ι) → Set (π i)
hn' : ∀ (i : ι), n' i ∈ 𝓝 (t i)
hsub : Set.pi s n' ⊆ n
n'' : (i : ι) → Set (π i)
hn'' : ∀ (i : ι), n'' i ∈ 𝓝 (t i)
hsub' : ∀ (i : ι), n'' i ⊆ n' i
hc : ∀ (i : ι), IsCompact (n'' i)
⊢ ∃ s, s ∈ 𝓝 t ∧ s ⊆ n ∧ IsCompact s
[PROOFSTEP]
refine' ⟨(Set.univ : Set ι).pi n'', _, subset_trans (fun _ h => _) hsub, isCompact_univ_pi hc⟩
[GOAL]
case intro.intro.intro.intro.refine'_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t✝ : Set α
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), LocallyCompactSpace (π i)
inst✝ : Finite ι
t : (i : ι) → π i
n : Set ((i : ι) → π i)
s : Set ι
n' : (i : ι) → Set (π i)
hn' : ∀ (i : ι), n' i ∈ 𝓝 (t i)
hsub : Set.pi s n' ⊆ n
n'' : (i : ι) → Set (π i)
hn'' : ∀ (i : ι), n'' i ∈ 𝓝 (t i)
hsub' : ∀ (i : ι), n'' i ⊆ n' i
hc : ∀ (i : ι), IsCompact (n'' i)
⊢ Set.pi univ n'' ∈ 𝓝 t
[PROOFSTEP]
exact (set_pi_mem_nhds_iff (@Set.finite_univ ι _) _).mpr fun i _ => hn'' i
[GOAL]
case intro.intro.intro.intro.refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t✝ : Set α
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), LocallyCompactSpace (π i)
inst✝ : Finite ι
t : (i : ι) → π i
n : Set ((i : ι) → π i)
s : Set ι
n' : (i : ι) → Set (π i)
hn' : ∀ (i : ι), n' i ∈ 𝓝 (t i)
hsub : Set.pi s n' ⊆ n
n'' : (i : ι) → Set (π i)
hn'' : ∀ (i : ι), n'' i ∈ 𝓝 (t i)
hsub' : ∀ (i : ι), n'' i ⊆ n' i
hc : ∀ (i : ι), IsCompact (n'' i)
x✝ : (i : ι) → π i
h : x✝ ∈ Set.pi univ n''
⊢ x✝ ∈ Set.pi s n'
[PROOFSTEP]
exact fun i _ => hsub' i (h i trivial)
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s t✝ : Set α
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), LocallyCompactSpace (π i)
inst✝ : ∀ (i : ι), CompactSpace (π i)
t : (i : ι) → π i
n : Set ((i : ι) → π i)
hn : n ∈ 𝓝 t
⊢ ∃ s, s ∈ 𝓝 t ∧ s ⊆ n ∧ IsCompact s
[PROOFSTEP]
rw [nhds_pi, Filter.mem_pi] at hn 
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s t✝ : Set α
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), LocallyCompactSpace (π i)
inst✝ : ∀ (i : ι), CompactSpace (π i)
t : (i : ι) → π i
n : Set ((i : ι) → π i)
hn : ∃ I, Set.Finite I ∧ ∃ t_1, (∀ (i : ι), t_1 i ∈ 𝓝 (t i)) ∧ Set.pi I t_1 ⊆ n
⊢ ∃ s, s ∈ 𝓝 t ∧ s ⊆ n ∧ IsCompact s
[PROOFSTEP]
obtain ⟨s, hs, n', hn', hsub⟩ := hn
[GOAL]
case intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t✝ : Set α
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), LocallyCompactSpace (π i)
inst✝ : ∀ (i : ι), CompactSpace (π i)
t : (i : ι) → π i
n : Set ((i : ι) → π i)
s : Set ι
hs : Set.Finite s
n' : (i : ι) → Set (π i)
hn' : ∀ (i : ι), n' i ∈ 𝓝 (t i)
hsub : Set.pi s n' ⊆ n
⊢ ∃ s, s ∈ 𝓝 t ∧ s ⊆ n ∧ IsCompact s
[PROOFSTEP]
choose n'' hn'' hsub' hc using fun i => LocallyCompactSpace.local_compact_nhds (t i) (n' i) (hn' i)
[GOAL]
case intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t✝ : Set α
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), LocallyCompactSpace (π i)
inst✝ : ∀ (i : ι), CompactSpace (π i)
t : (i : ι) → π i
n : Set ((i : ι) → π i)
s : Set ι
hs : Set.Finite s
n' : (i : ι) → Set (π i)
hn' : ∀ (i : ι), n' i ∈ 𝓝 (t i)
hsub : Set.pi s n' ⊆ n
n'' : (i : ι) → Set (π i)
hn'' : ∀ (i : ι), n'' i ∈ 𝓝 (t i)
hsub' : ∀ (i : ι), n'' i ⊆ n' i
hc : ∀ (i : ι), IsCompact (n'' i)
⊢ ∃ s, s ∈ 𝓝 t ∧ s ⊆ n ∧ IsCompact s
[PROOFSTEP]
refine' ⟨s.pi n'', _, subset_trans (fun _ => _) hsub, _⟩
[GOAL]
case intro.intro.intro.intro.refine'_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t✝ : Set α
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), LocallyCompactSpace (π i)
inst✝ : ∀ (i : ι), CompactSpace (π i)
t : (i : ι) → π i
n : Set ((i : ι) → π i)
s : Set ι
hs : Set.Finite s
n' : (i : ι) → Set (π i)
hn' : ∀ (i : ι), n' i ∈ 𝓝 (t i)
hsub : Set.pi s n' ⊆ n
n'' : (i : ι) → Set (π i)
hn'' : ∀ (i : ι), n'' i ∈ 𝓝 (t i)
hsub' : ∀ (i : ι), n'' i ⊆ n' i
hc : ∀ (i : ι), IsCompact (n'' i)
⊢ Set.pi s n'' ∈ 𝓝 t
[PROOFSTEP]
exact (set_pi_mem_nhds_iff hs _).mpr fun i _ => hn'' i
[GOAL]
case intro.intro.intro.intro.refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t✝ : Set α
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), LocallyCompactSpace (π i)
inst✝ : ∀ (i : ι), CompactSpace (π i)
t : (i : ι) → π i
n : Set ((i : ι) → π i)
s : Set ι
hs : Set.Finite s
n' : (i : ι) → Set (π i)
hn' : ∀ (i : ι), n' i ∈ 𝓝 (t i)
hsub : Set.pi s n' ⊆ n
n'' : (i : ι) → Set (π i)
hn'' : ∀ (i : ι), n'' i ∈ 𝓝 (t i)
hsub' : ∀ (i : ι), n'' i ⊆ n' i
hc : ∀ (i : ι), IsCompact (n'' i)
x✝ : (i : ι) → π i
⊢ x✝ ∈ Set.pi s n'' → x✝ ∈ Set.pi s n'
[PROOFSTEP]
exact forall₂_imp fun i _ hi' => hsub' i hi'
[GOAL]
case intro.intro.intro.intro.refine'_3
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t✝ : Set α
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), LocallyCompactSpace (π i)
inst✝ : ∀ (i : ι), CompactSpace (π i)
t : (i : ι) → π i
n : Set ((i : ι) → π i)
s : Set ι
hs : Set.Finite s
n' : (i : ι) → Set (π i)
hn' : ∀ (i : ι), n' i ∈ 𝓝 (t i)
hsub : Set.pi s n' ⊆ n
n'' : (i : ι) → Set (π i)
hn'' : ∀ (i : ι), n'' i ∈ 𝓝 (t i)
hsub' : ∀ (i : ι), n'' i ⊆ n' i
hc : ∀ (i : ι), IsCompact (n'' i)
⊢ IsCompact (Set.pi s n'')
[PROOFSTEP]
rw [← Set.univ_pi_ite]
[GOAL]
case intro.intro.intro.intro.refine'_3
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t✝ : Set α
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), LocallyCompactSpace (π i)
inst✝ : ∀ (i : ι), CompactSpace (π i)
t : (i : ι) → π i
n : Set ((i : ι) → π i)
s : Set ι
hs : Set.Finite s
n' : (i : ι) → Set (π i)
hn' : ∀ (i : ι), n' i ∈ 𝓝 (t i)
hsub : Set.pi s n' ⊆ n
n'' : (i : ι) → Set (π i)
hn'' : ∀ (i : ι), n'' i ∈ 𝓝 (t i)
hsub' : ∀ (i : ι), n'' i ⊆ n' i
hc : ∀ (i : ι), IsCompact (n'' i)
⊢ IsCompact (Set.pi univ fun i => if i ∈ s then n'' i else univ)
[PROOFSTEP]
refine' isCompact_univ_pi fun i => _
[GOAL]
case intro.intro.intro.intro.refine'_3
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t✝ : Set α
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), LocallyCompactSpace (π i)
inst✝ : ∀ (i : ι), CompactSpace (π i)
t : (i : ι) → π i
n : Set ((i : ι) → π i)
s : Set ι
hs : Set.Finite s
n' : (i : ι) → Set (π i)
hn' : ∀ (i : ι), n' i ∈ 𝓝 (t i)
hsub : Set.pi s n' ⊆ n
n'' : (i : ι) → Set (π i)
hn'' : ∀ (i : ι), n'' i ∈ 𝓝 (t i)
hsub' : ∀ (i : ι), n'' i ⊆ n' i
hc : ∀ (i : ι), IsCompact (n'' i)
i : ι
⊢ IsCompact (if i ∈ s then n'' i else univ)
[PROOFSTEP]
by_cases h : i ∈ s
[GOAL]
case pos
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t✝ : Set α
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), LocallyCompactSpace (π i)
inst✝ : ∀ (i : ι), CompactSpace (π i)
t : (i : ι) → π i
n : Set ((i : ι) → π i)
s : Set ι
hs : Set.Finite s
n' : (i : ι) → Set (π i)
hn' : ∀ (i : ι), n' i ∈ 𝓝 (t i)
hsub : Set.pi s n' ⊆ n
n'' : (i : ι) → Set (π i)
hn'' : ∀ (i : ι), n'' i ∈ 𝓝 (t i)
hsub' : ∀ (i : ι), n'' i ⊆ n' i
hc : ∀ (i : ι), IsCompact (n'' i)
i : ι
h : i ∈ s
⊢ IsCompact (if i ∈ s then n'' i else univ)
[PROOFSTEP]
rw [if_pos h]
[GOAL]
case pos
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t✝ : Set α
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), LocallyCompactSpace (π i)
inst✝ : ∀ (i : ι), CompactSpace (π i)
t : (i : ι) → π i
n : Set ((i : ι) → π i)
s : Set ι
hs : Set.Finite s
n' : (i : ι) → Set (π i)
hn' : ∀ (i : ι), n' i ∈ 𝓝 (t i)
hsub : Set.pi s n' ⊆ n
n'' : (i : ι) → Set (π i)
hn'' : ∀ (i : ι), n'' i ∈ 𝓝 (t i)
hsub' : ∀ (i : ι), n'' i ⊆ n' i
hc : ∀ (i : ι), IsCompact (n'' i)
i : ι
h : i ∈ s
⊢ IsCompact (n'' i)
[PROOFSTEP]
exact hc i
[GOAL]
case neg
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t✝ : Set α
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), LocallyCompactSpace (π i)
inst✝ : ∀ (i : ι), CompactSpace (π i)
t : (i : ι) → π i
n : Set ((i : ι) → π i)
s : Set ι
hs : Set.Finite s
n' : (i : ι) → Set (π i)
hn' : ∀ (i : ι), n' i ∈ 𝓝 (t i)
hsub : Set.pi s n' ⊆ n
n'' : (i : ι) → Set (π i)
hn'' : ∀ (i : ι), n'' i ∈ 𝓝 (t i)
hsub' : ∀ (i : ι), n'' i ⊆ n' i
hc : ∀ (i : ι), IsCompact (n'' i)
i : ι
h : ¬i ∈ s
⊢ IsCompact (if i ∈ s then n'' i else univ)
[PROOFSTEP]
rw [if_neg h]
[GOAL]
case neg
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s✝ t✝ : Set α
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), LocallyCompactSpace (π i)
inst✝ : ∀ (i : ι), CompactSpace (π i)
t : (i : ι) → π i
n : Set ((i : ι) → π i)
s : Set ι
hs : Set.Finite s
n' : (i : ι) → Set (π i)
hn' : ∀ (i : ι), n' i ∈ 𝓝 (t i)
hsub : Set.pi s n' ⊆ n
n'' : (i : ι) → Set (π i)
hn'' : ∀ (i : ι), n'' i ∈ 𝓝 (t i)
hsub' : ∀ (i : ι), n'' i ⊆ n' i
hc : ∀ (i : ι), IsCompact (n'' i)
i : ι
h : ¬i ∈ s
⊢ IsCompact univ
[PROOFSTEP]
exact CompactSpace.isCompact_univ
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : LocallyCompactSpace α
x : α
U : Set α
hU : IsOpen U
hx : x ∈ U
⊢ ∃ K, IsCompact K ∧ x ∈ interior K ∧ K ⊆ U
[PROOFSTEP]
rcases LocallyCompactSpace.local_compact_nhds x U (hU.mem_nhds hx) with ⟨K, h1K, h2K, h3K⟩
[GOAL]
case intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : LocallyCompactSpace α
x : α
U : Set α
hU : IsOpen U
hx : x ∈ U
K : Set α
h1K : K ∈ 𝓝 x
h2K : K ⊆ U
h3K : IsCompact K
⊢ ∃ K, IsCompact K ∧ x ∈ interior K ∧ K ⊆ U
[PROOFSTEP]
exact ⟨K, h3K, mem_interior_iff_mem_nhds.2 h1K, h2K⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hα : LocallyCompactSpace α
K U : Set α
hK : IsCompact K
hU : IsOpen U
h_KU : K ⊆ U
⊢ ∃ L, IsCompact L ∧ K ⊆ interior L ∧ L ⊆ U
[PROOFSTEP]
choose V hVc hxV hKV using fun x : K => exists_compact_subset hU (h_KU x.2)
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hα : LocallyCompactSpace α
K U : Set α
hK : IsCompact K
hU : IsOpen U
h_KU : K ⊆ U
V : ↑K → Set α
hVc : ∀ (x : ↑K), IsCompact (V x)
hxV : ∀ (x : ↑K), ↑x ∈ interior (V x)
hKV : ∀ (x : ↑K), V x ⊆ U
⊢ ∃ L, IsCompact L ∧ K ⊆ interior L ∧ L ⊆ U
[PROOFSTEP]
have : K ⊆ ⋃ x, interior (V x) := fun x hx => mem_iUnion.2 ⟨⟨x, hx⟩, hxV _⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
hα : LocallyCompactSpace α
K U : Set α
hK : IsCompact K
hU : IsOpen U
h_KU : K ⊆ U
V : ↑K → Set α
hVc : ∀ (x : ↑K), IsCompact (V x)
hxV : ∀ (x : ↑K), ↑x ∈ interior (V x)
hKV : ∀ (x : ↑K), V x ⊆ U
this : K ⊆ ⋃ (x : ↑K), interior (V x)
⊢ ∃ L, IsCompact L ∧ K ⊆ interior L ∧ L ⊆ U
[PROOFSTEP]
rcases hK.elim_finite_subcover _ (fun x => @isOpen_interior α _ (V x)) this with ⟨t, ht⟩
[GOAL]
case intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
hα : LocallyCompactSpace α
K U : Set α
hK : IsCompact K
hU : IsOpen U
h_KU : K ⊆ U
V : ↑K → Set α
hVc : ∀ (x : ↑K), IsCompact (V x)
hxV : ∀ (x : ↑K), ↑x ∈ interior (V x)
hKV : ∀ (x : ↑K), V x ⊆ U
this : K ⊆ ⋃ (x : ↑K), interior (V x)
t : Finset ↑K
ht : K ⊆ ⋃ (i : ↑K) (_ : i ∈ t), interior (V i)
⊢ ∃ L, IsCompact L ∧ K ⊆ interior L ∧ L ⊆ U
[PROOFSTEP]
refine' ⟨_, t.isCompact_biUnion fun x _ => hVc x, fun x hx => _, Set.iUnion₂_subset fun i _ => hKV i⟩
[GOAL]
case intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
hα : LocallyCompactSpace α
K U : Set α
hK : IsCompact K
hU : IsOpen U
h_KU : K ⊆ U
V : ↑K → Set α
hVc : ∀ (x : ↑K), IsCompact (V x)
hxV : ∀ (x : ↑K), ↑x ∈ interior (V x)
hKV : ∀ (x : ↑K), V x ⊆ U
this : K ⊆ ⋃ (x : ↑K), interior (V x)
t : Finset ↑K
ht : K ⊆ ⋃ (i : ↑K) (_ : i ∈ t), interior (V i)
x : α
hx : x ∈ K
⊢ x ∈ interior (⋃ (i : ↑K) (_ : i ∈ t), V i)
[PROOFSTEP]
rcases mem_iUnion₂.1 (ht hx) with ⟨y, hyt, hy⟩
[GOAL]
case intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t✝ : Set α
hα : LocallyCompactSpace α
K U : Set α
hK : IsCompact K
hU : IsOpen U
h_KU : K ⊆ U
V : ↑K → Set α
hVc : ∀ (x : ↑K), IsCompact (V x)
hxV : ∀ (x : ↑K), ↑x ∈ interior (V x)
hKV : ∀ (x : ↑K), V x ⊆ U
this : K ⊆ ⋃ (x : ↑K), interior (V x)
t : Finset ↑K
ht : K ⊆ ⋃ (i : ↑K) (_ : i ∈ t), interior (V i)
x : α
hx : x ∈ K
y : ↑K
hyt : y ∈ t
hy : x ∈ interior (V y)
⊢ x ∈ interior (⋃ (i : ↑K) (_ : i ∈ t), V i)
[PROOFSTEP]
exact interior_mono (subset_iUnion₂ y hyt) hy
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : LocallyCompactSpace β
f : α → β
hf : ClosedEmbedding f
⊢ ∀ (x : α), HasBasis (𝓝 x) (fun s => s ∈ 𝓝 (f x) ∧ IsCompact s) fun s => f ⁻¹' s
[PROOFSTEP]
intro x
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : LocallyCompactSpace β
f : α → β
hf : ClosedEmbedding f
x : α
⊢ HasBasis (𝓝 x) (fun s => s ∈ 𝓝 (f x) ∧ IsCompact s) fun s => f ⁻¹' s
[PROOFSTEP]
rw [hf.toInducing.nhds_eq_comap]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : LocallyCompactSpace β
f : α → β
hf : ClosedEmbedding f
x : α
⊢ HasBasis (comap f (𝓝 (f x))) (fun s => s ∈ 𝓝 (f x) ∧ IsCompact s) fun s => f ⁻¹' s
[PROOFSTEP]
exact (compact_basis_nhds _).comap _
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : LocallyCompactSpace β
f : α → β
hf : OpenEmbedding f
⊢ LocallyCompactSpace α
[PROOFSTEP]
have : ∀ x : α, (𝓝 x).HasBasis (fun s => (s ∈ 𝓝 (f x) ∧ IsCompact s) ∧ s ⊆ range f) fun s => f ⁻¹' s :=
  by
  intro x
  rw [hf.toInducing.nhds_eq_comap]
  exact ((compact_basis_nhds _).restrict_subset <| hf.open_range.mem_nhds <| mem_range_self _).comap _
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : LocallyCompactSpace β
f : α → β
hf : OpenEmbedding f
⊢ ∀ (x : α), HasBasis (𝓝 x) (fun s => (s ∈ 𝓝 (f x) ∧ IsCompact s) ∧ s ⊆ range f) fun s => f ⁻¹' s
[PROOFSTEP]
intro x
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : LocallyCompactSpace β
f : α → β
hf : OpenEmbedding f
x : α
⊢ HasBasis (𝓝 x) (fun s => (s ∈ 𝓝 (f x) ∧ IsCompact s) ∧ s ⊆ range f) fun s => f ⁻¹' s
[PROOFSTEP]
rw [hf.toInducing.nhds_eq_comap]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : LocallyCompactSpace β
f : α → β
hf : OpenEmbedding f
x : α
⊢ HasBasis (comap f (𝓝 (f x))) (fun s => (s ∈ 𝓝 (f x) ∧ IsCompact s) ∧ s ⊆ range f) fun s => f ⁻¹' s
[PROOFSTEP]
exact ((compact_basis_nhds _).restrict_subset <| hf.open_range.mem_nhds <| mem_range_self _).comap _
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : LocallyCompactSpace β
f : α → β
hf : OpenEmbedding f
this : ∀ (x : α), HasBasis (𝓝 x) (fun s => (s ∈ 𝓝 (f x) ∧ IsCompact s) ∧ s ⊆ range f) fun s => f ⁻¹' s
⊢ LocallyCompactSpace α
[PROOFSTEP]
refine' locallyCompactSpace_of_hasBasis this fun x s hs => _
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
inst✝ : LocallyCompactSpace β
f : α → β
hf : OpenEmbedding f
this : ∀ (x : α), HasBasis (𝓝 x) (fun s => (s ∈ 𝓝 (f x) ∧ IsCompact s) ∧ s ⊆ range f) fun s => f ⁻¹' s
x : α
s : Set β
hs : (s ∈ 𝓝 (f x) ∧ IsCompact s) ∧ s ⊆ range f
⊢ IsCompact (f ⁻¹' s)
[PROOFSTEP]
rw [← hf.toInducing.isCompact_iff, image_preimage_eq_of_subset hs.2]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
inst✝ : LocallyCompactSpace β
f : α → β
hf : OpenEmbedding f
this : ∀ (x : α), HasBasis (𝓝 x) (fun s => (s ∈ 𝓝 (f x) ∧ IsCompact s) ∧ s ⊆ range f) fun s => f ⁻¹' s
x : α
s : Set β
hs : (s ∈ 𝓝 (f x) ∧ IsCompact s) ∧ s ⊆ range f
⊢ IsCompact s
[PROOFSTEP]
exact hs.1.2
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
F : Ultrafilter α
⊢ ↑F ≤ 𝓝 (lim F)
[PROOFSTEP]
rcases isCompact_univ.ultrafilter_le_nhds F (by simp) with ⟨x, -, h⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
F : Ultrafilter α
⊢ ↑F ≤ 𝓟 univ
[PROOFSTEP]
simp
[GOAL]
case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
F : Ultrafilter α
x : α
h : ↑F ≤ 𝓝 x
⊢ ↑F ≤ 𝓝 (lim F)
[PROOFSTEP]
exact le_nhds_lim ⟨x, h⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
⊢ ∃ V, V ⊆ S ∧ Set.Nonempty V ∧ IsClosed V ∧ ∀ (V' : Set α), V' ⊆ V → Set.Nonempty V' → IsClosed V' → V' = V
[PROOFSTEP]
let opens := {U : Set α | Sᶜ ⊆ U ∧ IsOpen U ∧ Uᶜ.Nonempty}
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
⊢ ∃ V, V ⊆ S ∧ Set.Nonempty V ∧ IsClosed V ∧ ∀ (V' : Set α), V' ⊆ V → Set.Nonempty V' → IsClosed V' → V' = V
[PROOFSTEP]
obtain ⟨U, ⟨Uc, Uo, Ucne⟩, h⟩ :=
  zorn_subset opens fun c hc hz => by
    by_cases hcne : c.Nonempty
    · obtain ⟨U₀, hU₀⟩ := hcne
      haveI : Nonempty { U // U ∈ c } := ⟨⟨U₀, hU₀⟩⟩
      obtain ⟨U₀compl, -, -⟩ := hc hU₀
      use⋃₀ c
      refine' ⟨⟨_, _, _⟩, fun U hU a ha => ⟨U, hU, ha⟩⟩
      · exact fun a ha => ⟨U₀, hU₀, U₀compl ha⟩
      · exact isOpen_sUnion fun _ h => (hc h).2.1
      · convert_to (⋂ U : { U // U ∈ c }, U.1ᶜ).Nonempty
        · ext
          simp only [not_exists, exists_prop, not_and, Set.mem_iInter, Subtype.forall, mem_setOf_eq, mem_compl_iff,
            mem_sUnion]
        apply IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed
        · rintro ⟨U, hU⟩ ⟨U', hU'⟩
          obtain ⟨V, hVc, hVU, hVU'⟩ := hz.directedOn U hU U' hU'
          exact ⟨⟨V, hVc⟩, Set.compl_subset_compl.mpr hVU, Set.compl_subset_compl.mpr hVU'⟩
        · exact fun U => (hc U.2).2.2
        · exact fun U => (hc U.2).2.1.isClosed_compl.isCompact
        · exact fun U => (hc U.2).2.1.isClosed_compl
    · use Sᶜ
      refine' ⟨⟨Set.Subset.refl _, isOpen_compl_iff.mpr hS, _⟩, fun U Uc => (hcne ⟨U, Uc⟩).elim⟩
      rw [compl_compl]
      exact hne
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
⊢ ∃ ub, ub ∈ opens ∧ ∀ (s : Set α), s ∈ c → s ⊆ ub
[PROOFSTEP]
by_cases hcne : c.Nonempty
[GOAL]
case pos
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
hcne : Set.Nonempty c
⊢ ∃ ub, ub ∈ opens ∧ ∀ (s : Set α), s ∈ c → s ⊆ ub
[PROOFSTEP]
obtain ⟨U₀, hU₀⟩ := hcne
[GOAL]
case pos.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
⊢ ∃ ub, ub ∈ opens ∧ ∀ (s : Set α), s ∈ c → s ⊆ ub
[PROOFSTEP]
haveI : Nonempty { U // U ∈ c } := ⟨⟨U₀, hU₀⟩⟩
[GOAL]
case pos.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
⊢ ∃ ub, ub ∈ opens ∧ ∀ (s : Set α), s ∈ c → s ⊆ ub
[PROOFSTEP]
obtain ⟨U₀compl, -, -⟩ := hc hU₀
[GOAL]
case pos.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ ∃ ub, ub ∈ opens ∧ ∀ (s : Set α), s ∈ c → s ⊆ ub
[PROOFSTEP]
use⋃₀ c
[GOAL]
case h
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ ⋃₀ c ∈ opens ∧ ∀ (s : Set α), s ∈ c → s ⊆ ⋃₀ c
[PROOFSTEP]
refine' ⟨⟨_, _, _⟩, fun U hU a ha => ⟨U, hU, ha⟩⟩
[GOAL]
case h.refine'_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ Sᶜ ⊆ ⋃₀ c
[PROOFSTEP]
exact fun a ha => ⟨U₀, hU₀, U₀compl ha⟩
[GOAL]
case h.refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ IsOpen (⋃₀ c)
[PROOFSTEP]
exact isOpen_sUnion fun _ h => (hc h).2.1
[GOAL]
case h.refine'_3
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ Set.Nonempty (⋃₀ c)ᶜ
[PROOFSTEP]
convert_to (⋂ U : { U // U ∈ c }, U.1ᶜ).Nonempty
[GOAL]
case h.e'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ (⋃₀ c)ᶜ = ⋂ (U : { U // U ∈ c }), (↑U)ᶜ
[PROOFSTEP]
ext
[GOAL]
case h.e'_2.h
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
x✝ : α
⊢ x✝ ∈ (⋃₀ c)ᶜ ↔ x✝ ∈ ⋂ (U : { U // U ∈ c }), (↑U)ᶜ
[PROOFSTEP]
simp only [not_exists, exists_prop, not_and, Set.mem_iInter, Subtype.forall, mem_setOf_eq, mem_compl_iff, mem_sUnion]
[GOAL]
case h.refine'_3
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ Set.Nonempty (⋂ (U : { U // U ∈ c }), (↑U)ᶜ)
[PROOFSTEP]
apply IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed
[GOAL]
case h.refine'_3.hZd
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ Directed (fun x x_1 => x ⊇ x_1) fun i => (↑i)ᶜ
[PROOFSTEP]
rintro ⟨U, hU⟩ ⟨U', hU'⟩
[GOAL]
case h.refine'_3.hZd.mk.mk
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
U : Set α
hU : U ∈ c
U' : Set α
hU' : U' ∈ c
⊢ ∃ z,
    (fun x x_1 => x ⊇ x_1) ((fun i => (↑i)ᶜ) { val := U, property := hU }) ((fun i => (↑i)ᶜ) z) ∧
      (fun x x_1 => x ⊇ x_1) ((fun i => (↑i)ᶜ) { val := U', property := hU' }) ((fun i => (↑i)ᶜ) z)
[PROOFSTEP]
obtain ⟨V, hVc, hVU, hVU'⟩ := hz.directedOn U hU U' hU'
[GOAL]
case h.refine'_3.hZd.mk.mk.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
U : Set α
hU : U ∈ c
U' : Set α
hU' : U' ∈ c
V : Set α
hVc : V ∈ c
hVU : U ⊆ V
hVU' : U' ⊆ V
⊢ ∃ z,
    (fun x x_1 => x ⊇ x_1) ((fun i => (↑i)ᶜ) { val := U, property := hU }) ((fun i => (↑i)ᶜ) z) ∧
      (fun x x_1 => x ⊇ x_1) ((fun i => (↑i)ᶜ) { val := U', property := hU' }) ((fun i => (↑i)ᶜ) z)
[PROOFSTEP]
exact ⟨⟨V, hVc⟩, Set.compl_subset_compl.mpr hVU, Set.compl_subset_compl.mpr hVU'⟩
[GOAL]
case h.refine'_3.hZn
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ ∀ (i : { U // U ∈ c }), Set.Nonempty (↑i)ᶜ
[PROOFSTEP]
exact fun U => (hc U.2).2.2
[GOAL]
case h.refine'_3.hZc
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ ∀ (i : { U // U ∈ c }), IsCompact (↑i)ᶜ
[PROOFSTEP]
exact fun U => (hc U.2).2.1.isClosed_compl.isCompact
[GOAL]
case h.refine'_3.hZcl
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
U₀ : Set α
hU₀ : U₀ ∈ c
this : Nonempty { U // U ∈ c }
U₀compl : Sᶜ ⊆ U₀
⊢ ∀ (i : { U // U ∈ c }), IsClosed (↑i)ᶜ
[PROOFSTEP]
exact fun U => (hc U.2).2.1.isClosed_compl
[GOAL]
case neg
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
hcne : ¬Set.Nonempty c
⊢ ∃ ub, ub ∈ opens ∧ ∀ (s : Set α), s ∈ c → s ⊆ ub
[PROOFSTEP]
use Sᶜ
[GOAL]
case h
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
hcne : ¬Set.Nonempty c
⊢ Sᶜ ∈ opens ∧ ∀ (s : Set α), s ∈ c → s ⊆ Sᶜ
[PROOFSTEP]
refine' ⟨⟨Set.Subset.refl _, isOpen_compl_iff.mpr hS, _⟩, fun U Uc => (hcne ⟨U, Uc⟩).elim⟩
[GOAL]
case h
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
hcne : ¬Set.Nonempty c
⊢ Set.Nonempty Sᶜᶜ
[PROOFSTEP]
rw [compl_compl]
[GOAL]
case h
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
c : Set (Set α)
hc : c ⊆ opens
hz : IsChain (fun x x_1 => x ⊆ x_1) c
hcne : ¬Set.Nonempty c
⊢ Set.Nonempty S
[PROOFSTEP]
exact hne
[GOAL]
case intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
U : Set α
h : ∀ (a : Set α), a ∈ opens → U ⊆ a → a = U
Uc : Sᶜ ⊆ U
Uo : IsOpen U
Ucne : Set.Nonempty Uᶜ
⊢ ∃ V, V ⊆ S ∧ Set.Nonempty V ∧ IsClosed V ∧ ∀ (V' : Set α), V' ⊆ V → Set.Nonempty V' → IsClosed V' → V' = V
[PROOFSTEP]
refine' ⟨Uᶜ, Set.compl_subset_comm.mp Uc, Ucne, Uo.isClosed_compl, _⟩
[GOAL]
case intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
U : Set α
h : ∀ (a : Set α), a ∈ opens → U ⊆ a → a = U
Uc : Sᶜ ⊆ U
Uo : IsOpen U
Ucne : Set.Nonempty Uᶜ
⊢ ∀ (V' : Set α), V' ⊆ Uᶜ → Set.Nonempty V' → IsClosed V' → V' = Uᶜ
[PROOFSTEP]
intro V' V'sub V'ne V'cls
[GOAL]
case intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
U : Set α
h : ∀ (a : Set α), a ∈ opens → U ⊆ a → a = U
Uc : Sᶜ ⊆ U
Uo : IsOpen U
Ucne : Set.Nonempty Uᶜ
V' : Set α
V'sub : V' ⊆ Uᶜ
V'ne : Set.Nonempty V'
V'cls : IsClosed V'
⊢ V' = Uᶜ
[PROOFSTEP]
have : V'ᶜ = U := by
  refine' h V'ᶜ ⟨_, isOpen_compl_iff.mpr V'cls, _⟩ (Set.subset_compl_comm.mp V'sub)
  exact Set.Subset.trans Uc (Set.subset_compl_comm.mp V'sub)
  simp only [compl_compl, V'ne]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
U : Set α
h : ∀ (a : Set α), a ∈ opens → U ⊆ a → a = U
Uc : Sᶜ ⊆ U
Uo : IsOpen U
Ucne : Set.Nonempty Uᶜ
V' : Set α
V'sub : V' ⊆ Uᶜ
V'ne : Set.Nonempty V'
V'cls : IsClosed V'
⊢ V'ᶜ = U
[PROOFSTEP]
refine' h V'ᶜ ⟨_, isOpen_compl_iff.mpr V'cls, _⟩ (Set.subset_compl_comm.mp V'sub)
[GOAL]
case refine'_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
U : Set α
h : ∀ (a : Set α), a ∈ opens → U ⊆ a → a = U
Uc : Sᶜ ⊆ U
Uo : IsOpen U
Ucne : Set.Nonempty Uᶜ
V' : Set α
V'sub : V' ⊆ Uᶜ
V'ne : Set.Nonempty V'
V'cls : IsClosed V'
⊢ Sᶜ ⊆ V'ᶜ
case refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
U : Set α
h : ∀ (a : Set α), a ∈ opens → U ⊆ a → a = U
Uc : Sᶜ ⊆ U
Uo : IsOpen U
Ucne : Set.Nonempty Uᶜ
V' : Set α
V'sub : V' ⊆ Uᶜ
V'ne : Set.Nonempty V'
V'cls : IsClosed V'
⊢ Set.Nonempty V'ᶜᶜ
[PROOFSTEP]
exact Set.Subset.trans Uc (Set.subset_compl_comm.mp V'sub)
[GOAL]
case refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
U : Set α
h : ∀ (a : Set α), a ∈ opens → U ⊆ a → a = U
Uc : Sᶜ ⊆ U
Uo : IsOpen U
Ucne : Set.Nonempty Uᶜ
V' : Set α
V'sub : V' ⊆ Uᶜ
V'ne : Set.Nonempty V'
V'cls : IsClosed V'
⊢ Set.Nonempty V'ᶜᶜ
[PROOFSTEP]
simp only [compl_compl, V'ne]
[GOAL]
case intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : CompactSpace α
S : Set α
hS : IsClosed S
hne : Set.Nonempty S
opens : Set (Set α) := {U | Sᶜ ⊆ U ∧ IsOpen U ∧ Set.Nonempty Uᶜ}
U : Set α
h : ∀ (a : Set α), a ∈ opens → U ⊆ a → a = U
Uc : Sᶜ ⊆ U
Uo : IsOpen U
Ucne : Set.Nonempty Uᶜ
V' : Set α
V'sub : V' ⊆ Uᶜ
V'ne : Set.Nonempty V'
V'cls : IsClosed V'
this : V'ᶜ = U
⊢ V' = Uᶜ
[PROOFSTEP]
rw [← this, compl_compl]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
inst✝¹ : LocallyCompactSpace α
inst✝ : SecondCountableTopology α
⊢ SigmaCompactSpace α
[PROOFSTEP]
choose K hKc hxK using fun x : α => exists_compact_mem_nhds x
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
inst✝¹ : LocallyCompactSpace α
inst✝ : SecondCountableTopology α
K : α → Set α
hKc : ∀ (x : α), IsCompact (K x)
hxK : ∀ (x : α), K x ∈ 𝓝 x
⊢ SigmaCompactSpace α
[PROOFSTEP]
rcases countable_cover_nhds hxK with ⟨s, hsc, hsU⟩
[GOAL]
case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s✝ t : Set α
inst✝¹ : LocallyCompactSpace α
inst✝ : SecondCountableTopology α
K : α → Set α
hKc : ∀ (x : α), IsCompact (K x)
hxK : ∀ (x : α), K x ∈ 𝓝 x
s : Set α
hsc : Set.Countable s
hsU : ⋃ (x : α) (_ : x ∈ s), K x = univ
⊢ SigmaCompactSpace α
[PROOFSTEP]
refine' SigmaCompactSpace.of_countable _ (hsc.image K) (ball_image_iff.2 fun x _ => hKc x) _
[GOAL]
case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s✝ t : Set α
inst✝¹ : LocallyCompactSpace α
inst✝ : SecondCountableTopology α
K : α → Set α
hKc : ∀ (x : α), IsCompact (K x)
hxK : ∀ (x : α), K x ∈ 𝓝 x
s : Set α
hsc : Set.Countable s
hsU : ⋃ (x : α) (_ : x ∈ s), K x = univ
⊢ ⋃₀ (K '' s) = univ
[PROOFSTEP]
rwa [sUnion_image]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : SigmaCompactSpace α
⊢ ⋃ (n : ℕ), compactCovering α n = univ
[PROOFSTEP]
rw [compactCovering, iUnion_accumulate]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : SigmaCompactSpace α
⊢ ⋃ (x : ℕ), Exists.choose (_ : ∃ K, (∀ (n : ℕ), IsCompact (K n)) ∧ ⋃ (n : ℕ), K n = univ) x = univ
[PROOFSTEP]
exact (Classical.choose_spec SigmaCompactSpace.exists_compact_covering).2
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
inst✝¹ : SigmaCompactSpace α
inst✝ : SigmaCompactSpace β
⊢ ⋃ (n : ℕ), (fun n => compactCovering α n ×ˢ compactCovering β n) n = univ
[PROOFSTEP]
simp only [iUnion_prod_of_monotone (compactCovering_subset α) (compactCovering_subset β), iUnion_compactCovering,
  univ_prod_univ]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
s t : Set α
inst✝³ : SigmaCompactSpace α
inst✝² : Finite ι
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), SigmaCompactSpace (π i)
⊢ SigmaCompactSpace ((i : ι) → π i)
[PROOFSTEP]
refine'
  ⟨⟨fun n => Set.pi univ fun i => compactCovering (π i) n, fun n =>
      isCompact_univ_pi fun i => isCompact_compactCovering (π i) _, _⟩⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
s t : Set α
inst✝³ : SigmaCompactSpace α
inst✝² : Finite ι
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), SigmaCompactSpace (π i)
⊢ ⋃ (n : ℕ), (fun n => Set.pi univ fun i => compactCovering (π i) n) n = univ
[PROOFSTEP]
rw [iUnion_univ_pi_of_monotone]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
s t : Set α
inst✝³ : SigmaCompactSpace α
inst✝² : Finite ι
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), SigmaCompactSpace (π i)
⊢ (Set.pi univ fun i => ⋃ (j : ℕ), compactCovering (π i) j) = univ
[PROOFSTEP]
simp only [iUnion_compactCovering, pi_univ]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
s t : Set α
inst✝³ : SigmaCompactSpace α
inst✝² : Finite ι
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), SigmaCompactSpace (π i)
⊢ ∀ (i : ι), Monotone fun n => compactCovering (π i) n
[PROOFSTEP]
exact fun i => compactCovering_subset (π i)
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
inst✝¹ : SigmaCompactSpace α
inst✝ : SigmaCompactSpace β
⊢ ⋃ (n : ℕ), (fun n => Sum.inl '' compactCovering α n ∪ Sum.inr '' compactCovering β n) n = univ
[PROOFSTEP]
simp only [iUnion_union_distrib, ← image_iUnion, iUnion_compactCovering, image_univ, range_inl_union_range_inr]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
s t : Set α
inst✝³ : SigmaCompactSpace α
inst✝² : Countable ι
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), SigmaCompactSpace (π i)
⊢ SigmaCompactSpace ((i : ι) × π i)
[PROOFSTEP]
cases isEmpty_or_nonempty ι
[GOAL]
case inl
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
s t : Set α
inst✝³ : SigmaCompactSpace α
inst✝² : Countable ι
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), SigmaCompactSpace (π i)
h✝ : IsEmpty ι
⊢ SigmaCompactSpace ((i : ι) × π i)
[PROOFSTEP]
infer_instance
[GOAL]
case inr
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
s t : Set α
inst✝³ : SigmaCompactSpace α
inst✝² : Countable ι
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), SigmaCompactSpace (π i)
h✝ : Nonempty ι
⊢ SigmaCompactSpace ((i : ι) × π i)
[PROOFSTEP]
rcases exists_surjective_nat ι with ⟨f, hf⟩
[GOAL]
case inr.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
s t : Set α
inst✝³ : SigmaCompactSpace α
inst✝² : Countable ι
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), SigmaCompactSpace (π i)
h✝ : Nonempty ι
f : ℕ → ι
hf : Function.Surjective f
⊢ SigmaCompactSpace ((i : ι) × π i)
[PROOFSTEP]
refine' ⟨⟨fun n => ⋃ k ≤ n, Sigma.mk (f k) '' compactCovering (π (f k)) n, fun n => _, _⟩⟩
[GOAL]
case inr.intro.refine'_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
s t : Set α
inst✝³ : SigmaCompactSpace α
inst✝² : Countable ι
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), SigmaCompactSpace (π i)
h✝ : Nonempty ι
f : ℕ → ι
hf : Function.Surjective f
n : ℕ
⊢ IsCompact ((fun n => ⋃ (k : ℕ) (_ : k ≤ n), Sigma.mk (f k) '' compactCovering (π (f k)) n) n)
[PROOFSTEP]
refine' (finite_le_nat _).isCompact_biUnion fun k _ => _
[GOAL]
case inr.intro.refine'_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
s t : Set α
inst✝³ : SigmaCompactSpace α
inst✝² : Countable ι
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), SigmaCompactSpace (π i)
h✝ : Nonempty ι
f : ℕ → ι
hf : Function.Surjective f
n k : ℕ
x✝ : k ∈ {i | i ≤ n}
⊢ IsCompact (Sigma.mk (f k) '' compactCovering (π (f k)) n)
[PROOFSTEP]
exact (isCompact_compactCovering _ _).image continuous_sigmaMk
[GOAL]
case inr.intro.refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
s t : Set α
inst✝³ : SigmaCompactSpace α
inst✝² : Countable ι
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), SigmaCompactSpace (π i)
h✝ : Nonempty ι
f : ℕ → ι
hf : Function.Surjective f
⊢ ⋃ (n : ℕ), (fun n => ⋃ (k : ℕ) (_ : k ≤ n), Sigma.mk (f k) '' compactCovering (π (f k)) n) n = univ
[PROOFSTEP]
simp only [iUnion_eq_univ_iff, Sigma.forall, mem_iUnion]
[GOAL]
case inr.intro.refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
s t : Set α
inst✝³ : SigmaCompactSpace α
inst✝² : Countable ι
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), SigmaCompactSpace (π i)
h✝ : Nonempty ι
f : ℕ → ι
hf : Function.Surjective f
⊢ ∀ (a : ι) (b : π a), ∃ i i_1 i_2, { fst := a, snd := b } ∈ Sigma.mk (f i_1) '' compactCovering (π (f i_1)) i
[PROOFSTEP]
rw [hf.forall]
  -- porting note: `simp only` failed to use `hf.forall`
[GOAL]
case inr.intro.refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
s t : Set α
inst✝³ : SigmaCompactSpace α
inst✝² : Countable ι
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), SigmaCompactSpace (π i)
h✝ : Nonempty ι
f : ℕ → ι
hf : Function.Surjective f
⊢ ∀ (x : ℕ) (b : π (f x)), ∃ i i_1 i_2, { fst := f x, snd := b } ∈ Sigma.mk (f i_1) '' compactCovering (π (f i_1)) i
[PROOFSTEP]
intro k y
[GOAL]
case inr.intro.refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
s t : Set α
inst✝³ : SigmaCompactSpace α
inst✝² : Countable ι
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), SigmaCompactSpace (π i)
h✝ : Nonempty ι
f : ℕ → ι
hf : Function.Surjective f
k : ℕ
y : π (f k)
⊢ ∃ i i_1 i_2, { fst := f k, snd := y } ∈ Sigma.mk (f i_1) '' compactCovering (π (f i_1)) i
[PROOFSTEP]
rcases exists_mem_compactCovering y with ⟨n, hn⟩
[GOAL]
case inr.intro.refine'_2.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
s t : Set α
inst✝³ : SigmaCompactSpace α
inst✝² : Countable ι
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), SigmaCompactSpace (π i)
h✝ : Nonempty ι
f : ℕ → ι
hf : Function.Surjective f
k : ℕ
y : π (f k)
n : ℕ
hn : y ∈ compactCovering (π (f k)) n
⊢ ∃ i i_1 i_2, { fst := f k, snd := y } ∈ Sigma.mk (f i_1) '' compactCovering (π (f i_1)) i
[PROOFSTEP]
refine' ⟨max k n, k, le_max_left _ _, mem_image_of_mem _ _⟩
[GOAL]
case inr.intro.refine'_2.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
s t : Set α
inst✝³ : SigmaCompactSpace α
inst✝² : Countable ι
inst✝¹ : (i : ι) → TopologicalSpace (π i)
inst✝ : ∀ (i : ι), SigmaCompactSpace (π i)
h✝ : Nonempty ι
f : ℕ → ι
hf : Function.Surjective f
k : ℕ
y : π (f k)
n : ℕ
hn : y ∈ compactCovering (π (f k)) n
⊢ y ∈ compactCovering (π (f k)) (max k n)
[PROOFSTEP]
exact compactCovering_subset _ (le_max_right _ _) hn
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : SigmaCompactSpace α
e : β → α
he : ClosedEmbedding e
⊢ ⋃ (n : ℕ), (fun n => e ⁻¹' compactCovering α n) n = univ
[PROOFSTEP]
rw [← preimage_iUnion, iUnion_compactCovering, preimage_univ]
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : SigmaCompactSpace α
ι : Type u_3
f : ι → Set α
hf : LocallyFinite f
hne : ∀ (i : ι), Set.Nonempty (f i)
⊢ Set.Countable univ
[PROOFSTEP]
have := fun n => hf.finite_nonempty_inter_compact (isCompact_compactCovering α n)
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : SigmaCompactSpace α
ι : Type u_3
f : ι → Set α
hf : LocallyFinite f
hne : ∀ (i : ι), Set.Nonempty (f i)
this : ∀ (n : ℕ), Set.Finite {i | Set.Nonempty (f i ∩ compactCovering α n)}
⊢ Set.Countable univ
[PROOFSTEP]
refine (countable_iUnion fun n => (this n).countable).mono fun i _ => ?_
[GOAL]
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : SigmaCompactSpace α
ι : Type u_3
f : ι → Set α
hf : LocallyFinite f
hne : ∀ (i : ι), Set.Nonempty (f i)
this : ∀ (n : ℕ), Set.Finite {i | Set.Nonempty (f i ∩ compactCovering α n)}
i : ι
x✝ : i ∈ univ
⊢ i ∈ ⋃ (i : ℕ), {i_1 | Set.Nonempty (f i_1 ∩ compactCovering α i)}
[PROOFSTEP]
rcases hne i with ⟨x, hx⟩
[GOAL]
case intro
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : SigmaCompactSpace α
ι : Type u_3
f : ι → Set α
hf : LocallyFinite f
hne : ∀ (i : ι), Set.Nonempty (f i)
this : ∀ (n : ℕ), Set.Finite {i | Set.Nonempty (f i ∩ compactCovering α n)}
i : ι
x✝ : i ∈ univ
x : α
hx : x ∈ f i
⊢ i ∈ ⋃ (i : ℕ), {i_1 | Set.Nonempty (f i_1 ∩ compactCovering α i)}
[PROOFSTEP]
rcases iUnion_eq_univ_iff.1 (iUnion_compactCovering α) x with ⟨n, hn⟩
[GOAL]
case intro.intro
α : Type u
β : Type v
ι✝ : Type u_1
π : ι✝ → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : SigmaCompactSpace α
ι : Type u_3
f : ι → Set α
hf : LocallyFinite f
hne : ∀ (i : ι), Set.Nonempty (f i)
this : ∀ (n : ℕ), Set.Finite {i | Set.Nonempty (f i ∩ compactCovering α n)}
i : ι
x✝ : i ∈ univ
x : α
hx : x ∈ f i
n : ℕ
hn : x ∈ compactCovering α n
⊢ i ∈ ⋃ (i : ℕ), {i_1 | Set.Nonempty (f i_1 ∩ compactCovering α i)}
[PROOFSTEP]
exact mem_iUnion.2 ⟨n, x, hx, hn⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
inst✝ : SigmaCompactSpace α
f : α → Set α
s : Set α
hs : IsClosed s
hf : ∀ (x : α), x ∈ s → f x ∈ 𝓝[s] x
⊢ ∃ t x, Set.Countable t ∧ s ⊆ ⋃ (x : α) (_ : x ∈ t), f x
[PROOFSTEP]
simp only [nhdsWithin, mem_inf_principal] at hf 
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
inst✝ : SigmaCompactSpace α
f : α → Set α
s : Set α
hs : IsClosed s
hf : ∀ (x : α), x ∈ s → {x_1 | x_1 ∈ s → x_1 ∈ f x} ∈ 𝓝 x
⊢ ∃ t x, Set.Countable t ∧ s ⊆ ⋃ (x : α) (_ : x ∈ t), f x
[PROOFSTEP]
choose t ht hsub using fun n =>
  ((isCompact_compactCovering α n).inter_right hs).elim_nhds_subcover _ fun x hx => hf x hx.right
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t✝ : Set α
inst✝ : SigmaCompactSpace α
f : α → Set α
s : Set α
hs : IsClosed s
hf : ∀ (x : α), x ∈ s → {x_1 | x_1 ∈ s → x_1 ∈ f x} ∈ 𝓝 x
t : ℕ → Finset α
ht : ∀ (n : ℕ) (x : α), x ∈ t n → x ∈ compactCovering α n ∩ s
hsub : ∀ (n : ℕ), compactCovering α n ∩ s ⊆ ⋃ (x : α) (_ : x ∈ t n), {x_1 | x_1 ∈ s → x_1 ∈ f x}
⊢ ∃ t x, Set.Countable t ∧ s ⊆ ⋃ (x : α) (_ : x ∈ t), f x
[PROOFSTEP]
refine'
  ⟨⋃ n, (t n : Set α), iUnion_subset fun n x hx => (ht n x hx).2, countable_iUnion fun n => (t n).countable_toSet,
    fun x hx => mem_iUnion₂.2 _⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t✝ : Set α
inst✝ : SigmaCompactSpace α
f : α → Set α
s : Set α
hs : IsClosed s
hf : ∀ (x : α), x ∈ s → {x_1 | x_1 ∈ s → x_1 ∈ f x} ∈ 𝓝 x
t : ℕ → Finset α
ht : ∀ (n : ℕ) (x : α), x ∈ t n → x ∈ compactCovering α n ∩ s
hsub : ∀ (n : ℕ), compactCovering α n ∩ s ⊆ ⋃ (x : α) (_ : x ∈ t n), {x_1 | x_1 ∈ s → x_1 ∈ f x}
x : α
hx : x ∈ s
⊢ ∃ i j, x ∈ f i
[PROOFSTEP]
rcases exists_mem_compactCovering x with ⟨n, hn⟩
[GOAL]
case intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t✝ : Set α
inst✝ : SigmaCompactSpace α
f : α → Set α
s : Set α
hs : IsClosed s
hf : ∀ (x : α), x ∈ s → {x_1 | x_1 ∈ s → x_1 ∈ f x} ∈ 𝓝 x
t : ℕ → Finset α
ht : ∀ (n : ℕ) (x : α), x ∈ t n → x ∈ compactCovering α n ∩ s
hsub : ∀ (n : ℕ), compactCovering α n ∩ s ⊆ ⋃ (x : α) (_ : x ∈ t n), {x_1 | x_1 ∈ s → x_1 ∈ f x}
x : α
hx : x ∈ s
n : ℕ
hn : x ∈ compactCovering α n
⊢ ∃ i j, x ∈ f i
[PROOFSTEP]
rcases mem_iUnion₂.1 (hsub n ⟨hn, hx⟩) with ⟨y, hyt : y ∈ t n, hyf : x ∈ s → x ∈ f y⟩
[GOAL]
case intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t✝ : Set α
inst✝ : SigmaCompactSpace α
f : α → Set α
s : Set α
hs : IsClosed s
hf : ∀ (x : α), x ∈ s → {x_1 | x_1 ∈ s → x_1 ∈ f x} ∈ 𝓝 x
t : ℕ → Finset α
ht : ∀ (n : ℕ) (x : α), x ∈ t n → x ∈ compactCovering α n ∩ s
hsub : ∀ (n : ℕ), compactCovering α n ∩ s ⊆ ⋃ (x : α) (_ : x ∈ t n), {x_1 | x_1 ∈ s → x_1 ∈ f x}
x : α
hx : x ∈ s
n : ℕ
hn : x ∈ compactCovering α n
y : α
hyt : y ∈ t n
hyf : x ∈ s → x ∈ f y
⊢ ∃ i j, x ∈ f i
[PROOFSTEP]
exact ⟨y, mem_iUnion.2 ⟨n, hyt⟩, hyf hx⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : SigmaCompactSpace α
f : α → Set α
hf : ∀ (x : α), f x ∈ 𝓝 x
⊢ ∃ s, Set.Countable s ∧ ⋃ (x : α) (_ : x ∈ s), f x = univ
[PROOFSTEP]
simp only [← nhdsWithin_univ] at hf 
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : SigmaCompactSpace α
f : α → Set α
hf : ∀ (x : α), f x ∈ 𝓝[univ] x
⊢ ∃ s, Set.Countable s ∧ ⋃ (x : α) (_ : x ∈ s), f x = univ
[PROOFSTEP]
rcases countable_cover_nhdsWithin_of_sigma_compact isClosed_univ fun x _ => hf x with ⟨s, -, hsc, hsU⟩
[GOAL]
case intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
inst✝ : SigmaCompactSpace α
f : α → Set α
hf : ∀ (x : α), f x ∈ 𝓝[univ] x
s : Set α
hsc : Set.Countable s
hsU : univ ⊆ ⋃ (x : α) (_ : x ∈ s), f x
⊢ ∃ s, Set.Countable s ∧ ⋃ (x : α) (_ : x ∈ s), f x = univ
[PROOFSTEP]
exact ⟨s, hsc, univ_subset_iff.1 hsU⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
K : CompactExhaustion α
x : α
⊢ ¬CompactExhaustion.find (shiftr K) x ≤ CompactExhaustion.find K x
[PROOFSTEP]
simp only [find_shiftr, not_le, Nat.lt_succ_self]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s t : Set α
K : CompactExhaustion α
X : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : LocallyCompactSpace X
inst✝ : SigmaCompactSpace X
⊢ CompactExhaustion X
[PROOFSTEP]
apply Classical.choice
[GOAL]
case a
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s t : Set α
K : CompactExhaustion α
X : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : LocallyCompactSpace X
inst✝ : SigmaCompactSpace X
⊢ Nonempty (CompactExhaustion X)
[PROOFSTEP]
let K : ℕ → { s : Set X // IsCompact s } := fun n =>
  Nat.recOn n ⟨∅, isCompact_empty⟩ fun n s =>
    ⟨(exists_compact_superset s.2).choose ∪ compactCovering X n,
      (exists_compact_superset s.2).choose_spec.1.union (isCompact_compactCovering _ _)⟩
[GOAL]
case a
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s t : Set α
K✝ : CompactExhaustion α
X : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : LocallyCompactSpace X
inst✝ : SigmaCompactSpace X
K : ℕ → { s // IsCompact s } :=
  fun n =>
    Nat.recOn n { val := ∅, property := (_ : IsCompact ∅) } fun n s =>
      { val := Exists.choose (_ : ∃ K', IsCompact K' ∧ ↑s ⊆ interior K') ∪ compactCovering X n,
        property := (_ : IsCompact (Exists.choose (_ : ∃ K', IsCompact K' ∧ ↑s ⊆ interior K') ∪ compactCovering X n)) }
⊢ Nonempty (CompactExhaustion X)
[PROOFSTEP]
refine' ⟨⟨fun n => (K n).1, fun n => (K n).2, fun n => _, _⟩⟩
[GOAL]
case a.refine'_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s t : Set α
K✝ : CompactExhaustion α
X : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : LocallyCompactSpace X
inst✝ : SigmaCompactSpace X
K : ℕ → { s // IsCompact s } :=
  fun n =>
    Nat.recOn n { val := ∅, property := (_ : IsCompact ∅) } fun n s =>
      { val := Exists.choose (_ : ∃ K', IsCompact K' ∧ ↑s ⊆ interior K') ∪ compactCovering X n,
        property := (_ : IsCompact (Exists.choose (_ : ∃ K', IsCompact K' ∧ ↑s ⊆ interior K') ∪ compactCovering X n)) }
n : ℕ
⊢ (fun n => ↑(K n)) n ⊆ interior ((fun n => ↑(K n)) (n + 1))
[PROOFSTEP]
exact Subset.trans (exists_compact_superset (K n).2).choose_spec.2 (interior_mono <| subset_union_left _ _)
[GOAL]
case a.refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s t : Set α
K✝ : CompactExhaustion α
X : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : LocallyCompactSpace X
inst✝ : SigmaCompactSpace X
K : ℕ → { s // IsCompact s } :=
  fun n =>
    Nat.recOn n { val := ∅, property := (_ : IsCompact ∅) } fun n s =>
      { val := Exists.choose (_ : ∃ K', IsCompact K' ∧ ↑s ⊆ interior K') ∪ compactCovering X n,
        property := (_ : IsCompact (Exists.choose (_ : ∃ K', IsCompact K' ∧ ↑s ⊆ interior K') ∪ compactCovering X n)) }
⊢ ⋃ (n : ℕ), (fun n => ↑(K n)) n = univ
[PROOFSTEP]
refine' univ_subset_iff.1 (iUnion_compactCovering X ▸ _)
[GOAL]
case a.refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace β
s t : Set α
K✝ : CompactExhaustion α
X : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : LocallyCompactSpace X
inst✝ : SigmaCompactSpace X
K : ℕ → { s // IsCompact s } :=
  fun n =>
    Nat.recOn n { val := ∅, property := (_ : IsCompact ∅) } fun n s =>
      { val := Exists.choose (_ : ∃ K', IsCompact K' ∧ ↑s ⊆ interior K') ∪ compactCovering X n,
        property := (_ : IsCompact (Exists.choose (_ : ∃ K', IsCompact K' ∧ ↑s ⊆ interior K') ∪ compactCovering X n)) }
⊢ ⋃ (n : ℕ), compactCovering X n ⊆ ⋃ (n : ℕ), (fun n => ↑(K n)) n
[PROOFSTEP]
exact iUnion_mono' fun n => ⟨n + 1, subset_union_right _ _⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
⊢ IsClopen s ↔ frontier s = ∅
[PROOFSTEP]
rw [IsClopen, ← closure_eq_iff_isClosed, ← interior_eq_iff_isOpen, frontier, diff_eq_empty]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
⊢ interior s = s ∧ closure s = s ↔ closure s ⊆ interior s
[PROOFSTEP]
refine' ⟨fun h => (h.2.trans h.1.symm).subset, fun h => _⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
h : closure s ⊆ interior s
⊢ interior s = s ∧ closure s = s
[PROOFSTEP]
exact ⟨interior_subset.antisymm (subset_closure.trans h), (h.trans interior_subset).antisymm subset_closure⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t Z a b : Set α
h : IsClopen Z
cover : Z ⊆ a ∪ b
ha : IsOpen a
hb : IsOpen b
hab : Disjoint a b
⊢ IsClopen (Z ∩ a)
[PROOFSTEP]
refine' ⟨IsOpen.inter h.1 ha, _⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t Z a b : Set α
h : IsClopen Z
cover : Z ⊆ a ∪ b
ha : IsOpen a
hb : IsOpen b
hab : Disjoint a b
⊢ IsClosed (Z ∩ a)
[PROOFSTEP]
have : IsClosed (Z ∩ bᶜ) := IsClosed.inter h.2 (isClosed_compl_iff.2 hb)
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t Z a b : Set α
h : IsClopen Z
cover : Z ⊆ a ∪ b
ha : IsOpen a
hb : IsOpen b
hab : Disjoint a b
this : IsClosed (Z ∩ bᶜ)
⊢ IsClosed (Z ∩ a)
[PROOFSTEP]
convert this using 1
[GOAL]
case h.e'_3
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t Z a b : Set α
h : IsClopen Z
cover : Z ⊆ a ∪ b
ha : IsOpen a
hb : IsOpen b
hab : Disjoint a b
this : IsClosed (Z ∩ bᶜ)
⊢ Z ∩ a = Z ∩ bᶜ
[PROOFSTEP]
refine' (inter_subset_inter_right Z hab.subset_compl_right).antisymm _
[GOAL]
case h.e'_3
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t Z a b : Set α
h : IsClopen Z
cover : Z ⊆ a ∪ b
ha : IsOpen a
hb : IsOpen b
hab : Disjoint a b
this : IsClosed (Z ∩ bᶜ)
⊢ Z ∩ bᶜ ⊆ Z ∩ a
[PROOFSTEP]
rintro x ⟨hx₁, hx₂⟩
[GOAL]
case h.e'_3.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t Z a b : Set α
h : IsClopen Z
cover : Z ⊆ a ∪ b
ha : IsOpen a
hb : IsOpen b
hab : Disjoint a b
this : IsClosed (Z ∩ bᶜ)
x : α
hx₁ : x ∈ Z
hx₂ : x ∈ bᶜ
⊢ x ∈ Z ∩ a
[PROOFSTEP]
exact ⟨hx₁, by simpa [not_mem_of_mem_compl hx₂] using cover hx₁⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t Z a b : Set α
h : IsClopen Z
cover : Z ⊆ a ∪ b
ha : IsOpen a
hb : IsOpen b
hab : Disjoint a b
this : IsClosed (Z ∩ bᶜ)
x : α
hx₁ : x ∈ Z
hx₂ : x ∈ bᶜ
⊢ x ∈ a
[PROOFSTEP]
simpa [not_mem_of_mem_compl hx₂] using cover hx₁
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
X : Type u_3
inst✝ : TopologicalSpace X
U : Set X
⊢ Continuous (boolIndicator U) ↔ IsClopen U
[PROOFSTEP]
constructor
[GOAL]
case mp
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
X : Type u_3
inst✝ : TopologicalSpace X
U : Set X
⊢ Continuous (boolIndicator U) → IsClopen U
[PROOFSTEP]
intro hc
[GOAL]
case mp
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
X : Type u_3
inst✝ : TopologicalSpace X
U : Set X
hc : Continuous (boolIndicator U)
⊢ IsClopen U
[PROOFSTEP]
rw [← U.preimage_boolIndicator_true]
[GOAL]
case mp
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
X : Type u_3
inst✝ : TopologicalSpace X
U : Set X
hc : Continuous (boolIndicator U)
⊢ IsClopen (boolIndicator U ⁻¹' {true})
[PROOFSTEP]
exact ⟨(isOpen_discrete _).preimage hc, (isClosed_discrete _).preimage hc⟩
[GOAL]
case mpr
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
X : Type u_3
inst✝ : TopologicalSpace X
U : Set X
⊢ IsClopen U → Continuous (boolIndicator U)
[PROOFSTEP]
refine' fun hU => ⟨fun s _ => _⟩
[GOAL]
case mpr
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
X : Type u_3
inst✝ : TopologicalSpace X
U : Set X
hU : IsClopen U
s : Set Bool
x✝ : IsOpen s
⊢ IsOpen (boolIndicator U ⁻¹' s)
[PROOFSTEP]
rcases U.preimage_boolIndicator s with (h | h | h | h)
[GOAL]
case mpr.inl
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
X : Type u_3
inst✝ : TopologicalSpace X
U : Set X
hU : IsClopen U
s : Set Bool
x✝ : IsOpen s
h : boolIndicator U ⁻¹' s = univ
⊢ IsOpen (boolIndicator U ⁻¹' s)
[PROOFSTEP]
rw [h]
[GOAL]
case mpr.inr.inl
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
X : Type u_3
inst✝ : TopologicalSpace X
U : Set X
hU : IsClopen U
s : Set Bool
x✝ : IsOpen s
h : boolIndicator U ⁻¹' s = U
⊢ IsOpen (boolIndicator U ⁻¹' s)
[PROOFSTEP]
rw [h]
[GOAL]
case mpr.inr.inr.inl
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
X : Type u_3
inst✝ : TopologicalSpace X
U : Set X
hU : IsClopen U
s : Set Bool
x✝ : IsOpen s
h : boolIndicator U ⁻¹' s = Uᶜ
⊢ IsOpen (boolIndicator U ⁻¹' s)
[PROOFSTEP]
rw [h]
[GOAL]
case mpr.inr.inr.inr
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
X : Type u_3
inst✝ : TopologicalSpace X
U : Set X
hU : IsClopen U
s : Set Bool
x✝ : IsOpen s
h : boolIndicator U ⁻¹' s = ∅
⊢ IsOpen (boolIndicator U ⁻¹' s)
[PROOFSTEP]
rw [h]
[GOAL]
case mpr.inl
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
X : Type u_3
inst✝ : TopologicalSpace X
U : Set X
hU : IsClopen U
s : Set Bool
x✝ : IsOpen s
h : boolIndicator U ⁻¹' s = univ
⊢ IsOpen univ
case mpr.inr.inl
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
X : Type u_3
inst✝ : TopologicalSpace X
U : Set X
hU : IsClopen U
s : Set Bool
x✝ : IsOpen s
h : boolIndicator U ⁻¹' s = U
⊢ IsOpen U
case mpr.inr.inr.inl
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
X : Type u_3
inst✝ : TopologicalSpace X
U : Set X
hU : IsClopen U
s : Set Bool
x✝ : IsOpen s
h : boolIndicator U ⁻¹' s = Uᶜ
⊢ IsOpen Uᶜ
case mpr.inr.inr.inr
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
X : Type u_3
inst✝ : TopologicalSpace X
U : Set X
hU : IsClopen U
s : Set Bool
x✝ : IsOpen s
h : boolIndicator U ⁻¹' s = ∅
⊢ IsOpen ∅
[PROOFSTEP]
exacts [isOpen_univ, hU.1, hU.2.isOpen_compl, isOpen_empty]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
X : Type u_3
inst✝ : TopologicalSpace X
s U : Set X
⊢ ContinuousOn (boolIndicator U) s ↔ IsClopen (Subtype.val ⁻¹' U)
[PROOFSTEP]
rw [continuousOn_iff_continuous_restrict, ← continuous_boolIndicator_iff_clopen]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t : Set α
X : Type u_3
inst✝ : TopologicalSpace X
s U : Set X
⊢ Continuous (restrict s (boolIndicator U)) ↔ Continuous (boolIndicator (Subtype.val ⁻¹' U))
[PROOFSTEP]
rfl
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s u v : Set α
hu : IsOpen u
hv : IsOpen v
⊢ Set.Nonempty (closure s ∩ u) → Set.Nonempty (closure s ∩ v) → Set.Nonempty (closure s ∩ (u ∩ v)) ↔
    Set.Nonempty (s ∩ u) → Set.Nonempty (s ∩ v) → Set.Nonempty (s ∩ (u ∩ v))
[PROOFSTEP]
iterate 3 rw [closure_inter_open_nonempty_iff]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s u v : Set α
hu : IsOpen u
hv : IsOpen v
⊢ Set.Nonempty (closure s ∩ u) → Set.Nonempty (closure s ∩ v) → Set.Nonempty (closure s ∩ (u ∩ v)) ↔
    Set.Nonempty (s ∩ u) → Set.Nonempty (s ∩ v) → Set.Nonempty (s ∩ (u ∩ v))
[PROOFSTEP]
rw [closure_inter_open_nonempty_iff]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s u v : Set α
hu : IsOpen u
hv : IsOpen v
⊢ Set.Nonempty (s ∩ u) → Set.Nonempty (closure s ∩ v) → Set.Nonempty (closure s ∩ (u ∩ v)) ↔
    Set.Nonempty (s ∩ u) → Set.Nonempty (s ∩ v) → Set.Nonempty (s ∩ (u ∩ v))
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s u v : Set α
hu : IsOpen u
hv : IsOpen v
⊢ IsOpen u
[PROOFSTEP]
rw [closure_inter_open_nonempty_iff]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s u v : Set α
hu : IsOpen u
hv : IsOpen v
⊢ Set.Nonempty (s ∩ u) → Set.Nonempty (s ∩ v) → Set.Nonempty (closure s ∩ (u ∩ v)) ↔
    Set.Nonempty (s ∩ u) → Set.Nonempty (s ∩ v) → Set.Nonempty (s ∩ (u ∩ v))
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s u v : Set α
hu : IsOpen u
hv : IsOpen v
⊢ IsOpen v
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s u v : Set α
hu : IsOpen u
hv : IsOpen v
⊢ IsOpen u
[PROOFSTEP]
rw [closure_inter_open_nonempty_iff]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s u v : Set α
hu : IsOpen u
hv : IsOpen v
⊢ IsOpen (u ∩ v)
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s u v : Set α
hu : IsOpen u
hv : IsOpen v
⊢ IsOpen v
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s u v : Set α
hu : IsOpen u
hv : IsOpen v
⊢ IsOpen u
[PROOFSTEP]
exacts [hu.inter hv, hv, hu]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : s ∈ irreducibleComponents α
⊢ IsClosed s
[PROOFSTEP]
rw [← closure_eq_iff_isClosed, eq_comm]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : s ∈ irreducibleComponents α
⊢ s = closure s
[PROOFSTEP]
exact subset_closure.antisymm (H.2 H.1.closure subset_closure)
[GOAL]
α✝ : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : TopologicalSpace β
s t : Set α✝
α : Type u_3
inst✝ : TopologicalSpace α
⊢ irreducibleComponents α = maximals (fun x x_1 => x ≤ x_1) {s | IsClosed s ∧ IsIrreducible s}
[PROOFSTEP]
ext s
[GOAL]
case h
α✝ : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : TopologicalSpace β
s✝ t : Set α✝
α : Type u_3
inst✝ : TopologicalSpace α
s : Set α
⊢ s ∈ irreducibleComponents α ↔ s ∈ maximals (fun x x_1 => x ≤ x_1) {s | IsClosed s ∧ IsIrreducible s}
[PROOFSTEP]
constructor
[GOAL]
case h.mp
α✝ : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : TopologicalSpace β
s✝ t : Set α✝
α : Type u_3
inst✝ : TopologicalSpace α
s : Set α
⊢ s ∈ irreducibleComponents α → s ∈ maximals (fun x x_1 => x ≤ x_1) {s | IsClosed s ∧ IsIrreducible s}
[PROOFSTEP]
intro H
[GOAL]
case h.mp
α✝ : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : TopologicalSpace β
s✝ t : Set α✝
α : Type u_3
inst✝ : TopologicalSpace α
s : Set α
H : s ∈ irreducibleComponents α
⊢ s ∈ maximals (fun x x_1 => x ≤ x_1) {s | IsClosed s ∧ IsIrreducible s}
[PROOFSTEP]
exact ⟨⟨isClosed_of_mem_irreducibleComponents _ H, H.1⟩, fun x h e => H.2 h.2 e⟩
[GOAL]
case h.mpr
α✝ : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : TopologicalSpace β
s✝ t : Set α✝
α : Type u_3
inst✝ : TopologicalSpace α
s : Set α
⊢ s ∈ maximals (fun x x_1 => x ≤ x_1) {s | IsClosed s ∧ IsIrreducible s} → s ∈ irreducibleComponents α
[PROOFSTEP]
intro H
[GOAL]
case h.mpr
α✝ : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : TopologicalSpace β
s✝ t : Set α✝
α : Type u_3
inst✝ : TopologicalSpace α
s : Set α
H : s ∈ maximals (fun x x_1 => x ≤ x_1) {s | IsClosed s ∧ IsIrreducible s}
⊢ s ∈ irreducibleComponents α
[PROOFSTEP]
refine' ⟨H.1.2, fun x h e => _⟩
[GOAL]
case h.mpr
α✝ : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : TopologicalSpace β
s✝ t : Set α✝
α : Type u_3
inst✝ : TopologicalSpace α
s : Set α
H : s ∈ maximals (fun x x_1 => x ≤ x_1) {s | IsClosed s ∧ IsIrreducible s}
x : Set α
h : x ∈ {s | IsIrreducible s}
e : (fun x x_1 => x ≤ x_1) s x
⊢ (fun x x_1 => x ≤ x_1) x s
[PROOFSTEP]
have : closure x ≤ s := H.2 ⟨isClosed_closure, h.closure⟩ (e.trans subset_closure)
[GOAL]
case h.mpr
α✝ : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : TopologicalSpace β
s✝ t : Set α✝
α : Type u_3
inst✝ : TopologicalSpace α
s : Set α
H : s ∈ maximals (fun x x_1 => x ≤ x_1) {s | IsClosed s ∧ IsIrreducible s}
x : Set α
h : x ∈ {s | IsIrreducible s}
e : (fun x x_1 => x ≤ x_1) s x
this : closure x ≤ s
⊢ (fun x x_1 => x ≤ x_1) x s
[PROOFSTEP]
exact le_trans subset_closure this
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s✝ t✝ : Set α
inst✝ : PreirreducibleSpace α
s t : Set α
⊢ IsOpen s → IsOpen t → Set.Nonempty s → Set.Nonempty t → Set.Nonempty (s ∩ t)
[PROOFSTEP]
simpa only [univ_inter, univ_subset_iff] using @PreirreducibleSpace.isPreirreducible_univ α _ _ s t
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
⊢ IsPreirreducible (f '' s)
[PROOFSTEP]
rintro u v hu hv ⟨_, ⟨⟨x, hx, rfl⟩, hxu⟩⟩ ⟨_, ⟨⟨y, hy, rfl⟩, hyv⟩⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : f x ∈ u
y : α
hy : y ∈ s
hyv : f y ∈ v
⊢ Set.Nonempty (f '' s ∩ (u ∩ v))
[PROOFSTEP]
rw [← mem_preimage] at hxu hyv 
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : x ∈ f ⁻¹' u
y : α
hy : y ∈ s
hyv : y ∈ f ⁻¹' v
⊢ Set.Nonempty (f '' s ∩ (u ∩ v))
[PROOFSTEP]
rcases continuousOn_iff'.1 hf u hu with ⟨u', hu', u'_eq⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : x ∈ f ⁻¹' u
y : α
hy : y ∈ s
hyv : y ∈ f ⁻¹' v
u' : Set α
hu' : IsOpen u'
u'_eq : f ⁻¹' u ∩ s = u' ∩ s
⊢ Set.Nonempty (f '' s ∩ (u ∩ v))
[PROOFSTEP]
rcases continuousOn_iff'.1 hf v hv with ⟨v', hv', v'_eq⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : x ∈ f ⁻¹' u
y : α
hy : y ∈ s
hyv : y ∈ f ⁻¹' v
u' : Set α
hu' : IsOpen u'
u'_eq : f ⁻¹' u ∩ s = u' ∩ s
v' : Set α
hv' : IsOpen v'
v'_eq : f ⁻¹' v ∩ s = v' ∩ s
⊢ Set.Nonempty (f '' s ∩ (u ∩ v))
[PROOFSTEP]
have := H u' v' hu' hv'
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : x ∈ f ⁻¹' u
y : α
hy : y ∈ s
hyv : y ∈ f ⁻¹' v
u' : Set α
hu' : IsOpen u'
u'_eq : f ⁻¹' u ∩ s = u' ∩ s
v' : Set α
hv' : IsOpen v'
v'_eq : f ⁻¹' v ∩ s = v' ∩ s
this : Set.Nonempty (s ∩ u') → Set.Nonempty (s ∩ v') → Set.Nonempty (s ∩ (u' ∩ v'))
⊢ Set.Nonempty (f '' s ∩ (u ∩ v))
[PROOFSTEP]
rw [inter_comm s u', ← u'_eq] at this 
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : x ∈ f ⁻¹' u
y : α
hy : y ∈ s
hyv : y ∈ f ⁻¹' v
u' : Set α
hu' : IsOpen u'
u'_eq : f ⁻¹' u ∩ s = u' ∩ s
v' : Set α
hv' : IsOpen v'
v'_eq : f ⁻¹' v ∩ s = v' ∩ s
this : Set.Nonempty (f ⁻¹' u ∩ s) → Set.Nonempty (s ∩ v') → Set.Nonempty (s ∩ (u' ∩ v'))
⊢ Set.Nonempty (f '' s ∩ (u ∩ v))
[PROOFSTEP]
rw [inter_comm s v', ← v'_eq] at this 
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : x ∈ f ⁻¹' u
y : α
hy : y ∈ s
hyv : y ∈ f ⁻¹' v
u' : Set α
hu' : IsOpen u'
u'_eq : f ⁻¹' u ∩ s = u' ∩ s
v' : Set α
hv' : IsOpen v'
v'_eq : f ⁻¹' v ∩ s = v' ∩ s
this : Set.Nonempty (f ⁻¹' u ∩ s) → Set.Nonempty (f ⁻¹' v ∩ s) → Set.Nonempty (s ∩ (u' ∩ v'))
⊢ Set.Nonempty (f '' s ∩ (u ∩ v))
[PROOFSTEP]
rcases this ⟨x, hxu, hx⟩ ⟨y, hyv, hy⟩ with ⟨z, hzs, hzu', hzv'⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : x ∈ f ⁻¹' u
y : α
hy : y ∈ s
hyv : y ∈ f ⁻¹' v
u' : Set α
hu' : IsOpen u'
u'_eq : f ⁻¹' u ∩ s = u' ∩ s
v' : Set α
hv' : IsOpen v'
v'_eq : f ⁻¹' v ∩ s = v' ∩ s
this : Set.Nonempty (f ⁻¹' u ∩ s) → Set.Nonempty (f ⁻¹' v ∩ s) → Set.Nonempty (s ∩ (u' ∩ v'))
z : α
hzs : z ∈ s
hzu' : z ∈ u'
hzv' : z ∈ v'
⊢ Set.Nonempty (f '' s ∩ (u ∩ v))
[PROOFSTEP]
refine' ⟨f z, mem_image_of_mem f hzs, _, _⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : x ∈ f ⁻¹' u
y : α
hy : y ∈ s
hyv : y ∈ f ⁻¹' v
u' : Set α
hu' : IsOpen u'
u'_eq : f ⁻¹' u ∩ s = u' ∩ s
v' : Set α
hv' : IsOpen v'
v'_eq : f ⁻¹' v ∩ s = v' ∩ s
this : Set.Nonempty (f ⁻¹' u ∩ s) → Set.Nonempty (f ⁻¹' v ∩ s) → Set.Nonempty (s ∩ (u' ∩ v'))
z : α
hzs : z ∈ s
hzu' : z ∈ u'
hzv' : z ∈ v'
⊢ f z ∈ u
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : x ∈ f ⁻¹' u
y : α
hy : y ∈ s
hyv : y ∈ f ⁻¹' v
u' : Set α
hu' : IsOpen u'
u'_eq : f ⁻¹' u ∩ s = u' ∩ s
v' : Set α
hv' : IsOpen v'
v'_eq : f ⁻¹' v ∩ s = v' ∩ s
this : Set.Nonempty (f ⁻¹' u ∩ s) → Set.Nonempty (f ⁻¹' v ∩ s) → Set.Nonempty (s ∩ (u' ∩ v'))
z : α
hzs : z ∈ s
hzu' : z ∈ u'
hzv' : z ∈ v'
⊢ f z ∈ v
[PROOFSTEP]
all_goals
  rw [← mem_preimage]
  apply mem_of_mem_inter_left
  show z ∈ _ ∩ s
  simp [*]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : x ∈ f ⁻¹' u
y : α
hy : y ∈ s
hyv : y ∈ f ⁻¹' v
u' : Set α
hu' : IsOpen u'
u'_eq : f ⁻¹' u ∩ s = u' ∩ s
v' : Set α
hv' : IsOpen v'
v'_eq : f ⁻¹' v ∩ s = v' ∩ s
this : Set.Nonempty (f ⁻¹' u ∩ s) → Set.Nonempty (f ⁻¹' v ∩ s) → Set.Nonempty (s ∩ (u' ∩ v'))
z : α
hzs : z ∈ s
hzu' : z ∈ u'
hzv' : z ∈ v'
⊢ f z ∈ u
[PROOFSTEP]
rw [← mem_preimage]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : x ∈ f ⁻¹' u
y : α
hy : y ∈ s
hyv : y ∈ f ⁻¹' v
u' : Set α
hu' : IsOpen u'
u'_eq : f ⁻¹' u ∩ s = u' ∩ s
v' : Set α
hv' : IsOpen v'
v'_eq : f ⁻¹' v ∩ s = v' ∩ s
this : Set.Nonempty (f ⁻¹' u ∩ s) → Set.Nonempty (f ⁻¹' v ∩ s) → Set.Nonempty (s ∩ (u' ∩ v'))
z : α
hzs : z ∈ s
hzu' : z ∈ u'
hzv' : z ∈ v'
⊢ z ∈ f ⁻¹' u
[PROOFSTEP]
apply mem_of_mem_inter_left
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1.h
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : x ∈ f ⁻¹' u
y : α
hy : y ∈ s
hyv : y ∈ f ⁻¹' v
u' : Set α
hu' : IsOpen u'
u'_eq : f ⁻¹' u ∩ s = u' ∩ s
v' : Set α
hv' : IsOpen v'
v'_eq : f ⁻¹' v ∩ s = v' ∩ s
this : Set.Nonempty (f ⁻¹' u ∩ s) → Set.Nonempty (f ⁻¹' v ∩ s) → Set.Nonempty (s ∩ (u' ∩ v'))
z : α
hzs : z ∈ s
hzu' : z ∈ u'
hzv' : z ∈ v'
⊢ z ∈ f ⁻¹' u ∩ ?intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1.b
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1.b
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : x ∈ f ⁻¹' u
y : α
hy : y ∈ s
hyv : y ∈ f ⁻¹' v
u' : Set α
hu' : IsOpen u'
u'_eq : f ⁻¹' u ∩ s = u' ∩ s
v' : Set α
hv' : IsOpen v'
v'_eq : f ⁻¹' v ∩ s = v' ∩ s
this : Set.Nonempty (f ⁻¹' u ∩ s) → Set.Nonempty (f ⁻¹' v ∩ s) → Set.Nonempty (s ∩ (u' ∩ v'))
z : α
hzs : z ∈ s
hzu' : z ∈ u'
hzv' : z ∈ v'
⊢ Set α
[PROOFSTEP]
show z ∈ _ ∩ s
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1.h
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : x ∈ f ⁻¹' u
y : α
hy : y ∈ s
hyv : y ∈ f ⁻¹' v
u' : Set α
hu' : IsOpen u'
u'_eq : f ⁻¹' u ∩ s = u' ∩ s
v' : Set α
hv' : IsOpen v'
v'_eq : f ⁻¹' v ∩ s = v' ∩ s
this : Set.Nonempty (f ⁻¹' u ∩ s) → Set.Nonempty (f ⁻¹' v ∩ s) → Set.Nonempty (s ∩ (u' ∩ v'))
z : α
hzs : z ∈ s
hzu' : z ∈ u'
hzv' : z ∈ v'
⊢ z ∈ f ⁻¹' u ∩ s
[PROOFSTEP]
simp [*]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : x ∈ f ⁻¹' u
y : α
hy : y ∈ s
hyv : y ∈ f ⁻¹' v
u' : Set α
hu' : IsOpen u'
u'_eq : f ⁻¹' u ∩ s = u' ∩ s
v' : Set α
hv' : IsOpen v'
v'_eq : f ⁻¹' v ∩ s = v' ∩ s
this : Set.Nonempty (f ⁻¹' u ∩ s) → Set.Nonempty (f ⁻¹' v ∩ s) → Set.Nonempty (s ∩ (u' ∩ v'))
z : α
hzs : z ∈ s
hzu' : z ∈ u'
hzv' : z ∈ v'
⊢ f z ∈ v
[PROOFSTEP]
rw [← mem_preimage]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : x ∈ f ⁻¹' u
y : α
hy : y ∈ s
hyv : y ∈ f ⁻¹' v
u' : Set α
hu' : IsOpen u'
u'_eq : f ⁻¹' u ∩ s = u' ∩ s
v' : Set α
hv' : IsOpen v'
v'_eq : f ⁻¹' v ∩ s = v' ∩ s
this : Set.Nonempty (f ⁻¹' u ∩ s) → Set.Nonempty (f ⁻¹' v ∩ s) → Set.Nonempty (s ∩ (u' ∩ v'))
z : α
hzs : z ∈ s
hzu' : z ∈ u'
hzv' : z ∈ v'
⊢ z ∈ f ⁻¹' v
[PROOFSTEP]
apply mem_of_mem_inter_left
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2.h
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : x ∈ f ⁻¹' u
y : α
hy : y ∈ s
hyv : y ∈ f ⁻¹' v
u' : Set α
hu' : IsOpen u'
u'_eq : f ⁻¹' u ∩ s = u' ∩ s
v' : Set α
hv' : IsOpen v'
v'_eq : f ⁻¹' v ∩ s = v' ∩ s
this : Set.Nonempty (f ⁻¹' u ∩ s) → Set.Nonempty (f ⁻¹' v ∩ s) → Set.Nonempty (s ∩ (u' ∩ v'))
z : α
hzs : z ∈ s
hzu' : z ∈ u'
hzv' : z ∈ v'
⊢ z ∈ f ⁻¹' v ∩ ?intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2.b
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2.b
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : x ∈ f ⁻¹' u
y : α
hy : y ∈ s
hyv : y ∈ f ⁻¹' v
u' : Set α
hu' : IsOpen u'
u'_eq : f ⁻¹' u ∩ s = u' ∩ s
v' : Set α
hv' : IsOpen v'
v'_eq : f ⁻¹' v ∩ s = v' ∩ s
this : Set.Nonempty (f ⁻¹' u ∩ s) → Set.Nonempty (f ⁻¹' v ∩ s) → Set.Nonempty (s ∩ (u' ∩ v'))
z : α
hzs : z ∈ s
hzu' : z ∈ u'
hzv' : z ∈ v'
⊢ Set α
[PROOFSTEP]
show z ∈ _ ∩ s
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2.h
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
H : IsPreirreducible s
f : α → β
hf : ContinuousOn f s
u v : Set β
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ s
hxu : x ∈ f ⁻¹' u
y : α
hy : y ∈ s
hyv : y ∈ f ⁻¹' v
u' : Set α
hu' : IsOpen u'
u'_eq : f ⁻¹' u ∩ s = u' ∩ s
v' : Set α
hv' : IsOpen v'
v'_eq : f ⁻¹' v ∩ s = v' ∩ s
this : Set.Nonempty (f ⁻¹' u ∩ s) → Set.Nonempty (f ⁻¹' v ∩ s) → Set.Nonempty (s ∩ (u' ∩ v'))
z : α
hzs : z ∈ s
hzu' : z ∈ u'
hzv' : z ∈ v'
⊢ z ∈ f ⁻¹' v ∩ s
[PROOFSTEP]
simp [*]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
h : IsPreirreducible s
⊢ IsPreirreducible univ
[PROOFSTEP]
rintro _ _ ⟨u, hu, rfl⟩ ⟨v, hv, rfl⟩ ⟨⟨x, hxs⟩, -, hxu⟩ ⟨⟨y, hys⟩, -, hyv⟩
[GOAL]
case intro.intro.intro.intro.intro.mk.intro.intro.mk.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
h : IsPreirreducible s
u : Set α
hu : IsOpen u
v : Set α
hv : IsOpen v
x : α
hxs : x ∈ s
hxu : { val := x, property := hxs } ∈ val ⁻¹' u
y : α
hys : y ∈ s
hyv : { val := y, property := hys } ∈ val ⁻¹' v
⊢ Set.Nonempty (univ ∩ (val ⁻¹' u ∩ val ⁻¹' v))
[PROOFSTEP]
rcases h u v hu hv ⟨x, hxs, hxu⟩ ⟨y, hys, hyv⟩ with ⟨z, hzs, ⟨hzu, hzv⟩⟩
[GOAL]
case intro.intro.intro.intro.intro.mk.intro.intro.mk.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
h : IsPreirreducible s
u : Set α
hu : IsOpen u
v : Set α
hv : IsOpen v
x : α
hxs : x ∈ s
hxu : { val := x, property := hxs } ∈ val ⁻¹' u
y : α
hys : y ∈ s
hyv : { val := y, property := hys } ∈ val ⁻¹' v
z : α
hzs : z ∈ s
hzu : z ∈ u
hzv : z ∈ v
⊢ Set.Nonempty (univ ∩ (val ⁻¹' u ∩ val ⁻¹' v))
[PROOFSTEP]
exact ⟨⟨z, hzs⟩, ⟨Set.mem_univ _, ⟨hzu, hzv⟩⟩⟩
[GOAL]
α✝ : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : TopologicalSpace β
s t : Set α✝
α : Type ?u.291097
inst✝ : Infinite α
u v : Set (CofiniteTopology α)
⊢ IsOpen u → IsOpen v → Set.Nonempty (univ ∩ u) → Set.Nonempty (univ ∩ v) → Set.Nonempty (univ ∩ (u ∩ v))
[PROOFSTEP]
haveI : Infinite (CofiniteTopology α) := ‹_›
[GOAL]
α✝ : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : TopologicalSpace β
s t : Set α✝
α : Type ?u.291097
inst✝ : Infinite α
u v : Set (CofiniteTopology α)
this : Infinite (CofiniteTopology α)
⊢ IsOpen u → IsOpen v → Set.Nonempty (univ ∩ u) → Set.Nonempty (univ ∩ v) → Set.Nonempty (univ ∩ (u ∩ v))
[PROOFSTEP]
simp only [CofiniteTopology.isOpen_iff, univ_inter]
[GOAL]
α✝ : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : TopologicalSpace β
s t : Set α✝
α : Type ?u.291097
inst✝ : Infinite α
u v : Set (CofiniteTopology α)
this : Infinite (CofiniteTopology α)
⊢ (Set.Nonempty u → Set.Finite uᶜ) →
    (Set.Nonempty v → Set.Finite vᶜ) → Set.Nonempty u → Set.Nonempty v → Set.Nonempty (u ∩ v)
[PROOFSTEP]
intro hu hv hu' hv'
[GOAL]
α✝ : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α✝
inst✝¹ : TopologicalSpace β
s t : Set α✝
α : Type ?u.291097
inst✝ : Infinite α
u v : Set (CofiniteTopology α)
this : Infinite (CofiniteTopology α)
hu : Set.Nonempty u → Set.Finite uᶜ
hv : Set.Nonempty v → Set.Finite vᶜ
hu' : Set.Nonempty u
hv' : Set.Nonempty v
⊢ Set.Nonempty (u ∩ v)
[PROOFSTEP]
simpa only [compl_union, compl_compl] using ((hu hu').union (hv hv')).infinite_compl.nonempty
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
⊢ IsIrreducible s ↔
    ∀ (U : Finset (Set α)),
      (∀ (u : Set α), u ∈ U → IsOpen u) → (∀ (u : Set α), u ∈ U → Set.Nonempty (s ∩ u)) → Set.Nonempty (s ∩ ⋂₀ ↑U)
[PROOFSTEP]
refine ⟨fun h U hu hU => ?_, fun h => ⟨?_, ?_⟩⟩
[GOAL]
case refine_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
h : IsIrreducible s
U : Finset (Set α)
hu : ∀ (u : Set α), u ∈ U → IsOpen u
hU : ∀ (u : Set α), u ∈ U → Set.Nonempty (s ∩ u)
⊢ Set.Nonempty (s ∩ ⋂₀ ↑U)
[PROOFSTEP]
induction U using Finset.induction_on
[GOAL]
case refine_1.empty
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
h : IsIrreducible s
hu : ∀ (u : Set α), u ∈ ∅ → IsOpen u
hU : ∀ (u : Set α), u ∈ ∅ → Set.Nonempty (s ∩ u)
⊢ Set.Nonempty (s ∩ ⋂₀ ↑∅)
case refine_1.insert
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝¹ t s : Set α
h : IsIrreducible s
a✝² : Set α
s✝ : Finset (Set α)
a✝¹ : ¬a✝² ∈ s✝
a✝ : (∀ (u : Set α), u ∈ s✝ → IsOpen u) → (∀ (u : Set α), u ∈ s✝ → Set.Nonempty (s ∩ u)) → Set.Nonempty (s ∩ ⋂₀ ↑s✝)
hu : ∀ (u : Set α), u ∈ insert a✝² s✝ → IsOpen u
hU : ∀ (u : Set α), u ∈ insert a✝² s✝ → Set.Nonempty (s ∩ u)
⊢ Set.Nonempty (s ∩ ⋂₀ ↑(insert a✝² s✝))
[PROOFSTEP]
case empty => simpa using h.nonempty
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
h : IsIrreducible s
hu : ∀ (u : Set α), u ∈ ∅ → IsOpen u
hU : ∀ (u : Set α), u ∈ ∅ → Set.Nonempty (s ∩ u)
⊢ Set.Nonempty (s ∩ ⋂₀ ↑∅)
[PROOFSTEP]
case empty => simpa using h.nonempty
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
h : IsIrreducible s
hu : ∀ (u : Set α), u ∈ ∅ → IsOpen u
hU : ∀ (u : Set α), u ∈ ∅ → Set.Nonempty (s ∩ u)
⊢ Set.Nonempty (s ∩ ⋂₀ ↑∅)
[PROOFSTEP]
simpa using h.nonempty
[GOAL]
case refine_1.insert
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝¹ t s : Set α
h : IsIrreducible s
a✝² : Set α
s✝ : Finset (Set α)
a✝¹ : ¬a✝² ∈ s✝
a✝ : (∀ (u : Set α), u ∈ s✝ → IsOpen u) → (∀ (u : Set α), u ∈ s✝ → Set.Nonempty (s ∩ u)) → Set.Nonempty (s ∩ ⋂₀ ↑s✝)
hu : ∀ (u : Set α), u ∈ insert a✝² s✝ → IsOpen u
hU : ∀ (u : Set α), u ∈ insert a✝² s✝ → Set.Nonempty (s ∩ u)
⊢ Set.Nonempty (s ∩ ⋂₀ ↑(insert a✝² s✝))
[PROOFSTEP]
case insert u U _ IH =>
  rw [Finset.coe_insert, sInter_insert]
  rw [Finset.forall_mem_insert] at hu hU 
  exact h.2 _ _ hu.1 (isOpen_sInter U.finite_toSet hu.2) hU.1 (IH hu.2 hU.2)
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
h : IsIrreducible s
u : Set α
U : Finset (Set α)
a✝ : ¬u ∈ U
IH : (∀ (u : Set α), u ∈ U → IsOpen u) → (∀ (u : Set α), u ∈ U → Set.Nonempty (s ∩ u)) → Set.Nonempty (s ∩ ⋂₀ ↑U)
hu : ∀ (u_1 : Set α), u_1 ∈ insert u U → IsOpen u_1
hU : ∀ (u_1 : Set α), u_1 ∈ insert u U → Set.Nonempty (s ∩ u_1)
⊢ Set.Nonempty (s ∩ ⋂₀ ↑(insert u U))
[PROOFSTEP]
case insert u U _ IH =>
  rw [Finset.coe_insert, sInter_insert]
  rw [Finset.forall_mem_insert] at hu hU 
  exact h.2 _ _ hu.1 (isOpen_sInter U.finite_toSet hu.2) hU.1 (IH hu.2 hU.2)
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
h : IsIrreducible s
u : Set α
U : Finset (Set α)
a✝ : ¬u ∈ U
IH : (∀ (u : Set α), u ∈ U → IsOpen u) → (∀ (u : Set α), u ∈ U → Set.Nonempty (s ∩ u)) → Set.Nonempty (s ∩ ⋂₀ ↑U)
hu : ∀ (u_1 : Set α), u_1 ∈ insert u U → IsOpen u_1
hU : ∀ (u_1 : Set α), u_1 ∈ insert u U → Set.Nonempty (s ∩ u_1)
⊢ Set.Nonempty (s ∩ ⋂₀ ↑(insert u U))
[PROOFSTEP]
rw [Finset.coe_insert, sInter_insert]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
h : IsIrreducible s
u : Set α
U : Finset (Set α)
a✝ : ¬u ∈ U
IH : (∀ (u : Set α), u ∈ U → IsOpen u) → (∀ (u : Set α), u ∈ U → Set.Nonempty (s ∩ u)) → Set.Nonempty (s ∩ ⋂₀ ↑U)
hu : ∀ (u_1 : Set α), u_1 ∈ insert u U → IsOpen u_1
hU : ∀ (u_1 : Set α), u_1 ∈ insert u U → Set.Nonempty (s ∩ u_1)
⊢ Set.Nonempty (s ∩ (u ∩ ⋂₀ ↑U))
[PROOFSTEP]
rw [Finset.forall_mem_insert] at hu hU 
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
h : IsIrreducible s
u : Set α
U : Finset (Set α)
a✝ : ¬u ∈ U
IH : (∀ (u : Set α), u ∈ U → IsOpen u) → (∀ (u : Set α), u ∈ U → Set.Nonempty (s ∩ u)) → Set.Nonempty (s ∩ ⋂₀ ↑U)
hu : IsOpen u ∧ ∀ (x : Set α), x ∈ U → IsOpen x
hU : Set.Nonempty (s ∩ u) ∧ ∀ (x : Set α), x ∈ U → Set.Nonempty (s ∩ x)
⊢ Set.Nonempty (s ∩ (u ∩ ⋂₀ ↑U))
[PROOFSTEP]
exact h.2 _ _ hu.1 (isOpen_sInter U.finite_toSet hu.2) hU.1 (IH hu.2 hU.2)
[GOAL]
case refine_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
h :
  ∀ (U : Finset (Set α)),
    (∀ (u : Set α), u ∈ U → IsOpen u) → (∀ (u : Set α), u ∈ U → Set.Nonempty (s ∩ u)) → Set.Nonempty (s ∩ ⋂₀ ↑U)
⊢ Set.Nonempty s
[PROOFSTEP]
simpa using h ∅
[GOAL]
case refine_3
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
h :
  ∀ (U : Finset (Set α)),
    (∀ (u : Set α), u ∈ U → IsOpen u) → (∀ (u : Set α), u ∈ U → Set.Nonempty (s ∩ u)) → Set.Nonempty (s ∩ ⋂₀ ↑U)
⊢ IsPreirreducible s
[PROOFSTEP]
intro u v hu hv hu' hv'
[GOAL]
case refine_3
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
h :
  ∀ (U : Finset (Set α)),
    (∀ (u : Set α), u ∈ U → IsOpen u) → (∀ (u : Set α), u ∈ U → Set.Nonempty (s ∩ u)) → Set.Nonempty (s ∩ ⋂₀ ↑U)
u v : Set α
hu : IsOpen u
hv : IsOpen v
hu' : Set.Nonempty (s ∩ u)
hv' : Set.Nonempty (s ∩ v)
⊢ Set.Nonempty (s ∩ (u ∩ v))
[PROOFSTEP]
simpa [*] using h { u, v }
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
⊢ IsPreirreducible s ↔ ∀ (z₁ z₂ : Set α), IsClosed z₁ → IsClosed z₂ → s ⊆ z₁ ∪ z₂ → s ⊆ z₁ ∨ s ⊆ z₂
[PROOFSTEP]
refine
  compl_surjective.forall.trans <| forall_congr' fun z₁ => compl_surjective.forall.trans <| forall_congr' fun z₂ => ?_
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s z₁ z₂ : Set α
⊢ IsOpen z₁ᶜ → IsOpen z₂ᶜ → Set.Nonempty (s ∩ z₁ᶜ) → Set.Nonempty (s ∩ z₂ᶜ) → Set.Nonempty (s ∩ (z₁ᶜ ∩ z₂ᶜ)) ↔
    IsClosed z₁ → IsClosed z₂ → s ⊆ z₁ ∪ z₂ → s ⊆ z₁ ∨ s ⊆ z₂
[PROOFSTEP]
simp only [isOpen_compl_iff, ← compl_union, inter_compl_nonempty_iff]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s z₁ z₂ : Set α
⊢ IsClosed z₁ → IsClosed z₂ → ¬s ⊆ z₁ → ¬s ⊆ z₂ → ¬s ⊆ z₁ ∪ z₂ ↔
    IsClosed z₁ → IsClosed z₂ → s ⊆ z₁ ∪ z₂ → s ⊆ z₁ ∨ s ⊆ z₂
[PROOFSTEP]
refine forall₂_congr fun _ _ => ?_
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s z₁ z₂ : Set α
x✝¹ : IsClosed z₁
x✝ : IsClosed z₂
⊢ ¬s ⊆ z₁ → ¬s ⊆ z₂ → ¬s ⊆ z₁ ∪ z₂ ↔ s ⊆ z₁ ∪ z₂ → s ⊆ z₁ ∨ s ⊆ z₂
[PROOFSTEP]
rw [← and_imp, ← not_or, not_imp_not]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
⊢ IsIrreducible s ↔ ∀ (Z : Finset (Set α)), (∀ (z : Set α), z ∈ Z → IsClosed z) → s ⊆ ⋃₀ ↑Z → ∃ z, z ∈ Z ∧ s ⊆ z
[PROOFSTEP]
simp only [isIrreducible_iff_sInter]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
⊢ (∀ (U : Finset (Set α)),
      (∀ (u : Set α), u ∈ U → IsOpen u) → (∀ (u : Set α), u ∈ U → Set.Nonempty (s ∩ u)) → Set.Nonempty (s ∩ ⋂₀ ↑U)) ↔
    ∀ (Z : Finset (Set α)), (∀ (z : Set α), z ∈ Z → IsClosed z) → s ⊆ ⋃₀ ↑Z → ∃ z, z ∈ Z ∧ s ⊆ z
[PROOFSTEP]
refine ((@compl_involutive (Set α) _).toPerm _).finsetCongr.forall_congr fun {Z} => ?_
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
Z : Finset (Set α)
⊢ (∀ (u : Set α), u ∈ Z → IsOpen u) → (∀ (u : Set α), u ∈ Z → Set.Nonempty (s ∩ u)) → Set.Nonempty (s ∩ ⋂₀ ↑Z) ↔
    (∀ (z : Set α),
        z ∈ ↑(Equiv.finsetCongr (Function.Involutive.toPerm compl (_ : Function.Involutive compl))) Z → IsClosed z) →
      s ⊆ ⋃₀ ↑(↑(Equiv.finsetCongr (Function.Involutive.toPerm compl (_ : Function.Involutive compl))) Z) →
        ∃ z, z ∈ ↑(Equiv.finsetCongr (Function.Involutive.toPerm compl (_ : Function.Involutive compl))) Z ∧ s ⊆ z
[PROOFSTEP]
simp_rw [Equiv.finsetCongr_apply, Finset.forall_mem_map, Finset.mem_map, Finset.coe_map, sUnion_image,
  Equiv.coe_toEmbedding, Function.Involutive.coe_toPerm, isClosed_compl_iff, exists_exists_and_eq_and]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
Z : Finset (Set α)
⊢ (∀ (u : Set α), u ∈ Z → IsOpen u) → (∀ (u : Set α), u ∈ Z → Set.Nonempty (s ∩ u)) → Set.Nonempty (s ∩ ⋂₀ ↑Z) ↔
    (∀ (u : Set α), u ∈ Z → IsOpen u) → s ⊆ ⋃ (x : Set α) (_ : x ∈ ↑Z), xᶜ → ∃ a, a ∈ Z ∧ s ⊆ aᶜ
[PROOFSTEP]
refine forall_congr' fun _ => Iff.trans ?_ not_imp_not
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t s : Set α
Z : Finset (Set α)
x✝ : ∀ (u : Set α), u ∈ Z → IsOpen u
⊢ (∀ (u : Set α), u ∈ Z → Set.Nonempty (s ∩ u)) → Set.Nonempty (s ∩ ⋂₀ ↑Z) ↔
    (¬∃ a, a ∈ Z ∧ s ⊆ aᶜ) → ¬s ⊆ ⋃ (x : Set α) (_ : x ∈ ↑Z), xᶜ
[PROOFSTEP]
simp only [not_exists, not_and, ← compl_iInter₂, ← sInter_eq_biInter, subset_compl_iff_disjoint_right,
  not_disjoint_iff_nonempty_inter]
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t S U : Set α
hS : IsPreirreducible S
hU : IsOpen U
h : Set.Nonempty (S ∩ U)
⊢ S ⊆ closure (S ∩ U)
[PROOFSTEP]
by_contra h'
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t S U : Set α
hS : IsPreirreducible S
hU : IsOpen U
h : Set.Nonempty (S ∩ U)
h' : ¬S ⊆ closure (S ∩ U)
⊢ False
[PROOFSTEP]
obtain ⟨x, h₁, h₂, h₃⟩ := hS _ (closure (S ∩ U))ᶜ hU isClosed_closure.isOpen_compl h (inter_compl_nonempty_iff.mpr h')
[GOAL]
case intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t S U : Set α
hS : IsPreirreducible S
hU : IsOpen U
h : Set.Nonempty (S ∩ U)
h' : ¬S ⊆ closure (S ∩ U)
x : α
h₁ : x ∈ S
h₂ : x ∈ U
h₃ : x ∈ (closure (S ∩ U))ᶜ
⊢ False
[PROOFSTEP]
exact h₃ (subset_closure ⟨h₁, h₂⟩)
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t S U Z : Set α
hZ : IsPreirreducible Z
hU : Set.Nonempty U
hU' : IsOpen U
h₁ : U ⊆ S
h₂ : S ⊆ Z
⊢ IsIrreducible S
[PROOFSTEP]
obtain ⟨z, hz⟩ := hU
[GOAL]
case intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t S U Z : Set α
hZ : IsPreirreducible Z
hU' : IsOpen U
h₁ : U ⊆ S
h₂ : S ⊆ Z
z : α
hz : z ∈ U
⊢ IsIrreducible S
[PROOFSTEP]
replace hZ : IsIrreducible Z := ⟨⟨z, h₂ (h₁ hz)⟩, hZ⟩
[GOAL]
case intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t S U Z : Set α
hU' : IsOpen U
h₁ : U ⊆ S
h₂ : S ⊆ Z
z : α
hz : z ∈ U
hZ : IsIrreducible Z
⊢ IsIrreducible S
[PROOFSTEP]
refine' ⟨⟨z, h₁ hz⟩, _⟩
[GOAL]
case intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t S U Z : Set α
hU' : IsOpen U
h₁ : U ⊆ S
h₂ : S ⊆ Z
z : α
hz : z ∈ U
hZ : IsIrreducible Z
⊢ IsPreirreducible S
[PROOFSTEP]
rintro u v hu hv ⟨x, hx, hx'⟩ ⟨y, hy, hy'⟩
[GOAL]
case intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t S U Z : Set α
hU' : IsOpen U
h₁ : U ⊆ S
h₂ : S ⊆ Z
z : α
hz : z ∈ U
hZ : IsIrreducible Z
u v : Set α
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ S
hx' : x ∈ u
y : α
hy : y ∈ S
hy' : y ∈ v
⊢ Set.Nonempty (S ∩ (u ∩ v))
[PROOFSTEP]
obtain ⟨a, -, ha'⟩ : Set.Nonempty (Z ∩ ⋂₀ ↑({ U, u, v } : Finset (Set α)))
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t S U Z : Set α
hU' : IsOpen U
h₁ : U ⊆ S
h₂ : S ⊆ Z
z : α
hz : z ∈ U
hZ : IsIrreducible Z
u v : Set α
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ S
hx' : x ∈ u
y : α
hy : y ∈ S
hy' : y ∈ v
⊢ Set.Nonempty (Z ∩ ⋂₀ ↑{U, u, v})
[PROOFSTEP]
refine isIrreducible_iff_sInter.mp hZ { U, u, v } ?_ ?_
[GOAL]
case refine_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t S U Z : Set α
hU' : IsOpen U
h₁ : U ⊆ S
h₂ : S ⊆ Z
z : α
hz : z ∈ U
hZ : IsIrreducible Z
u v : Set α
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ S
hx' : x ∈ u
y : α
hy : y ∈ S
hy' : y ∈ v
⊢ ∀ (u_1 : Set α), u_1 ∈ {U, u, v} → IsOpen u_1
[PROOFSTEP]
simp [*]
[GOAL]
case refine_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t S U Z : Set α
hU' : IsOpen U
h₁ : U ⊆ S
h₂ : S ⊆ Z
z : α
hz : z ∈ U
hZ : IsIrreducible Z
u v : Set α
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ S
hx' : x ∈ u
y : α
hy : y ∈ S
hy' : y ∈ v
⊢ ∀ (u_1 : Set α), u_1 ∈ {U, u, v} → Set.Nonempty (Z ∩ u_1)
[PROOFSTEP]
intro U H
[GOAL]
case refine_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t S U✝ Z : Set α
hU' : IsOpen U✝
h₁ : U✝ ⊆ S
h₂ : S ⊆ Z
z : α
hz : z ∈ U✝
hZ : IsIrreducible Z
u v : Set α
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ S
hx' : x ∈ u
y : α
hy : y ∈ S
hy' : y ∈ v
U : Set α
H : U ∈ {U✝, u, v}
⊢ Set.Nonempty (Z ∩ U)
[PROOFSTEP]
simp only [Finset.mem_insert, Finset.mem_singleton] at H 
[GOAL]
case refine_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t S U✝ Z : Set α
hU' : IsOpen U✝
h₁ : U✝ ⊆ S
h₂ : S ⊆ Z
z : α
hz : z ∈ U✝
hZ : IsIrreducible Z
u v : Set α
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ S
hx' : x ∈ u
y : α
hy : y ∈ S
hy' : y ∈ v
U : Set α
H : U = U✝ ∨ U = u ∨ U = v
⊢ Set.Nonempty (Z ∩ U)
[PROOFSTEP]
rcases H with (rfl | rfl | rfl)
[GOAL]
case refine_2.inl
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t S Z : Set α
h₂ : S ⊆ Z
z : α
hZ : IsIrreducible Z
u v : Set α
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ S
hx' : x ∈ u
y : α
hy : y ∈ S
hy' : y ∈ v
U : Set α
hU' : IsOpen U
h₁ : U ⊆ S
hz : z ∈ U
⊢ Set.Nonempty (Z ∩ U)
case refine_2.inr.inl
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t S U✝ Z : Set α
hU' : IsOpen U✝
h₁ : U✝ ⊆ S
h₂ : S ⊆ Z
z : α
hz : z ∈ U✝
hZ : IsIrreducible Z
v : Set α
hv : IsOpen v
x : α
hx : x ∈ S
y : α
hy : y ∈ S
hy' : y ∈ v
U : Set α
hu : IsOpen U
hx' : x ∈ U
⊢ Set.Nonempty (Z ∩ U)
case refine_2.inr.inr
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t S U✝ Z : Set α
hU' : IsOpen U✝
h₁ : U✝ ⊆ S
h₂ : S ⊆ Z
z : α
hz : z ∈ U✝
hZ : IsIrreducible Z
u : Set α
hu : IsOpen u
x : α
hx : x ∈ S
hx' : x ∈ u
y : α
hy : y ∈ S
U : Set α
hv : IsOpen U
hy' : y ∈ U
⊢ Set.Nonempty (Z ∩ U)
[PROOFSTEP]
exacts [⟨z, h₂ (h₁ hz), hz⟩, ⟨x, h₂ hx, hx'⟩, ⟨y, h₂ hy, hy'⟩]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t S U Z : Set α
hU' : IsOpen U
h₁ : U ⊆ S
h₂ : S ⊆ Z
z : α
hz : z ∈ U
hZ : IsIrreducible Z
u v : Set α
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ S
hx' : x ∈ u
y : α
hy : y ∈ S
hy' : y ∈ v
a : α
ha' : a ∈ ⋂₀ ↑{U, u, v}
⊢ Set.Nonempty (S ∩ (u ∩ v))
[PROOFSTEP]
replace ha' : a ∈ U ∧ a ∈ u ∧ a ∈ v := by simpa using ha'
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t S U Z : Set α
hU' : IsOpen U
h₁ : U ⊆ S
h₂ : S ⊆ Z
z : α
hz : z ∈ U
hZ : IsIrreducible Z
u v : Set α
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ S
hx' : x ∈ u
y : α
hy : y ∈ S
hy' : y ∈ v
a : α
ha' : a ∈ ⋂₀ ↑{U, u, v}
⊢ a ∈ U ∧ a ∈ u ∧ a ∈ v
[PROOFSTEP]
simpa using ha'
[GOAL]
case intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t S U Z : Set α
hU' : IsOpen U
h₁ : U ⊆ S
h₂ : S ⊆ Z
z : α
hz : z ∈ U
hZ : IsIrreducible Z
u v : Set α
hu : IsOpen u
hv : IsOpen v
x : α
hx : x ∈ S
hx' : x ∈ u
y : α
hy : y ∈ S
hy' : y ∈ v
a : α
ha' : a ∈ U ∧ a ∈ u ∧ a ∈ v
⊢ Set.Nonempty (S ∩ (u ∩ v))
[PROOFSTEP]
exact ⟨a, h₁ ha'.1, ha'.2⟩
[GOAL]
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t Z : Set α
hZ : IsPreirreducible Z
f : β → α
hf : OpenEmbedding f
⊢ IsPreirreducible (f ⁻¹' Z)
[PROOFSTEP]
rintro U V hU hV ⟨x, hx, hx'⟩ ⟨y, hy, hy'⟩
[GOAL]
case intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t Z : Set α
hZ : IsPreirreducible Z
f : β → α
hf : OpenEmbedding f
U V : Set β
hU : IsOpen U
hV : IsOpen V
x : β
hx : x ∈ f ⁻¹' Z
hx' : x ∈ U
y : β
hy : y ∈ f ⁻¹' Z
hy' : y ∈ V
⊢ Set.Nonempty (f ⁻¹' Z ∩ (U ∩ V))
[PROOFSTEP]
obtain ⟨_, h₁, ⟨z, h₂, rfl⟩, ⟨z', h₃, h₄⟩⟩ :=
  hZ _ _ (hf.isOpenMap _ hU) (hf.isOpenMap _ hV) ⟨f x, hx, Set.mem_image_of_mem f hx'⟩
    ⟨f y, hy, Set.mem_image_of_mem f hy'⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t Z : Set α
hZ : IsPreirreducible Z
f : β → α
hf : OpenEmbedding f
U V : Set β
hU : IsOpen U
hV : IsOpen V
x : β
hx : x ∈ f ⁻¹' Z
hx' : x ∈ U
y : β
hy : y ∈ f ⁻¹' Z
hy' : y ∈ V
z : β
h₂ : z ∈ U
h₁ : f z ∈ Z
z' : β
h₃ : z' ∈ V
h₄ : f z' = f z
⊢ Set.Nonempty (f ⁻¹' Z ∩ (U ∩ V))
[PROOFSTEP]
cases hf.inj h₄
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refl
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t Z : Set α
hZ : IsPreirreducible Z
f : β → α
hf : OpenEmbedding f
U V : Set β
hU : IsOpen U
hV : IsOpen V
x : β
hx : x ∈ f ⁻¹' Z
hx' : x ∈ U
y : β
hy : y ∈ f ⁻¹' Z
hy' : y ∈ V
z : β
h₂ : z ∈ U
h₁ : f z ∈ Z
h₃ : z ∈ V
h₄ : f z = f z
⊢ Set.Nonempty (f ⁻¹' Z ∩ (U ∩ V))
[PROOFSTEP]
exact ⟨z, h₁, h₂, h₃⟩
