Theorem: compact_t2_tot_disc_iff_tot_sep
File: Mathlib/Topology/Separation.lean

tactic: refine ⟨fun h => ⟨fun x _ y _ => ?_⟩, @TotallySeparatedSpace.totallyDisconnectedSpace _ _⟩
state_before: α : Type u
β : Type v
inst✝² : TopologicalSpace α
inst✝¹ : T2Space α
inst✝ : CompactSpace α
⊢ TotallyDisconnectedSpace α ↔ TotallySeparatedSpace α

tactic: contrapose!
state_before: α : Type u
β : Type v
inst✝² : TopologicalSpace α
inst✝¹ : T2Space α
inst✝ : CompactSpace α
h : TotallyDisconnectedSpace α
x : α
x✝¹ : x ∈ univ
y : α
x✝ : y ∈ univ
⊢ x ≠ y → ∃ u v, IsOpen u ∧ IsOpen v ∧ x ∈ u ∧ y ∈ v ∧ univ ⊆ u ∪ v ∧ Disjoint u v

tactic: intro hyp
state_before: α : Type u
β : Type v
inst✝² : TopologicalSpace α
inst✝¹ : T2Space α
inst✝ : CompactSpace α
h : TotallyDisconnectedSpace α
x : α
x✝¹ : x ∈ univ
y : α
x✝ : y ∈ univ
⊢ (∀ (u v : Set α), IsOpen u → IsOpen v → x ∈ u → y ∈ v → univ ⊆ u ∪ v → ¬Disjoint u v) → x = y

tactic: suffices x ∈ connectedComponent y by
  simpa [totallyDisconnectedSpace_iff_connectedComponent_singleton.1 h y, mem_singleton_iff]
state_before: α : Type u
β : Type v
inst✝² : TopologicalSpace α
inst✝¹ : T2Space α
inst✝ : CompactSpace α
h : TotallyDisconnectedSpace α
x : α
x✝¹ : x ∈ univ
y : α
x✝ : y ∈ univ
hyp : ∀ (u v : Set α), IsOpen u → IsOpen v → x ∈ u → y ∈ v → univ ⊆ u ∪ v → ¬Disjoint u v
⊢ x = y

tactic: rw [connectedComponent_eq_iInter_clopen, mem_iInter]
state_before: α : Type u
β : Type v
inst✝² : TopologicalSpace α
inst✝¹ : T2Space α
inst✝ : CompactSpace α
h : TotallyDisconnectedSpace α
x : α
x✝¹ : x ∈ univ
y : α
x✝ : y ∈ univ
hyp : ∀ (u v : Set α), IsOpen u → IsOpen v → x ∈ u → y ∈ v → univ ⊆ u ∪ v → ¬Disjoint u v
⊢ x ∈ connectedComponent y

tactic: rintro ⟨w : Set α, hw : IsClopen w, hy : y ∈ w⟩
state_before: α : Type u
β : Type v
inst✝² : TopologicalSpace α
inst✝¹ : T2Space α
inst✝ : CompactSpace α
h : TotallyDisconnectedSpace α
x : α
x✝¹ : x ∈ univ
y : α
x✝ : y ∈ univ
hyp : ∀ (u v : Set α), IsOpen u → IsOpen v → x ∈ u → y ∈ v → univ ⊆ u ∪ v → ¬Disjoint u v
⊢ ∀ (i : { Z // IsClopen Z ∧ y ∈ Z }), x ∈ ↑i

tactic: by_contra hx
state_before: case mk.intro
α : Type u
β : Type v
inst✝² : TopologicalSpace α
inst✝¹ : T2Space α
inst✝ : CompactSpace α
h : TotallyDisconnectedSpace α
x : α
x✝¹ : x ∈ univ
y : α
x✝ : y ∈ univ
hyp : ∀ (u v : Set α), IsOpen u → IsOpen v → x ∈ u → y ∈ v → univ ⊆ u ∪ v → ¬Disjoint u v
w : Set α
hw : IsClopen w
hy : y ∈ w
⊢ x ∈ ↑{ val := w, property := (_ : IsClopen w ∧ y ∈ w) }

tactic: exact hyp (wᶜ) w hw.2.isOpen_compl hw.1 hx hy (@isCompl_compl _ w _).symm.codisjoint.top_le
  disjoint_compl_left
state_before: case mk.intro
α : Type u
β : Type v
inst✝² : TopologicalSpace α
inst✝¹ : T2Space α
inst✝ : CompactSpace α
h : TotallyDisconnectedSpace α
x : α
x✝¹ : x ∈ univ
y : α
x✝ : y ∈ univ
hyp : ∀ (u v : Set α), IsOpen u → IsOpen v → x ∈ u → y ∈ v → univ ⊆ u ∪ v → ¬Disjoint u v
w : Set α
hw : IsClopen w
hy : y ∈ w
hx : ¬x ∈ ↑{ val := w, property := (_ : IsClopen w ∧ y ∈ w) }
⊢ False

tactic: simpa [totallyDisconnectedSpace_iff_connectedComponent_singleton.1 h y, mem_singleton_iff]
state_before: α : Type u
β : Type v
inst✝² : TopologicalSpace α
inst✝¹ : T2Space α
inst✝ : CompactSpace α
h : TotallyDisconnectedSpace α
x : α
x✝¹ : x ∈ univ
y : α
x✝ : y ∈ univ
hyp : ∀ (u v : Set α), IsOpen u → IsOpen v → x ∈ u → y ∈ v → univ ⊆ u ∪ v → ¬Disjoint u v
this : x ∈ connectedComponent y
⊢ x = y