topology.connectedMathlib.Topology.Connected.Basic

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

refactor(topology/discrete_quotient): review API (#18401)

Backport various changes I made to the API while porting to Lean 4 in leanprover-community/mathlib4#2157.

  • extend setoid X;
  • require only that the fibers are open in the definition, prove that they are clopen;
  • golf proofs, reuse lattice structure on setoids;
  • use bundled continuous maps for comap;
  • swap LHS and RHS in some simp lemmas;
  • generalize the order_bot instance from a discrete space to a locally connected space;
  • prove that a discrete topological space is locally connected.
Diff
@@ -678,6 +678,10 @@ eq_of_subset_of_subset
     (set.mem_of_mem_of_subset mem_connected_component
       (is_connected_connected_component.subset_connected_component h)))
 
+theorem connected_component_eq_iff_mem {x y : α} :
+  connected_component x = connected_component y ↔ x ∈ connected_component y :=
+⟨λ h, h ▸ mem_connected_component, λ h, (connected_component_eq h).symm⟩
+
 lemma connected_component_in_eq {x y : α} {F : set α} (h : y ∈ connected_component_in F x) :
   connected_component_in F x = connected_component_in F y :=
 begin
@@ -1168,6 +1172,14 @@ begin
                 λ ⟨V, ⟨hV, hxV, _⟩, hVU⟩, mem_nhds_iff.mpr ⟨V, hVU, hV, hxV⟩⟩⟩ }
 end
 
+/-- A space with discrete topology is a locally connected space. -/
+@[priority 100]
+instance discrete_topology.to_locally_connected_space (α) [topological_space α]
+  [discrete_topology α] : locally_connected_space α :=
+locally_connected_space_iff_open_connected_subsets.2 $ λ x _U hU,
+  ⟨{x}, singleton_subset_iff.2 $ mem_of_mem_nhds hU, is_open_discrete _, mem_singleton _,
+    is_connected_singleton⟩
+
 lemma connected_component_in_mem_nhds [locally_connected_space α] {F : set α} {x : α}
   (h : F ∈ 𝓝 x) :
   connected_component_in F x ∈ 𝓝 x :=
@@ -1353,6 +1365,10 @@ begin
   exact mem_connected_component
 end
 
+@[simp] theorem connected_component_eq_singleton [totally_disconnected_space α] (x : α) :
+  connected_component x = {x} :=
+totally_disconnected_space_iff_connected_component_singleton.1 ‹_› x
+
 /-- The image of a connected component in a totally disconnected space is a singleton. -/
 @[simp] lemma continuous.image_connected_component_eq_singleton {β : Type*} [topological_space β]
   [totally_disconnected_space β] {f : α → β} (h : continuous f) (a : α) :
@@ -1463,7 +1479,7 @@ not_congr coe_eq_coe
 
 lemma coe_eq_coe' {x y : α} :
   (x : connected_components α) = y ↔ x ∈ connected_component y :=
-coe_eq_coe.trans ⟨λ h, h ▸ mem_connected_component, λ h, (connected_component_eq h).symm⟩
+coe_eq_coe.trans connected_component_eq_iff_mem
 
 instance [inhabited α] : inhabited (connected_components α) := ⟨↑(default : α)⟩
 

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

refactor(tactic/wlog): simplify and speed up wlog (#16495)

Benefits:

  • The tactic is faster
  • The tactic is easier to port to Lean 4

Downside:

  • The tactic doesn't do any heavy-lifting for the user

Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/wlog/near/296996966

Co-authored-by: Yury G. Kudryashov <urkud@urkud.name> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -94,7 +94,9 @@ theorem is_preconnected_of_forall {s : set α} (x : α)
 begin
   rintros u v hu hv hs ⟨z, zs, zu⟩ ⟨y, ys, yv⟩,
   have xs : x ∈ s, by { rcases H y ys with ⟨t, ts, xt, yt, ht⟩, exact ts xt },
-  wlog xu : x ∈ u := hs xs using [u v y z, v u z y],
+  wlog xu : x ∈ u,
+  { rw inter_comm u v, rw union_comm at hs,
+    exact this x H v u hv hu hs y ys yv z zs zu xs ((hs xs).resolve_right xu), },
   rcases H y ys with ⟨t, ts, xt, yt, ht⟩,
   have := ht u v hu hv(subset.trans ts hs) ⟨x, xt, xu⟩ ⟨y, yt, yv⟩,
   exact this.imp (λ z hz, ⟨ts hz.1, hz.2⟩)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(first ported)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -119,7 +119,7 @@ theorem Set.Subsingleton.isPreconnected {s : Set α} (hs : s.Subsingleton) : IsP
 #align set.subsingleton.is_preconnected Set.Subsingleton.isPreconnected
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (t «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (t «expr ⊆ » s) -/
 #print isPreconnected_of_forall /-
 /-- If any point of a set is joined to a fixed point by a preconnected subset,
 then the original set is preconnected as well. -/
@@ -137,8 +137,8 @@ theorem isPreconnected_of_forall {s : Set α} (x : α)
 #align is_preconnected_of_forall isPreconnected_of_forall
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (x y «expr ∈ » s) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (t «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (x y «expr ∈ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (t «expr ⊆ » s) -/
 #print isPreconnected_of_forall_pair /-
 /-- If any two points of a set are contained in a preconnected subset,
 then the original set is preconnected as well. -/
@@ -211,9 +211,9 @@ theorem IsPreconnected.sUnion_directed {S : Set (Set α)} (K : DirectedOn (· 
 #align is_preconnected.sUnion_directed IsPreconnected.sUnion_directed
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (i j «expr ∈ » t) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (p «expr ⊆ » t) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (i j «expr ∈ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (i j «expr ∈ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (p «expr ⊆ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (i j «expr ∈ » t) -/
 #print IsPreconnected.biUnion_of_reflTransGen /-
 /-- The bUnion of a family of preconnected sets is preconnected if the graph determined by
 whether two sets intersect is preconnected. -/
@@ -253,7 +253,7 @@ theorem IsPreconnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : 
 #align is_preconnected.bUnion_of_refl_trans_gen IsPreconnected.biUnion_of_reflTransGen
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (i j «expr ∈ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (i j «expr ∈ » t) -/
 #print IsConnected.biUnion_of_reflTransGen /-
 /-- The bUnion of a family of preconnected sets is preconnected if the graph determined by
 whether two sets intersect is preconnected. -/
@@ -1453,7 +1453,7 @@ theorem locallyConnectedSpace_iff_open_connected_basis :
 -/
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (V «expr ⊆ » U) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (V «expr ⊆ » U) -/
 #print locallyConnectedSpace_iff_open_connected_subsets /-
 theorem locallyConnectedSpace_iff_open_connected_subsets :
     LocallyConnectedSpace α ↔
Diff
@@ -129,7 +129,7 @@ theorem isPreconnected_of_forall {s : Set α} (x : α)
   rintro u v hu hv hs ⟨z, zs, zu⟩ ⟨y, ys, yv⟩
   have xs : x ∈ s := by rcases H y ys with ⟨t, ts, xt, yt, ht⟩; exact ts xt
   wlog xu : x ∈ u
-  · rw [inter_comm u v]; rw [union_comm] at hs 
+  · rw [inter_comm u v]; rw [union_comm] at hs
     exact this x H v u hv hu hs y ys yv z zs zu xs ((hs xs).resolve_right xu)
   rcases H y ys with ⟨t, ts, xt, yt, ht⟩
   have := ht u v hu hv (subset.trans ts hs) ⟨x, xt, xu⟩ ⟨y, yt, yv⟩
@@ -165,7 +165,7 @@ theorem isPreconnected_sUnion (x : α) (c : Set (Set α)) (H1 : ∀ s ∈ c, x 
 #print isPreconnected_iUnion /-
 theorem isPreconnected_iUnion {ι : Sort _} {s : ι → Set α} (h₁ : (⋂ i, s i).Nonempty)
     (h₂ : ∀ i, IsPreconnected (s i)) : IsPreconnected (⋃ i, s i) :=
-  Exists.elim h₁ fun f hf => isPreconnected_sUnion f _ hf (forall_range_iff.2 h₂)
+  Exists.elim h₁ fun f hf => isPreconnected_sUnion f _ hf (forall_mem_range.2 h₂)
 #align is_preconnected_Union isPreconnected_iUnion
 -/
 
@@ -398,9 +398,9 @@ theorem IsPreconnected.image [TopologicalSpace β] {s : Set α} (H : IsPreconnec
   rcases continuousOn_iff'.1 hf v hv with ⟨v', hv', v'_eq⟩
   -- Reformulate `huv : f '' s ⊆ u ∪ v` in terms of `u'` and `v'`
   replace huv : s ⊆ u' ∪ v'
-  · rw [image_subset_iff, preimage_union] at huv 
+  · rw [image_subset_iff, preimage_union] at huv
     replace huv := subset_inter huv (subset.refl _)
-    rw [inter_distrib_right, u'_eq, v'_eq, ← inter_distrib_right] at huv 
+    rw [inter_distrib_right, u'_eq, v'_eq, ← inter_distrib_right] at huv
     exact (subset_inter_iff.1 huv).1
   -- Now `s ⊆ u' ∪ v'`, so we can apply `‹is_preconnected s›`
   obtain ⟨z, hz⟩ : (s ∩ (u' ∩ v')).Nonempty :=
@@ -408,7 +408,7 @@ theorem IsPreconnected.image [TopologicalSpace β] {s : Set α} (H : IsPreconnec
     refine' H u' v' hu' hv' huv ⟨x, _⟩ ⟨y, _⟩ <;> rw [inter_comm]
     exacts [u'_eq ▸ ⟨xu, xs⟩, v'_eq ▸ ⟨yv, ys⟩]
   rw [← inter_self s, inter_assoc, inter_left_comm s u', ← inter_assoc, inter_comm s, inter_comm s,
-    ← u'_eq, ← v'_eq] at hz 
+    ← u'_eq, ← v'_eq] at hz
   exact ⟨f z, ⟨z, hz.1.2, rfl⟩, hz.1.1, hz.2.1⟩
 #align is_preconnected.image IsPreconnected.image
 -/
@@ -434,7 +434,7 @@ theorem isPreconnected_closed_iff {s : Set α} :
     have xt' : x ∉ t' := (h' xs).resolve_left (absurd xt)
     have yt : y ∉ t := (h' ys).resolve_right (absurd yt')
     have := h _ _ ht.is_open_compl ht'.is_open_compl h' ⟨y, ys, yt⟩ ⟨x, xs, xt'⟩
-    rw [← compl_union] at this 
+    rw [← compl_union] at this
     exact this.ne_empty htt'.disjoint_compl_right.inter_eq,
     by
     rintro h u v hu hv huv ⟨x, xs, xu⟩ ⟨y, ys, yv⟩
@@ -443,7 +443,7 @@ theorem isPreconnected_closed_iff {s : Set α} :
     have xv : x ∉ v := (h' xs).elim (absurd xu) id
     have yu : y ∉ u := (h' ys).elim id (absurd yv)
     have := h _ _ hu.is_closed_compl hv.is_closed_compl h' ⟨y, ys, yu⟩ ⟨x, xs, xv⟩
-    rw [← compl_union] at this 
+    rw [← compl_union] at this
     exact this.ne_empty huv.disjoint_compl_right.inter_eq⟩
 #align is_preconnected_closed_iff isPreconnected_closed_iff
 -/
@@ -472,10 +472,10 @@ theorem IsPreconnected.preimage_of_isOpenMap [TopologicalSpace β] {s : Set β}
   by
   obtain ⟨b, hbs, hbu, hbv⟩ := hs (f '' u) (f '' v) (hf u hu) (hf v hv) _ _ _
   obtain ⟨a, rfl⟩ := hsf hbs
-  rw [hinj.mem_set_image] at hbu hbv 
+  rw [hinj.mem_set_image] at hbu hbv
   exact ⟨a, hbs, hbu, hbv⟩
   · have := image_subset f hsuv
-    rwa [Set.image_preimage_eq_of_subset hsf, image_union] at this 
+    rwa [Set.image_preimage_eq_of_subset hsf, image_union] at this
   · obtain ⟨x, hx1, hx2⟩ := hsu
     exact ⟨f x, hx1, x, hx2, rfl⟩
   · obtain ⟨y, hy1, hy2⟩ := hsv
@@ -492,10 +492,10 @@ theorem IsPreconnected.preimage_of_isClosedMap [TopologicalSpace β] {s : Set β
     obtain ⟨b, hbs, hbu, hbv⟩ :=
       isPreconnected_closed_iff.1 hs (f '' u) (f '' v) (hf u hu) (hf v hv) _ _ _
     obtain ⟨a, rfl⟩ := hsf hbs
-    rw [hinj.mem_set_image] at hbu hbv 
+    rw [hinj.mem_set_image] at hbu hbv
     exact ⟨a, hbs, hbu, hbv⟩
     · have := image_subset f hsuv
-      rwa [Set.image_preimage_eq_of_subset hsf, image_union] at this 
+      rwa [Set.image_preimage_eq_of_subset hsf, image_union] at this
     · obtain ⟨x, hx1, hx2⟩ := hsu
       exact ⟨f x, hx1, x, hx2, rfl⟩
     · obtain ⟨y, hy1, hy2⟩ := hsv
@@ -528,7 +528,7 @@ theorem IsPreconnected.subset_or_subset (hu : IsOpen u) (hv : IsOpen v) (huv : D
   · exact Or.inr ((Set.disjoint_iff_inter_eq_empty.2 hsu).subset_right_of_subset_union hsuv)
   · replace hs := mt (hs hsu)
     simp_rw [Set.not_nonempty_iff_eq_empty, ← Set.disjoint_iff_inter_eq_empty,
-      disjoint_iff_inter_eq_empty.1 huv] at hs 
+      disjoint_iff_inter_eq_empty.1 huv] at hs
     exact Or.inl ((hs s.disjoint_empty).subset_left_of_subset_union hsuv)
 #align is_preconnected.subset_or_subset IsPreconnected.subset_or_subset
 -/
@@ -540,7 +540,7 @@ theorem IsPreconnected.subset_left_of_subset_union (hu : IsOpen u) (hv : IsOpen
   Disjoint.subset_left_of_subset_union hsuv
     (by
       by_contra hsv
-      rw [not_disjoint_iff_nonempty_inter] at hsv 
+      rw [not_disjoint_iff_nonempty_inter] at hsv
       obtain ⟨x, _, hx⟩ := hs u v hu hv hsuv hsu hsv
       exact Set.disjoint_iff.1 huv hx)
 #align is_preconnected.subset_left_of_subset_union IsPreconnected.subset_left_of_subset_union
@@ -606,7 +606,7 @@ theorem isPreconnected_univ_pi [∀ i, TopologicalSpace (π i)] {s : ∀ i, Set
   rcases exists_finset_piecewise_mem_of_mem_nhds (uo.mem_nhds hfu) g with ⟨I, hI⟩
   induction' I using Finset.induction_on with i I hi ihI
   · refine' ⟨g, hgs, ⟨_, hgv⟩⟩; simpa using hI
-  · rw [Finset.piecewise_insert] at hI 
+  · rw [Finset.piecewise_insert] at hI
     have := I.piecewise_mem_set_pi hfs hgs
     refine' (hsuv this).elim ihI fun h => _
     set S := update (I.piecewise f g) i '' s i
@@ -1137,7 +1137,7 @@ theorem isPreconnected_iff_subset_of_disjoint {s : Set α} :
     specialize h u v hu hv hs
     contrapose! huv
     rw [← nonempty_iff_ne_empty]
-    simp [not_subset] at huv 
+    simp [not_subset] at huv
     rcases huv with ⟨⟨x, hxs, hxu⟩, ⟨y, hys, hyv⟩⟩
     have hxv : x ∈ v := or_iff_not_imp_left.mp (hs hxs) hxu
     have hyu : y ∈ u := or_iff_not_imp_right.mp (hs hys) hyv
@@ -1170,7 +1170,7 @@ theorem isConnected_iff_sUnion_disjoint_open {s : Set α} :
       suffices s ⊆ ∅ → False by simpa
       intro; solve_by_elim
     · intro u U hu IH hs hU H
-      rw [Finset.coe_insert, sUnion_insert] at H 
+      rw [Finset.coe_insert, sUnion_insert] at H
       cases' h.2 u (⋃₀ ↑U) _ _ H _ with hsu hsU
       · exact ⟨u, Finset.mem_insert_self _ _, hsu⟩
       · rcases IH _ _ hsU with ⟨v, hvU, hsv⟩
@@ -1182,7 +1182,7 @@ theorem isConnected_iff_sUnion_disjoint_open {s : Set α} :
         intros; solve_by_elim [Finset.mem_insert_of_mem]
       · apply eq_empty_of_subset_empty
         rintro x ⟨hxs, hxu, hxU⟩
-        rw [mem_sUnion] at hxU 
+        rw [mem_sUnion] at hxU
         rcases hxU with ⟨v, hvU, hxv⟩
         rcases hs u v (Finset.mem_insert_self _ _) (Finset.mem_insert_of_mem hvU) _ with rfl
         · contradiction
@@ -1193,18 +1193,18 @@ theorem isConnected_iff_sUnion_disjoint_open {s : Set α} :
       simpa using h ∅ _ _ _ <;> simp
     intro u v hu hv hs hsuv
     rcases h {u, v} _ _ _ with ⟨t, ht, ht'⟩
-    · rw [Finset.mem_insert, Finset.mem_singleton] at ht 
+    · rw [Finset.mem_insert, Finset.mem_singleton] at ht
       rcases ht with (rfl | rfl) <;> tauto
     · intro t₁ t₂ ht₁ ht₂ hst
-      rw [nonempty_iff_ne_empty] at hst 
-      rw [Finset.mem_insert, Finset.mem_singleton] at ht₁ ht₂ 
+      rw [nonempty_iff_ne_empty] at hst
+      rw [Finset.mem_insert, Finset.mem_singleton] at ht₁ ht₂
       rcases ht₁ with (rfl | rfl) <;> rcases ht₂ with (rfl | rfl)
       all_goals
         first
         | rfl
         | contradiction
         | skip
-      rw [inter_comm t₁] at hst ; contradiction
+      rw [inter_comm t₁] at hst; contradiction
     · intro t
       rw [Finset.mem_insert, Finset.mem_singleton]
       rintro (rfl | rfl) <;> assumption
@@ -1243,11 +1243,11 @@ theorem isPreconnected_iff_subset_of_disjoint_closed :
   by
   constructor <;> intro h
   · intro u v hu hv hs huv
-    rw [isPreconnected_closed_iff] at h 
+    rw [isPreconnected_closed_iff] at h
     specialize h u v hu hv hs
     contrapose! huv
     rw [← nonempty_iff_ne_empty]
-    simp [not_subset] at huv 
+    simp [not_subset] at huv
     rcases huv with ⟨⟨x, hxs, hxu⟩, ⟨y, hys, hyv⟩⟩
     have hxv : x ∈ v := or_iff_not_imp_left.mp (hs hxs) hxu
     have hyu : y ∈ u := or_iff_not_imp_right.mp (hs hys) hyv
@@ -1282,8 +1282,8 @@ theorem isPreconnected_iff_subset_of_fully_disjoint_closed {s : Set α} (hs : Is
   rw [isPreconnected_iff_subset_of_disjoint_closed]
   intro u v hu hv hss huv
   have H1 := H (u ∩ s) (v ∩ s)
-  rw [subset_inter_iff, subset_inter_iff] at H1 
-  simp only [subset.refl, and_true_iff] at H1 
+  rw [subset_inter_iff, subset_inter_iff] at H1
+  simp only [subset.refl, and_true_iff] at H1
   apply H1 (IsClosed.inter hu hs) (IsClosed.inter hv hs)
   · rw [← inter_distrib_right]
     exact subset_inter hss subset.rfl
@@ -1399,12 +1399,12 @@ theorem preimage_connectedComponent_connected [TopologicalSpace β] {f : α →
     (isPreconnected_iff_subset_of_fully_disjoint_closed isClosed_connectedComponent).1
       isPreconnected_connectedComponent T₁ T₂ hT₁ hT₂ T_decomp T_disjoint
   · left
-    rw [subset.antisymm_iff] at T₁_u 
+    rw [subset.antisymm_iff] at T₁_u
     suffices f ⁻¹' connectedComponent t ⊆ f ⁻¹' T₁ by
       exact subset.trans (subset.trans this T₁_u.1) (inter_subset_right _ _)
     exact preimage_mono h
   right
-  rw [subset.antisymm_iff] at T₂_v 
+  rw [subset.antisymm_iff] at T₂_v
   suffices f ⁻¹' connectedComponent t ⊆ f ⁻¹' T₂ by
     exact subset.trans (subset.trans this T₂_v.1) (inter_subset_right _ _)
   exact preimage_mono h
@@ -1490,7 +1490,7 @@ instance (priority := 100) DiscreteTopology.toLocallyConnectedSpace (α) [Topolo
 theorem connectedComponentIn_mem_nhds [LocallyConnectedSpace α] {F : Set α} {x : α} (h : F ∈ 𝓝 x) :
     connectedComponentIn F x ∈ 𝓝 x :=
   by
-  rw [(LocallyConnectedSpace.open_connected_basis x).mem_iff] at h 
+  rw [(LocallyConnectedSpace.open_connected_basis x).mem_iff] at h
   rcases h with ⟨s, ⟨h1s, hxs, h2s⟩, hsF⟩
   exact mem_nhds_iff.mpr ⟨s, h2s.is_preconnected.subset_connected_component_in hxs hsF, h1s, hxs⟩
 #align connected_component_in_mem_nhds connectedComponentIn_mem_nhds
@@ -1677,7 +1677,7 @@ theorem isTotallyDisconnected_of_isClopen_set {X : Type _} [TopologicalSpace X]
   obtain ⟨U, h_clopen, hxU, hyU⟩ := hX hxy
   specialize
     hS U (Uᶜ) h_clopen.1 h_clopen.compl.1 (fun a ha => em (a ∈ U)) ⟨x, hx, hxU⟩ ⟨y, hy, hyU⟩
-  rw [inter_compl_self, Set.inter_empty] at hS 
+  rw [inter_compl_self, Set.inter_empty] at hS
   exact Set.not_nonempty_empty hS
 #align is_totally_disconnected_of_clopen_set isTotallyDisconnected_of_isClopen_set
 -/
@@ -1837,8 +1837,8 @@ theorem exists_isClopen_of_totally_separated {α : Type _} [TopologicalSpace α]
   obtain ⟨U, V, hU, hV, Ux, Vy, f, disj⟩ :=
     TotallySeparatedSpace.isTotallySeparated_univ α x (Set.mem_univ x) y (Set.mem_univ y) hxy
   have clopen_U := isClopen_inter_of_disjoint_cover_clopen isClopen_univ f hU hV disj
-  rw [univ_inter _] at clopen_U 
-  rw [← Set.subset_compl_iff_disjoint_right, subset_compl_comm] at disj 
+  rw [univ_inter _] at clopen_U
+  rw [← Set.subset_compl_iff_disjoint_right, subset_compl_comm] at disj
   exact ⟨U, clopen_U, Ux, disj Vy⟩
 #align exists_clopen_of_totally_separated exists_isClopen_of_totally_separated
 -/
@@ -2048,7 +2048,7 @@ theorem isPreconnected_of_forall_constant {s : Set α}
   unfold IsPreconnected
   by_contra!
   rcases this with ⟨u, v, u_op, v_op, hsuv, ⟨x, x_in_s, x_in_u⟩, ⟨y, y_in_s, y_in_v⟩, H⟩
-  rw [not_nonempty_iff_eq_empty] at H 
+  rw [not_nonempty_iff_eq_empty] at H
   have hy : y ∉ u := fun y_in_u => eq_empty_iff_forall_not_mem.mp H y ⟨y_in_s, ⟨y_in_u, y_in_v⟩⟩
   have : ContinuousOn u.bool_indicator s :=
     by
@@ -2086,7 +2086,7 @@ theorem IsPreconnected.constant_of_mapsTo [TopologicalSpace β] {S : Set α} (hS
     {x y : α} (hx : x ∈ S) (hy : y ∈ S) : f x = f y :=
   by
   let F : S → T := fun x : S => ⟨f x.val, hTm x.property⟩
-  suffices F ⟨x, hx⟩ = F ⟨y, hy⟩ by rw [← Subtype.coe_inj] at this ; exact this
+  suffices F ⟨x, hx⟩ = F ⟨y, hy⟩ by rw [← Subtype.coe_inj] at this; exact this
   exact
     (is_preconnected_iff_preconnected_space.mp hS).constant
       (continuous_induced_rng.mpr <| continuous_on_iff_continuous_restrict.mp hc)
Diff
@@ -1805,7 +1805,7 @@ alias IsTotallySeparated.isTotallyDisconnected := isTotallyDisconnected_of_isTot
 #align is_totally_separated.is_totally_disconnected IsTotallySeparated.isTotallyDisconnected
 
 #print TotallySeparatedSpace /-
-/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`isTotallySeparated_univ] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:400:30: infer kinds are unsupported in Lean 4: #[`isTotallySeparated_univ] [] -/
 /-- A space is totally separated if any two points can be separated by two disjoint open sets
 covering the whole space. -/
 class TotallySeparatedSpace (α : Type u) [TopologicalSpace α] : Prop where
Diff
@@ -416,7 +416,7 @@ theorem IsPreconnected.image [TopologicalSpace β] {s : Set α} (H : IsPreconnec
 #print IsConnected.image /-
 theorem IsConnected.image [TopologicalSpace β] {s : Set α} (H : IsConnected s) (f : α → β)
     (hf : ContinuousOn f s) : IsConnected (f '' s) :=
-  ⟨nonempty_image_iff.mpr H.Nonempty, H.IsPreconnected.image f hf⟩
+  ⟨image_nonempty.mpr H.Nonempty, H.IsPreconnected.image f hf⟩
 #align is_connected.image IsConnected.image
 -/
 
Diff
@@ -1805,7 +1805,7 @@ alias IsTotallySeparated.isTotallyDisconnected := isTotallyDisconnected_of_isTot
 #align is_totally_separated.is_totally_disconnected IsTotallySeparated.isTotallyDisconnected
 
 #print TotallySeparatedSpace /-
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`isTotallySeparated_univ] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`isTotallySeparated_univ] [] -/
 /-- A space is totally separated if any two points can be separated by two disjoint open sets
 covering the whole space. -/
 class TotallySeparatedSpace (α : Type u) [TopologicalSpace α] : Prop where
Diff
@@ -1672,7 +1672,7 @@ theorem isTotallyDisconnected_of_isClopen_set {X : Type _} [TopologicalSpace X]
   by
   rintro S - hS
   unfold Set.Subsingleton
-  by_contra' h_contra
+  by_contra! h_contra
   rcases h_contra with ⟨x, hx, y, hy, hxy⟩
   obtain ⟨U, h_clopen, hxU, hyU⟩ := hX hxy
   specialize
@@ -2046,7 +2046,7 @@ theorem isPreconnected_of_forall_constant {s : Set α}
     (hs : ∀ f : α → Bool, ContinuousOn f s → ∀ x ∈ s, ∀ y ∈ s, f x = f y) : IsPreconnected s :=
   by
   unfold IsPreconnected
-  by_contra'
+  by_contra!
   rcases this with ⟨u, v, u_op, v_op, hsuv, ⟨x, x_in_s, x_in_u⟩, ⟨y, y_in_s, y_in_v⟩, H⟩
   rw [not_nonempty_iff_eq_empty] at H 
   have hy : y ∉ u := fun y_in_u => eq_empty_iff_forall_not_mem.mp H y ⟨y_in_s, ⟨y_in_u, y_in_v⟩⟩
Diff
@@ -463,12 +463,12 @@ theorem Inducing.isPreconnected_image [TopologicalSpace β] {s : Set α} {f : α
 #align inducing.is_preconnected_image Inducing.isPreconnected_image
 -/
 
-#print IsPreconnected.preimage_of_open_map /-
+#print IsPreconnected.preimage_of_isOpenMap /-
 /- TODO: The following lemmas about connection of preimages hold more generally for strict maps
 (the quotient and subspace topologies of the image agree) whose fibers are preconnected. -/
-theorem IsPreconnected.preimage_of_open_map [TopologicalSpace β] {s : Set β} (hs : IsPreconnected s)
-    {f : α → β} (hinj : Function.Injective f) (hf : IsOpenMap f) (hsf : s ⊆ range f) :
-    IsPreconnected (f ⁻¹' s) := fun u v hu hv hsuv hsu hsv =>
+theorem IsPreconnected.preimage_of_isOpenMap [TopologicalSpace β] {s : Set β}
+    (hs : IsPreconnected s) {f : α → β} (hinj : Function.Injective f) (hf : IsOpenMap f)
+    (hsf : s ⊆ range f) : IsPreconnected (f ⁻¹' s) := fun u v hu hv hsuv hsu hsv =>
   by
   obtain ⟨b, hbs, hbu, hbv⟩ := hs (f '' u) (f '' v) (hf u hu) (hf v hv) _ _ _
   obtain ⟨a, rfl⟩ := hsf hbs
@@ -480,7 +480,7 @@ theorem IsPreconnected.preimage_of_open_map [TopologicalSpace β] {s : Set β} (
     exact ⟨f x, hx1, x, hx2, rfl⟩
   · obtain ⟨y, hy1, hy2⟩ := hsv
     exact ⟨f y, hy1, y, hy2, rfl⟩
-#align is_preconnected.preimage_of_open_map IsPreconnected.preimage_of_open_map
+#align is_preconnected.preimage_of_open_map IsPreconnected.preimage_of_isOpenMap
 -/
 
 #print IsPreconnected.preimage_of_isClosedMap /-
@@ -503,12 +503,12 @@ theorem IsPreconnected.preimage_of_isClosedMap [TopologicalSpace β] {s : Set β
 #align is_preconnected.preimage_of_closed_map IsPreconnected.preimage_of_isClosedMap
 -/
 
-#print IsConnected.preimage_of_openMap /-
-theorem IsConnected.preimage_of_openMap [TopologicalSpace β] {s : Set β} (hs : IsConnected s)
+#print IsConnected.preimage_of_isOpenMap /-
+theorem IsConnected.preimage_of_isOpenMap [TopologicalSpace β] {s : Set β} (hs : IsConnected s)
     {f : α → β} (hinj : Function.Injective f) (hf : IsOpenMap f) (hsf : s ⊆ range f) :
     IsConnected (f ⁻¹' s) :=
-  ⟨hs.Nonempty.preimage' hsf, hs.IsPreconnected.preimage_of_open_map hinj hf hsf⟩
-#align is_connected.preimage_of_open_map IsConnected.preimage_of_openMap
+  ⟨hs.Nonempty.preimage' hsf, hs.IsPreconnected.preimage_of_isOpenMap hinj hf hsf⟩
+#align is_connected.preimage_of_open_map IsConnected.preimage_of_isOpenMap
 -/
 
 #print IsConnected.preimage_of_isClosedMap /-
Diff
@@ -1212,24 +1212,24 @@ theorem isConnected_iff_sUnion_disjoint_open {s : Set α} :
 #align is_connected_iff_sUnion_disjoint_open isConnected_iff_sUnion_disjoint_open
 -/
 
-#print IsPreconnected.subset_clopen /-
+#print IsPreconnected.subset_isClopen /-
 /-- Preconnected sets are either contained in or disjoint to any given clopen set. -/
-theorem IsPreconnected.subset_clopen {s t : Set α} (hs : IsPreconnected s) (ht : IsClopen t)
+theorem IsPreconnected.subset_isClopen {s t : Set α} (hs : IsPreconnected s) (ht : IsClopen t)
     (hne : (s ∩ t).Nonempty) : s ⊆ t := by
   by_contra h
   have : (s ∩ tᶜ).Nonempty := inter_compl_nonempty_iff.2 h
   obtain ⟨x, -, hx, hx'⟩ : (s ∩ (t ∩ tᶜ)).Nonempty
   exact hs t (tᶜ) ht.is_open ht.compl.is_open (fun x hx => em _) hne this
   exact hx' hx
-#align is_preconnected.subset_clopen IsPreconnected.subset_clopen
+#align is_preconnected.subset_clopen IsPreconnected.subset_isClopen
 -/
 
-#print disjoint_or_subset_of_clopen /-
+#print disjoint_or_subset_of_isClopen /-
 /-- Preconnected sets are either contained in or disjoint to any given clopen set. -/
-theorem disjoint_or_subset_of_clopen {s t : Set α} (hs : IsPreconnected s) (ht : IsClopen t) :
+theorem disjoint_or_subset_of_isClopen {s t : Set α} (hs : IsPreconnected s) (ht : IsClopen t) :
     Disjoint s t ∨ s ⊆ t :=
-  (disjoint_or_nonempty_inter s t).imp_right <| hs.subset_clopen ht
-#align disjoint_or_subset_of_clopen disjoint_or_subset_of_clopen
+  (disjoint_or_nonempty_inter s t).imp_right <| hs.subset_isClopen ht
+#align disjoint_or_subset_of_clopen disjoint_or_subset_of_isClopen
 -/
 
 #print isPreconnected_iff_subset_of_disjoint_closed /-
@@ -1294,17 +1294,17 @@ theorem isPreconnected_iff_subset_of_fully_disjoint_closed {s : Set α} (hs : Is
 #print IsClopen.connectedComponent_subset /-
 theorem IsClopen.connectedComponent_subset {x} (hs : IsClopen s) (hx : x ∈ s) :
     connectedComponent x ⊆ s :=
-  isPreconnected_connectedComponent.subset_clopen hs ⟨x, mem_connectedComponent, hx⟩
+  isPreconnected_connectedComponent.subset_isClopen hs ⟨x, mem_connectedComponent, hx⟩
 #align is_clopen.connected_component_subset IsClopen.connectedComponent_subset
 -/
 
-#print connectedComponent_subset_iInter_clopen /-
+#print connectedComponent_subset_iInter_isClopen /-
 /-- The connected component of a point is always a subset of the intersection of all its clopen
 neighbourhoods. -/
-theorem connectedComponent_subset_iInter_clopen {x : α} :
+theorem connectedComponent_subset_iInter_isClopen {x : α} :
     connectedComponent x ⊆ ⋂ Z : { Z : Set α // IsClopen Z ∧ x ∈ Z }, Z :=
   subset_iInter fun Z => Z.2.1.connectedComponent_subset Z.2.2
-#align connected_component_subset_Inter_clopen connectedComponent_subset_iInter_clopen
+#align connected_component_subset_Inter_clopen connectedComponent_subset_iInter_isClopen
 -/
 
 #print IsClopen.biUnion_connectedComponent_eq /-
@@ -1663,10 +1663,10 @@ instance [∀ i, TopologicalSpace (π i)] [∀ i, TotallyDisconnectedSpace (π i
   · obtain ⟨a, t, ht, rfl⟩ := Sigma.isConnected_iff.1 ⟨h, hs⟩
     exact ht.is_preconnected.subsingleton.image _
 
-#print isTotallyDisconnected_of_clopen_set /-
+#print isTotallyDisconnected_of_isClopen_set /-
 /-- Let `X` be a topological space, and suppose that for all distinct `x,y ∈ X`, there
   is some clopen set `U` such that `x ∈ U` and `y ∉ U`. Then `X` is totally disconnected. -/
-theorem isTotallyDisconnected_of_clopen_set {X : Type _} [TopologicalSpace X]
+theorem isTotallyDisconnected_of_isClopen_set {X : Type _} [TopologicalSpace X]
     (hX : ∀ {x y : X} (h_diff : x ≠ y), ∃ (U : Set X) (h_clopen : IsClopen U), x ∈ U ∧ y ∉ U) :
     IsTotallyDisconnected (Set.univ : Set X) :=
   by
@@ -1679,7 +1679,7 @@ theorem isTotallyDisconnected_of_clopen_set {X : Type _} [TopologicalSpace X]
     hS U (Uᶜ) h_clopen.1 h_clopen.compl.1 (fun a ha => em (a ∈ U)) ⟨x, hx, hxU⟩ ⟨y, hy, hyU⟩
   rw [inter_compl_self, Set.inter_empty] at hS 
   exact Set.not_nonempty_empty hS
-#align is_totally_disconnected_of_clopen_set isTotallyDisconnected_of_clopen_set
+#align is_totally_disconnected_of_clopen_set isTotallyDisconnected_of_isClopen_set
 -/
 
 #print totallyDisconnectedSpace_iff_connectedComponent_subsingleton /-
@@ -1829,8 +1829,8 @@ instance (priority := 100) TotallySeparatedSpace.of_discrete (α : Type _) [Topo
 #align totally_separated_space.of_discrete TotallySeparatedSpace.of_discrete
 -/
 
-#print exists_clopen_of_totally_separated /-
-theorem exists_clopen_of_totally_separated {α : Type _} [TopologicalSpace α]
+#print exists_isClopen_of_totally_separated /-
+theorem exists_isClopen_of_totally_separated {α : Type _} [TopologicalSpace α]
     [TotallySeparatedSpace α] {x y : α} (hxy : x ≠ y) :
     ∃ (U : Set α) (hU : IsClopen U), x ∈ U ∧ y ∈ Uᶜ :=
   by
@@ -1840,7 +1840,7 @@ theorem exists_clopen_of_totally_separated {α : Type _} [TopologicalSpace α]
   rw [univ_inter _] at clopen_U 
   rw [← Set.subset_compl_iff_disjoint_right, subset_compl_comm] at disj 
   exact ⟨U, clopen_U, Ux, disj Vy⟩
-#align exists_clopen_of_totally_separated exists_clopen_of_totally_separated
+#align exists_clopen_of_totally_separated exists_isClopen_of_totally_separated
 -/
 
 end TotallySeparated
@@ -2052,7 +2052,7 @@ theorem isPreconnected_of_forall_constant {s : Set α}
   have hy : y ∉ u := fun y_in_u => eq_empty_iff_forall_not_mem.mp H y ⟨y_in_s, ⟨y_in_u, y_in_v⟩⟩
   have : ContinuousOn u.bool_indicator s :=
     by
-    apply (continuousOn_boolIndicator_iff_clopen _ _).mpr ⟨_, _⟩
+    apply (continuousOn_boolIndicator_iff_isClopen _ _).mpr ⟨_, _⟩
     · exact continuous_subtype_coe.is_open_preimage u u_op
     · rw [preimage_subtype_coe_eq_compl hsuv H]
       exact (continuous_subtype_coe.is_open_preimage v v_op).isClosed_compl
Diff
@@ -483,8 +483,8 @@ theorem IsPreconnected.preimage_of_open_map [TopologicalSpace β] {s : Set β} (
 #align is_preconnected.preimage_of_open_map IsPreconnected.preimage_of_open_map
 -/
 
-#print IsPreconnected.preimage_of_closed_map /-
-theorem IsPreconnected.preimage_of_closed_map [TopologicalSpace β] {s : Set β}
+#print IsPreconnected.preimage_of_isClosedMap /-
+theorem IsPreconnected.preimage_of_isClosedMap [TopologicalSpace β] {s : Set β}
     (hs : IsPreconnected s) {f : α → β} (hinj : Function.Injective f) (hf : IsClosedMap f)
     (hsf : s ⊆ range f) : IsPreconnected (f ⁻¹' s) :=
   isPreconnected_closed_iff.2 fun u v hu hv hsuv hsu hsv =>
@@ -500,7 +500,7 @@ theorem IsPreconnected.preimage_of_closed_map [TopologicalSpace β] {s : Set β}
       exact ⟨f x, hx1, x, hx2, rfl⟩
     · obtain ⟨y, hy1, hy2⟩ := hsv
       exact ⟨f y, hy1, y, hy2, rfl⟩
-#align is_preconnected.preimage_of_closed_map IsPreconnected.preimage_of_closed_map
+#align is_preconnected.preimage_of_closed_map IsPreconnected.preimage_of_isClosedMap
 -/
 
 #print IsConnected.preimage_of_openMap /-
@@ -511,12 +511,12 @@ theorem IsConnected.preimage_of_openMap [TopologicalSpace β] {s : Set β} (hs :
 #align is_connected.preimage_of_open_map IsConnected.preimage_of_openMap
 -/
 
-#print IsConnected.preimage_of_closedMap /-
-theorem IsConnected.preimage_of_closedMap [TopologicalSpace β] {s : Set β} (hs : IsConnected s)
+#print IsConnected.preimage_of_isClosedMap /-
+theorem IsConnected.preimage_of_isClosedMap [TopologicalSpace β] {s : Set β} (hs : IsConnected s)
     {f : α → β} (hinj : Function.Injective f) (hf : IsClosedMap f) (hsf : s ⊆ range f) :
     IsConnected (f ⁻¹' s) :=
-  ⟨hs.Nonempty.preimage' hsf, hs.IsPreconnected.preimage_of_closed_map hinj hf hsf⟩
-#align is_connected.preimage_of_closed_map IsConnected.preimage_of_closedMap
+  ⟨hs.Nonempty.preimage' hsf, hs.IsPreconnected.preimage_of_isClosedMap hinj hf hsf⟩
+#align is_connected.preimage_of_closed_map IsConnected.preimage_of_isClosedMap
 -/
 
 #print IsPreconnected.subset_or_subset /-
Diff
@@ -3,10 +3,10 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Mario Carneiro, Yury Kudryashov
 -/
-import Mathbin.Data.Set.BoolIndicator
-import Mathbin.Order.SuccPred.Relation
-import Mathbin.Topology.SubsetProperties
-import Mathbin.Tactic.Congrm
+import Data.Set.BoolIndicator
+import Order.SuccPred.Relation
+import Topology.SubsetProperties
+import Tactic.Congrm
 
 #align_import topology.connected from "leanprover-community/mathlib"@"d101e93197bb5f6ea89bd7ba386b7f7dff1f3903"
 
@@ -119,7 +119,7 @@ theorem Set.Subsingleton.isPreconnected {s : Set α} (hs : s.Subsingleton) : IsP
 #align set.subsingleton.is_preconnected Set.Subsingleton.isPreconnected
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (t «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (t «expr ⊆ » s) -/
 #print isPreconnected_of_forall /-
 /-- If any point of a set is joined to a fixed point by a preconnected subset,
 then the original set is preconnected as well. -/
@@ -137,8 +137,8 @@ theorem isPreconnected_of_forall {s : Set α} (x : α)
 #align is_preconnected_of_forall isPreconnected_of_forall
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x y «expr ∈ » s) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (t «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (x y «expr ∈ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (t «expr ⊆ » s) -/
 #print isPreconnected_of_forall_pair /-
 /-- If any two points of a set are contained in a preconnected subset,
 then the original set is preconnected as well. -/
@@ -211,9 +211,9 @@ theorem IsPreconnected.sUnion_directed {S : Set (Set α)} (K : DirectedOn (· 
 #align is_preconnected.sUnion_directed IsPreconnected.sUnion_directed
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i j «expr ∈ » t) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (p «expr ⊆ » t) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i j «expr ∈ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (i j «expr ∈ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (p «expr ⊆ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (i j «expr ∈ » t) -/
 #print IsPreconnected.biUnion_of_reflTransGen /-
 /-- The bUnion of a family of preconnected sets is preconnected if the graph determined by
 whether two sets intersect is preconnected. -/
@@ -253,7 +253,7 @@ theorem IsPreconnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : 
 #align is_preconnected.bUnion_of_refl_trans_gen IsPreconnected.biUnion_of_reflTransGen
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i j «expr ∈ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (i j «expr ∈ » t) -/
 #print IsConnected.biUnion_of_reflTransGen /-
 /-- The bUnion of a family of preconnected sets is preconnected if the graph determined by
 whether two sets intersect is preconnected. -/
@@ -1453,7 +1453,7 @@ theorem locallyConnectedSpace_iff_open_connected_basis :
 -/
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (V «expr ⊆ » U) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (V «expr ⊆ » U) -/
 #print locallyConnectedSpace_iff_open_connected_subsets /-
 theorem locallyConnectedSpace_iff_open_connected_subsets :
     LocallyConnectedSpace α ↔
@@ -1805,7 +1805,7 @@ alias IsTotallySeparated.isTotallyDisconnected := isTotallyDisconnected_of_isTot
 #align is_totally_separated.is_totally_disconnected IsTotallySeparated.isTotallyDisconnected
 
 #print TotallySeparatedSpace /-
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`isTotallySeparated_univ] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`isTotallySeparated_univ] [] -/
 /-- A space is totally separated if any two points can be separated by two disjoint open sets
 covering the whole space. -/
 class TotallySeparatedSpace (α : Type u) [TopologicalSpace α] : Prop where
Diff
@@ -1801,7 +1801,7 @@ theorem isTotallyDisconnected_of_isTotallySeparated {s : Set α} (H : IsTotallyS
 #align is_totally_disconnected_of_is_totally_separated isTotallyDisconnected_of_isTotallySeparated
 -/
 
-alias isTotallyDisconnected_of_isTotallySeparated ← IsTotallySeparated.isTotallyDisconnected
+alias IsTotallySeparated.isTotallyDisconnected := isTotallyDisconnected_of_isTotallySeparated
 #align is_totally_separated.is_totally_disconnected IsTotallySeparated.isTotallyDisconnected
 
 #print TotallySeparatedSpace /-
Diff
@@ -2,17 +2,14 @@
 Copyright (c) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Mario Carneiro, Yury Kudryashov
-
-! This file was ported from Lean 3 source module topology.connected
-! leanprover-community/mathlib commit d101e93197bb5f6ea89bd7ba386b7f7dff1f3903
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Data.Set.BoolIndicator
 import Mathbin.Order.SuccPred.Relation
 import Mathbin.Topology.SubsetProperties
 import Mathbin.Tactic.Congrm
 
+#align_import topology.connected from "leanprover-community/mathlib"@"d101e93197bb5f6ea89bd7ba386b7f7dff1f3903"
+
 /-!
 # Connected subsets of topological spaces
 
@@ -122,7 +119,7 @@ theorem Set.Subsingleton.isPreconnected {s : Set α} (hs : s.Subsingleton) : IsP
 #align set.subsingleton.is_preconnected Set.Subsingleton.isPreconnected
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (t «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (t «expr ⊆ » s) -/
 #print isPreconnected_of_forall /-
 /-- If any point of a set is joined to a fixed point by a preconnected subset,
 then the original set is preconnected as well. -/
@@ -140,8 +137,8 @@ theorem isPreconnected_of_forall {s : Set α} (x : α)
 #align is_preconnected_of_forall isPreconnected_of_forall
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (x y «expr ∈ » s) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (t «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x y «expr ∈ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (t «expr ⊆ » s) -/
 #print isPreconnected_of_forall_pair /-
 /-- If any two points of a set are contained in a preconnected subset,
 then the original set is preconnected as well. -/
@@ -214,9 +211,9 @@ theorem IsPreconnected.sUnion_directed {S : Set (Set α)} (K : DirectedOn (· 
 #align is_preconnected.sUnion_directed IsPreconnected.sUnion_directed
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i j «expr ∈ » t) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (p «expr ⊆ » t) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i j «expr ∈ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i j «expr ∈ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (p «expr ⊆ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i j «expr ∈ » t) -/
 #print IsPreconnected.biUnion_of_reflTransGen /-
 /-- The bUnion of a family of preconnected sets is preconnected if the graph determined by
 whether two sets intersect is preconnected. -/
@@ -256,7 +253,7 @@ theorem IsPreconnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : 
 #align is_preconnected.bUnion_of_refl_trans_gen IsPreconnected.biUnion_of_reflTransGen
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i j «expr ∈ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i j «expr ∈ » t) -/
 #print IsConnected.biUnion_of_reflTransGen /-
 /-- The bUnion of a family of preconnected sets is preconnected if the graph determined by
 whether two sets intersect is preconnected. -/
@@ -1456,7 +1453,7 @@ theorem locallyConnectedSpace_iff_open_connected_basis :
 -/
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (V «expr ⊆ » U) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (V «expr ⊆ » U) -/
 #print locallyConnectedSpace_iff_open_connected_subsets /-
 theorem locallyConnectedSpace_iff_open_connected_subsets :
     LocallyConnectedSpace α ↔
Diff
@@ -123,6 +123,7 @@ theorem Set.Subsingleton.isPreconnected {s : Set α} (hs : s.Subsingleton) : IsP
 -/
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (t «expr ⊆ » s) -/
+#print isPreconnected_of_forall /-
 /-- If any point of a set is joined to a fixed point by a preconnected subset,
 then the original set is preconnected as well. -/
 theorem isPreconnected_of_forall {s : Set α} (x : α)
@@ -137,9 +138,11 @@ theorem isPreconnected_of_forall {s : Set α} (x : α)
   have := ht u v hu hv (subset.trans ts hs) ⟨x, xt, xu⟩ ⟨y, yt, yv⟩
   exact this.imp fun z hz => ⟨ts hz.1, hz.2⟩
 #align is_preconnected_of_forall isPreconnected_of_forall
+-/
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (x y «expr ∈ » s) -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (t «expr ⊆ » s) -/
+#print isPreconnected_of_forall_pair /-
 /-- If any two points of a set are contained in a preconnected subset,
 then the original set is preconnected as well. -/
 theorem isPreconnected_of_forall_pair {s : Set α}
@@ -149,6 +152,7 @@ theorem isPreconnected_of_forall_pair {s : Set α}
   rcases eq_empty_or_nonempty s with (rfl | ⟨x, hx⟩)
   exacts [isPreconnected_empty, isPreconnected_of_forall x fun y => H x hx y]
 #align is_preconnected_of_forall_pair isPreconnected_of_forall_pair
+-/
 
 #print isPreconnected_sUnion /-
 /-- A union of a family of preconnected sets with a common point is preconnected as well. -/
@@ -161,23 +165,30 @@ theorem isPreconnected_sUnion (x : α) (c : Set (Set α)) (H1 : ∀ s ∈ c, x 
 #align is_preconnected_sUnion isPreconnected_sUnion
 -/
 
+#print isPreconnected_iUnion /-
 theorem isPreconnected_iUnion {ι : Sort _} {s : ι → Set α} (h₁ : (⋂ i, s i).Nonempty)
     (h₂ : ∀ i, IsPreconnected (s i)) : IsPreconnected (⋃ i, s i) :=
   Exists.elim h₁ fun f hf => isPreconnected_sUnion f _ hf (forall_range_iff.2 h₂)
 #align is_preconnected_Union isPreconnected_iUnion
+-/
 
+#print IsPreconnected.union /-
 theorem IsPreconnected.union (x : α) {s t : Set α} (H1 : x ∈ s) (H2 : x ∈ t) (H3 : IsPreconnected s)
     (H4 : IsPreconnected t) : IsPreconnected (s ∪ t) :=
   sUnion_pair s t ▸
     isPreconnected_sUnion x {s, t} (by rintro r (rfl | rfl | h) <;> assumption)
       (by rintro r (rfl | rfl | h) <;> assumption)
 #align is_preconnected.union IsPreconnected.union
+-/
 
+#print IsPreconnected.union' /-
 theorem IsPreconnected.union' {s t : Set α} (H : (s ∩ t).Nonempty) (hs : IsPreconnected s)
     (ht : IsPreconnected t) : IsPreconnected (s ∪ t) := by rcases H with ⟨x, hxs, hxt⟩;
   exact hs.union x hxs hxt ht
 #align is_preconnected.union' IsPreconnected.union'
+-/
 
+#print IsConnected.union /-
 theorem IsConnected.union {s t : Set α} (H : (s ∩ t).Nonempty) (Hs : IsConnected s)
     (Ht : IsConnected t) : IsConnected (s ∪ t) :=
   by
@@ -187,6 +198,7 @@ theorem IsConnected.union {s t : Set α} (H : (s ∩ t).Nonempty) (Hs : IsConnec
     IsPreconnected.union x (mem_of_mem_inter_left hx) (mem_of_mem_inter_right hx) Hs.is_preconnected
       Ht.is_preconnected
 #align is_connected.union IsConnected.union
+-/
 
 #print IsPreconnected.sUnion_directed /-
 /-- The directed sUnion of a set S of preconnected subsets is preconnected. -/
@@ -205,6 +217,7 @@ theorem IsPreconnected.sUnion_directed {S : Set (Set α)} (K : DirectedOn (· 
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i j «expr ∈ » t) -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (p «expr ⊆ » t) -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i j «expr ∈ » t) -/
+#print IsPreconnected.biUnion_of_reflTransGen /-
 /-- The bUnion of a family of preconnected sets is preconnected if the graph determined by
 whether two sets intersect is preconnected. -/
 theorem IsPreconnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : ι → Set α}
@@ -241,8 +254,10 @@ theorem IsPreconnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : 
   obtain ⟨p, hpt, hip, hjp, hp⟩ := P i hi j hj (K i hi j hj)
   exact ⟨⋃ j ∈ p, s j, bUnion_subset_bUnion_left hpt, mem_bUnion hip hxi, mem_bUnion hjp hyj, hp⟩
 #align is_preconnected.bUnion_of_refl_trans_gen IsPreconnected.biUnion_of_reflTransGen
+-/
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i j «expr ∈ » t) -/
+#print IsConnected.biUnion_of_reflTransGen /-
 /-- The bUnion of a family of preconnected sets is preconnected if the graph determined by
 whether two sets intersect is preconnected. -/
 theorem IsConnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : ι → Set α}
@@ -254,7 +269,9 @@ theorem IsConnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : ι 
   ⟨nonempty_biUnion.2 <| ⟨ht.some, ht.some_mem, (H _ ht.some_mem).Nonempty⟩,
     IsPreconnected.biUnion_of_reflTransGen (fun i hi => (H i hi).IsPreconnected) K⟩
 #align is_connected.bUnion_of_refl_trans_gen IsConnected.biUnion_of_reflTransGen
+-/
 
+#print IsPreconnected.iUnion_of_reflTransGen /-
 /-- Preconnectedness of the Union of a family of preconnected sets
 indexed by the vertices of a preconnected graph,
 where two vertices are joined when the corresponding sets intersect. -/
@@ -266,13 +283,16 @@ theorem IsPreconnected.iUnion_of_reflTransGen {ι : Type _} {s : ι → Set α}
     IsPreconnected.biUnion_of_reflTransGen (fun i _ => H i) fun i _ j _ => by
       simpa [mem_univ] using K i j
 #align is_preconnected.Union_of_refl_trans_gen IsPreconnected.iUnion_of_reflTransGen
+-/
 
+#print IsConnected.iUnion_of_reflTransGen /-
 theorem IsConnected.iUnion_of_reflTransGen {ι : Type _} [Nonempty ι] {s : ι → Set α}
     (H : ∀ i, IsConnected (s i))
     (K : ∀ i j, ReflTransGen (fun i j : ι => (s i ∩ s j).Nonempty) i j) : IsConnected (⋃ n, s n) :=
   ⟨nonempty_iUnion.2 <| Nonempty.elim ‹_› fun i : ι => ⟨i, (H _).Nonempty⟩,
     IsPreconnected.iUnion_of_reflTransGen (fun i => (H i).IsPreconnected) K⟩
 #align is_connected.Union_of_refl_trans_gen IsConnected.iUnion_of_reflTransGen
+-/
 
 section SuccOrder
 
@@ -280,6 +300,7 @@ open Order
 
 variable [LinearOrder β] [SuccOrder β] [IsSuccArchimedean β]
 
+#print IsPreconnected.iUnion_of_chain /-
 /-- The Union of connected sets indexed by a type with an archimedean successor (like `ℕ` or `ℤ`)
   such that any two neighboring sets meet is preconnected. -/
 theorem IsPreconnected.iUnion_of_chain {s : β → Set α} (H : ∀ n, IsPreconnected (s n))
@@ -287,7 +308,9 @@ theorem IsPreconnected.iUnion_of_chain {s : β → Set α} (H : ∀ n, IsPreconn
   IsPreconnected.iUnion_of_reflTransGen H fun i j =>
     reflTransGen_of_succ _ (fun i _ => K i) fun i _ => by rw [inter_comm]; exact K i
 #align is_preconnected.Union_of_chain IsPreconnected.iUnion_of_chain
+-/
 
+#print IsConnected.iUnion_of_chain /-
 /-- The Union of connected sets indexed by a type with an archimedean successor (like `ℕ` or `ℤ`)
   such that any two neighboring sets meet is connected. -/
 theorem IsConnected.iUnion_of_chain [Nonempty β] {s : β → Set α} (H : ∀ n, IsConnected (s n))
@@ -295,7 +318,9 @@ theorem IsConnected.iUnion_of_chain [Nonempty β] {s : β → Set α} (H : ∀ n
   IsConnected.iUnion_of_reflTransGen H fun i j =>
     reflTransGen_of_succ _ (fun i _ => K i) fun i _ => by rw [inter_comm]; exact K i
 #align is_connected.Union_of_chain IsConnected.iUnion_of_chain
+-/
 
+#print IsPreconnected.biUnion_of_chain /-
 /-- The Union of preconnected sets indexed by a subset of a type with an archimedean successor
   (like `ℕ` or `ℤ`) such that any two neighboring sets meet is preconnected. -/
 theorem IsPreconnected.biUnion_of_chain {s : β → Set α} {t : Set β} (ht : OrdConnected t)
@@ -314,7 +339,9 @@ theorem IsPreconnected.biUnion_of_chain {s : β → Set α} {t : Set β} (ht : O
     reflTransGen_of_succ _ (fun k hk => ⟨h3 hi hj hk, h1 hi hj hk⟩) fun k hk =>
       ⟨by rw [inter_comm]; exact h3 hj hi hk, h2 hj hi hk⟩
 #align is_preconnected.bUnion_of_chain IsPreconnected.biUnion_of_chain
+-/
 
+#print IsConnected.biUnion_of_chain /-
 /-- The Union of connected sets indexed by a subset of a type with an archimedean successor
   (like `ℕ` or `ℤ`) such that any two neighboring sets meet is preconnected. -/
 theorem IsConnected.biUnion_of_chain {s : β → Set α} {t : Set β} (hnt : t.Nonempty)
@@ -323,6 +350,7 @@ theorem IsConnected.biUnion_of_chain {s : β → Set α} {t : Set β} (hnt : t.N
   ⟨nonempty_biUnion.2 <| ⟨hnt.some, hnt.some_mem, (H _ hnt.some_mem).Nonempty⟩,
     IsPreconnected.biUnion_of_chain ht (fun i hi => (H i hi).IsPreconnected) K⟩
 #align is_connected.bUnion_of_chain IsConnected.biUnion_of_chain
+-/
 
 end SuccOrder
 
@@ -395,6 +423,7 @@ theorem IsConnected.image [TopologicalSpace β] {s : Set α} (H : IsConnected s)
 #align is_connected.image IsConnected.image
 -/
 
+#print isPreconnected_closed_iff /-
 theorem isPreconnected_closed_iff {s : Set α} :
     IsPreconnected s ↔
       ∀ t t',
@@ -420,6 +449,7 @@ theorem isPreconnected_closed_iff {s : Set α} :
     rw [← compl_union] at this 
     exact this.ne_empty huv.disjoint_compl_right.inter_eq⟩
 #align is_preconnected_closed_iff isPreconnected_closed_iff
+-/
 
 #print Inducing.isPreconnected_image /-
 theorem Inducing.isPreconnected_image [TopologicalSpace β] {s : Set α} {f : α → β}
@@ -492,6 +522,7 @@ theorem IsConnected.preimage_of_closedMap [TopologicalSpace β] {s : Set β} (hs
 #align is_connected.preimage_of_closed_map IsConnected.preimage_of_closedMap
 -/
 
+#print IsPreconnected.subset_or_subset /-
 theorem IsPreconnected.subset_or_subset (hu : IsOpen u) (hv : IsOpen v) (huv : Disjoint u v)
     (hsuv : s ⊆ u ∪ v) (hs : IsPreconnected s) : s ⊆ u ∨ s ⊆ v :=
   by
@@ -503,7 +534,9 @@ theorem IsPreconnected.subset_or_subset (hu : IsOpen u) (hv : IsOpen v) (huv : D
       disjoint_iff_inter_eq_empty.1 huv] at hs 
     exact Or.inl ((hs s.disjoint_empty).subset_left_of_subset_union hsuv)
 #align is_preconnected.subset_or_subset IsPreconnected.subset_or_subset
+-/
 
+#print IsPreconnected.subset_left_of_subset_union /-
 theorem IsPreconnected.subset_left_of_subset_union (hu : IsOpen u) (hv : IsOpen v)
     (huv : Disjoint u v) (hsuv : s ⊆ u ∪ v) (hsu : (s ∩ u).Nonempty) (hs : IsPreconnected s) :
     s ⊆ u :=
@@ -514,13 +547,17 @@ theorem IsPreconnected.subset_left_of_subset_union (hu : IsOpen u) (hv : IsOpen
       obtain ⟨x, _, hx⟩ := hs u v hu hv hsuv hsu hsv
       exact Set.disjoint_iff.1 huv hx)
 #align is_preconnected.subset_left_of_subset_union IsPreconnected.subset_left_of_subset_union
+-/
 
+#print IsPreconnected.subset_right_of_subset_union /-
 theorem IsPreconnected.subset_right_of_subset_union (hu : IsOpen u) (hv : IsOpen v)
     (huv : Disjoint u v) (hsuv : s ⊆ u ∪ v) (hsv : (s ∩ v).Nonempty) (hs : IsPreconnected s) :
     s ⊆ v :=
   hs.subset_left_of_subset_union hv hu huv.symm (union_comm u v ▸ hsuv) hsv
 #align is_preconnected.subset_right_of_subset_union IsPreconnected.subset_right_of_subset_union
+-/
 
+#print IsPreconnected.subset_of_closure_inter_subset /-
 /-- If a preconnected set `s` intersects an open set `u`, and limit points of `u` inside `s` are
 contained in `u`, then the whole set `s` is contained in `u`. -/
 theorem IsPreconnected.subset_of_closure_inter_subset (hs : IsPreconnected s) (hu : IsOpen u)
@@ -536,8 +573,10 @@ theorem IsPreconnected.subset_of_closure_inter_subset (hs : IsPreconnected s) (h
   apply hs.subset_left_of_subset_union hu is_closed_closure.is_open_compl _ A h'u
   exact disjoint_compl_right.mono_right (compl_subset_compl.2 subset_closure)
 #align is_preconnected.subset_of_closure_inter_subset IsPreconnected.subset_of_closure_inter_subset
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print IsPreconnected.prod /-
 theorem IsPreconnected.prod [TopologicalSpace β] {s : Set α} {t : Set β} (hs : IsPreconnected s)
     (ht : IsPreconnected t) : IsPreconnected (s ×ˢ t) :=
   by
@@ -552,12 +591,15 @@ theorem IsPreconnected.prod [TopologicalSpace β] {s : Set α} {t : Set β} (hs
       (ht.image _ (Continuous.Prod.mk _).ContinuousOn).union (a₁, b₂) ⟨b₂, hb₂, rfl⟩ ⟨a₁, ha₁, rfl⟩
         (hs.image _ (continuous_id.prod_mk continuous_const).ContinuousOn)
 #align is_preconnected.prod IsPreconnected.prod
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print IsConnected.prod /-
 theorem IsConnected.prod [TopologicalSpace β] {s : Set α} {t : Set β} (hs : IsConnected s)
     (ht : IsConnected t) : IsConnected (s ×ˢ t) :=
   ⟨hs.1.Prod ht.1, hs.2.Prod ht.2⟩
 #align is_connected.prod IsConnected.prod
+-/
 
 #print isPreconnected_univ_pi /-
 theorem isPreconnected_univ_pi [∀ i, TopologicalSpace (π i)] {s : ∀ i, Set (π i)}
@@ -597,6 +639,7 @@ theorem isConnected_univ_pi [∀ i, TopologicalSpace (π i)] {s : ∀ i, Set (π
 #align is_connected_univ_pi isConnected_univ_pi
 -/
 
+#print Sigma.isConnected_iff /-
 theorem Sigma.isConnected_iff [∀ i, TopologicalSpace (π i)] {s : Set (Σ i, π i)} :
     IsConnected s ↔ ∃ i t, IsConnected t ∧ s = Sigma.mk i '' t :=
   by
@@ -616,7 +659,9 @@ theorem Sigma.isConnected_iff [∀ i, TopologicalSpace (π i)] {s : Set (Σ i, 
   · rintro ⟨i, t, ht, rfl⟩
     exact ht.image _ continuous_sigma_mk.continuous_on
 #align sigma.is_connected_iff Sigma.isConnected_iff
+-/
 
+#print Sigma.isPreconnected_iff /-
 theorem Sigma.isPreconnected_iff [hι : Nonempty ι] [∀ i, TopologicalSpace (π i)]
     {s : Set (Σ i, π i)} : IsPreconnected s ↔ ∃ i t, IsPreconnected t ∧ s = Sigma.mk i '' t :=
   by
@@ -628,7 +673,9 @@ theorem Sigma.isPreconnected_iff [hι : Nonempty ι] [∀ i, TopologicalSpace (
   · rintro ⟨a, t, ht, rfl⟩
     exact ht.image _ continuous_sigma_mk.continuous_on
 #align sigma.is_preconnected_iff Sigma.isPreconnected_iff
+-/
 
+#print Sum.isConnected_iff /-
 theorem Sum.isConnected_iff [TopologicalSpace β] {s : Set (Sum α β)} :
     IsConnected s ↔
       (∃ t, IsConnected t ∧ s = Sum.inl '' t) ∨ ∃ t, IsConnected t ∧ s = Sum.inr '' t :=
@@ -654,7 +701,9 @@ theorem Sum.isConnected_iff [TopologicalSpace β] {s : Set (Sum α β)} :
     · exact ht.image _ continuous_inl.continuous_on
     · exact ht.image _ continuous_inr.continuous_on
 #align sum.is_connected_iff Sum.isConnected_iff
+-/
 
+#print Sum.isPreconnected_iff /-
 theorem Sum.isPreconnected_iff [TopologicalSpace β] {s : Set (Sum α β)} :
     IsPreconnected s ↔
       (∃ t, IsPreconnected t ∧ s = Sum.inl '' t) ∨ ∃ t, IsPreconnected t ∧ s = Sum.inr '' t :=
@@ -669,6 +718,7 @@ theorem Sum.isPreconnected_iff [TopologicalSpace β] {s : Set (Sum α β)} :
     · exact ht.image _ continuous_inl.continuous_on
     · exact ht.image _ continuous_inr.continuous_on
 #align sum.is_preconnected_iff Sum.isPreconnected_iff
+-/
 
 #print connectedComponent /-
 /-- The connected component of a point is the maximal connected set
@@ -839,11 +889,13 @@ theorem connectedComponentIn_univ (x : α) : connectedComponentIn univ x = conne
 #align connected_component_in_univ connectedComponentIn_univ
 -/
 
+#print connectedComponent_disjoint /-
 theorem connectedComponent_disjoint {x y : α} (h : connectedComponent x ≠ connectedComponent y) :
     Disjoint (connectedComponent x) (connectedComponent y) :=
   Set.disjoint_left.2 fun a h1 h2 =>
     h ((connectedComponent_eq h1).trans (connectedComponent_eq h2).symm)
 #align connected_component_disjoint connectedComponent_disjoint
+-/
 
 #print isClosed_connectedComponent /-
 theorem isClosed_connectedComponent {x : α} : IsClosed (connectedComponent x) :=
@@ -1000,10 +1052,12 @@ instance (priority := 100) IrreducibleSpace.connectedSpace (α : Type u) [Topolo
 #align irreducible_space.connected_space IrreducibleSpace.connectedSpace
 -/
 
+#print nonempty_inter /-
 theorem nonempty_inter [PreconnectedSpace α] {s t : Set α} :
     IsOpen s → IsOpen t → s ∪ t = univ → s.Nonempty → t.Nonempty → (s ∩ t).Nonempty := by
   simpa only [univ_inter, univ_subset_iff] using @PreconnectedSpace.isPreconnected_univ α _ _ s t
 #align nonempty_inter nonempty_inter
+-/
 
 #print isClopen_iff /-
 theorem isClopen_iff [PreconnectedSpace α] {s : Set α} : IsClopen s ↔ s = ∅ ∨ s = univ :=
@@ -1072,6 +1126,7 @@ theorem isConnected_iff_connectedSpace {s : Set α} : IsConnected s ↔ Connecte
 #align is_connected_iff_connected_space isConnected_iff_connectedSpace
 -/
 
+#print isPreconnected_iff_subset_of_disjoint /-
 /-- A set `s` is preconnected if and only if
 for every cover by two open sets that are disjoint on `s`,
 it is contained in one of the two covering sets. -/
@@ -1100,7 +1155,9 @@ theorem isPreconnected_iff_subset_of_disjoint {s : Set α} :
     · rcases hsv with ⟨x, hxs, hxv⟩; exact ⟨x, hxs, ⟨h hxs, hxv⟩⟩
     · rcases hsu with ⟨x, hxs, hxu⟩; exact ⟨x, hxs, ⟨hxu, h hxs⟩⟩
 #align is_preconnected_iff_subset_of_disjoint isPreconnected_iff_subset_of_disjoint
+-/
 
+#print isConnected_iff_sUnion_disjoint_open /-
 /-- A set `s` is connected if and only if
 for every cover by a finite collection of open sets that are pairwise disjoint on `s`,
 it is contained in one of the members of the collection. -/
@@ -1156,7 +1213,9 @@ theorem isConnected_iff_sUnion_disjoint_open {s : Set α} :
       rintro (rfl | rfl) <;> assumption
     · simpa using hs
 #align is_connected_iff_sUnion_disjoint_open isConnected_iff_sUnion_disjoint_open
+-/
 
+#print IsPreconnected.subset_clopen /-
 /-- Preconnected sets are either contained in or disjoint to any given clopen set. -/
 theorem IsPreconnected.subset_clopen {s t : Set α} (hs : IsPreconnected s) (ht : IsClopen t)
     (hne : (s ∩ t).Nonempty) : s ⊆ t := by
@@ -1166,13 +1225,17 @@ theorem IsPreconnected.subset_clopen {s t : Set α} (hs : IsPreconnected s) (ht
   exact hs t (tᶜ) ht.is_open ht.compl.is_open (fun x hx => em _) hne this
   exact hx' hx
 #align is_preconnected.subset_clopen IsPreconnected.subset_clopen
+-/
 
+#print disjoint_or_subset_of_clopen /-
 /-- Preconnected sets are either contained in or disjoint to any given clopen set. -/
 theorem disjoint_or_subset_of_clopen {s t : Set α} (hs : IsPreconnected s) (ht : IsClopen t) :
     Disjoint s t ∨ s ⊆ t :=
   (disjoint_or_nonempty_inter s t).imp_right <| hs.subset_clopen ht
 #align disjoint_or_subset_of_clopen disjoint_or_subset_of_clopen
+-/
 
+#print isPreconnected_iff_subset_of_disjoint_closed /-
 /-- A set `s` is preconnected if and only if
 for every cover by two closed sets that are disjoint on `s`,
 it is contained in one of the two covering sets. -/
@@ -1203,7 +1266,9 @@ theorem isPreconnected_iff_subset_of_disjoint_closed :
     · rcases hsv with ⟨x, hxs, hxv⟩; exact ⟨x, hxs, ⟨h hxs, hxv⟩⟩
     · rcases hsu with ⟨x, hxs, hxu⟩; exact ⟨x, hxs, ⟨hxu, h hxs⟩⟩
 #align is_preconnected_iff_subset_of_disjoint_closed isPreconnected_iff_subset_of_disjoint_closed
+-/
 
+#print isPreconnected_iff_subset_of_fully_disjoint_closed /-
 /-- A closed set `s` is preconnected if and only if
 for every cover by two closed sets that are disjoint,
 it is contained in one of the two covering sets. -/
@@ -1227,6 +1292,7 @@ theorem isPreconnected_iff_subset_of_fully_disjoint_closed {s : Set α} (hs : Is
     exact subset_inter hss subset.rfl
   · rwa [disjoint_iff_inter_eq_empty, ← inter_inter_distrib_right, inter_comm]
 #align is_preconnected_iff_subset_of_fully_disjoint_closed isPreconnected_iff_subset_of_fully_disjoint_closed
+-/
 
 #print IsClopen.connectedComponent_subset /-
 theorem IsClopen.connectedComponent_subset {x} (hs : IsClopen s) (hx : x ∈ s) :
@@ -1391,6 +1457,7 @@ theorem locallyConnectedSpace_iff_open_connected_basis :
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (V «expr ⊆ » U) -/
+#print locallyConnectedSpace_iff_open_connected_subsets /-
 theorem locallyConnectedSpace_iff_open_connected_subsets :
     LocallyConnectedSpace α ↔
       ∀ (x : α), ∀ U ∈ 𝓝 x, ∃ (V : _) (_ : V ⊆ U), IsOpen V ∧ x ∈ V ∧ IsConnected V :=
@@ -1410,6 +1477,7 @@ theorem locallyConnectedSpace_iff_open_connected_subsets :
           ⟨V, hV, hVU⟩,
           fun ⟨V, ⟨hV, hxV, _⟩, hVU⟩ => mem_nhds_iff.mpr ⟨V, hVU, hV, hxV⟩⟩⟩
 #align locally_connected_space_iff_open_connected_subsets locallyConnectedSpace_iff_open_connected_subsets
+-/
 
 #print DiscreteTopology.toLocallyConnectedSpace /-
 /-- A space with discrete topology is a locally connected space. -/
@@ -1477,6 +1545,7 @@ theorem locallyConnectedSpace_iff_connectedComponentIn_open :
 #align locally_connected_space_iff_connected_component_in_open locallyConnectedSpace_iff_connectedComponentIn_open
 -/
 
+#print locallyConnectedSpace_iff_connected_subsets /-
 theorem locallyConnectedSpace_iff_connected_subsets :
     LocallyConnectedSpace α ↔ ∀ (x : α), ∀ U ∈ 𝓝 x, ∃ V ∈ 𝓝 x, IsPreconnected V ∧ V ⊆ U :=
   by
@@ -1491,6 +1560,7 @@ theorem locallyConnectedSpace_iff_connected_subsets :
     rcases h y U (hU.mem_nhds <| (connectedComponentIn_subset _ _) hy) with ⟨V, hVy, hV, hVU⟩
     exact Filter.mem_of_superset hVy (hV.subset_connected_component_in (mem_of_mem_nhds hVy) hVU)
 #align locally_connected_space_iff_connected_subsets locallyConnectedSpace_iff_connected_subsets
+-/
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
 #print locallyConnectedSpace_iff_connected_basis /-
@@ -1505,6 +1575,7 @@ theorem locallyConnectedSpace_iff_connected_basis :
 #align locally_connected_space_iff_connected_basis locallyConnectedSpace_iff_connected_basis
 -/
 
+#print locallyConnectedSpace_of_connected_bases /-
 theorem locallyConnectedSpace_of_connected_bases {ι : Type _} (b : α → ι → Set α) (p : α → ι → Prop)
     (hbasis : ∀ x, (𝓝 x).HasBasis (p x) (b x))
     (hconnected : ∀ x i, p x i → IsPreconnected (b x i)) : LocallyConnectedSpace α :=
@@ -1515,6 +1586,7 @@ theorem locallyConnectedSpace_of_connected_bases {ι : Type _} (b : α → ι 
       (fun i hi => ⟨b x i, ⟨(hbasis x).mem_of_mem hi, hconnected x i hi⟩, subset_rfl⟩) fun s hs =>
       ⟨(hbasis x).index s hs.1, ⟨(hbasis x).property_index hs.1, (hbasis x).set_index_subset hs.1⟩⟩
 #align locally_connected_space_of_connected_bases locallyConnectedSpace_of_connected_bases
+-/
 
 end LocallyConnectedSpace
 
@@ -1565,6 +1637,7 @@ instance Pi.totallyDisconnectedSpace {α : Type _} {β : α → Type _}
 #align pi.totally_disconnected_space Pi.totallyDisconnectedSpace
 -/
 
+#print Prod.totallyDisconnectedSpace /-
 instance Prod.totallyDisconnectedSpace [TopologicalSpace β] [TotallyDisconnectedSpace α]
     [TotallyDisconnectedSpace β] : TotallyDisconnectedSpace (α × β) :=
   ⟨fun t h1 h2 =>
@@ -1574,6 +1647,7 @@ instance Prod.totallyDisconnectedSpace [TopologicalSpace β] [TotallyDisconnecte
     Prod.ext (H1.Subsingleton ⟨x, hx, rfl⟩ ⟨y, hy, rfl⟩)
       (H2.Subsingleton ⟨x, hx, rfl⟩ ⟨y, hy, rfl⟩)⟩
 #align prod.totally_disconnected_space Prod.totallyDisconnectedSpace
+-/
 
 instance [TopologicalSpace β] [TotallyDisconnectedSpace α] [TotallyDisconnectedSpace β] :
     TotallyDisconnectedSpace (Sum α β) :=
@@ -1592,6 +1666,7 @@ instance [∀ i, TopologicalSpace (π i)] [∀ i, TotallyDisconnectedSpace (π i
   · obtain ⟨a, t, ht, rfl⟩ := Sigma.isConnected_iff.1 ⟨h, hs⟩
     exact ht.is_preconnected.subsingleton.image _
 
+#print isTotallyDisconnected_of_clopen_set /-
 /-- Let `X` be a topological space, and suppose that for all distinct `x,y ∈ X`, there
   is some clopen set `U` such that `x ∈ U` and `y ∉ U`. Then `X` is totally disconnected. -/
 theorem isTotallyDisconnected_of_clopen_set {X : Type _} [TopologicalSpace X]
@@ -1608,6 +1683,7 @@ theorem isTotallyDisconnected_of_clopen_set {X : Type _} [TopologicalSpace X]
   rw [inter_compl_self, Set.inter_empty] at hS 
   exact Set.not_nonempty_empty hS
 #align is_totally_disconnected_of_clopen_set isTotallyDisconnected_of_clopen_set
+-/
 
 #print totallyDisconnectedSpace_iff_connectedComponent_subsingleton /-
 /-- A space is totally disconnected iff its connected components are subsingletons. -/
@@ -1647,6 +1723,7 @@ theorem connectedComponent_eq_singleton [TotallyDisconnectedSpace α] (x : α) :
 #align connected_component_eq_singleton connectedComponent_eq_singleton
 -/
 
+#print Continuous.image_connectedComponent_eq_singleton /-
 /-- The image of a connected component in a totally disconnected space is a singleton. -/
 @[simp]
 theorem Continuous.image_connectedComponent_eq_singleton {β : Type _} [TopologicalSpace β]
@@ -1655,6 +1732,7 @@ theorem Continuous.image_connectedComponent_eq_singleton {β : Type _} [Topologi
   (Set.subsingleton_iff_singleton <| mem_image_of_mem f mem_connectedComponent).mp
     (isPreconnected_connectedComponent.image f h.ContinuousOn).Subsingleton
 #align continuous.image_connected_component_eq_singleton Continuous.image_connectedComponent_eq_singleton
+-/
 
 #print isTotallyDisconnected_of_totallyDisconnectedSpace /-
 theorem isTotallyDisconnected_of_totallyDisconnectedSpace [TotallyDisconnectedSpace α] (s : Set α) :
@@ -1730,7 +1808,7 @@ alias isTotallyDisconnected_of_isTotallySeparated ← IsTotallySeparated.isTotal
 #align is_totally_separated.is_totally_disconnected IsTotallySeparated.isTotallyDisconnected
 
 #print TotallySeparatedSpace /-
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`isTotallySeparated_univ] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`isTotallySeparated_univ] [] -/
 /-- A space is totally separated if any two points can be separated by two disjoint open sets
 covering the whole space. -/
 class TotallySeparatedSpace (α : Type u) [TopologicalSpace α] : Prop where
@@ -1754,6 +1832,7 @@ instance (priority := 100) TotallySeparatedSpace.of_discrete (α : Type _) [Topo
 #align totally_separated_space.of_discrete TotallySeparatedSpace.of_discrete
 -/
 
+#print exists_clopen_of_totally_separated /-
 theorem exists_clopen_of_totally_separated {α : Type _} [TopologicalSpace α]
     [TotallySeparatedSpace α] {x y : α} (hxy : x ≠ y) :
     ∃ (U : Set α) (hU : IsClopen U), x ∈ U ∧ y ∈ Uᶜ :=
@@ -1765,6 +1844,7 @@ theorem exists_clopen_of_totally_separated {α : Type _} [TopologicalSpace α]
   rw [← Set.subset_compl_iff_disjoint_right, subset_compl_comm] at disj 
   exact ⟨U, clopen_U, Ux, disj Vy⟩
 #align exists_clopen_of_totally_separated exists_clopen_of_totally_separated
+-/
 
 end TotallySeparated
 
@@ -1889,10 +1969,12 @@ theorem Continuous.connectedComponentsLift_comp_coe (h : Continuous f) :
 #align continuous.connected_components_lift_comp_coe Continuous.connectedComponentsLift_comp_coe
 -/
 
+#print connectedComponents_lift_unique' /-
 theorem connectedComponents_lift_unique' {β : Sort _} {g₁ g₂ : ConnectedComponents α → β}
     (hg : g₁ ∘ (coe : α → ConnectedComponents α) = g₂ ∘ coe) : g₁ = g₂ :=
   ConnectedComponents.surjective_coe.injective_comp_right hg
 #align connected_components_lift_unique' connectedComponents_lift_unique'
+-/
 
 #print Continuous.connectedComponentsLift_unique /-
 theorem Continuous.connectedComponentsLift_unique (h : Continuous f) (g : ConnectedComponents α → β)
@@ -1941,13 +2023,16 @@ def Continuous.connectedComponentsMap {β : Type _} [TopologicalSpace β] {f : 
 #align continuous.connected_components_map Continuous.connectedComponentsMap
 -/
 
+#print Continuous.connectedComponentsMap_continuous /-
 theorem Continuous.connectedComponentsMap_continuous {β : Type _} [TopologicalSpace β] {f : α → β}
     (h : Continuous f) : Continuous h.connectedComponentsMap :=
   Continuous.connectedComponentsLift_continuous (continuous_quotient_mk'.comp h)
 #align continuous.connected_components_map_continuous Continuous.connectedComponentsMap_continuous
+-/
 
 end connectedComponentSetoid
 
+#print IsPreconnected.constant /-
 /-- A preconnected set `s` has the property that every map to a
 discrete space that is continuous on `s` is constant on `s` -/
 theorem IsPreconnected.constant {Y : Type _} [TopologicalSpace Y] [DiscreteTopology Y] {s : Set α}
@@ -1955,7 +2040,9 @@ theorem IsPreconnected.constant {Y : Type _} [TopologicalSpace Y] [DiscreteTopol
     (hy : y ∈ s) : f x = f y :=
   (hs.image f hf).Subsingleton (mem_image_of_mem f hx) (mem_image_of_mem f hy)
 #align is_preconnected.constant IsPreconnected.constant
+-/
 
+#print isPreconnected_of_forall_constant /-
 /-- If every map to `bool` (a discrete two-element space), that is
 continuous on a set `s`, is constant on s, then s is preconnected -/
 theorem isPreconnected_of_forall_constant {s : Set α}
@@ -1975,19 +2062,24 @@ theorem isPreconnected_of_forall_constant {s : Set α}
   simpa [(u.mem_iff_bool_indicator _).mp x_in_u, (u.not_mem_iff_bool_indicator _).mp hy] using
     hs _ this x x_in_s y y_in_s
 #align is_preconnected_of_forall_constant isPreconnected_of_forall_constant
+-/
 
+#print PreconnectedSpace.constant /-
 /-- A `preconnected_space` version of `is_preconnected.constant` -/
 theorem PreconnectedSpace.constant {Y : Type _} [TopologicalSpace Y] [DiscreteTopology Y]
     (hp : PreconnectedSpace α) {f : α → Y} (hf : Continuous f) {x y : α} : f x = f y :=
   IsPreconnected.constant hp.isPreconnected_univ (Continuous.continuousOn hf) trivial trivial
 #align preconnected_space.constant PreconnectedSpace.constant
+-/
 
+#print preconnectedSpace_of_forall_constant /-
 /-- A `preconnected_space` version of `is_preconnected_of_forall_constant` -/
 theorem preconnectedSpace_of_forall_constant
     (hs : ∀ f : α → Bool, Continuous f → ∀ x y, f x = f y) : PreconnectedSpace α :=
   ⟨isPreconnected_of_forall_constant fun f hf x hx y hy =>
       hs f (continuous_iff_continuousOn_univ.mpr hf) x y⟩
 #align preconnected_space_of_forall_constant preconnectedSpace_of_forall_constant
+-/
 
 #print IsPreconnected.constant_of_mapsTo /-
 /-- Refinement of `is_preconnected.constant` only assuming the map factors through a
Diff
@@ -122,7 +122,7 @@ theorem Set.Subsingleton.isPreconnected {s : Set α} (hs : s.Subsingleton) : IsP
 #align set.subsingleton.is_preconnected Set.Subsingleton.isPreconnected
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (t «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (t «expr ⊆ » s) -/
 /-- If any point of a set is joined to a fixed point by a preconnected subset,
 then the original set is preconnected as well. -/
 theorem isPreconnected_of_forall {s : Set α} (x : α)
@@ -138,8 +138,8 @@ theorem isPreconnected_of_forall {s : Set α} (x : α)
   exact this.imp fun z hz => ⟨ts hz.1, hz.2⟩
 #align is_preconnected_of_forall isPreconnected_of_forall
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x y «expr ∈ » s) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (t «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (x y «expr ∈ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (t «expr ⊆ » s) -/
 /-- If any two points of a set are contained in a preconnected subset,
 then the original set is preconnected as well. -/
 theorem isPreconnected_of_forall_pair {s : Set α}
@@ -202,9 +202,9 @@ theorem IsPreconnected.sUnion_directed {S : Set (Set α)} (K : DirectedOn (· 
 #align is_preconnected.sUnion_directed IsPreconnected.sUnion_directed
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i j «expr ∈ » t) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (p «expr ⊆ » t) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i j «expr ∈ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i j «expr ∈ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (p «expr ⊆ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i j «expr ∈ » t) -/
 /-- The bUnion of a family of preconnected sets is preconnected if the graph determined by
 whether two sets intersect is preconnected. -/
 theorem IsPreconnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : ι → Set α}
@@ -242,7 +242,7 @@ theorem IsPreconnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : 
   exact ⟨⋃ j ∈ p, s j, bUnion_subset_bUnion_left hpt, mem_bUnion hip hxi, mem_bUnion hjp hyj, hp⟩
 #align is_preconnected.bUnion_of_refl_trans_gen IsPreconnected.biUnion_of_reflTransGen
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i j «expr ∈ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i j «expr ∈ » t) -/
 /-- The bUnion of a family of preconnected sets is preconnected if the graph determined by
 whether two sets intersect is preconnected. -/
 theorem IsConnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : ι → Set α}
@@ -1390,7 +1390,7 @@ theorem locallyConnectedSpace_iff_open_connected_basis :
 -/
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (V «expr ⊆ » U) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (V «expr ⊆ » U) -/
 theorem locallyConnectedSpace_iff_open_connected_subsets :
     LocallyConnectedSpace α ↔
       ∀ (x : α), ∀ U ∈ 𝓝 x, ∃ (V : _) (_ : V ⊆ U), IsOpen V ∧ x ∈ V ∧ IsConnected V :=
Diff
@@ -608,7 +608,7 @@ theorem Sigma.isConnected_iff [∀ i, TopologicalSpace (π i)] {s : Set (Σ i, 
       rw [h]
       exact
         IsPreconnected.subset_left_of_subset_union (isOpen_sigma_fst_preimage _)
-          (isOpen_sigma_fst_preimage { x | x ≠ i }) (Set.disjoint_iff.2 fun x hx => hx.2 hx.1)
+          (isOpen_sigma_fst_preimage {x | x ≠ i}) (Set.disjoint_iff.2 fun x hx => hx.2 hx.1)
           (fun y hy => by simp [Classical.em]) ⟨⟨i, x⟩, hx, rfl⟩ hs.2
     exact
       ⟨i, Sigma.mk i ⁻¹' s, hs.preimage_of_open_map sigma_mk_injective isOpenMap_sigmaMk this,
@@ -674,7 +674,7 @@ theorem Sum.isPreconnected_iff [TopologicalSpace β] {s : Set (Sum α β)} :
 /-- The connected component of a point is the maximal connected set
 that contains this point. -/
 def connectedComponent (x : α) : Set α :=
-  ⋃₀ { s : Set α | IsPreconnected s ∧ x ∈ s }
+  ⋃₀ {s : Set α | IsPreconnected s ∧ x ∈ s}
 #align connected_component connectedComponent
 -/
 
@@ -1278,8 +1278,8 @@ theorem preimage_connectedComponent_connected [TopologicalSpace β] {f : α →
   -- To do this we decompose connected_component t into T₁ and T₂
   -- we will show that connected_component t is a subset of either and hence
   -- (f ⁻¹' connected_component t) is a subset of u or v
-  let T₁ := { t' ∈ connectedComponent t | f ⁻¹' {t'} ⊆ u }
-  let T₂ := { t' ∈ connectedComponent t | f ⁻¹' {t'} ⊆ v }
+  let T₁ := {t' ∈ connectedComponent t | f ⁻¹' {t'} ⊆ u}
+  let T₂ := {t' ∈ connectedComponent t | f ⁻¹' {t'} ⊆ v}
   have fiber_decomp : ∀ t' ∈ connectedComponent t, f ⁻¹' {t'} ⊆ u ∨ f ⁻¹' {t'} ⊆ v :=
     by
     intro t' ht'
@@ -1730,7 +1730,7 @@ alias isTotallyDisconnected_of_isTotallySeparated ← IsTotallySeparated.isTotal
 #align is_totally_separated.is_totally_disconnected IsTotallySeparated.isTotallyDisconnected
 
 #print TotallySeparatedSpace /-
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`isTotallySeparated_univ] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`isTotallySeparated_univ] [] -/
 /-- A space is totally separated if any two points can be separated by two disjoint open sets
 covering the whole space. -/
 class TotallySeparatedSpace (α : Type u) [TopologicalSpace α] : Prop where
Diff
@@ -126,12 +126,12 @@ theorem Set.Subsingleton.isPreconnected {s : Set α} (hs : s.Subsingleton) : IsP
 /-- If any point of a set is joined to a fixed point by a preconnected subset,
 then the original set is preconnected as well. -/
 theorem isPreconnected_of_forall {s : Set α} (x : α)
-    (H : ∀ y ∈ s, ∃ (t : _)(_ : t ⊆ s), x ∈ t ∧ y ∈ t ∧ IsPreconnected t) : IsPreconnected s :=
+    (H : ∀ y ∈ s, ∃ (t : _) (_ : t ⊆ s), x ∈ t ∧ y ∈ t ∧ IsPreconnected t) : IsPreconnected s :=
   by
   rintro u v hu hv hs ⟨z, zs, zu⟩ ⟨y, ys, yv⟩
   have xs : x ∈ s := by rcases H y ys with ⟨t, ts, xt, yt, ht⟩; exact ts xt
   wlog xu : x ∈ u
-  · rw [inter_comm u v]; rw [union_comm] at hs
+  · rw [inter_comm u v]; rw [union_comm] at hs 
     exact this x H v u hv hu hs y ys yv z zs zu xs ((hs xs).resolve_right xu)
   rcases H y ys with ⟨t, ts, xt, yt, ht⟩
   have := ht u v hu hv (subset.trans ts hs) ⟨x, xt, xu⟩ ⟨y, yt, yv⟩
@@ -144,10 +144,10 @@ theorem isPreconnected_of_forall {s : Set α} (x : α)
 then the original set is preconnected as well. -/
 theorem isPreconnected_of_forall_pair {s : Set α}
     (H :
-      ∀ (x) (_ : x ∈ s) (y) (_ : y ∈ s), ∃ (t : _)(_ : t ⊆ s), x ∈ t ∧ y ∈ t ∧ IsPreconnected t) :
+      ∀ (x) (_ : x ∈ s) (y) (_ : y ∈ s), ∃ (t : _) (_ : t ⊆ s), x ∈ t ∧ y ∈ t ∧ IsPreconnected t) :
     IsPreconnected s := by
   rcases eq_empty_or_nonempty s with (rfl | ⟨x, hx⟩)
-  exacts[isPreconnected_empty, isPreconnected_of_forall x fun y => H x hx y]
+  exacts [isPreconnected_empty, isPreconnected_of_forall x fun y => H x hx y]
 #align is_preconnected_of_forall_pair isPreconnected_of_forall_pair
 
 #print isPreconnected_sUnion /-
@@ -217,7 +217,7 @@ theorem IsPreconnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : 
   let R := fun i j : ι => (s i ∩ s j).Nonempty ∧ i ∈ t
   have P :
     ∀ (i) (_ : i ∈ t) (j) (_ : j ∈ t),
-      refl_trans_gen R i j → ∃ (p : _)(_ : p ⊆ t), i ∈ p ∧ j ∈ p ∧ IsPreconnected (⋃ j ∈ p, s j) :=
+      refl_trans_gen R i j → ∃ (p : _) (_ : p ⊆ t), i ∈ p ∧ j ∈ p ∧ IsPreconnected (⋃ j ∈ p, s j) :=
     by
     intro i hi j hj h
     induction h
@@ -373,17 +373,17 @@ theorem IsPreconnected.image [TopologicalSpace β] {s : Set α} (H : IsPreconnec
   rcases continuousOn_iff'.1 hf v hv with ⟨v', hv', v'_eq⟩
   -- Reformulate `huv : f '' s ⊆ u ∪ v` in terms of `u'` and `v'`
   replace huv : s ⊆ u' ∪ v'
-  · rw [image_subset_iff, preimage_union] at huv
+  · rw [image_subset_iff, preimage_union] at huv 
     replace huv := subset_inter huv (subset.refl _)
-    rw [inter_distrib_right, u'_eq, v'_eq, ← inter_distrib_right] at huv
+    rw [inter_distrib_right, u'_eq, v'_eq, ← inter_distrib_right] at huv 
     exact (subset_inter_iff.1 huv).1
   -- Now `s ⊆ u' ∪ v'`, so we can apply `‹is_preconnected s›`
   obtain ⟨z, hz⟩ : (s ∩ (u' ∩ v')).Nonempty :=
     by
     refine' H u' v' hu' hv' huv ⟨x, _⟩ ⟨y, _⟩ <;> rw [inter_comm]
-    exacts[u'_eq ▸ ⟨xu, xs⟩, v'_eq ▸ ⟨yv, ys⟩]
+    exacts [u'_eq ▸ ⟨xu, xs⟩, v'_eq ▸ ⟨yv, ys⟩]
   rw [← inter_self s, inter_assoc, inter_left_comm s u', ← inter_assoc, inter_comm s, inter_comm s,
-    ← u'_eq, ← v'_eq] at hz
+    ← u'_eq, ← v'_eq] at hz 
   exact ⟨f z, ⟨z, hz.1.2, rfl⟩, hz.1.1, hz.2.1⟩
 #align is_preconnected.image IsPreconnected.image
 -/
@@ -408,7 +408,7 @@ theorem isPreconnected_closed_iff {s : Set α} :
     have xt' : x ∉ t' := (h' xs).resolve_left (absurd xt)
     have yt : y ∉ t := (h' ys).resolve_right (absurd yt')
     have := h _ _ ht.is_open_compl ht'.is_open_compl h' ⟨y, ys, yt⟩ ⟨x, xs, xt'⟩
-    rw [← compl_union] at this
+    rw [← compl_union] at this 
     exact this.ne_empty htt'.disjoint_compl_right.inter_eq,
     by
     rintro h u v hu hv huv ⟨x, xs, xu⟩ ⟨y, ys, yv⟩
@@ -417,7 +417,7 @@ theorem isPreconnected_closed_iff {s : Set α} :
     have xv : x ∉ v := (h' xs).elim (absurd xu) id
     have yu : y ∉ u := (h' ys).elim id (absurd yv)
     have := h _ _ hu.is_closed_compl hv.is_closed_compl h' ⟨y, ys, yu⟩ ⟨x, xs, xv⟩
-    rw [← compl_union] at this
+    rw [← compl_union] at this 
     exact this.ne_empty huv.disjoint_compl_right.inter_eq⟩
 #align is_preconnected_closed_iff isPreconnected_closed_iff
 
@@ -445,10 +445,10 @@ theorem IsPreconnected.preimage_of_open_map [TopologicalSpace β] {s : Set β} (
   by
   obtain ⟨b, hbs, hbu, hbv⟩ := hs (f '' u) (f '' v) (hf u hu) (hf v hv) _ _ _
   obtain ⟨a, rfl⟩ := hsf hbs
-  rw [hinj.mem_set_image] at hbu hbv
+  rw [hinj.mem_set_image] at hbu hbv 
   exact ⟨a, hbs, hbu, hbv⟩
   · have := image_subset f hsuv
-    rwa [Set.image_preimage_eq_of_subset hsf, image_union] at this
+    rwa [Set.image_preimage_eq_of_subset hsf, image_union] at this 
   · obtain ⟨x, hx1, hx2⟩ := hsu
     exact ⟨f x, hx1, x, hx2, rfl⟩
   · obtain ⟨y, hy1, hy2⟩ := hsv
@@ -465,10 +465,10 @@ theorem IsPreconnected.preimage_of_closed_map [TopologicalSpace β] {s : Set β}
     obtain ⟨b, hbs, hbu, hbv⟩ :=
       isPreconnected_closed_iff.1 hs (f '' u) (f '' v) (hf u hu) (hf v hv) _ _ _
     obtain ⟨a, rfl⟩ := hsf hbs
-    rw [hinj.mem_set_image] at hbu hbv
+    rw [hinj.mem_set_image] at hbu hbv 
     exact ⟨a, hbs, hbu, hbv⟩
     · have := image_subset f hsuv
-      rwa [Set.image_preimage_eq_of_subset hsf, image_union] at this
+      rwa [Set.image_preimage_eq_of_subset hsf, image_union] at this 
     · obtain ⟨x, hx1, hx2⟩ := hsu
       exact ⟨f x, hx1, x, hx2, rfl⟩
     · obtain ⟨y, hy1, hy2⟩ := hsv
@@ -500,7 +500,7 @@ theorem IsPreconnected.subset_or_subset (hu : IsOpen u) (hv : IsOpen v) (huv : D
   · exact Or.inr ((Set.disjoint_iff_inter_eq_empty.2 hsu).subset_right_of_subset_union hsuv)
   · replace hs := mt (hs hsu)
     simp_rw [Set.not_nonempty_iff_eq_empty, ← Set.disjoint_iff_inter_eq_empty,
-      disjoint_iff_inter_eq_empty.1 huv] at hs
+      disjoint_iff_inter_eq_empty.1 huv] at hs 
     exact Or.inl ((hs s.disjoint_empty).subset_left_of_subset_union hsuv)
 #align is_preconnected.subset_or_subset IsPreconnected.subset_or_subset
 
@@ -510,7 +510,7 @@ theorem IsPreconnected.subset_left_of_subset_union (hu : IsOpen u) (hv : IsOpen
   Disjoint.subset_left_of_subset_union hsuv
     (by
       by_contra hsv
-      rw [not_disjoint_iff_nonempty_inter] at hsv
+      rw [not_disjoint_iff_nonempty_inter] at hsv 
       obtain ⟨x, _, hx⟩ := hs u v hu hv hsuv hsu hsv
       exact Set.disjoint_iff.1 huv hx)
 #align is_preconnected.subset_left_of_subset_union IsPreconnected.subset_left_of_subset_union
@@ -546,7 +546,7 @@ theorem IsPreconnected.prod [TopologicalSpace β] {s : Set α} {t : Set β} (hs
   refine'
     ⟨Prod.mk a₁ '' t ∪ flip Prod.mk b₂ '' s, _, Or.inl ⟨b₁, hb₁, rfl⟩, Or.inr ⟨a₂, ha₂, rfl⟩, _⟩
   · rintro _ (⟨y, hy, rfl⟩ | ⟨x, hx, rfl⟩)
-    exacts[⟨ha₁, hy⟩, ⟨hx, hb₂⟩]
+    exacts [⟨ha₁, hy⟩, ⟨hx, hb₂⟩]
   ·
     exact
       (ht.image _ (Continuous.Prod.mk _).ContinuousOn).union (a₁, b₂) ⟨b₂, hb₂, rfl⟩ ⟨a₁, ha₁, rfl⟩
@@ -567,7 +567,7 @@ theorem isPreconnected_univ_pi [∀ i, TopologicalSpace (π i)] {s : ∀ i, Set
   rcases exists_finset_piecewise_mem_of_mem_nhds (uo.mem_nhds hfu) g with ⟨I, hI⟩
   induction' I using Finset.induction_on with i I hi ihI
   · refine' ⟨g, hgs, ⟨_, hgv⟩⟩; simpa using hI
-  · rw [Finset.piecewise_insert] at hI
+  · rw [Finset.piecewise_insert] at hI 
     have := I.piecewise_mem_set_pi hfs hgs
     refine' (hsuv this).elim ihI fun h => _
     set S := update (I.piecewise f g) i '' s i
@@ -597,7 +597,7 @@ theorem isConnected_univ_pi [∀ i, TopologicalSpace (π i)] {s : ∀ i, Set (π
 #align is_connected_univ_pi isConnected_univ_pi
 -/
 
-theorem Sigma.isConnected_iff [∀ i, TopologicalSpace (π i)] {s : Set (Σi, π i)} :
+theorem Sigma.isConnected_iff [∀ i, TopologicalSpace (π i)] {s : Set (Σ i, π i)} :
     IsConnected s ↔ ∃ i t, IsConnected t ∧ s = Sigma.mk i '' t :=
   by
   refine' ⟨fun hs => _, _⟩
@@ -618,7 +618,7 @@ theorem Sigma.isConnected_iff [∀ i, TopologicalSpace (π i)] {s : Set (Σi, π
 #align sigma.is_connected_iff Sigma.isConnected_iff
 
 theorem Sigma.isPreconnected_iff [hι : Nonempty ι] [∀ i, TopologicalSpace (π i)]
-    {s : Set (Σi, π i)} : IsPreconnected s ↔ ∃ i t, IsPreconnected t ∧ s = Sigma.mk i '' t :=
+    {s : Set (Σ i, π i)} : IsPreconnected s ↔ ∃ i t, IsPreconnected t ∧ s = Sigma.mk i '' t :=
   by
   refine' ⟨fun hs => _, _⟩
   · obtain rfl | h := s.eq_empty_or_nonempty
@@ -823,7 +823,7 @@ theorem connectedComponentIn_eq {x y : α} {F : Set α} (h : y ∈ connectedComp
     connectedComponentIn F x = connectedComponentIn F y :=
   by
   have hx : x ∈ F := connected_component_in_nonempty_iff.mp ⟨y, h⟩
-  simp_rw [connectedComponentIn_eq_image hx] at h⊢
+  simp_rw [connectedComponentIn_eq_image hx] at h ⊢
   obtain ⟨⟨y, hy⟩, h2y, rfl⟩ := h
   simp_rw [Subtype.coe_mk, connectedComponentIn_eq_image hy, connectedComponent_eq h2y]
 #align connected_component_in_eq connectedComponentIn_eq
@@ -1016,7 +1016,7 @@ theorem isClopen_iff [PreconnectedSpace α] {s : Set α} : IsClopen s ↔ s = 
         nonempty_inter hs.1 hs.2.isOpen_compl (union_compl_self s) (nonempty_iff_ne_empty.2 h1.1)
           (nonempty_iff_ne_empty.2 h1.2)
       h3 h2,
-    by rintro (rfl | rfl) <;> [exact isClopen_empty;exact isClopen_univ]⟩
+    by rintro (rfl | rfl) <;> [exact isClopen_empty; exact isClopen_univ]⟩
 #align is_clopen_iff isClopen_iff
 -/
 
@@ -1085,7 +1085,7 @@ theorem isPreconnected_iff_subset_of_disjoint {s : Set α} :
     specialize h u v hu hv hs
     contrapose! huv
     rw [← nonempty_iff_ne_empty]
-    simp [not_subset] at huv
+    simp [not_subset] at huv 
     rcases huv with ⟨⟨x, hxs, hxu⟩, ⟨y, hys, hyv⟩⟩
     have hxv : x ∈ v := or_iff_not_imp_left.mp (hs hxs) hxu
     have hyu : y ∈ u := or_iff_not_imp_right.mp (hs hys) hyv
@@ -1114,21 +1114,21 @@ theorem isConnected_iff_sUnion_disjoint_open {s : Set α} :
   · intro U; apply Finset.induction_on U
     · rcases h.left with ⟨⟩
       suffices s ⊆ ∅ → False by simpa
-      intro ; solve_by_elim
+      intro; solve_by_elim
     · intro u U hu IH hs hU H
-      rw [Finset.coe_insert, sUnion_insert] at H
+      rw [Finset.coe_insert, sUnion_insert] at H 
       cases' h.2 u (⋃₀ ↑U) _ _ H _ with hsu hsU
       · exact ⟨u, Finset.mem_insert_self _ _, hsu⟩
       · rcases IH _ _ hsU with ⟨v, hvU, hsv⟩
         · exact ⟨v, Finset.mem_insert_of_mem hvU, hsv⟩
-        · intros ; apply hs <;> solve_by_elim [Finset.mem_insert_of_mem]
-        · intros ; solve_by_elim [Finset.mem_insert_of_mem]
+        · intros; apply hs <;> solve_by_elim [Finset.mem_insert_of_mem]
+        · intros; solve_by_elim [Finset.mem_insert_of_mem]
       · solve_by_elim [Finset.mem_insert_self]
       · apply isOpen_sUnion
-        intros ; solve_by_elim [Finset.mem_insert_of_mem]
+        intros; solve_by_elim [Finset.mem_insert_of_mem]
       · apply eq_empty_of_subset_empty
         rintro x ⟨hxs, hxu, hxU⟩
-        rw [mem_sUnion] at hxU
+        rw [mem_sUnion] at hxU 
         rcases hxU with ⟨v, hvU, hxv⟩
         rcases hs u v (Finset.mem_insert_self _ _) (Finset.mem_insert_of_mem hvU) _ with rfl
         · contradiction
@@ -1139,14 +1139,18 @@ theorem isConnected_iff_sUnion_disjoint_open {s : Set α} :
       simpa using h ∅ _ _ _ <;> simp
     intro u v hu hv hs hsuv
     rcases h {u, v} _ _ _ with ⟨t, ht, ht'⟩
-    · rw [Finset.mem_insert, Finset.mem_singleton] at ht
+    · rw [Finset.mem_insert, Finset.mem_singleton] at ht 
       rcases ht with (rfl | rfl) <;> tauto
     · intro t₁ t₂ ht₁ ht₂ hst
-      rw [nonempty_iff_ne_empty] at hst
-      rw [Finset.mem_insert, Finset.mem_singleton] at ht₁ ht₂
+      rw [nonempty_iff_ne_empty] at hst 
+      rw [Finset.mem_insert, Finset.mem_singleton] at ht₁ ht₂ 
       rcases ht₁ with (rfl | rfl) <;> rcases ht₂ with (rfl | rfl)
-      all_goals first |rfl|contradiction|skip
-      rw [inter_comm t₁] at hst; contradiction
+      all_goals
+        first
+        | rfl
+        | contradiction
+        | skip
+      rw [inter_comm t₁] at hst ; contradiction
     · intro t
       rw [Finset.mem_insert, Finset.mem_singleton]
       rintro (rfl | rfl) <;> assumption
@@ -1179,11 +1183,11 @@ theorem isPreconnected_iff_subset_of_disjoint_closed :
   by
   constructor <;> intro h
   · intro u v hu hv hs huv
-    rw [isPreconnected_closed_iff] at h
+    rw [isPreconnected_closed_iff] at h 
     specialize h u v hu hv hs
     contrapose! huv
     rw [← nonempty_iff_ne_empty]
-    simp [not_subset] at huv
+    simp [not_subset] at huv 
     rcases huv with ⟨⟨x, hxs, hxu⟩, ⟨y, hys, hyv⟩⟩
     have hxv : x ∈ v := or_iff_not_imp_left.mp (hs hxs) hxu
     have hyu : y ∈ u := or_iff_not_imp_right.mp (hs hys) hyv
@@ -1216,8 +1220,8 @@ theorem isPreconnected_iff_subset_of_fully_disjoint_closed {s : Set α} (hs : Is
   rw [isPreconnected_iff_subset_of_disjoint_closed]
   intro u v hu hv hss huv
   have H1 := H (u ∩ s) (v ∩ s)
-  rw [subset_inter_iff, subset_inter_iff] at H1
-  simp only [subset.refl, and_true_iff] at H1
+  rw [subset_inter_iff, subset_inter_iff] at H1 
+  simp only [subset.refl, and_true_iff] at H1 
   apply H1 (IsClosed.inter hu hs) (IsClosed.inter hv hs)
   · rw [← inter_distrib_right]
     exact subset_inter hss subset.rfl
@@ -1332,12 +1336,12 @@ theorem preimage_connectedComponent_connected [TopologicalSpace β] {f : α →
     (isPreconnected_iff_subset_of_fully_disjoint_closed isClosed_connectedComponent).1
       isPreconnected_connectedComponent T₁ T₂ hT₁ hT₂ T_decomp T_disjoint
   · left
-    rw [subset.antisymm_iff] at T₁_u
+    rw [subset.antisymm_iff] at T₁_u 
     suffices f ⁻¹' connectedComponent t ⊆ f ⁻¹' T₁ by
       exact subset.trans (subset.trans this T₁_u.1) (inter_subset_right _ _)
     exact preimage_mono h
   right
-  rw [subset.antisymm_iff] at T₂_v
+  rw [subset.antisymm_iff] at T₂_v 
   suffices f ⁻¹' connectedComponent t ⊆ f ⁻¹' T₂ by
     exact subset.trans (subset.trans this T₂_v.1) (inter_subset_right _ _)
   exact preimage_mono h
@@ -1389,7 +1393,7 @@ theorem locallyConnectedSpace_iff_open_connected_basis :
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (V «expr ⊆ » U) -/
 theorem locallyConnectedSpace_iff_open_connected_subsets :
     LocallyConnectedSpace α ↔
-      ∀ (x : α), ∀ U ∈ 𝓝 x, ∃ (V : _)(_ : V ⊆ U), IsOpen V ∧ x ∈ V ∧ IsConnected V :=
+      ∀ (x : α), ∀ U ∈ 𝓝 x, ∃ (V : _) (_ : V ⊆ U), IsOpen V ∧ x ∈ V ∧ IsConnected V :=
   by
   rw [locallyConnectedSpace_iff_open_connected_basis]
   trace
@@ -1421,7 +1425,7 @@ instance (priority := 100) DiscreteTopology.toLocallyConnectedSpace (α) [Topolo
 theorem connectedComponentIn_mem_nhds [LocallyConnectedSpace α] {F : Set α} {x : α} (h : F ∈ 𝓝 x) :
     connectedComponentIn F x ∈ 𝓝 x :=
   by
-  rw [(LocallyConnectedSpace.open_connected_basis x).mem_iff] at h
+  rw [(LocallyConnectedSpace.open_connected_basis x).mem_iff] at h 
   rcases h with ⟨s, ⟨h1s, hxs, h2s⟩, hsF⟩
   exact mem_nhds_iff.mpr ⟨s, h2s.is_preconnected.subset_connected_component_in hxs hsF, h1s, hxs⟩
 #align connected_component_in_mem_nhds connectedComponentIn_mem_nhds
@@ -1580,7 +1584,7 @@ instance [TopologicalSpace β] [TotallyDisconnectedSpace α] [TotallyDisconnecte
   · exact ht.subsingleton.image _
 
 instance [∀ i, TopologicalSpace (π i)] [∀ i, TotallyDisconnectedSpace (π i)] :
-    TotallyDisconnectedSpace (Σi, π i) :=
+    TotallyDisconnectedSpace (Σ i, π i) :=
   by
   refine' ⟨fun s _ hs => _⟩
   obtain rfl | h := s.eq_empty_or_nonempty
@@ -1591,7 +1595,7 @@ instance [∀ i, TopologicalSpace (π i)] [∀ i, TotallyDisconnectedSpace (π i
 /-- Let `X` be a topological space, and suppose that for all distinct `x,y ∈ X`, there
   is some clopen set `U` such that `x ∈ U` and `y ∉ U`. Then `X` is totally disconnected. -/
 theorem isTotallyDisconnected_of_clopen_set {X : Type _} [TopologicalSpace X]
-    (hX : ∀ {x y : X} (h_diff : x ≠ y), ∃ (U : Set X)(h_clopen : IsClopen U), x ∈ U ∧ y ∉ U) :
+    (hX : ∀ {x y : X} (h_diff : x ≠ y), ∃ (U : Set X) (h_clopen : IsClopen U), x ∈ U ∧ y ∉ U) :
     IsTotallyDisconnected (Set.univ : Set X) :=
   by
   rintro S - hS
@@ -1601,7 +1605,7 @@ theorem isTotallyDisconnected_of_clopen_set {X : Type _} [TopologicalSpace X]
   obtain ⟨U, h_clopen, hxU, hyU⟩ := hX hxy
   specialize
     hS U (Uᶜ) h_clopen.1 h_clopen.compl.1 (fun a ha => em (a ∈ U)) ⟨x, hx, hxU⟩ ⟨y, hy, hyU⟩
-  rw [inter_compl_self, Set.inter_empty] at hS
+  rw [inter_compl_self, Set.inter_empty] at hS 
   exact Set.not_nonempty_empty hS
 #align is_totally_disconnected_of_clopen_set isTotallyDisconnected_of_clopen_set
 
@@ -1752,13 +1756,13 @@ instance (priority := 100) TotallySeparatedSpace.of_discrete (α : Type _) [Topo
 
 theorem exists_clopen_of_totally_separated {α : Type _} [TopologicalSpace α]
     [TotallySeparatedSpace α] {x y : α} (hxy : x ≠ y) :
-    ∃ (U : Set α)(hU : IsClopen U), x ∈ U ∧ y ∈ Uᶜ :=
+    ∃ (U : Set α) (hU : IsClopen U), x ∈ U ∧ y ∈ Uᶜ :=
   by
   obtain ⟨U, V, hU, hV, Ux, Vy, f, disj⟩ :=
     TotallySeparatedSpace.isTotallySeparated_univ α x (Set.mem_univ x) y (Set.mem_univ y) hxy
   have clopen_U := isClopen_inter_of_disjoint_cover_clopen isClopen_univ f hU hV disj
-  rw [univ_inter _] at clopen_U
-  rw [← Set.subset_compl_iff_disjoint_right, subset_compl_comm] at disj
+  rw [univ_inter _] at clopen_U 
+  rw [← Set.subset_compl_iff_disjoint_right, subset_compl_comm] at disj 
   exact ⟨U, clopen_U, Ux, disj Vy⟩
 #align exists_clopen_of_totally_separated exists_clopen_of_totally_separated
 
@@ -1960,7 +1964,7 @@ theorem isPreconnected_of_forall_constant {s : Set α}
   unfold IsPreconnected
   by_contra'
   rcases this with ⟨u, v, u_op, v_op, hsuv, ⟨x, x_in_s, x_in_u⟩, ⟨y, y_in_s, y_in_v⟩, H⟩
-  rw [not_nonempty_iff_eq_empty] at H
+  rw [not_nonempty_iff_eq_empty] at H 
   have hy : y ∉ u := fun y_in_u => eq_empty_iff_forall_not_mem.mp H y ⟨y_in_s, ⟨y_in_u, y_in_v⟩⟩
   have : ContinuousOn u.bool_indicator s :=
     by
@@ -1993,7 +1997,7 @@ theorem IsPreconnected.constant_of_mapsTo [TopologicalSpace β] {S : Set α} (hS
     {x y : α} (hx : x ∈ S) (hy : y ∈ S) : f x = f y :=
   by
   let F : S → T := fun x : S => ⟨f x.val, hTm x.property⟩
-  suffices F ⟨x, hx⟩ = F ⟨y, hy⟩ by rw [← Subtype.coe_inj] at this; exact this
+  suffices F ⟨x, hx⟩ = F ⟨y, hy⟩ by rw [← Subtype.coe_inj] at this ; exact this
   exact
     (is_preconnected_iff_preconnected_space.mp hS).constant
       (continuous_induced_rng.mpr <| continuous_on_iff_continuous_restrict.mp hc)
Diff
@@ -50,7 +50,7 @@ https://ncatlab.org/nlab/show/too+simple+to+be+simple#relationship_to_biased_def
 
 open Set Function TopologicalSpace Relation
 
-open Classical Topology
+open scoped Classical Topology
 
 universe u v
 
Diff
@@ -122,12 +122,6 @@ theorem Set.Subsingleton.isPreconnected {s : Set α} (hs : s.Subsingleton) : IsP
 #align set.subsingleton.is_preconnected Set.Subsingleton.isPreconnected
 -/
 
-/- warning: is_preconnected_of_forall -> isPreconnected_of_forall is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} (x : α), (forall (y : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) y s) -> (Exists.{succ u1} (Set.{u1} α) (fun (t : Set.{u1} α) => Exists.{0} (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) t s) (fun (H : HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) t s) => And (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x t) (And (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) y t) (IsPreconnected.{u1} α _inst_1 t)))))) -> (IsPreconnected.{u1} α _inst_1 s)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} (x : α), (forall (y : α), (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) y s) -> (Exists.{succ u1} (Set.{u1} α) (fun (t : Set.{u1} α) => And (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) t s) (And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x t) (And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) y t) (IsPreconnected.{u1} α _inst_1 t)))))) -> (IsPreconnected.{u1} α _inst_1 s)
-Case conversion may be inaccurate. Consider using '#align is_preconnected_of_forall isPreconnected_of_forallₓ'. -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (t «expr ⊆ » s) -/
 /-- If any point of a set is joined to a fixed point by a preconnected subset,
 then the original set is preconnected as well. -/
@@ -144,12 +138,6 @@ theorem isPreconnected_of_forall {s : Set α} (x : α)
   exact this.imp fun z hz => ⟨ts hz.1, hz.2⟩
 #align is_preconnected_of_forall isPreconnected_of_forall
 
-/- warning: is_preconnected_of_forall_pair -> isPreconnected_of_forall_pair is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, (forall (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (forall (y : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) y s) -> (Exists.{succ u1} (Set.{u1} α) (fun (t : Set.{u1} α) => Exists.{0} (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) t s) (fun (H : HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) t s) => And (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x t) (And (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) y t) (IsPreconnected.{u1} α _inst_1 t))))))) -> (IsPreconnected.{u1} α _inst_1 s)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, (forall (x : α), (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x s) -> (forall (y : α), (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) y s) -> (Exists.{succ u1} (Set.{u1} α) (fun (t : Set.{u1} α) => And (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) t s) (And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x t) (And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) y t) (IsPreconnected.{u1} α _inst_1 t))))))) -> (IsPreconnected.{u1} α _inst_1 s)
-Case conversion may be inaccurate. Consider using '#align is_preconnected_of_forall_pair isPreconnected_of_forall_pairₓ'. -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x y «expr ∈ » s) -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (t «expr ⊆ » s) -/
 /-- If any two points of a set are contained in a preconnected subset,
@@ -173,23 +161,11 @@ theorem isPreconnected_sUnion (x : α) (c : Set (Set α)) (H1 : ∀ s ∈ c, x 
 #align is_preconnected_sUnion isPreconnected_sUnion
 -/
 
-/- warning: is_preconnected_Union -> isPreconnected_iUnion is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, (Set.Nonempty.{u1} α (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i))) -> (forall (i : ι), IsPreconnected.{u1} α _inst_1 (s i)) -> (IsPreconnected.{u1} α _inst_1 (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)))
-but is expected to have type
-  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)}, (Set.Nonempty.{u2} α (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i))) -> (forall (i : ι), IsPreconnected.{u2} α _inst_1 (s i)) -> (IsPreconnected.{u2} α _inst_1 (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i)))
-Case conversion may be inaccurate. Consider using '#align is_preconnected_Union isPreconnected_iUnionₓ'. -/
 theorem isPreconnected_iUnion {ι : Sort _} {s : ι → Set α} (h₁ : (⋂ i, s i).Nonempty)
     (h₂ : ∀ i, IsPreconnected (s i)) : IsPreconnected (⋃ i, s i) :=
   Exists.elim h₁ fun f hf => isPreconnected_sUnion f _ hf (forall_range_iff.2 h₂)
 #align is_preconnected_Union isPreconnected_iUnion
 
-/- warning: is_preconnected.union -> IsPreconnected.union is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] (x : α) {s : Set.{u1} α} {t : Set.{u1} α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x t) -> (IsPreconnected.{u1} α _inst_1 s) -> (IsPreconnected.{u1} α _inst_1 t) -> (IsPreconnected.{u1} α _inst_1 (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] (x : α) {s : Set.{u1} α} {t : Set.{u1} α}, (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x s) -> (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x t) -> (IsPreconnected.{u1} α _inst_1 s) -> (IsPreconnected.{u1} α _inst_1 t) -> (IsPreconnected.{u1} α _inst_1 (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) s t))
-Case conversion may be inaccurate. Consider using '#align is_preconnected.union IsPreconnected.unionₓ'. -/
 theorem IsPreconnected.union (x : α) {s t : Set α} (H1 : x ∈ s) (H2 : x ∈ t) (H3 : IsPreconnected s)
     (H4 : IsPreconnected t) : IsPreconnected (s ∪ t) :=
   sUnion_pair s t ▸
@@ -197,23 +173,11 @@ theorem IsPreconnected.union (x : α) {s t : Set α} (H1 : x ∈ s) (H2 : x ∈
       (by rintro r (rfl | rfl | h) <;> assumption)
 #align is_preconnected.union IsPreconnected.union
 
-/- warning: is_preconnected.union' -> IsPreconnected.union' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} {t : Set.{u1} α}, (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t)) -> (IsPreconnected.{u1} α _inst_1 s) -> (IsPreconnected.{u1} α _inst_1 t) -> (IsPreconnected.{u1} α _inst_1 (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} {t : Set.{u1} α}, (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s t)) -> (IsPreconnected.{u1} α _inst_1 s) -> (IsPreconnected.{u1} α _inst_1 t) -> (IsPreconnected.{u1} α _inst_1 (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) s t))
-Case conversion may be inaccurate. Consider using '#align is_preconnected.union' IsPreconnected.union'ₓ'. -/
 theorem IsPreconnected.union' {s t : Set α} (H : (s ∩ t).Nonempty) (hs : IsPreconnected s)
     (ht : IsPreconnected t) : IsPreconnected (s ∪ t) := by rcases H with ⟨x, hxs, hxt⟩;
   exact hs.union x hxs hxt ht
 #align is_preconnected.union' IsPreconnected.union'
 
-/- warning: is_connected.union -> IsConnected.union is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} {t : Set.{u1} α}, (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t)) -> (IsConnected.{u1} α _inst_1 s) -> (IsConnected.{u1} α _inst_1 t) -> (IsConnected.{u1} α _inst_1 (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} {t : Set.{u1} α}, (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s t)) -> (IsConnected.{u1} α _inst_1 s) -> (IsConnected.{u1} α _inst_1 t) -> (IsConnected.{u1} α _inst_1 (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) s t))
-Case conversion may be inaccurate. Consider using '#align is_connected.union IsConnected.unionₓ'. -/
 theorem IsConnected.union {s t : Set α} (H : (s ∩ t).Nonempty) (Hs : IsConnected s)
     (Ht : IsConnected t) : IsConnected (s ∪ t) :=
   by
@@ -238,12 +202,6 @@ theorem IsPreconnected.sUnion_directed {S : Set (Set α)} (K : DirectedOn (· 
 #align is_preconnected.sUnion_directed IsPreconnected.sUnion_directed
 -/
 
-/- warning: is_preconnected.bUnion_of_refl_trans_gen -> IsPreconnected.biUnion_of_reflTransGen is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {ι : Type.{u2}} {t : Set.{u2} ι} {s : ι -> (Set.{u1} α)}, (forall (i : ι), (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) -> (IsPreconnected.{u1} α _inst_1 (s i))) -> (forall (i : ι), (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) -> (forall (j : ι), (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) j t) -> (Relation.ReflTransGen.{u2} ι (fun (i : ι) (j : ι) => And (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s i) (s j))) (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t)) i j))) -> (IsPreconnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α ι (fun (n : ι) => Set.iUnion.{u1, 0} α (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) n t) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) n t) => s n))))
-but is expected to have type
-  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {ι : Type.{u1}} {t : Set.{u1} ι} {s : ι -> (Set.{u2} α)}, (forall (i : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t) -> (IsPreconnected.{u2} α _inst_1 (s i))) -> (forall (i : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t) -> (forall (j : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) j t) -> (Relation.ReflTransGen.{u1} ι (fun (i : ι) (j : ι) => And (Set.Nonempty.{u2} α (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (s i) (s j))) (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t)) i j))) -> (IsPreconnected.{u2} α _inst_1 (Set.iUnion.{u2, succ u1} α ι (fun (n : ι) => Set.iUnion.{u2, 0} α (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) n t) (fun (H : Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) n t) => s n))))
-Case conversion may be inaccurate. Consider using '#align is_preconnected.bUnion_of_refl_trans_gen IsPreconnected.biUnion_of_reflTransGenₓ'. -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i j «expr ∈ » t) -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (p «expr ⊆ » t) -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i j «expr ∈ » t) -/
@@ -284,12 +242,6 @@ theorem IsPreconnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : 
   exact ⟨⋃ j ∈ p, s j, bUnion_subset_bUnion_left hpt, mem_bUnion hip hxi, mem_bUnion hjp hyj, hp⟩
 #align is_preconnected.bUnion_of_refl_trans_gen IsPreconnected.biUnion_of_reflTransGen
 
-/- warning: is_connected.bUnion_of_refl_trans_gen -> IsConnected.biUnion_of_reflTransGen is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {ι : Type.{u2}} {t : Set.{u2} ι} {s : ι -> (Set.{u1} α)}, (Set.Nonempty.{u2} ι t) -> (forall (i : ι), (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) -> (IsConnected.{u1} α _inst_1 (s i))) -> (forall (i : ι), (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) -> (forall (j : ι), (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) j t) -> (Relation.ReflTransGen.{u2} ι (fun (i : ι) (j : ι) => And (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s i) (s j))) (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t)) i j))) -> (IsConnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α ι (fun (n : ι) => Set.iUnion.{u1, 0} α (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) n t) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) n t) => s n))))
-but is expected to have type
-  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {ι : Type.{u1}} {t : Set.{u1} ι} {s : ι -> (Set.{u2} α)}, (Set.Nonempty.{u1} ι t) -> (forall (i : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t) -> (IsConnected.{u2} α _inst_1 (s i))) -> (forall (i : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t) -> (forall (j : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) j t) -> (Relation.ReflTransGen.{u1} ι (fun (i : ι) (j : ι) => And (Set.Nonempty.{u2} α (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (s i) (s j))) (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t)) i j))) -> (IsConnected.{u2} α _inst_1 (Set.iUnion.{u2, succ u1} α ι (fun (n : ι) => Set.iUnion.{u2, 0} α (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) n t) (fun (H : Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) n t) => s n))))
-Case conversion may be inaccurate. Consider using '#align is_connected.bUnion_of_refl_trans_gen IsConnected.biUnion_of_reflTransGenₓ'. -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i j «expr ∈ » t) -/
 /-- The bUnion of a family of preconnected sets is preconnected if the graph determined by
 whether two sets intersect is preconnected. -/
@@ -303,12 +255,6 @@ theorem IsConnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : ι 
     IsPreconnected.biUnion_of_reflTransGen (fun i hi => (H i hi).IsPreconnected) K⟩
 #align is_connected.bUnion_of_refl_trans_gen IsConnected.biUnion_of_reflTransGen
 
-/- warning: is_preconnected.Union_of_refl_trans_gen -> IsPreconnected.iUnion_of_reflTransGen is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {ι : Type.{u2}} {s : ι -> (Set.{u1} α)}, (forall (i : ι), IsPreconnected.{u1} α _inst_1 (s i)) -> (forall (i : ι) (j : ι), Relation.ReflTransGen.{u2} ι (fun (i : ι) (j : ι) => Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s i) (s j))) i j) -> (IsPreconnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α ι (fun (n : ι) => s n)))
-but is expected to have type
-  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {ι : Type.{u1}} {s : ι -> (Set.{u2} α)}, (forall (i : ι), IsPreconnected.{u2} α _inst_1 (s i)) -> (forall (i : ι) (j : ι), Relation.ReflTransGen.{u1} ι (fun (i : ι) (j : ι) => Set.Nonempty.{u2} α (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (s i) (s j))) i j) -> (IsPreconnected.{u2} α _inst_1 (Set.iUnion.{u2, succ u1} α ι (fun (n : ι) => s n)))
-Case conversion may be inaccurate. Consider using '#align is_preconnected.Union_of_refl_trans_gen IsPreconnected.iUnion_of_reflTransGenₓ'. -/
 /-- Preconnectedness of the Union of a family of preconnected sets
 indexed by the vertices of a preconnected graph,
 where two vertices are joined when the corresponding sets intersect. -/
@@ -321,12 +267,6 @@ theorem IsPreconnected.iUnion_of_reflTransGen {ι : Type _} {s : ι → Set α}
       simpa [mem_univ] using K i j
 #align is_preconnected.Union_of_refl_trans_gen IsPreconnected.iUnion_of_reflTransGen
 
-/- warning: is_connected.Union_of_refl_trans_gen -> IsConnected.iUnion_of_reflTransGen is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {ι : Type.{u2}} [_inst_2 : Nonempty.{succ u2} ι] {s : ι -> (Set.{u1} α)}, (forall (i : ι), IsConnected.{u1} α _inst_1 (s i)) -> (forall (i : ι) (j : ι), Relation.ReflTransGen.{u2} ι (fun (i : ι) (j : ι) => Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s i) (s j))) i j) -> (IsConnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α ι (fun (n : ι) => s n)))
-but is expected to have type
-  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {ι : Type.{u1}} [_inst_2 : Nonempty.{succ u1} ι] {s : ι -> (Set.{u2} α)}, (forall (i : ι), IsConnected.{u2} α _inst_1 (s i)) -> (forall (i : ι) (j : ι), Relation.ReflTransGen.{u1} ι (fun (i : ι) (j : ι) => Set.Nonempty.{u2} α (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (s i) (s j))) i j) -> (IsConnected.{u2} α _inst_1 (Set.iUnion.{u2, succ u1} α ι (fun (n : ι) => s n)))
-Case conversion may be inaccurate. Consider using '#align is_connected.Union_of_refl_trans_gen IsConnected.iUnion_of_reflTransGenₓ'. -/
 theorem IsConnected.iUnion_of_reflTransGen {ι : Type _} [Nonempty ι] {s : ι → Set α}
     (H : ∀ i, IsConnected (s i))
     (K : ∀ i j, ReflTransGen (fun i j : ι => (s i ∩ s j).Nonempty) i j) : IsConnected (⋃ n, s n) :=
@@ -340,12 +280,6 @@ open Order
 
 variable [LinearOrder β] [SuccOrder β] [IsSuccArchimedean β]
 
-/- warning: is_preconnected.Union_of_chain -> IsPreconnected.iUnion_of_chain is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3] {s : β -> (Set.{u1} α)}, (forall (n : β), IsPreconnected.{u1} α _inst_1 (s n)) -> (forall (n : β), Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3 n)))) -> (IsPreconnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α β (fun (n : β) => s n)))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2)))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3] {s : β -> (Set.{u1} α)}, (forall (n : β), IsPreconnected.{u1} α _inst_1 (s n)) -> (forall (n : β), Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3 n)))) -> (IsPreconnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α β (fun (n : β) => s n)))
-Case conversion may be inaccurate. Consider using '#align is_preconnected.Union_of_chain IsPreconnected.iUnion_of_chainₓ'. -/
 /-- The Union of connected sets indexed by a type with an archimedean successor (like `ℕ` or `ℤ`)
   such that any two neighboring sets meet is preconnected. -/
 theorem IsPreconnected.iUnion_of_chain {s : β → Set α} (H : ∀ n, IsPreconnected (s n))
@@ -354,12 +288,6 @@ theorem IsPreconnected.iUnion_of_chain {s : β → Set α} (H : ∀ n, IsPreconn
     reflTransGen_of_succ _ (fun i _ => K i) fun i _ => by rw [inter_comm]; exact K i
 #align is_preconnected.Union_of_chain IsPreconnected.iUnion_of_chain
 
-/- warning: is_connected.Union_of_chain -> IsConnected.iUnion_of_chain is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3] [_inst_5 : Nonempty.{succ u2} β] {s : β -> (Set.{u1} α)}, (forall (n : β), IsConnected.{u1} α _inst_1 (s n)) -> (forall (n : β), Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3 n)))) -> (IsConnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α β (fun (n : β) => s n)))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2)))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3] [_inst_5 : Nonempty.{succ u2} β] {s : β -> (Set.{u1} α)}, (forall (n : β), IsConnected.{u1} α _inst_1 (s n)) -> (forall (n : β), Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3 n)))) -> (IsConnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α β (fun (n : β) => s n)))
-Case conversion may be inaccurate. Consider using '#align is_connected.Union_of_chain IsConnected.iUnion_of_chainₓ'. -/
 /-- The Union of connected sets indexed by a type with an archimedean successor (like `ℕ` or `ℤ`)
   such that any two neighboring sets meet is connected. -/
 theorem IsConnected.iUnion_of_chain [Nonempty β] {s : β → Set α} (H : ∀ n, IsConnected (s n))
@@ -368,12 +296,6 @@ theorem IsConnected.iUnion_of_chain [Nonempty β] {s : β → Set α} (H : ∀ n
     reflTransGen_of_succ _ (fun i _ => K i) fun i _ => by rw [inter_comm]; exact K i
 #align is_connected.Union_of_chain IsConnected.iUnion_of_chain
 
-/- warning: is_preconnected.bUnion_of_chain -> IsPreconnected.biUnion_of_chain is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3] {s : β -> (Set.{u1} α)} {t : Set.{u2} β}, (Set.OrdConnected.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) t) -> (forall (n : β), (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) -> (IsPreconnected.{u1} α _inst_1 (s n))) -> (forall (n : β), (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) -> (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3 n) t) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3 n))))) -> (IsPreconnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α β (fun (n : β) => Set.iUnion.{u1, 0} α (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) (fun (H : Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) => s n))))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2)))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3] {s : β -> (Set.{u1} α)} {t : Set.{u2} β}, (Set.OrdConnected.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) t) -> (forall (n : β), (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) -> (IsPreconnected.{u1} α _inst_1 (s n))) -> (forall (n : β), (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) -> (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3 n) t) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3 n))))) -> (IsPreconnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α β (fun (n : β) => Set.iUnion.{u1, 0} α (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) (fun (H : Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) => s n))))
-Case conversion may be inaccurate. Consider using '#align is_preconnected.bUnion_of_chain IsPreconnected.biUnion_of_chainₓ'. -/
 /-- The Union of preconnected sets indexed by a subset of a type with an archimedean successor
   (like `ℕ` or `ℤ`) such that any two neighboring sets meet is preconnected. -/
 theorem IsPreconnected.biUnion_of_chain {s : β → Set α} {t : Set β} (ht : OrdConnected t)
@@ -393,12 +315,6 @@ theorem IsPreconnected.biUnion_of_chain {s : β → Set α} {t : Set β} (ht : O
       ⟨by rw [inter_comm]; exact h3 hj hi hk, h2 hj hi hk⟩
 #align is_preconnected.bUnion_of_chain IsPreconnected.biUnion_of_chain
 
-/- warning: is_connected.bUnion_of_chain -> IsConnected.biUnion_of_chain is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3] {s : β -> (Set.{u1} α)} {t : Set.{u2} β}, (Set.Nonempty.{u2} β t) -> (Set.OrdConnected.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) t) -> (forall (n : β), (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) -> (IsConnected.{u1} α _inst_1 (s n))) -> (forall (n : β), (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) -> (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3 n) t) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3 n))))) -> (IsConnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α β (fun (n : β) => Set.iUnion.{u1, 0} α (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) (fun (H : Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) => s n))))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2)))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3] {s : β -> (Set.{u1} α)} {t : Set.{u2} β}, (Set.Nonempty.{u2} β t) -> (Set.OrdConnected.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) t) -> (forall (n : β), (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) -> (IsConnected.{u1} α _inst_1 (s n))) -> (forall (n : β), (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) -> (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3 n) t) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3 n))))) -> (IsConnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α β (fun (n : β) => Set.iUnion.{u1, 0} α (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) (fun (H : Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) => s n))))
-Case conversion may be inaccurate. Consider using '#align is_connected.bUnion_of_chain IsConnected.biUnion_of_chainₓ'. -/
 /-- The Union of connected sets indexed by a subset of a type with an archimedean successor
   (like `ℕ` or `ℤ`) such that any two neighboring sets meet is preconnected. -/
 theorem IsConnected.biUnion_of_chain {s : β → Set α} {t : Set β} (hnt : t.Nonempty)
@@ -479,12 +395,6 @@ theorem IsConnected.image [TopologicalSpace β] {s : Set α} (H : IsConnected s)
 #align is_connected.image IsConnected.image
 -/
 
-/- warning: is_preconnected_closed_iff -> isPreconnected_closed_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, Iff (IsPreconnected.{u1} α _inst_1 s) (forall (t : Set.{u1} α) (t' : Set.{u1} α), (IsClosed.{u1} α _inst_1 t) -> (IsClosed.{u1} α _inst_1 t') -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) t t')) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t)) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t')) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) t t'))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, Iff (IsPreconnected.{u1} α _inst_1 s) (forall (t : Set.{u1} α) (t' : Set.{u1} α), (IsClosed.{u1} α _inst_1 t) -> (IsClosed.{u1} α _inst_1 t') -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) t t')) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s t)) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s t')) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) t t'))))
-Case conversion may be inaccurate. Consider using '#align is_preconnected_closed_iff isPreconnected_closed_iffₓ'. -/
 theorem isPreconnected_closed_iff {s : Set α} :
     IsPreconnected s ↔
       ∀ t t',
@@ -582,12 +492,6 @@ theorem IsConnected.preimage_of_closedMap [TopologicalSpace β] {s : Set β} (hs
 #align is_connected.preimage_of_closed_map IsConnected.preimage_of_closedMap
 -/
 
-/- warning: is_preconnected.subset_or_subset -> IsPreconnected.subset_or_subset is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} {u : Set.{u1} α} {v : Set.{u1} α}, (IsOpen.{u1} α _inst_1 u) -> (IsOpen.{u1} α _inst_1 v) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) u v) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) u v)) -> (IsPreconnected.{u1} α _inst_1 s) -> (Or (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s u) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s v))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} {u : Set.{u1} α} {v : Set.{u1} α}, (IsOpen.{u1} α _inst_1 u) -> (IsOpen.{u1} α _inst_1 v) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) u v) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) u v)) -> (IsPreconnected.{u1} α _inst_1 s) -> (Or (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s u) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s v))
-Case conversion may be inaccurate. Consider using '#align is_preconnected.subset_or_subset IsPreconnected.subset_or_subsetₓ'. -/
 theorem IsPreconnected.subset_or_subset (hu : IsOpen u) (hv : IsOpen v) (huv : Disjoint u v)
     (hsuv : s ⊆ u ∪ v) (hs : IsPreconnected s) : s ⊆ u ∨ s ⊆ v :=
   by
@@ -600,12 +504,6 @@ theorem IsPreconnected.subset_or_subset (hu : IsOpen u) (hv : IsOpen v) (huv : D
     exact Or.inl ((hs s.disjoint_empty).subset_left_of_subset_union hsuv)
 #align is_preconnected.subset_or_subset IsPreconnected.subset_or_subset
 
-/- warning: is_preconnected.subset_left_of_subset_union -> IsPreconnected.subset_left_of_subset_union is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} {u : Set.{u1} α} {v : Set.{u1} α}, (IsOpen.{u1} α _inst_1 u) -> (IsOpen.{u1} α _inst_1 v) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) u v) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) u v)) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s u)) -> (IsPreconnected.{u1} α _inst_1 s) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s u)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} {u : Set.{u1} α} {v : Set.{u1} α}, (IsOpen.{u1} α _inst_1 u) -> (IsOpen.{u1} α _inst_1 v) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) u v) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) u v)) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s u)) -> (IsPreconnected.{u1} α _inst_1 s) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s u)
-Case conversion may be inaccurate. Consider using '#align is_preconnected.subset_left_of_subset_union IsPreconnected.subset_left_of_subset_unionₓ'. -/
 theorem IsPreconnected.subset_left_of_subset_union (hu : IsOpen u) (hv : IsOpen v)
     (huv : Disjoint u v) (hsuv : s ⊆ u ∪ v) (hsu : (s ∩ u).Nonempty) (hs : IsPreconnected s) :
     s ⊆ u :=
@@ -617,24 +515,12 @@ theorem IsPreconnected.subset_left_of_subset_union (hu : IsOpen u) (hv : IsOpen
       exact Set.disjoint_iff.1 huv hx)
 #align is_preconnected.subset_left_of_subset_union IsPreconnected.subset_left_of_subset_union
 
-/- warning: is_preconnected.subset_right_of_subset_union -> IsPreconnected.subset_right_of_subset_union is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} {u : Set.{u1} α} {v : Set.{u1} α}, (IsOpen.{u1} α _inst_1 u) -> (IsOpen.{u1} α _inst_1 v) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) u v) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) u v)) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s v)) -> (IsPreconnected.{u1} α _inst_1 s) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s v)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} {u : Set.{u1} α} {v : Set.{u1} α}, (IsOpen.{u1} α _inst_1 u) -> (IsOpen.{u1} α _inst_1 v) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) u v) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) u v)) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s v)) -> (IsPreconnected.{u1} α _inst_1 s) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s v)
-Case conversion may be inaccurate. Consider using '#align is_preconnected.subset_right_of_subset_union IsPreconnected.subset_right_of_subset_unionₓ'. -/
 theorem IsPreconnected.subset_right_of_subset_union (hu : IsOpen u) (hv : IsOpen v)
     (huv : Disjoint u v) (hsuv : s ⊆ u ∪ v) (hsv : (s ∩ v).Nonempty) (hs : IsPreconnected s) :
     s ⊆ v :=
   hs.subset_left_of_subset_union hv hu huv.symm (union_comm u v ▸ hsuv) hsv
 #align is_preconnected.subset_right_of_subset_union IsPreconnected.subset_right_of_subset_union
 
-/- warning: is_preconnected.subset_of_closure_inter_subset -> IsPreconnected.subset_of_closure_inter_subset is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} {u : Set.{u1} α}, (IsPreconnected.{u1} α _inst_1 s) -> (IsOpen.{u1} α _inst_1 u) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s u)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (closure.{u1} α _inst_1 u) s) u) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s u)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} {u : Set.{u1} α}, (IsPreconnected.{u1} α _inst_1 s) -> (IsOpen.{u1} α _inst_1 u) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s u)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (closure.{u1} α _inst_1 u) s) u) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s u)
-Case conversion may be inaccurate. Consider using '#align is_preconnected.subset_of_closure_inter_subset IsPreconnected.subset_of_closure_inter_subsetₓ'. -/
 /-- If a preconnected set `s` intersects an open set `u`, and limit points of `u` inside `s` are
 contained in `u`, then the whole set `s` is contained in `u`. -/
 theorem IsPreconnected.subset_of_closure_inter_subset (hs : IsPreconnected s) (hu : IsOpen u)
@@ -651,12 +537,6 @@ theorem IsPreconnected.subset_of_closure_inter_subset (hs : IsPreconnected s) (h
   exact disjoint_compl_right.mono_right (compl_subset_compl.2 subset_closure)
 #align is_preconnected.subset_of_closure_inter_subset IsPreconnected.subset_of_closure_inter_subset
 
-/- warning: is_preconnected.prod -> IsPreconnected.prod is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {s : Set.{u1} α} {t : Set.{u2} β}, (IsPreconnected.{u1} α _inst_1 s) -> (IsPreconnected.{u2} β _inst_2 t) -> (IsPreconnected.{max u1 u2} (Prod.{u1, u2} α β) (Prod.topologicalSpace.{u1, u2} α β _inst_1 _inst_2) (Set.prod.{u1, u2} α β s t))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {s : Set.{u1} α} {t : Set.{u2} β}, (IsPreconnected.{u1} α _inst_1 s) -> (IsPreconnected.{u2} β _inst_2 t) -> (IsPreconnected.{max u2 u1} (Prod.{u1, u2} α β) (instTopologicalSpaceProd.{u1, u2} α β _inst_1 _inst_2) (Set.prod.{u1, u2} α β s t))
-Case conversion may be inaccurate. Consider using '#align is_preconnected.prod IsPreconnected.prodₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 theorem IsPreconnected.prod [TopologicalSpace β] {s : Set α} {t : Set β} (hs : IsPreconnected s)
     (ht : IsPreconnected t) : IsPreconnected (s ×ˢ t) :=
@@ -673,12 +553,6 @@ theorem IsPreconnected.prod [TopologicalSpace β] {s : Set α} {t : Set β} (hs
         (hs.image _ (continuous_id.prod_mk continuous_const).ContinuousOn)
 #align is_preconnected.prod IsPreconnected.prod
 
-/- warning: is_connected.prod -> IsConnected.prod is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {s : Set.{u1} α} {t : Set.{u2} β}, (IsConnected.{u1} α _inst_1 s) -> (IsConnected.{u2} β _inst_2 t) -> (IsConnected.{max u1 u2} (Prod.{u1, u2} α β) (Prod.topologicalSpace.{u1, u2} α β _inst_1 _inst_2) (Set.prod.{u1, u2} α β s t))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {s : Set.{u1} α} {t : Set.{u2} β}, (IsConnected.{u1} α _inst_1 s) -> (IsConnected.{u2} β _inst_2 t) -> (IsConnected.{max u2 u1} (Prod.{u1, u2} α β) (instTopologicalSpaceProd.{u1, u2} α β _inst_1 _inst_2) (Set.prod.{u1, u2} α β s t))
-Case conversion may be inaccurate. Consider using '#align is_connected.prod IsConnected.prodₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 theorem IsConnected.prod [TopologicalSpace β] {s : Set α} {t : Set β} (hs : IsConnected s)
     (ht : IsConnected t) : IsConnected (s ×ˢ t) :=
@@ -723,12 +597,6 @@ theorem isConnected_univ_pi [∀ i, TopologicalSpace (π i)] {s : ∀ i, Set (π
 #align is_connected_univ_pi isConnected_univ_pi
 -/
 
-/- warning: sigma.is_connected_iff -> Sigma.isConnected_iff is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {π : ι -> Type.{u2}} [_inst_2 : forall (i : ι), TopologicalSpace.{u2} (π i)] {s : Set.{max u1 u2} (Sigma.{u1, u2} ι (fun (i : ι) => π i))}, Iff (IsConnected.{max u1 u2} (Sigma.{u1, u2} ι (fun (i : ι) => π i)) (Sigma.topologicalSpace.{u1, u2} ι (fun (i : ι) => π i) (fun (a : ι) => _inst_2 a)) s) (Exists.{succ u1} ι (fun (i : ι) => Exists.{succ u2} (Set.{u2} (π i)) (fun (t : Set.{u2} (π i)) => And (IsConnected.{u2} (π i) (_inst_2 i) t) (Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Sigma.{u1, u2} ι (fun (i : ι) => π i))) s (Set.image.{u2, max u1 u2} (π i) (Sigma.{u1, u2} ι (fun (i : ι) => π i)) (Sigma.mk.{u1, u2} ι (fun (i : ι) => π i) i) t)))))
-but is expected to have type
-  forall {ι : Type.{u1}} {π : ι -> Type.{u2}} [_inst_2 : forall (i : ι), TopologicalSpace.{u2} (π i)] {s : Set.{max u2 u1} (Sigma.{u1, u2} ι (fun (i : ι) => π i))}, Iff (IsConnected.{max u1 u2} (Sigma.{u1, u2} ι (fun (i : ι) => π i)) (instTopologicalSpaceSigma.{u1, u2} ι (fun (i : ι) => π i) (fun (a : ι) => _inst_2 a)) s) (Exists.{succ u1} ι (fun (i : ι) => Exists.{succ u2} (Set.{u2} (π i)) (fun (t : Set.{u2} (π i)) => And (IsConnected.{u2} (π i) (_inst_2 i) t) (Eq.{max (succ u1) (succ u2)} (Set.{max u2 u1} (Sigma.{u1, u2} ι (fun (i : ι) => π i))) s (Set.image.{u2, max u2 u1} (π i) (Sigma.{u1, u2} ι (fun (i : ι) => π i)) (Sigma.mk.{u1, u2} ι (fun (i : ι) => π i) i) t)))))
-Case conversion may be inaccurate. Consider using '#align sigma.is_connected_iff Sigma.isConnected_iffₓ'. -/
 theorem Sigma.isConnected_iff [∀ i, TopologicalSpace (π i)] {s : Set (Σi, π i)} :
     IsConnected s ↔ ∃ i t, IsConnected t ∧ s = Sigma.mk i '' t :=
   by
@@ -749,12 +617,6 @@ theorem Sigma.isConnected_iff [∀ i, TopologicalSpace (π i)] {s : Set (Σi, π
     exact ht.image _ continuous_sigma_mk.continuous_on
 #align sigma.is_connected_iff Sigma.isConnected_iff
 
-/- warning: sigma.is_preconnected_iff -> Sigma.isPreconnected_iff is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {π : ι -> Type.{u2}} [hι : Nonempty.{succ u1} ι] [_inst_2 : forall (i : ι), TopologicalSpace.{u2} (π i)] {s : Set.{max u1 u2} (Sigma.{u1, u2} ι (fun (i : ι) => π i))}, Iff (IsPreconnected.{max u1 u2} (Sigma.{u1, u2} ι (fun (i : ι) => π i)) (Sigma.topologicalSpace.{u1, u2} ι (fun (i : ι) => π i) (fun (a : ι) => _inst_2 a)) s) (Exists.{succ u1} ι (fun (i : ι) => Exists.{succ u2} (Set.{u2} (π i)) (fun (t : Set.{u2} (π i)) => And (IsPreconnected.{u2} (π i) (_inst_2 i) t) (Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Sigma.{u1, u2} ι (fun (i : ι) => π i))) s (Set.image.{u2, max u1 u2} (π i) (Sigma.{u1, u2} ι (fun (i : ι) => π i)) (Sigma.mk.{u1, u2} ι (fun (i : ι) => π i) i) t)))))
-but is expected to have type
-  forall {ι : Type.{u2}} {π : ι -> Type.{u1}} [hι : Nonempty.{succ u2} ι] [_inst_2 : forall (i : ι), TopologicalSpace.{u1} (π i)] {s : Set.{max u1 u2} (Sigma.{u2, u1} ι (fun (i : ι) => π i))}, Iff (IsPreconnected.{max u2 u1} (Sigma.{u2, u1} ι (fun (i : ι) => π i)) (instTopologicalSpaceSigma.{u2, u1} ι (fun (i : ι) => π i) (fun (a : ι) => _inst_2 a)) s) (Exists.{succ u2} ι (fun (i : ι) => Exists.{succ u1} (Set.{u1} (π i)) (fun (t : Set.{u1} (π i)) => And (IsPreconnected.{u1} (π i) (_inst_2 i) t) (Eq.{max (succ u2) (succ u1)} (Set.{max u1 u2} (Sigma.{u2, u1} ι (fun (i : ι) => π i))) s (Set.image.{u1, max u1 u2} (π i) (Sigma.{u2, u1} ι (fun (i : ι) => π i)) (Sigma.mk.{u2, u1} ι (fun (i : ι) => π i) i) t)))))
-Case conversion may be inaccurate. Consider using '#align sigma.is_preconnected_iff Sigma.isPreconnected_iffₓ'. -/
 theorem Sigma.isPreconnected_iff [hι : Nonempty ι] [∀ i, TopologicalSpace (π i)]
     {s : Set (Σi, π i)} : IsPreconnected s ↔ ∃ i t, IsPreconnected t ∧ s = Sigma.mk i '' t :=
   by
@@ -767,12 +629,6 @@ theorem Sigma.isPreconnected_iff [hι : Nonempty ι] [∀ i, TopologicalSpace (
     exact ht.image _ continuous_sigma_mk.continuous_on
 #align sigma.is_preconnected_iff Sigma.isPreconnected_iff
 
-/- warning: sum.is_connected_iff -> Sum.isConnected_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {s : Set.{max u1 u2} (Sum.{u1, u2} α β)}, Iff (IsConnected.{max u1 u2} (Sum.{u1, u2} α β) (Sum.topologicalSpace.{u1, u2} α β _inst_1 _inst_2) s) (Or (Exists.{succ u1} (Set.{u1} α) (fun (t : Set.{u1} α) => And (IsConnected.{u1} α _inst_1 t) (Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Sum.{u1, u2} α β)) s (Set.image.{u1, max u1 u2} α (Sum.{u1, u2} α β) (Sum.inl.{u1, u2} α β) t)))) (Exists.{succ u2} (Set.{u2} β) (fun (t : Set.{u2} β) => And (IsConnected.{u2} β _inst_2 t) (Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Sum.{u1, u2} α β)) s (Set.image.{u2, max u1 u2} β (Sum.{u1, u2} α β) (Sum.inr.{u1, u2} α β) t)))))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {s : Set.{max u2 u1} (Sum.{u1, u2} α β)}, Iff (IsConnected.{max u1 u2} (Sum.{u1, u2} α β) (instTopologicalSpaceSum.{u1, u2} α β _inst_1 _inst_2) s) (Or (Exists.{succ u1} (Set.{u1} α) (fun (t : Set.{u1} α) => And (IsConnected.{u1} α _inst_1 t) (Eq.{max (succ u1) (succ u2)} (Set.{max u2 u1} (Sum.{u1, u2} α β)) s (Set.image.{u1, max u2 u1} α (Sum.{u1, u2} α β) (Sum.inl.{u1, u2} α β) t)))) (Exists.{succ u2} (Set.{u2} β) (fun (t : Set.{u2} β) => And (IsConnected.{u2} β _inst_2 t) (Eq.{max (succ u1) (succ u2)} (Set.{max u2 u1} (Sum.{u1, u2} α β)) s (Set.image.{u2, max u2 u1} β (Sum.{u1, u2} α β) (Sum.inr.{u1, u2} α β) t)))))
-Case conversion may be inaccurate. Consider using '#align sum.is_connected_iff Sum.isConnected_iffₓ'. -/
 theorem Sum.isConnected_iff [TopologicalSpace β] {s : Set (Sum α β)} :
     IsConnected s ↔
       (∃ t, IsConnected t ∧ s = Sum.inl '' t) ∨ ∃ t, IsConnected t ∧ s = Sum.inr '' t :=
@@ -799,12 +655,6 @@ theorem Sum.isConnected_iff [TopologicalSpace β] {s : Set (Sum α β)} :
     · exact ht.image _ continuous_inr.continuous_on
 #align sum.is_connected_iff Sum.isConnected_iff
 
-/- warning: sum.is_preconnected_iff -> Sum.isPreconnected_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {s : Set.{max u1 u2} (Sum.{u1, u2} α β)}, Iff (IsPreconnected.{max u1 u2} (Sum.{u1, u2} α β) (Sum.topologicalSpace.{u1, u2} α β _inst_1 _inst_2) s) (Or (Exists.{succ u1} (Set.{u1} α) (fun (t : Set.{u1} α) => And (IsPreconnected.{u1} α _inst_1 t) (Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Sum.{u1, u2} α β)) s (Set.image.{u1, max u1 u2} α (Sum.{u1, u2} α β) (Sum.inl.{u1, u2} α β) t)))) (Exists.{succ u2} (Set.{u2} β) (fun (t : Set.{u2} β) => And (IsPreconnected.{u2} β _inst_2 t) (Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Sum.{u1, u2} α β)) s (Set.image.{u2, max u1 u2} β (Sum.{u1, u2} α β) (Sum.inr.{u1, u2} α β) t)))))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] {s : Set.{max u2 u1} (Sum.{u1, u2} α β)}, Iff (IsPreconnected.{max u1 u2} (Sum.{u1, u2} α β) (instTopologicalSpaceSum.{u1, u2} α β _inst_1 _inst_2) s) (Or (Exists.{succ u1} (Set.{u1} α) (fun (t : Set.{u1} α) => And (IsPreconnected.{u1} α _inst_1 t) (Eq.{max (succ u1) (succ u2)} (Set.{max u2 u1} (Sum.{u1, u2} α β)) s (Set.image.{u1, max u2 u1} α (Sum.{u1, u2} α β) (Sum.inl.{u1, u2} α β) t)))) (Exists.{succ u2} (Set.{u2} β) (fun (t : Set.{u2} β) => And (IsPreconnected.{u2} β _inst_2 t) (Eq.{max (succ u1) (succ u2)} (Set.{max u2 u1} (Sum.{u1, u2} α β)) s (Set.image.{u2, max u2 u1} β (Sum.{u1, u2} α β) (Sum.inr.{u1, u2} α β) t)))))
-Case conversion may be inaccurate. Consider using '#align sum.is_preconnected_iff Sum.isPreconnected_iffₓ'. -/
 theorem Sum.isPreconnected_iff [TopologicalSpace β] {s : Set (Sum α β)} :
     IsPreconnected s ↔
       (∃ t, IsPreconnected t ∧ s = Sum.inl '' t) ∨ ∃ t, IsPreconnected t ∧ s = Sum.inr '' t :=
@@ -989,12 +839,6 @@ theorem connectedComponentIn_univ (x : α) : connectedComponentIn univ x = conne
 #align connected_component_in_univ connectedComponentIn_univ
 -/
 
-/- warning: connected_component_disjoint -> connectedComponent_disjoint is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {x : α} {y : α}, (Ne.{succ u1} (Set.{u1} α) (connectedComponent.{u1} α _inst_1 x) (connectedComponent.{u1} α _inst_1 y)) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (connectedComponent.{u1} α _inst_1 x) (connectedComponent.{u1} α _inst_1 y))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {x : α} {y : α}, (Ne.{succ u1} (Set.{u1} α) (connectedComponent.{u1} α _inst_1 x) (connectedComponent.{u1} α _inst_1 y)) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (connectedComponent.{u1} α _inst_1 x) (connectedComponent.{u1} α _inst_1 y))
-Case conversion may be inaccurate. Consider using '#align connected_component_disjoint connectedComponent_disjointₓ'. -/
 theorem connectedComponent_disjoint {x y : α} (h : connectedComponent x ≠ connectedComponent y) :
     Disjoint (connectedComponent x) (connectedComponent y) :=
   Set.disjoint_left.2 fun a h1 h2 =>
@@ -1156,12 +1000,6 @@ instance (priority := 100) IrreducibleSpace.connectedSpace (α : Type u) [Topolo
 #align irreducible_space.connected_space IrreducibleSpace.connectedSpace
 -/
 
-/- warning: nonempty_inter -> nonempty_inter is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : PreconnectedSpace.{u1} α _inst_1] {s : Set.{u1} α} {t : Set.{u1} α}, (IsOpen.{u1} α _inst_1 s) -> (IsOpen.{u1} α _inst_1 t) -> (Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t) (Set.univ.{u1} α)) -> (Set.Nonempty.{u1} α s) -> (Set.Nonempty.{u1} α t) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : PreconnectedSpace.{u1} α _inst_1] {s : Set.{u1} α} {t : Set.{u1} α}, (IsOpen.{u1} α _inst_1 s) -> (IsOpen.{u1} α _inst_1 t) -> (Eq.{succ u1} (Set.{u1} α) (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) s t) (Set.univ.{u1} α)) -> (Set.Nonempty.{u1} α s) -> (Set.Nonempty.{u1} α t) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s t))
-Case conversion may be inaccurate. Consider using '#align nonempty_inter nonempty_interₓ'. -/
 theorem nonempty_inter [PreconnectedSpace α] {s t : Set α} :
     IsOpen s → IsOpen t → s ∪ t = univ → s.Nonempty → t.Nonempty → (s ∩ t).Nonempty := by
   simpa only [univ_inter, univ_subset_iff] using @PreconnectedSpace.isPreconnected_univ α _ _ s t
@@ -1234,12 +1072,6 @@ theorem isConnected_iff_connectedSpace {s : Set α} : IsConnected s ↔ Connecte
 #align is_connected_iff_connected_space isConnected_iff_connectedSpace
 -/
 
-/- warning: is_preconnected_iff_subset_of_disjoint -> isPreconnected_iff_subset_of_disjoint is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, Iff (IsPreconnected.{u1} α _inst_1 s) (forall (u : Set.{u1} α) (v : Set.{u1} α), (IsOpen.{u1} α _inst_1 u) -> (IsOpen.{u1} α _inst_1 v) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) u v)) -> (Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) u v)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) -> (Or (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s u) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s v)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, Iff (IsPreconnected.{u1} α _inst_1 s) (forall (u : Set.{u1} α) (v : Set.{u1} α), (IsOpen.{u1} α _inst_1 u) -> (IsOpen.{u1} α _inst_1 v) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) u v)) -> (Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) u v)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.instEmptyCollectionSet.{u1} α))) -> (Or (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s u) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s v)))
-Case conversion may be inaccurate. Consider using '#align is_preconnected_iff_subset_of_disjoint isPreconnected_iff_subset_of_disjointₓ'. -/
 /-- A set `s` is preconnected if and only if
 for every cover by two open sets that are disjoint on `s`,
 it is contained in one of the two covering sets. -/
@@ -1269,12 +1101,6 @@ theorem isPreconnected_iff_subset_of_disjoint {s : Set α} :
     · rcases hsu with ⟨x, hxs, hxu⟩; exact ⟨x, hxs, ⟨hxu, h hxs⟩⟩
 #align is_preconnected_iff_subset_of_disjoint isPreconnected_iff_subset_of_disjoint
 
-/- warning: is_connected_iff_sUnion_disjoint_open -> isConnected_iff_sUnion_disjoint_open is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, Iff (IsConnected.{u1} α _inst_1 s) (forall (U : Finset.{u1} (Set.{u1} α)), (forall (u : Set.{u1} α) (v : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.hasMem.{u1} (Set.{u1} α)) u U) -> (Membership.Mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.hasMem.{u1} (Set.{u1} α)) v U) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) u v))) -> (Eq.{succ u1} (Set.{u1} α) u v)) -> (forall (u : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.hasMem.{u1} (Set.{u1} α)) u U) -> (IsOpen.{u1} α _inst_1 u)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Set.sUnion.{u1} α ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} (Set.{u1} α)) (Set.{u1} (Set.{u1} α)) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} (Set.{u1} α)) (Set.{u1} (Set.{u1} α)) (CoeTCₓ.coe.{succ u1, succ u1} (Finset.{u1} (Set.{u1} α)) (Set.{u1} (Set.{u1} α)) (Finset.Set.hasCoeT.{u1} (Set.{u1} α)))) U))) -> (Exists.{succ u1} (Set.{u1} α) (fun (u : Set.{u1} α) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.hasMem.{u1} (Set.{u1} α)) u U) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.hasMem.{u1} (Set.{u1} α)) u U) => HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s u))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, Iff (IsConnected.{u1} α _inst_1 s) (forall (U : Finset.{u1} (Set.{u1} α)), (forall (u : Set.{u1} α) (v : Set.{u1} α), (Membership.mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.instMembershipFinset.{u1} (Set.{u1} α)) u U) -> (Membership.mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.instMembershipFinset.{u1} (Set.{u1} α)) v U) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) u v))) -> (Eq.{succ u1} (Set.{u1} α) u v)) -> (forall (u : Set.{u1} α), (Membership.mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.instMembershipFinset.{u1} (Set.{u1} α)) u U) -> (IsOpen.{u1} α _inst_1 u)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s (Set.sUnion.{u1} α (Finset.toSet.{u1} (Set.{u1} α) U))) -> (Exists.{succ u1} (Set.{u1} α) (fun (u : Set.{u1} α) => And (Membership.mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.instMembershipFinset.{u1} (Set.{u1} α)) u U) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s u))))
-Case conversion may be inaccurate. Consider using '#align is_connected_iff_sUnion_disjoint_open isConnected_iff_sUnion_disjoint_openₓ'. -/
 /-- A set `s` is connected if and only if
 for every cover by a finite collection of open sets that are pairwise disjoint on `s`,
 it is contained in one of the members of the collection. -/
@@ -1327,12 +1153,6 @@ theorem isConnected_iff_sUnion_disjoint_open {s : Set α} :
     · simpa using hs
 #align is_connected_iff_sUnion_disjoint_open isConnected_iff_sUnion_disjoint_open
 
-/- warning: is_preconnected.subset_clopen -> IsPreconnected.subset_clopen is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} {t : Set.{u1} α}, (IsPreconnected.{u1} α _inst_1 s) -> (IsClopen.{u1} α _inst_1 t) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s t)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} {t : Set.{u1} α}, (IsPreconnected.{u1} α _inst_1 s) -> (IsClopen.{u1} α _inst_1 t) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s t)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s t)
-Case conversion may be inaccurate. Consider using '#align is_preconnected.subset_clopen IsPreconnected.subset_clopenₓ'. -/
 /-- Preconnected sets are either contained in or disjoint to any given clopen set. -/
 theorem IsPreconnected.subset_clopen {s t : Set α} (hs : IsPreconnected s) (ht : IsClopen t)
     (hne : (s ∩ t).Nonempty) : s ⊆ t := by
@@ -1343,24 +1163,12 @@ theorem IsPreconnected.subset_clopen {s t : Set α} (hs : IsPreconnected s) (ht
   exact hx' hx
 #align is_preconnected.subset_clopen IsPreconnected.subset_clopen
 
-/- warning: disjoint_or_subset_of_clopen -> disjoint_or_subset_of_clopen is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} {t : Set.{u1} α}, (IsPreconnected.{u1} α _inst_1 s) -> (IsClopen.{u1} α _inst_1 t) -> (Or (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) s t) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s t))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} {t : Set.{u1} α}, (IsPreconnected.{u1} α _inst_1 s) -> (IsClopen.{u1} α _inst_1 t) -> (Or (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) s t) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s t))
-Case conversion may be inaccurate. Consider using '#align disjoint_or_subset_of_clopen disjoint_or_subset_of_clopenₓ'. -/
 /-- Preconnected sets are either contained in or disjoint to any given clopen set. -/
 theorem disjoint_or_subset_of_clopen {s t : Set α} (hs : IsPreconnected s) (ht : IsClopen t) :
     Disjoint s t ∨ s ⊆ t :=
   (disjoint_or_nonempty_inter s t).imp_right <| hs.subset_clopen ht
 #align disjoint_or_subset_of_clopen disjoint_or_subset_of_clopen
 
-/- warning: is_preconnected_iff_subset_of_disjoint_closed -> isPreconnected_iff_subset_of_disjoint_closed is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, Iff (IsPreconnected.{u1} α _inst_1 s) (forall (u : Set.{u1} α) (v : Set.{u1} α), (IsClosed.{u1} α _inst_1 u) -> (IsClosed.{u1} α _inst_1 v) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) u v)) -> (Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) u v)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) -> (Or (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s u) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s v)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, Iff (IsPreconnected.{u1} α _inst_1 s) (forall (u : Set.{u1} α) (v : Set.{u1} α), (IsClosed.{u1} α _inst_1 u) -> (IsClosed.{u1} α _inst_1 v) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) u v)) -> (Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) u v)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.instEmptyCollectionSet.{u1} α))) -> (Or (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s u) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s v)))
-Case conversion may be inaccurate. Consider using '#align is_preconnected_iff_subset_of_disjoint_closed isPreconnected_iff_subset_of_disjoint_closedₓ'. -/
 /-- A set `s` is preconnected if and only if
 for every cover by two closed sets that are disjoint on `s`,
 it is contained in one of the two covering sets. -/
@@ -1392,12 +1200,6 @@ theorem isPreconnected_iff_subset_of_disjoint_closed :
     · rcases hsu with ⟨x, hxs, hxu⟩; exact ⟨x, hxs, ⟨hxu, h hxs⟩⟩
 #align is_preconnected_iff_subset_of_disjoint_closed isPreconnected_iff_subset_of_disjoint_closed
 
-/- warning: is_preconnected_iff_subset_of_fully_disjoint_closed -> isPreconnected_iff_subset_of_fully_disjoint_closed is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, (IsClosed.{u1} α _inst_1 s) -> (Iff (IsPreconnected.{u1} α _inst_1 s) (forall (u : Set.{u1} α) (v : Set.{u1} α), (IsClosed.{u1} α _inst_1 u) -> (IsClosed.{u1} α _inst_1 v) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) u v)) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) u v) -> (Or (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s u) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s v))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, (IsClosed.{u1} α _inst_1 s) -> (Iff (IsPreconnected.{u1} α _inst_1 s) (forall (u : Set.{u1} α) (v : Set.{u1} α), (IsClosed.{u1} α _inst_1 u) -> (IsClosed.{u1} α _inst_1 v) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) u v)) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) u v) -> (Or (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s u) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s v))))
-Case conversion may be inaccurate. Consider using '#align is_preconnected_iff_subset_of_fully_disjoint_closed isPreconnected_iff_subset_of_fully_disjoint_closedₓ'. -/
 /-- A closed set `s` is preconnected if and only if
 for every cover by two closed sets that are disjoint,
 it is contained in one of the two covering sets. -/
@@ -1583,12 +1385,6 @@ theorem locallyConnectedSpace_iff_open_connected_basis :
 #align locally_connected_space_iff_open_connected_basis locallyConnectedSpace_iff_open_connected_basis
 -/
 
-/- warning: locally_connected_space_iff_open_connected_subsets -> locallyConnectedSpace_iff_open_connected_subsets is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α], Iff (LocallyConnectedSpace.{u1} α _inst_1) (forall (x : α) (U : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Filter.{u1} α) (Filter.hasMem.{u1} α) U (nhds.{u1} α _inst_1 x)) -> (Exists.{succ u1} (Set.{u1} α) (fun (V : Set.{u1} α) => Exists.{0} (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) V U) (fun (H : HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) V U) => And (IsOpen.{u1} α _inst_1 V) (And (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x V) (IsConnected.{u1} α _inst_1 V))))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α], Iff (LocallyConnectedSpace.{u1} α _inst_1) (forall (x : α) (U : Set.{u1} α), (Membership.mem.{u1, u1} (Set.{u1} α) (Filter.{u1} α) (instMembershipSetFilter.{u1} α) U (nhds.{u1} α _inst_1 x)) -> (Exists.{succ u1} (Set.{u1} α) (fun (V : Set.{u1} α) => And (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) V U) (And (IsOpen.{u1} α _inst_1 V) (And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x V) (IsConnected.{u1} α _inst_1 V))))))
-Case conversion may be inaccurate. Consider using '#align locally_connected_space_iff_open_connected_subsets locallyConnectedSpace_iff_open_connected_subsetsₓ'. -/
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (V «expr ⊆ » U) -/
 theorem locallyConnectedSpace_iff_open_connected_subsets :
@@ -1677,12 +1473,6 @@ theorem locallyConnectedSpace_iff_connectedComponentIn_open :
 #align locally_connected_space_iff_connected_component_in_open locallyConnectedSpace_iff_connectedComponentIn_open
 -/
 
-/- warning: locally_connected_space_iff_connected_subsets -> locallyConnectedSpace_iff_connected_subsets is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α], Iff (LocallyConnectedSpace.{u1} α _inst_1) (forall (x : α) (U : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Filter.{u1} α) (Filter.hasMem.{u1} α) U (nhds.{u1} α _inst_1 x)) -> (Exists.{succ u1} (Set.{u1} α) (fun (V : Set.{u1} α) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} α) (Filter.{u1} α) (Filter.hasMem.{u1} α) V (nhds.{u1} α _inst_1 x)) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Filter.{u1} α) (Filter.hasMem.{u1} α) V (nhds.{u1} α _inst_1 x)) => And (IsPreconnected.{u1} α _inst_1 V) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) V U)))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α], Iff (LocallyConnectedSpace.{u1} α _inst_1) (forall (x : α) (U : Set.{u1} α), (Membership.mem.{u1, u1} (Set.{u1} α) (Filter.{u1} α) (instMembershipSetFilter.{u1} α) U (nhds.{u1} α _inst_1 x)) -> (Exists.{succ u1} (Set.{u1} α) (fun (V : Set.{u1} α) => And (Membership.mem.{u1, u1} (Set.{u1} α) (Filter.{u1} α) (instMembershipSetFilter.{u1} α) V (nhds.{u1} α _inst_1 x)) (And (IsPreconnected.{u1} α _inst_1 V) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) V U)))))
-Case conversion may be inaccurate. Consider using '#align locally_connected_space_iff_connected_subsets locallyConnectedSpace_iff_connected_subsetsₓ'. -/
 theorem locallyConnectedSpace_iff_connected_subsets :
     LocallyConnectedSpace α ↔ ∀ (x : α), ∀ U ∈ 𝓝 x, ∃ V ∈ 𝓝 x, IsPreconnected V ∧ V ⊆ U :=
   by
@@ -1711,12 +1501,6 @@ theorem locallyConnectedSpace_iff_connected_basis :
 #align locally_connected_space_iff_connected_basis locallyConnectedSpace_iff_connected_basis
 -/
 
-/- warning: locally_connected_space_of_connected_bases -> locallyConnectedSpace_of_connected_bases is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {ι : Type.{u2}} (b : α -> ι -> (Set.{u1} α)) (p : α -> ι -> Prop), (forall (x : α), Filter.HasBasis.{u1, succ u2} α ι (nhds.{u1} α _inst_1 x) (p x) (b x)) -> (forall (x : α) (i : ι), (p x i) -> (IsPreconnected.{u1} α _inst_1 (b x i))) -> (LocallyConnectedSpace.{u1} α _inst_1)
-but is expected to have type
-  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {ι : Type.{u1}} (b : α -> ι -> (Set.{u2} α)) (p : α -> ι -> Prop), (forall (x : α), Filter.HasBasis.{u2, succ u1} α ι (nhds.{u2} α _inst_1 x) (p x) (b x)) -> (forall (x : α) (i : ι), (p x i) -> (IsPreconnected.{u2} α _inst_1 (b x i))) -> (LocallyConnectedSpace.{u2} α _inst_1)
-Case conversion may be inaccurate. Consider using '#align locally_connected_space_of_connected_bases locallyConnectedSpace_of_connected_basesₓ'. -/
 theorem locallyConnectedSpace_of_connected_bases {ι : Type _} (b : α → ι → Set α) (p : α → ι → Prop)
     (hbasis : ∀ x, (𝓝 x).HasBasis (p x) (b x))
     (hconnected : ∀ x i, p x i → IsPreconnected (b x i)) : LocallyConnectedSpace α :=
@@ -1777,12 +1561,6 @@ instance Pi.totallyDisconnectedSpace {α : Type _} {β : α → Type _}
 #align pi.totally_disconnected_space Pi.totallyDisconnectedSpace
 -/
 
-/- warning: prod.totally_disconnected_space -> Prod.totallyDisconnectedSpace is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TotallyDisconnectedSpace.{u1} α _inst_1] [_inst_4 : TotallyDisconnectedSpace.{u2} β _inst_2], TotallyDisconnectedSpace.{max u1 u2} (Prod.{u1, u2} α β) (Prod.topologicalSpace.{u1, u2} α β _inst_1 _inst_2)
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TotallyDisconnectedSpace.{u1} α _inst_1] [_inst_4 : TotallyDisconnectedSpace.{u2} β _inst_2], TotallyDisconnectedSpace.{max u2 u1} (Prod.{u1, u2} α β) (instTopologicalSpaceProd.{u1, u2} α β _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align prod.totally_disconnected_space Prod.totallyDisconnectedSpaceₓ'. -/
 instance Prod.totallyDisconnectedSpace [TopologicalSpace β] [TotallyDisconnectedSpace α]
     [TotallyDisconnectedSpace β] : TotallyDisconnectedSpace (α × β) :=
   ⟨fun t h1 h2 =>
@@ -1810,12 +1588,6 @@ instance [∀ i, TopologicalSpace (π i)] [∀ i, TotallyDisconnectedSpace (π i
   · obtain ⟨a, t, ht, rfl⟩ := Sigma.isConnected_iff.1 ⟨h, hs⟩
     exact ht.is_preconnected.subsingleton.image _
 
-/- warning: is_totally_disconnected_of_clopen_set -> isTotallyDisconnected_of_clopen_set is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_2 : TopologicalSpace.{u1} X], (forall {x : X} {y : X}, (Ne.{succ u1} X x y) -> (Exists.{succ u1} (Set.{u1} X) (fun (U : Set.{u1} X) => Exists.{0} (IsClopen.{u1} X _inst_2 U) (fun (h_clopen : IsClopen.{u1} X _inst_2 U) => And (Membership.Mem.{u1, u1} X (Set.{u1} X) (Set.hasMem.{u1} X) x U) (Not (Membership.Mem.{u1, u1} X (Set.{u1} X) (Set.hasMem.{u1} X) y U)))))) -> (IsTotallyDisconnected.{u1} X _inst_2 (Set.univ.{u1} X))
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_2 : TopologicalSpace.{u1} X], (Pairwise.{u1} X (fun (x : X) (y : X) => Exists.{succ u1} (Set.{u1} X) (fun (U : Set.{u1} X) => And (IsClopen.{u1} X _inst_2 U) (And (Membership.mem.{u1, u1} X (Set.{u1} X) (Set.instMembershipSet.{u1} X) x U) (Not (Membership.mem.{u1, u1} X (Set.{u1} X) (Set.instMembershipSet.{u1} X) y U)))))) -> (IsTotallyDisconnected.{u1} X _inst_2 (Set.univ.{u1} X))
-Case conversion may be inaccurate. Consider using '#align is_totally_disconnected_of_clopen_set isTotallyDisconnected_of_clopen_setₓ'. -/
 /-- Let `X` be a topological space, and suppose that for all distinct `x,y ∈ X`, there
   is some clopen set `U` such that `x ∈ U` and `y ∉ U`. Then `X` is totally disconnected. -/
 theorem isTotallyDisconnected_of_clopen_set {X : Type _} [TopologicalSpace X]
@@ -1871,12 +1643,6 @@ theorem connectedComponent_eq_singleton [TotallyDisconnectedSpace α] (x : α) :
 #align connected_component_eq_singleton connectedComponent_eq_singleton
 -/
 
-/- warning: continuous.image_connected_component_eq_singleton -> Continuous.image_connectedComponent_eq_singleton is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {β : Type.{u2}} [_inst_2 : TopologicalSpace.{u2} β] [_inst_3 : TotallyDisconnectedSpace.{u2} β _inst_2] {f : α -> β}, (Continuous.{u1, u2} α β _inst_1 _inst_2 f) -> (forall (a : α), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β f (connectedComponent.{u1} α _inst_1 a)) (Singleton.singleton.{u2, u2} β (Set.{u2} β) (Set.hasSingleton.{u2} β) (f a)))
-but is expected to have type
-  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {β : Type.{u1}} [_inst_2 : TopologicalSpace.{u1} β] [_inst_3 : TotallyDisconnectedSpace.{u1} β _inst_2] {f : α -> β}, (Continuous.{u2, u1} α β _inst_1 _inst_2 f) -> (forall (a : α), Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β f (connectedComponent.{u2} α _inst_1 a)) (Singleton.singleton.{u1, u1} β (Set.{u1} β) (Set.instSingletonSet.{u1} β) (f a)))
-Case conversion may be inaccurate. Consider using '#align continuous.image_connected_component_eq_singleton Continuous.image_connectedComponent_eq_singletonₓ'. -/
 /-- The image of a connected component in a totally disconnected space is a singleton. -/
 @[simp]
 theorem Continuous.image_connectedComponent_eq_singleton {β : Type _} [TopologicalSpace β]
@@ -1984,12 +1750,6 @@ instance (priority := 100) TotallySeparatedSpace.of_discrete (α : Type _) [Topo
 #align totally_separated_space.of_discrete TotallySeparatedSpace.of_discrete
 -/
 
-/- warning: exists_clopen_of_totally_separated -> exists_clopen_of_totally_separated is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : TotallySeparatedSpace.{u1} α _inst_2] {x : α} {y : α}, (Ne.{succ u1} α x y) -> (Exists.{succ u1} (Set.{u1} α) (fun (U : Set.{u1} α) => Exists.{0} (IsClopen.{u1} α _inst_2 U) (fun (hU : IsClopen.{u1} α _inst_2 U) => And (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x U) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) y (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) U)))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : TotallySeparatedSpace.{u1} α _inst_2] {x : α} {y : α}, (Ne.{succ u1} α x y) -> (Exists.{succ u1} (Set.{u1} α) (fun (U : Set.{u1} α) => And (IsClopen.{u1} α _inst_2 U) (And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x U) (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) y (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) U)))))
-Case conversion may be inaccurate. Consider using '#align exists_clopen_of_totally_separated exists_clopen_of_totally_separatedₓ'. -/
 theorem exists_clopen_of_totally_separated {α : Type _} [TopologicalSpace α]
     [TotallySeparatedSpace α] {x y : α} (hxy : x ≠ y) :
     ∃ (U : Set α)(hU : IsClopen U), x ∈ U ∧ y ∈ Uᶜ :=
@@ -2125,12 +1885,6 @@ theorem Continuous.connectedComponentsLift_comp_coe (h : Continuous f) :
 #align continuous.connected_components_lift_comp_coe Continuous.connectedComponentsLift_comp_coe
 -/
 
-/- warning: connected_components_lift_unique' -> connectedComponents_lift_unique' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {β : Sort.{u2}} {g₁ : (ConnectedComponents.{u1} α _inst_1) -> β} {g₂ : (ConnectedComponents.{u1} α _inst_1) -> β}, (Eq.{imax (succ u1) u2} (α -> β) (Function.comp.{succ u1, succ u1, u2} α (ConnectedComponents.{u1} α _inst_1) β g₁ ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) α (ConnectedComponents.{u1} α _inst_1) (HasLiftT.mk.{succ u1, succ u1} α (ConnectedComponents.{u1} α _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} α (ConnectedComponents.{u1} α _inst_1) (ConnectedComponents.hasCoeT.{u1} α _inst_1))))) (Function.comp.{succ u1, succ u1, u2} α (ConnectedComponents.{u1} α _inst_1) β g₂ ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) α (ConnectedComponents.{u1} α _inst_1) (HasLiftT.mk.{succ u1, succ u1} α (ConnectedComponents.{u1} α _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} α (ConnectedComponents.{u1} α _inst_1) (ConnectedComponents.hasCoeT.{u1} α _inst_1)))))) -> (Eq.{imax (succ u1) u2} ((ConnectedComponents.{u1} α _inst_1) -> β) g₁ g₂)
-but is expected to have type
-  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {β : Sort.{u1}} {g₁ : (ConnectedComponents.{u2} α _inst_1) -> β} {g₂ : (ConnectedComponents.{u2} α _inst_1) -> β}, (Eq.{imax (succ u2) u1} (α -> β) (Function.comp.{succ u2, succ u2, u1} α (ConnectedComponents.{u2} α _inst_1) β g₁ (ConnectedComponents.mk.{u2} α _inst_1)) (Function.comp.{succ u2, succ u2, u1} α (ConnectedComponents.{u2} α _inst_1) β g₂ (ConnectedComponents.mk.{u2} α _inst_1))) -> (Eq.{imax (succ u2) u1} ((ConnectedComponents.{u2} α _inst_1) -> β) g₁ g₂)
-Case conversion may be inaccurate. Consider using '#align connected_components_lift_unique' connectedComponents_lift_unique'ₓ'. -/
 theorem connectedComponents_lift_unique' {β : Sort _} {g₁ g₂ : ConnectedComponents α → β}
     (hg : g₁ ∘ (coe : α → ConnectedComponents α) = g₂ ∘ coe) : g₁ = g₂ :=
   ConnectedComponents.surjective_coe.injective_comp_right hg
@@ -2183,12 +1937,6 @@ def Continuous.connectedComponentsMap {β : Type _} [TopologicalSpace β] {f : 
 #align continuous.connected_components_map Continuous.connectedComponentsMap
 -/
 
-/- warning: continuous.connected_components_map_continuous -> Continuous.connectedComponentsMap_continuous is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {β : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} β] {f : α -> β} (h : Continuous.{u1, u2} α β _inst_1 _inst_4 f), Continuous.{u1, u2} (ConnectedComponents.{u1} α _inst_1) (ConnectedComponents.{u2} β _inst_4) (ConnectedComponents.topologicalSpace.{u1} α _inst_1) (ConnectedComponents.topologicalSpace.{u2} β _inst_4) (Continuous.connectedComponentsMap.{u1, u2} α _inst_1 β _inst_4 f h)
-but is expected to have type
-  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {β : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} β] {f : α -> β} (h : Continuous.{u2, u1} α β _inst_1 _inst_4 f), Continuous.{u2, u1} (ConnectedComponents.{u2} α _inst_1) (ConnectedComponents.{u1} β _inst_4) (ConnectedComponents.instTopologicalSpaceConnectedComponents.{u2} α _inst_1) (ConnectedComponents.instTopologicalSpaceConnectedComponents.{u1} β _inst_4) (Continuous.connectedComponentsMap.{u2, u1} α _inst_1 β _inst_4 f h)
-Case conversion may be inaccurate. Consider using '#align continuous.connected_components_map_continuous Continuous.connectedComponentsMap_continuousₓ'. -/
 theorem Continuous.connectedComponentsMap_continuous {β : Type _} [TopologicalSpace β] {f : α → β}
     (h : Continuous f) : Continuous h.connectedComponentsMap :=
   Continuous.connectedComponentsLift_continuous (continuous_quotient_mk'.comp h)
@@ -2196,12 +1944,6 @@ theorem Continuous.connectedComponentsMap_continuous {β : Type _} [TopologicalS
 
 end connectedComponentSetoid
 
-/- warning: is_preconnected.constant -> IsPreconnected.constant is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {Y : Type.{u2}} [_inst_2 : TopologicalSpace.{u2} Y] [_inst_3 : DiscreteTopology.{u2} Y _inst_2] {s : Set.{u1} α}, (IsPreconnected.{u1} α _inst_1 s) -> (forall {f : α -> Y}, (ContinuousOn.{u1, u2} α Y _inst_1 _inst_2 f s) -> (forall {x : α} {y : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) y s) -> (Eq.{succ u2} Y (f x) (f y))))
-but is expected to have type
-  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {Y : Type.{u1}} [_inst_2 : TopologicalSpace.{u1} Y] [_inst_3 : DiscreteTopology.{u1} Y _inst_2] {s : Set.{u2} α}, (IsPreconnected.{u2} α _inst_1 s) -> (forall {f : α -> Y}, (ContinuousOn.{u2, u1} α Y _inst_1 _inst_2 f s) -> (forall {x : α} {y : α}, (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s) -> (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) y s) -> (Eq.{succ u1} Y (f x) (f y))))
-Case conversion may be inaccurate. Consider using '#align is_preconnected.constant IsPreconnected.constantₓ'. -/
 /-- A preconnected set `s` has the property that every map to a
 discrete space that is continuous on `s` is constant on `s` -/
 theorem IsPreconnected.constant {Y : Type _} [TopologicalSpace Y] [DiscreteTopology Y] {s : Set α}
@@ -2210,12 +1952,6 @@ theorem IsPreconnected.constant {Y : Type _} [TopologicalSpace Y] [DiscreteTopol
   (hs.image f hf).Subsingleton (mem_image_of_mem f hx) (mem_image_of_mem f hy)
 #align is_preconnected.constant IsPreconnected.constant
 
-/- warning: is_preconnected_of_forall_constant -> isPreconnected_of_forall_constant is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, (forall (f : α -> Bool), (ContinuousOn.{u1, 0} α Bool _inst_1 Bool.topologicalSpace f s) -> (forall (x : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) -> (forall (y : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) y s) -> (Eq.{1} Bool (f x) (f y))))) -> (IsPreconnected.{u1} α _inst_1 s)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, (forall (f : α -> Bool), (ContinuousOn.{u1, 0} α Bool _inst_1 instTopologicalSpaceBool f s) -> (forall (x : α), (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x s) -> (forall (y : α), (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) y s) -> (Eq.{1} Bool (f x) (f y))))) -> (IsPreconnected.{u1} α _inst_1 s)
-Case conversion may be inaccurate. Consider using '#align is_preconnected_of_forall_constant isPreconnected_of_forall_constantₓ'. -/
 /-- If every map to `bool` (a discrete two-element space), that is
 continuous on a set `s`, is constant on s, then s is preconnected -/
 theorem isPreconnected_of_forall_constant {s : Set α}
@@ -2236,24 +1972,12 @@ theorem isPreconnected_of_forall_constant {s : Set α}
     hs _ this x x_in_s y y_in_s
 #align is_preconnected_of_forall_constant isPreconnected_of_forall_constant
 
-/- warning: preconnected_space.constant -> PreconnectedSpace.constant is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {Y : Type.{u2}} [_inst_2 : TopologicalSpace.{u2} Y] [_inst_3 : DiscreteTopology.{u2} Y _inst_2], (PreconnectedSpace.{u1} α _inst_1) -> (forall {f : α -> Y}, (Continuous.{u1, u2} α Y _inst_1 _inst_2 f) -> (forall {x : α} {y : α}, Eq.{succ u2} Y (f x) (f y)))
-but is expected to have type
-  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {Y : Type.{u1}} [_inst_2 : TopologicalSpace.{u1} Y] [_inst_3 : DiscreteTopology.{u1} Y _inst_2], (PreconnectedSpace.{u2} α _inst_1) -> (forall {f : α -> Y}, (Continuous.{u2, u1} α Y _inst_1 _inst_2 f) -> (forall {x : α} {y : α}, Eq.{succ u1} Y (f x) (f y)))
-Case conversion may be inaccurate. Consider using '#align preconnected_space.constant PreconnectedSpace.constantₓ'. -/
 /-- A `preconnected_space` version of `is_preconnected.constant` -/
 theorem PreconnectedSpace.constant {Y : Type _} [TopologicalSpace Y] [DiscreteTopology Y]
     (hp : PreconnectedSpace α) {f : α → Y} (hf : Continuous f) {x y : α} : f x = f y :=
   IsPreconnected.constant hp.isPreconnected_univ (Continuous.continuousOn hf) trivial trivial
 #align preconnected_space.constant PreconnectedSpace.constant
 
-/- warning: preconnected_space_of_forall_constant -> preconnectedSpace_of_forall_constant is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α], (forall (f : α -> Bool), (Continuous.{u1, 0} α Bool _inst_1 Bool.topologicalSpace f) -> (forall (x : α) (y : α), Eq.{1} Bool (f x) (f y))) -> (PreconnectedSpace.{u1} α _inst_1)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α], (forall (f : α -> Bool), (Continuous.{u1, 0} α Bool _inst_1 instTopologicalSpaceBool f) -> (forall (x : α) (y : α), Eq.{1} Bool (f x) (f y))) -> (PreconnectedSpace.{u1} α _inst_1)
-Case conversion may be inaccurate. Consider using '#align preconnected_space_of_forall_constant preconnectedSpace_of_forall_constantₓ'. -/
 /-- A `preconnected_space` version of `is_preconnected_of_forall_constant` -/
 theorem preconnectedSpace_of_forall_constant
     (hs : ∀ f : α → Bool, Continuous f → ∀ x y, f x = f y) : PreconnectedSpace α :=
Diff
@@ -135,12 +135,9 @@ theorem isPreconnected_of_forall {s : Set α} (x : α)
     (H : ∀ y ∈ s, ∃ (t : _)(_ : t ⊆ s), x ∈ t ∧ y ∈ t ∧ IsPreconnected t) : IsPreconnected s :=
   by
   rintro u v hu hv hs ⟨z, zs, zu⟩ ⟨y, ys, yv⟩
-  have xs : x ∈ s := by
-    rcases H y ys with ⟨t, ts, xt, yt, ht⟩
-    exact ts xt
+  have xs : x ∈ s := by rcases H y ys with ⟨t, ts, xt, yt, ht⟩; exact ts xt
   wlog xu : x ∈ u
-  · rw [inter_comm u v]
-    rw [union_comm] at hs
+  · rw [inter_comm u v]; rw [union_comm] at hs
     exact this x H v u hv hu hs y ys yv z zs zu xs ((hs xs).resolve_right xu)
   rcases H y ys with ⟨t, ts, xt, yt, ht⟩
   have := ht u v hu hv (subset.trans ts hs) ⟨x, xt, xu⟩ ⟨y, yt, yv⟩
@@ -207,9 +204,7 @@ but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} {t : Set.{u1} α}, (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s t)) -> (IsPreconnected.{u1} α _inst_1 s) -> (IsPreconnected.{u1} α _inst_1 t) -> (IsPreconnected.{u1} α _inst_1 (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) s t))
 Case conversion may be inaccurate. Consider using '#align is_preconnected.union' IsPreconnected.union'ₓ'. -/
 theorem IsPreconnected.union' {s t : Set α} (H : (s ∩ t).Nonempty) (hs : IsPreconnected s)
-    (ht : IsPreconnected t) : IsPreconnected (s ∪ t) :=
-  by
-  rcases H with ⟨x, hxs, hxt⟩
+    (ht : IsPreconnected t) : IsPreconnected (s ∪ t) := by rcases H with ⟨x, hxs, hxt⟩;
   exact hs.union x hxs hxt ht
 #align is_preconnected.union' IsPreconnected.union'
 
@@ -320,8 +315,7 @@ where two vertices are joined when the corresponding sets intersect. -/
 theorem IsPreconnected.iUnion_of_reflTransGen {ι : Type _} {s : ι → Set α}
     (H : ∀ i, IsPreconnected (s i))
     (K : ∀ i j, ReflTransGen (fun i j : ι => (s i ∩ s j).Nonempty) i j) :
-    IsPreconnected (⋃ n, s n) := by
-  rw [← bUnion_univ]
+    IsPreconnected (⋃ n, s n) := by rw [← bUnion_univ];
   exact
     IsPreconnected.biUnion_of_reflTransGen (fun i _ => H i) fun i _ j _ => by
       simpa [mem_univ] using K i j
@@ -357,10 +351,7 @@ Case conversion may be inaccurate. Consider using '#align is_preconnected.Union_
 theorem IsPreconnected.iUnion_of_chain {s : β → Set α} (H : ∀ n, IsPreconnected (s n))
     (K : ∀ n, (s n ∩ s (succ n)).Nonempty) : IsPreconnected (⋃ n, s n) :=
   IsPreconnected.iUnion_of_reflTransGen H fun i j =>
-    reflTransGen_of_succ _ (fun i _ => K i) fun i _ =>
-      by
-      rw [inter_comm]
-      exact K i
+    reflTransGen_of_succ _ (fun i _ => K i) fun i _ => by rw [inter_comm]; exact K i
 #align is_preconnected.Union_of_chain IsPreconnected.iUnion_of_chain
 
 /- warning: is_connected.Union_of_chain -> IsConnected.iUnion_of_chain is a dubious translation:
@@ -374,10 +365,7 @@ Case conversion may be inaccurate. Consider using '#align is_connected.Union_of_
 theorem IsConnected.iUnion_of_chain [Nonempty β] {s : β → Set α} (H : ∀ n, IsConnected (s n))
     (K : ∀ n, (s n ∩ s (succ n)).Nonempty) : IsConnected (⋃ n, s n) :=
   IsConnected.iUnion_of_reflTransGen H fun i j =>
-    reflTransGen_of_succ _ (fun i _ => K i) fun i _ =>
-      by
-      rw [inter_comm]
-      exact K i
+    reflTransGen_of_succ _ (fun i _ => K i) fun i _ => by rw [inter_comm]; exact K i
 #align is_connected.Union_of_chain IsConnected.iUnion_of_chain
 
 /- warning: is_preconnected.bUnion_of_chain -> IsPreconnected.biUnion_of_chain is a dubious translation:
@@ -402,9 +390,7 @@ theorem IsPreconnected.biUnion_of_chain {s : β → Set α} {t : Set β} (ht : O
   refine' IsPreconnected.biUnion_of_reflTransGen H fun i hi j hj => _
   exact
     reflTransGen_of_succ _ (fun k hk => ⟨h3 hi hj hk, h1 hi hj hk⟩) fun k hk =>
-      ⟨by
-        rw [inter_comm]
-        exact h3 hj hi hk, h2 hj hi hk⟩
+      ⟨by rw [inter_comm]; exact h3 hj hi hk, h2 hj hi hk⟩
 #align is_preconnected.bUnion_of_chain IsPreconnected.biUnion_of_chain
 
 /- warning: is_connected.bUnion_of_chain -> IsConnected.biUnion_of_chain is a dubious translation:
@@ -706,8 +692,7 @@ theorem isPreconnected_univ_pi [∀ i, TopologicalSpace (π i)] {s : ∀ i, Set
   rintro u v uo vo hsuv ⟨f, hfs, hfu⟩ ⟨g, hgs, hgv⟩
   rcases exists_finset_piecewise_mem_of_mem_nhds (uo.mem_nhds hfu) g with ⟨I, hI⟩
   induction' I using Finset.induction_on with i I hi ihI
-  · refine' ⟨g, hgs, ⟨_, hgv⟩⟩
-    simpa using hI
+  · refine' ⟨g, hgs, ⟨_, hgv⟩⟩; simpa using hI
   · rw [Finset.piecewise_insert] at hI
     have := I.piecewise_mem_set_pi hfs hgs
     refine' (hsuv this).elim ihI fun h => _
@@ -751,10 +736,7 @@ theorem Sigma.isConnected_iff [∀ i, TopologicalSpace (π i)] {s : Set (Σi, π
   · obtain ⟨⟨i, x⟩, hx⟩ := hs.nonempty
     have : s ⊆ range (Sigma.mk i) :=
       by
-      have h : range (Sigma.mk i) = Sigma.fst ⁻¹' {i} :=
-        by
-        ext
-        simp
+      have h : range (Sigma.mk i) = Sigma.fst ⁻¹' {i} := by ext; simp
       rw [h]
       exact
         IsPreconnected.subset_left_of_subset_union (isOpen_sigma_fst_preimage _)
@@ -890,18 +872,14 @@ theorem connectedComponent_nonempty {x : α} : (connectedComponent x).Nonempty :
 
 #print connectedComponentIn_nonempty_iff /-
 theorem connectedComponentIn_nonempty_iff {x : α} {F : Set α} :
-    (connectedComponentIn F x).Nonempty ↔ x ∈ F :=
-  by
-  rw [connectedComponentIn]
+    (connectedComponentIn F x).Nonempty ↔ x ∈ F := by rw [connectedComponentIn];
   split_ifs <;> simp [connectedComponent_nonempty, h]
 #align connected_component_in_nonempty_iff connectedComponentIn_nonempty_iff
 -/
 
 #print connectedComponentIn_subset /-
-theorem connectedComponentIn_subset (F : Set α) (x : α) : connectedComponentIn F x ⊆ F :=
-  by
-  rw [connectedComponentIn]
-  split_ifs <;> simp
+theorem connectedComponentIn_subset (F : Set α) (x : α) : connectedComponentIn F x ⊆ F := by
+  rw [connectedComponentIn]; split_ifs <;> simp
 #align connected_component_in_subset connectedComponentIn_subset
 -/
 
@@ -951,10 +929,7 @@ theorem IsPreconnected.subset_connectedComponentIn {x : α} {F : Set α} (hs : I
     by
     refine' embedding_subtype_coe.to_inducing.is_preconnected_image.mp _
     rwa [Subtype.image_preimage_coe, inter_eq_left_iff_subset.mpr hsF]
-  have h2xs : (⟨x, hsF hxs⟩ : F) ∈ coe ⁻¹' s :=
-    by
-    rw [mem_preimage]
-    exact hxs
+  have h2xs : (⟨x, hsF hxs⟩ : F) ∈ coe ⁻¹' s := by rw [mem_preimage]; exact hxs
   have := this.subset_connected_component h2xs
   rw [connectedComponentIn_eq_image (hsF hxs)]
   refine' subset.trans _ (image_subset _ this)
@@ -1125,10 +1100,7 @@ theorem connectedSpace_iff_connectedComponent :
     exact
       ⟨x, eq_univ_of_univ_subset <| is_preconnected_univ.subset_connected_component (mem_univ x)⟩
   · rintro ⟨x, h⟩
-    haveI : PreconnectedSpace α :=
-      ⟨by
-        rw [← h]
-        exact isPreconnected_connectedComponent⟩
+    haveI : PreconnectedSpace α := ⟨by rw [← h]; exact isPreconnected_connectedComponent⟩
     exact ⟨⟨x⟩⟩
 #align connected_space_iff_connected_component connectedSpace_iff_connectedComponent
 -/
@@ -1142,16 +1114,8 @@ theorem preconnectedSpace_iff_connectedComponent :
     exact eq_univ_of_univ_subset <| is_preconnected_univ.subset_connected_component (mem_univ x)
   · intro h
     cases' isEmpty_or_nonempty α with hα hα
-    ·
-      exact
-        ⟨by
-          rw [univ_eq_empty_iff.mpr hα]
-          exact isPreconnected_empty⟩
-    ·
-      exact
-        ⟨by
-          rw [← h (Classical.choice hα)]
-          exact isPreconnected_connectedComponent⟩
+    · exact ⟨by rw [univ_eq_empty_iff.mpr hα]; exact isPreconnected_empty⟩
+    · exact ⟨by rw [← h (Classical.choice hα)]; exact isPreconnected_connectedComponent⟩
 #align preconnected_space_iff_connected_component preconnectedSpace_iff_connectedComponent
 -/
 
@@ -1165,18 +1129,14 @@ theorem PreconnectedSpace.connectedComponent_eq_univ {X : Type _} [TopologicalSp
 
 instance [TopologicalSpace β] [PreconnectedSpace α] [PreconnectedSpace β] :
     PreconnectedSpace (α × β) :=
-  ⟨by
-    rw [← univ_prod_univ]
-    exact is_preconnected_univ.prod is_preconnected_univ⟩
+  ⟨by rw [← univ_prod_univ]; exact is_preconnected_univ.prod is_preconnected_univ⟩
 
 instance [TopologicalSpace β] [ConnectedSpace α] [ConnectedSpace β] : ConnectedSpace (α × β) :=
   ⟨Prod.nonempty⟩
 
 instance [∀ i, TopologicalSpace (π i)] [∀ i, PreconnectedSpace (π i)] :
     PreconnectedSpace (∀ i, π i) :=
-  ⟨by
-    rw [← pi_univ univ]
-    exact isPreconnected_univ_pi fun i => is_preconnected_univ⟩
+  ⟨by rw [← pi_univ univ]; exact isPreconnected_univ_pi fun i => is_preconnected_univ⟩
 
 instance [∀ i, TopologicalSpace (π i)] [∀ i, ConnectedSpace (π i)] : ConnectedSpace (∀ i, π i) :=
   ⟨Classical.nonempty_pi.2 fun i => by infer_instance⟩
@@ -1305,10 +1265,8 @@ theorem isPreconnected_iff_subset_of_disjoint {s : Set α} :
     contrapose H
     apply nonempty.ne_empty
     cases h
-    · rcases hsv with ⟨x, hxs, hxv⟩
-      exact ⟨x, hxs, ⟨h hxs, hxv⟩⟩
-    · rcases hsu with ⟨x, hxs, hxu⟩
-      exact ⟨x, hxs, ⟨hxu, h hxs⟩⟩
+    · rcases hsv with ⟨x, hxs, hxv⟩; exact ⟨x, hxs, ⟨h hxs, hxv⟩⟩
+    · rcases hsu with ⟨x, hxs, hxu⟩; exact ⟨x, hxs, ⟨hxu, h hxs⟩⟩
 #align is_preconnected_iff_subset_of_disjoint isPreconnected_iff_subset_of_disjoint
 
 /- warning: is_connected_iff_sUnion_disjoint_open -> isConnected_iff_sUnion_disjoint_open is a dubious translation:
@@ -1327,26 +1285,21 @@ theorem isConnected_iff_sUnion_disjoint_open {s : Set α} :
   by
   rw [IsConnected, isPreconnected_iff_subset_of_disjoint]
   constructor <;> intro h
-  · intro U
-    apply Finset.induction_on U
+  · intro U; apply Finset.induction_on U
     · rcases h.left with ⟨⟩
       suffices s ⊆ ∅ → False by simpa
-      intro
-      solve_by_elim
+      intro ; solve_by_elim
     · intro u U hu IH hs hU H
       rw [Finset.coe_insert, sUnion_insert] at H
       cases' h.2 u (⋃₀ ↑U) _ _ H _ with hsu hsU
       · exact ⟨u, Finset.mem_insert_self _ _, hsu⟩
       · rcases IH _ _ hsU with ⟨v, hvU, hsv⟩
         · exact ⟨v, Finset.mem_insert_of_mem hvU, hsv⟩
-        · intros
-          apply hs <;> solve_by_elim [Finset.mem_insert_of_mem]
-        · intros
-          solve_by_elim [Finset.mem_insert_of_mem]
+        · intros ; apply hs <;> solve_by_elim [Finset.mem_insert_of_mem]
+        · intros ; solve_by_elim [Finset.mem_insert_of_mem]
       · solve_by_elim [Finset.mem_insert_self]
       · apply isOpen_sUnion
-        intros
-        solve_by_elim [Finset.mem_insert_of_mem]
+        intros ; solve_by_elim [Finset.mem_insert_of_mem]
       · apply eq_empty_of_subset_empty
         rintro x ⟨hxs, hxu, hxU⟩
         rw [mem_sUnion] at hxU
@@ -1356,8 +1309,7 @@ theorem isConnected_iff_sUnion_disjoint_open {s : Set α} :
         · exact ⟨x, hxs, hxu, hxv⟩
   · constructor
     · rw [nonempty_iff_ne_empty]
-      by_contra hs
-      subst hs
+      by_contra hs; subst hs
       simpa using h ∅ _ _ _ <;> simp
     intro u v hu hv hs hsuv
     rcases h {u, v} _ _ _ with ⟨t, ht, ht'⟩
@@ -1368,8 +1320,7 @@ theorem isConnected_iff_sUnion_disjoint_open {s : Set α} :
       rw [Finset.mem_insert, Finset.mem_singleton] at ht₁ ht₂
       rcases ht₁ with (rfl | rfl) <;> rcases ht₂ with (rfl | rfl)
       all_goals first |rfl|contradiction|skip
-      rw [inter_comm t₁] at hst
-      contradiction
+      rw [inter_comm t₁] at hst; contradiction
     · intro t
       rw [Finset.mem_insert, Finset.mem_singleton]
       rintro (rfl | rfl) <;> assumption
@@ -1437,10 +1388,8 @@ theorem isPreconnected_iff_subset_of_disjoint_closed :
     contrapose H
     apply nonempty.ne_empty
     cases h
-    · rcases hsv with ⟨x, hxs, hxv⟩
-      exact ⟨x, hxs, ⟨h hxs, hxv⟩⟩
-    · rcases hsu with ⟨x, hxs, hxu⟩
-      exact ⟨x, hxs, ⟨hxu, h hxs⟩⟩
+    · rcases hsv with ⟨x, hxs, hxv⟩; exact ⟨x, hxs, ⟨h hxs, hxv⟩⟩
+    · rcases hsu with ⟨x, hxs, hxu⟩; exact ⟨x, hxs, ⟨hxu, h hxs⟩⟩
 #align is_preconnected_iff_subset_of_disjoint_closed isPreconnected_iff_subset_of_disjoint_closed
 
 /- warning: is_preconnected_iff_subset_of_fully_disjoint_closed -> isPreconnected_iff_subset_of_fully_disjoint_closed is a dubious translation:
@@ -1568,10 +1517,8 @@ theorem preimage_connectedComponent_connected [TopologicalSpace β] {f : α →
     intro t' ht'
     rw [mem_union t' T₁ T₂]
     cases' fiber_decomp t' ht' with htu htv
-    · left
-      exact ⟨ht', htu⟩
-    right
-    exact ⟨ht', htv⟩
+    · left; exact ⟨ht', htu⟩
+    right; exact ⟨ht', htv⟩
   have T_disjoint : Disjoint T₁ T₂ :=
     by
     refine' Disjoint.of_preimage hf _
@@ -2200,9 +2147,7 @@ theorem Continuous.connectedComponentsLift_unique (h : Continuous f) (g : Connec
 /-- The preimage of a singleton in `connected_components` is the connected component
 of an element in the equivalence class. -/
 theorem connectedComponents_preimage_singleton {x : α} :
-    coe ⁻¹' ({x} : Set (ConnectedComponents α)) = connectedComponent x :=
-  by
-  ext y
+    coe ⁻¹' ({x} : Set (ConnectedComponents α)) = connectedComponent x := by ext y;
   simp [ConnectedComponents.coe_eq_coe']
 #align connected_components_preimage_singleton connectedComponents_preimage_singleton
 -/
@@ -2324,9 +2269,7 @@ theorem IsPreconnected.constant_of_mapsTo [TopologicalSpace β] {S : Set α} (hS
     {x y : α} (hx : x ∈ S) (hy : y ∈ S) : f x = f y :=
   by
   let F : S → T := fun x : S => ⟨f x.val, hTm x.property⟩
-  suffices F ⟨x, hx⟩ = F ⟨y, hy⟩ by
-    rw [← Subtype.coe_inj] at this
-    exact this
+  suffices F ⟨x, hx⟩ = F ⟨y, hy⟩ by rw [← Subtype.coe_inj] at this; exact this
   exact
     (is_preconnected_iff_preconnected_space.mp hS).constant
       (continuous_induced_rng.mpr <| continuous_on_iff_continuous_restrict.mp hc)
Diff
@@ -1218,7 +1218,7 @@ theorem isClopen_iff [PreconnectedSpace α] {s : Set α} : IsClopen s ↔ s = 
         nonempty_inter hs.1 hs.2.isOpen_compl (union_compl_self s) (nonempty_iff_ne_empty.2 h1.1)
           (nonempty_iff_ne_empty.2 h1.2)
       h3 h2,
-    by rintro (rfl | rfl) <;> [exact isClopen_empty, exact isClopen_univ]⟩
+    by rintro (rfl | rfl) <;> [exact isClopen_empty;exact isClopen_univ]⟩
 #align is_clopen_iff isClopen_iff
 -/
 
Diff
@@ -165,27 +165,27 @@ theorem isPreconnected_of_forall_pair {s : Set α}
   exacts[isPreconnected_empty, isPreconnected_of_forall x fun y => H x hx y]
 #align is_preconnected_of_forall_pair isPreconnected_of_forall_pair
 
-#print isPreconnected_unionₛ /-
+#print isPreconnected_sUnion /-
 /-- A union of a family of preconnected sets with a common point is preconnected as well. -/
-theorem isPreconnected_unionₛ (x : α) (c : Set (Set α)) (H1 : ∀ s ∈ c, x ∈ s)
+theorem isPreconnected_sUnion (x : α) (c : Set (Set α)) (H1 : ∀ s ∈ c, x ∈ s)
     (H2 : ∀ s ∈ c, IsPreconnected s) : IsPreconnected (⋃₀ c) :=
   by
   apply isPreconnected_of_forall x
   rintro y ⟨s, sc, ys⟩
   exact ⟨s, subset_sUnion_of_mem sc, H1 s sc, ys, H2 s sc⟩
-#align is_preconnected_sUnion isPreconnected_unionₛ
+#align is_preconnected_sUnion isPreconnected_sUnion
 -/
 
-/- warning: is_preconnected_Union -> isPreconnected_unionᵢ is a dubious translation:
+/- warning: is_preconnected_Union -> isPreconnected_iUnion is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, (Set.Nonempty.{u1} α (Set.interᵢ.{u1, u2} α ι (fun (i : ι) => s i))) -> (forall (i : ι), IsPreconnected.{u1} α _inst_1 (s i)) -> (IsPreconnected.{u1} α _inst_1 (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => s i)))
+  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {ι : Sort.{u2}} {s : ι -> (Set.{u1} α)}, (Set.Nonempty.{u1} α (Set.iInter.{u1, u2} α ι (fun (i : ι) => s i))) -> (forall (i : ι), IsPreconnected.{u1} α _inst_1 (s i)) -> (IsPreconnected.{u1} α _inst_1 (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)))
 but is expected to have type
-  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)}, (Set.Nonempty.{u2} α (Set.interᵢ.{u2, u1} α ι (fun (i : ι) => s i))) -> (forall (i : ι), IsPreconnected.{u2} α _inst_1 (s i)) -> (IsPreconnected.{u2} α _inst_1 (Set.unionᵢ.{u2, u1} α ι (fun (i : ι) => s i)))
-Case conversion may be inaccurate. Consider using '#align is_preconnected_Union isPreconnected_unionᵢₓ'. -/
-theorem isPreconnected_unionᵢ {ι : Sort _} {s : ι → Set α} (h₁ : (⋂ i, s i).Nonempty)
+  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {ι : Sort.{u1}} {s : ι -> (Set.{u2} α)}, (Set.Nonempty.{u2} α (Set.iInter.{u2, u1} α ι (fun (i : ι) => s i))) -> (forall (i : ι), IsPreconnected.{u2} α _inst_1 (s i)) -> (IsPreconnected.{u2} α _inst_1 (Set.iUnion.{u2, u1} α ι (fun (i : ι) => s i)))
+Case conversion may be inaccurate. Consider using '#align is_preconnected_Union isPreconnected_iUnionₓ'. -/
+theorem isPreconnected_iUnion {ι : Sort _} {s : ι → Set α} (h₁ : (⋂ i, s i).Nonempty)
     (h₂ : ∀ i, IsPreconnected (s i)) : IsPreconnected (⋃ i, s i) :=
-  Exists.elim h₁ fun f hf => isPreconnected_unionₛ f _ hf (forall_range_iff.2 h₂)
-#align is_preconnected_Union isPreconnected_unionᵢ
+  Exists.elim h₁ fun f hf => isPreconnected_sUnion f _ hf (forall_range_iff.2 h₂)
+#align is_preconnected_Union isPreconnected_iUnion
 
 /- warning: is_preconnected.union -> IsPreconnected.union is a dubious translation:
 lean 3 declaration is
@@ -195,8 +195,8 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align is_preconnected.union IsPreconnected.unionₓ'. -/
 theorem IsPreconnected.union (x : α) {s t : Set α} (H1 : x ∈ s) (H2 : x ∈ t) (H3 : IsPreconnected s)
     (H4 : IsPreconnected t) : IsPreconnected (s ∪ t) :=
-  unionₛ_pair s t ▸
-    isPreconnected_unionₛ x {s, t} (by rintro r (rfl | rfl | h) <;> assumption)
+  sUnion_pair s t ▸
+    isPreconnected_sUnion x {s, t} (by rintro r (rfl | rfl | h) <;> assumption)
       (by rintro r (rfl | rfl | h) <;> assumption)
 #align is_preconnected.union IsPreconnected.union
 
@@ -229,9 +229,9 @@ theorem IsConnected.union {s t : Set α} (H : (s ∩ t).Nonempty) (Hs : IsConnec
       Ht.is_preconnected
 #align is_connected.union IsConnected.union
 
-#print IsPreconnected.unionₛ_directed /-
+#print IsPreconnected.sUnion_directed /-
 /-- The directed sUnion of a set S of preconnected subsets is preconnected. -/
-theorem IsPreconnected.unionₛ_directed {S : Set (Set α)} (K : DirectedOn (· ⊆ ·) S)
+theorem IsPreconnected.sUnion_directed {S : Set (Set α)} (K : DirectedOn (· ⊆ ·) S)
     (H : ∀ s ∈ S, IsPreconnected s) : IsPreconnected (⋃₀ S) :=
   by
   rintro u v hu hv Huv ⟨a, ⟨s, hsS, has⟩, hau⟩ ⟨b, ⟨t, htS, hbt⟩, hbv⟩
@@ -240,21 +240,21 @@ theorem IsPreconnected.unionₛ_directed {S : Set (Set α)} (K : DirectedOn (·
     H _ hrS u v hu hv ((subset_sUnion_of_mem hrS).trans Huv) ⟨a, hsr has, hau⟩ ⟨b, htr hbt, hbv⟩
   have Kruv : r ∩ (u ∩ v) ⊆ ⋃₀ S ∩ (u ∩ v) := inter_subset_inter_left _ (subset_sUnion_of_mem hrS)
   exact Hnuv.mono Kruv
-#align is_preconnected.sUnion_directed IsPreconnected.unionₛ_directed
+#align is_preconnected.sUnion_directed IsPreconnected.sUnion_directed
 -/
 
-/- warning: is_preconnected.bUnion_of_refl_trans_gen -> IsPreconnected.bunionᵢ_of_reflTransGen is a dubious translation:
+/- warning: is_preconnected.bUnion_of_refl_trans_gen -> IsPreconnected.biUnion_of_reflTransGen is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {ι : Type.{u2}} {t : Set.{u2} ι} {s : ι -> (Set.{u1} α)}, (forall (i : ι), (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) -> (IsPreconnected.{u1} α _inst_1 (s i))) -> (forall (i : ι), (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) -> (forall (j : ι), (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) j t) -> (Relation.ReflTransGen.{u2} ι (fun (i : ι) (j : ι) => And (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s i) (s j))) (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t)) i j))) -> (IsPreconnected.{u1} α _inst_1 (Set.unionᵢ.{u1, succ u2} α ι (fun (n : ι) => Set.unionᵢ.{u1, 0} α (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) n t) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) n t) => s n))))
+  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {ι : Type.{u2}} {t : Set.{u2} ι} {s : ι -> (Set.{u1} α)}, (forall (i : ι), (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) -> (IsPreconnected.{u1} α _inst_1 (s i))) -> (forall (i : ι), (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) -> (forall (j : ι), (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) j t) -> (Relation.ReflTransGen.{u2} ι (fun (i : ι) (j : ι) => And (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s i) (s j))) (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t)) i j))) -> (IsPreconnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α ι (fun (n : ι) => Set.iUnion.{u1, 0} α (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) n t) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) n t) => s n))))
 but is expected to have type
-  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {ι : Type.{u1}} {t : Set.{u1} ι} {s : ι -> (Set.{u2} α)}, (forall (i : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t) -> (IsPreconnected.{u2} α _inst_1 (s i))) -> (forall (i : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t) -> (forall (j : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) j t) -> (Relation.ReflTransGen.{u1} ι (fun (i : ι) (j : ι) => And (Set.Nonempty.{u2} α (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (s i) (s j))) (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t)) i j))) -> (IsPreconnected.{u2} α _inst_1 (Set.unionᵢ.{u2, succ u1} α ι (fun (n : ι) => Set.unionᵢ.{u2, 0} α (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) n t) (fun (H : Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) n t) => s n))))
-Case conversion may be inaccurate. Consider using '#align is_preconnected.bUnion_of_refl_trans_gen IsPreconnected.bunionᵢ_of_reflTransGenₓ'. -/
+  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {ι : Type.{u1}} {t : Set.{u1} ι} {s : ι -> (Set.{u2} α)}, (forall (i : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t) -> (IsPreconnected.{u2} α _inst_1 (s i))) -> (forall (i : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t) -> (forall (j : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) j t) -> (Relation.ReflTransGen.{u1} ι (fun (i : ι) (j : ι) => And (Set.Nonempty.{u2} α (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (s i) (s j))) (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t)) i j))) -> (IsPreconnected.{u2} α _inst_1 (Set.iUnion.{u2, succ u1} α ι (fun (n : ι) => Set.iUnion.{u2, 0} α (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) n t) (fun (H : Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) n t) => s n))))
+Case conversion may be inaccurate. Consider using '#align is_preconnected.bUnion_of_refl_trans_gen IsPreconnected.biUnion_of_reflTransGenₓ'. -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i j «expr ∈ » t) -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (p «expr ⊆ » t) -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i j «expr ∈ » t) -/
 /-- The bUnion of a family of preconnected sets is preconnected if the graph determined by
 whether two sets intersect is preconnected. -/
-theorem IsPreconnected.bunionᵢ_of_reflTransGen {ι : Type _} {t : Set ι} {s : ι → Set α}
+theorem IsPreconnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : ι → Set α}
     (H : ∀ i ∈ t, IsPreconnected (s i))
     (K :
       ∀ (i) (_ : i ∈ t) (j) (_ : j ∈ t),
@@ -287,58 +287,58 @@ theorem IsPreconnected.bunionᵢ_of_reflTransGen {ι : Type _} {t : Set ι} {s :
   obtain ⟨j : ι, hj : j ∈ t, hyj : y ∈ s j⟩ := mem_Union₂.1 hy
   obtain ⟨p, hpt, hip, hjp, hp⟩ := P i hi j hj (K i hi j hj)
   exact ⟨⋃ j ∈ p, s j, bUnion_subset_bUnion_left hpt, mem_bUnion hip hxi, mem_bUnion hjp hyj, hp⟩
-#align is_preconnected.bUnion_of_refl_trans_gen IsPreconnected.bunionᵢ_of_reflTransGen
+#align is_preconnected.bUnion_of_refl_trans_gen IsPreconnected.biUnion_of_reflTransGen
 
-/- warning: is_connected.bUnion_of_refl_trans_gen -> IsConnected.bunionᵢ_of_reflTransGen is a dubious translation:
+/- warning: is_connected.bUnion_of_refl_trans_gen -> IsConnected.biUnion_of_reflTransGen is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {ι : Type.{u2}} {t : Set.{u2} ι} {s : ι -> (Set.{u1} α)}, (Set.Nonempty.{u2} ι t) -> (forall (i : ι), (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) -> (IsConnected.{u1} α _inst_1 (s i))) -> (forall (i : ι), (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) -> (forall (j : ι), (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) j t) -> (Relation.ReflTransGen.{u2} ι (fun (i : ι) (j : ι) => And (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s i) (s j))) (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t)) i j))) -> (IsConnected.{u1} α _inst_1 (Set.unionᵢ.{u1, succ u2} α ι (fun (n : ι) => Set.unionᵢ.{u1, 0} α (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) n t) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) n t) => s n))))
+  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {ι : Type.{u2}} {t : Set.{u2} ι} {s : ι -> (Set.{u1} α)}, (Set.Nonempty.{u2} ι t) -> (forall (i : ι), (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) -> (IsConnected.{u1} α _inst_1 (s i))) -> (forall (i : ι), (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t) -> (forall (j : ι), (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) j t) -> (Relation.ReflTransGen.{u2} ι (fun (i : ι) (j : ι) => And (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s i) (s j))) (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i t)) i j))) -> (IsConnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α ι (fun (n : ι) => Set.iUnion.{u1, 0} α (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) n t) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) n t) => s n))))
 but is expected to have type
-  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {ι : Type.{u1}} {t : Set.{u1} ι} {s : ι -> (Set.{u2} α)}, (Set.Nonempty.{u1} ι t) -> (forall (i : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t) -> (IsConnected.{u2} α _inst_1 (s i))) -> (forall (i : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t) -> (forall (j : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) j t) -> (Relation.ReflTransGen.{u1} ι (fun (i : ι) (j : ι) => And (Set.Nonempty.{u2} α (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (s i) (s j))) (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t)) i j))) -> (IsConnected.{u2} α _inst_1 (Set.unionᵢ.{u2, succ u1} α ι (fun (n : ι) => Set.unionᵢ.{u2, 0} α (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) n t) (fun (H : Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) n t) => s n))))
-Case conversion may be inaccurate. Consider using '#align is_connected.bUnion_of_refl_trans_gen IsConnected.bunionᵢ_of_reflTransGenₓ'. -/
+  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {ι : Type.{u1}} {t : Set.{u1} ι} {s : ι -> (Set.{u2} α)}, (Set.Nonempty.{u1} ι t) -> (forall (i : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t) -> (IsConnected.{u2} α _inst_1 (s i))) -> (forall (i : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t) -> (forall (j : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) j t) -> (Relation.ReflTransGen.{u1} ι (fun (i : ι) (j : ι) => And (Set.Nonempty.{u2} α (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (s i) (s j))) (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t)) i j))) -> (IsConnected.{u2} α _inst_1 (Set.iUnion.{u2, succ u1} α ι (fun (n : ι) => Set.iUnion.{u2, 0} α (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) n t) (fun (H : Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) n t) => s n))))
+Case conversion may be inaccurate. Consider using '#align is_connected.bUnion_of_refl_trans_gen IsConnected.biUnion_of_reflTransGenₓ'. -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i j «expr ∈ » t) -/
 /-- The bUnion of a family of preconnected sets is preconnected if the graph determined by
 whether two sets intersect is preconnected. -/
-theorem IsConnected.bunionᵢ_of_reflTransGen {ι : Type _} {t : Set ι} {s : ι → Set α}
+theorem IsConnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : ι → Set α}
     (ht : t.Nonempty) (H : ∀ i ∈ t, IsConnected (s i))
     (K :
       ∀ (i) (_ : i ∈ t) (j) (_ : j ∈ t),
         ReflTransGen (fun i j : ι => (s i ∩ s j).Nonempty ∧ i ∈ t) i j) :
     IsConnected (⋃ n ∈ t, s n) :=
-  ⟨nonempty_bunionᵢ.2 <| ⟨ht.some, ht.some_mem, (H _ ht.some_mem).Nonempty⟩,
-    IsPreconnected.bunionᵢ_of_reflTransGen (fun i hi => (H i hi).IsPreconnected) K⟩
-#align is_connected.bUnion_of_refl_trans_gen IsConnected.bunionᵢ_of_reflTransGen
+  ⟨nonempty_biUnion.2 <| ⟨ht.some, ht.some_mem, (H _ ht.some_mem).Nonempty⟩,
+    IsPreconnected.biUnion_of_reflTransGen (fun i hi => (H i hi).IsPreconnected) K⟩
+#align is_connected.bUnion_of_refl_trans_gen IsConnected.biUnion_of_reflTransGen
 
-/- warning: is_preconnected.Union_of_refl_trans_gen -> IsPreconnected.unionᵢ_of_reflTransGen is a dubious translation:
+/- warning: is_preconnected.Union_of_refl_trans_gen -> IsPreconnected.iUnion_of_reflTransGen is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {ι : Type.{u2}} {s : ι -> (Set.{u1} α)}, (forall (i : ι), IsPreconnected.{u1} α _inst_1 (s i)) -> (forall (i : ι) (j : ι), Relation.ReflTransGen.{u2} ι (fun (i : ι) (j : ι) => Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s i) (s j))) i j) -> (IsPreconnected.{u1} α _inst_1 (Set.unionᵢ.{u1, succ u2} α ι (fun (n : ι) => s n)))
+  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {ι : Type.{u2}} {s : ι -> (Set.{u1} α)}, (forall (i : ι), IsPreconnected.{u1} α _inst_1 (s i)) -> (forall (i : ι) (j : ι), Relation.ReflTransGen.{u2} ι (fun (i : ι) (j : ι) => Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s i) (s j))) i j) -> (IsPreconnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α ι (fun (n : ι) => s n)))
 but is expected to have type
-  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {ι : Type.{u1}} {s : ι -> (Set.{u2} α)}, (forall (i : ι), IsPreconnected.{u2} α _inst_1 (s i)) -> (forall (i : ι) (j : ι), Relation.ReflTransGen.{u1} ι (fun (i : ι) (j : ι) => Set.Nonempty.{u2} α (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (s i) (s j))) i j) -> (IsPreconnected.{u2} α _inst_1 (Set.unionᵢ.{u2, succ u1} α ι (fun (n : ι) => s n)))
-Case conversion may be inaccurate. Consider using '#align is_preconnected.Union_of_refl_trans_gen IsPreconnected.unionᵢ_of_reflTransGenₓ'. -/
+  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {ι : Type.{u1}} {s : ι -> (Set.{u2} α)}, (forall (i : ι), IsPreconnected.{u2} α _inst_1 (s i)) -> (forall (i : ι) (j : ι), Relation.ReflTransGen.{u1} ι (fun (i : ι) (j : ι) => Set.Nonempty.{u2} α (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (s i) (s j))) i j) -> (IsPreconnected.{u2} α _inst_1 (Set.iUnion.{u2, succ u1} α ι (fun (n : ι) => s n)))
+Case conversion may be inaccurate. Consider using '#align is_preconnected.Union_of_refl_trans_gen IsPreconnected.iUnion_of_reflTransGenₓ'. -/
 /-- Preconnectedness of the Union of a family of preconnected sets
 indexed by the vertices of a preconnected graph,
 where two vertices are joined when the corresponding sets intersect. -/
-theorem IsPreconnected.unionᵢ_of_reflTransGen {ι : Type _} {s : ι → Set α}
+theorem IsPreconnected.iUnion_of_reflTransGen {ι : Type _} {s : ι → Set α}
     (H : ∀ i, IsPreconnected (s i))
     (K : ∀ i j, ReflTransGen (fun i j : ι => (s i ∩ s j).Nonempty) i j) :
     IsPreconnected (⋃ n, s n) := by
   rw [← bUnion_univ]
   exact
-    IsPreconnected.bunionᵢ_of_reflTransGen (fun i _ => H i) fun i _ j _ => by
+    IsPreconnected.biUnion_of_reflTransGen (fun i _ => H i) fun i _ j _ => by
       simpa [mem_univ] using K i j
-#align is_preconnected.Union_of_refl_trans_gen IsPreconnected.unionᵢ_of_reflTransGen
+#align is_preconnected.Union_of_refl_trans_gen IsPreconnected.iUnion_of_reflTransGen
 
-/- warning: is_connected.Union_of_refl_trans_gen -> IsConnected.unionᵢ_of_reflTransGen is a dubious translation:
+/- warning: is_connected.Union_of_refl_trans_gen -> IsConnected.iUnion_of_reflTransGen is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {ι : Type.{u2}} [_inst_2 : Nonempty.{succ u2} ι] {s : ι -> (Set.{u1} α)}, (forall (i : ι), IsConnected.{u1} α _inst_1 (s i)) -> (forall (i : ι) (j : ι), Relation.ReflTransGen.{u2} ι (fun (i : ι) (j : ι) => Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s i) (s j))) i j) -> (IsConnected.{u1} α _inst_1 (Set.unionᵢ.{u1, succ u2} α ι (fun (n : ι) => s n)))
+  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {ι : Type.{u2}} [_inst_2 : Nonempty.{succ u2} ι] {s : ι -> (Set.{u1} α)}, (forall (i : ι), IsConnected.{u1} α _inst_1 (s i)) -> (forall (i : ι) (j : ι), Relation.ReflTransGen.{u2} ι (fun (i : ι) (j : ι) => Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s i) (s j))) i j) -> (IsConnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α ι (fun (n : ι) => s n)))
 but is expected to have type
-  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {ι : Type.{u1}} [_inst_2 : Nonempty.{succ u1} ι] {s : ι -> (Set.{u2} α)}, (forall (i : ι), IsConnected.{u2} α _inst_1 (s i)) -> (forall (i : ι) (j : ι), Relation.ReflTransGen.{u1} ι (fun (i : ι) (j : ι) => Set.Nonempty.{u2} α (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (s i) (s j))) i j) -> (IsConnected.{u2} α _inst_1 (Set.unionᵢ.{u2, succ u1} α ι (fun (n : ι) => s n)))
-Case conversion may be inaccurate. Consider using '#align is_connected.Union_of_refl_trans_gen IsConnected.unionᵢ_of_reflTransGenₓ'. -/
-theorem IsConnected.unionᵢ_of_reflTransGen {ι : Type _} [Nonempty ι] {s : ι → Set α}
+  forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {ι : Type.{u1}} [_inst_2 : Nonempty.{succ u1} ι] {s : ι -> (Set.{u2} α)}, (forall (i : ι), IsConnected.{u2} α _inst_1 (s i)) -> (forall (i : ι) (j : ι), Relation.ReflTransGen.{u1} ι (fun (i : ι) (j : ι) => Set.Nonempty.{u2} α (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (s i) (s j))) i j) -> (IsConnected.{u2} α _inst_1 (Set.iUnion.{u2, succ u1} α ι (fun (n : ι) => s n)))
+Case conversion may be inaccurate. Consider using '#align is_connected.Union_of_refl_trans_gen IsConnected.iUnion_of_reflTransGenₓ'. -/
+theorem IsConnected.iUnion_of_reflTransGen {ι : Type _} [Nonempty ι] {s : ι → Set α}
     (H : ∀ i, IsConnected (s i))
     (K : ∀ i j, ReflTransGen (fun i j : ι => (s i ∩ s j).Nonempty) i j) : IsConnected (⋃ n, s n) :=
-  ⟨nonempty_unionᵢ.2 <| Nonempty.elim ‹_› fun i : ι => ⟨i, (H _).Nonempty⟩,
-    IsPreconnected.unionᵢ_of_reflTransGen (fun i => (H i).IsPreconnected) K⟩
-#align is_connected.Union_of_refl_trans_gen IsConnected.unionᵢ_of_reflTransGen
+  ⟨nonempty_iUnion.2 <| Nonempty.elim ‹_› fun i : ι => ⟨i, (H _).Nonempty⟩,
+    IsPreconnected.iUnion_of_reflTransGen (fun i => (H i).IsPreconnected) K⟩
+#align is_connected.Union_of_refl_trans_gen IsConnected.iUnion_of_reflTransGen
 
 section SuccOrder
 
@@ -346,49 +346,49 @@ open Order
 
 variable [LinearOrder β] [SuccOrder β] [IsSuccArchimedean β]
 
-/- warning: is_preconnected.Union_of_chain -> IsPreconnected.unionᵢ_of_chain is a dubious translation:
+/- warning: is_preconnected.Union_of_chain -> IsPreconnected.iUnion_of_chain is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3] {s : β -> (Set.{u1} α)}, (forall (n : β), IsPreconnected.{u1} α _inst_1 (s n)) -> (forall (n : β), Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3 n)))) -> (IsPreconnected.{u1} α _inst_1 (Set.unionᵢ.{u1, succ u2} α β (fun (n : β) => s n)))
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3] {s : β -> (Set.{u1} α)}, (forall (n : β), IsPreconnected.{u1} α _inst_1 (s n)) -> (forall (n : β), Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3 n)))) -> (IsPreconnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α β (fun (n : β) => s n)))
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2)))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3] {s : β -> (Set.{u1} α)}, (forall (n : β), IsPreconnected.{u1} α _inst_1 (s n)) -> (forall (n : β), Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3 n)))) -> (IsPreconnected.{u1} α _inst_1 (Set.unionᵢ.{u1, succ u2} α β (fun (n : β) => s n)))
-Case conversion may be inaccurate. Consider using '#align is_preconnected.Union_of_chain IsPreconnected.unionᵢ_of_chainₓ'. -/
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2)))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3] {s : β -> (Set.{u1} α)}, (forall (n : β), IsPreconnected.{u1} α _inst_1 (s n)) -> (forall (n : β), Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3 n)))) -> (IsPreconnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α β (fun (n : β) => s n)))
+Case conversion may be inaccurate. Consider using '#align is_preconnected.Union_of_chain IsPreconnected.iUnion_of_chainₓ'. -/
 /-- The Union of connected sets indexed by a type with an archimedean successor (like `ℕ` or `ℤ`)
   such that any two neighboring sets meet is preconnected. -/
-theorem IsPreconnected.unionᵢ_of_chain {s : β → Set α} (H : ∀ n, IsPreconnected (s n))
+theorem IsPreconnected.iUnion_of_chain {s : β → Set α} (H : ∀ n, IsPreconnected (s n))
     (K : ∀ n, (s n ∩ s (succ n)).Nonempty) : IsPreconnected (⋃ n, s n) :=
-  IsPreconnected.unionᵢ_of_reflTransGen H fun i j =>
+  IsPreconnected.iUnion_of_reflTransGen H fun i j =>
     reflTransGen_of_succ _ (fun i _ => K i) fun i _ =>
       by
       rw [inter_comm]
       exact K i
-#align is_preconnected.Union_of_chain IsPreconnected.unionᵢ_of_chain
+#align is_preconnected.Union_of_chain IsPreconnected.iUnion_of_chain
 
-/- warning: is_connected.Union_of_chain -> IsConnected.unionᵢ_of_chain is a dubious translation:
+/- warning: is_connected.Union_of_chain -> IsConnected.iUnion_of_chain is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3] [_inst_5 : Nonempty.{succ u2} β] {s : β -> (Set.{u1} α)}, (forall (n : β), IsConnected.{u1} α _inst_1 (s n)) -> (forall (n : β), Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3 n)))) -> (IsConnected.{u1} α _inst_1 (Set.unionᵢ.{u1, succ u2} α β (fun (n : β) => s n)))
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3] [_inst_5 : Nonempty.{succ u2} β] {s : β -> (Set.{u1} α)}, (forall (n : β), IsConnected.{u1} α _inst_1 (s n)) -> (forall (n : β), Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3 n)))) -> (IsConnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α β (fun (n : β) => s n)))
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2)))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3] [_inst_5 : Nonempty.{succ u2} β] {s : β -> (Set.{u1} α)}, (forall (n : β), IsConnected.{u1} α _inst_1 (s n)) -> (forall (n : β), Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3 n)))) -> (IsConnected.{u1} α _inst_1 (Set.unionᵢ.{u1, succ u2} α β (fun (n : β) => s n)))
-Case conversion may be inaccurate. Consider using '#align is_connected.Union_of_chain IsConnected.unionᵢ_of_chainₓ'. -/
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2)))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3] [_inst_5 : Nonempty.{succ u2} β] {s : β -> (Set.{u1} α)}, (forall (n : β), IsConnected.{u1} α _inst_1 (s n)) -> (forall (n : β), Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3 n)))) -> (IsConnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α β (fun (n : β) => s n)))
+Case conversion may be inaccurate. Consider using '#align is_connected.Union_of_chain IsConnected.iUnion_of_chainₓ'. -/
 /-- The Union of connected sets indexed by a type with an archimedean successor (like `ℕ` or `ℤ`)
   such that any two neighboring sets meet is connected. -/
-theorem IsConnected.unionᵢ_of_chain [Nonempty β] {s : β → Set α} (H : ∀ n, IsConnected (s n))
+theorem IsConnected.iUnion_of_chain [Nonempty β] {s : β → Set α} (H : ∀ n, IsConnected (s n))
     (K : ∀ n, (s n ∩ s (succ n)).Nonempty) : IsConnected (⋃ n, s n) :=
-  IsConnected.unionᵢ_of_reflTransGen H fun i j =>
+  IsConnected.iUnion_of_reflTransGen H fun i j =>
     reflTransGen_of_succ _ (fun i _ => K i) fun i _ =>
       by
       rw [inter_comm]
       exact K i
-#align is_connected.Union_of_chain IsConnected.unionᵢ_of_chain
+#align is_connected.Union_of_chain IsConnected.iUnion_of_chain
 
-/- warning: is_preconnected.bUnion_of_chain -> IsPreconnected.bunionᵢ_of_chain is a dubious translation:
+/- warning: is_preconnected.bUnion_of_chain -> IsPreconnected.biUnion_of_chain is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3] {s : β -> (Set.{u1} α)} {t : Set.{u2} β}, (Set.OrdConnected.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) t) -> (forall (n : β), (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) -> (IsPreconnected.{u1} α _inst_1 (s n))) -> (forall (n : β), (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) -> (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3 n) t) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3 n))))) -> (IsPreconnected.{u1} α _inst_1 (Set.unionᵢ.{u1, succ u2} α β (fun (n : β) => Set.unionᵢ.{u1, 0} α (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) (fun (H : Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) => s n))))
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3] {s : β -> (Set.{u1} α)} {t : Set.{u2} β}, (Set.OrdConnected.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) t) -> (forall (n : β), (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) -> (IsPreconnected.{u1} α _inst_1 (s n))) -> (forall (n : β), (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) -> (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3 n) t) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3 n))))) -> (IsPreconnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α β (fun (n : β) => Set.iUnion.{u1, 0} α (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) (fun (H : Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) => s n))))
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2)))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3] {s : β -> (Set.{u1} α)} {t : Set.{u2} β}, (Set.OrdConnected.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) t) -> (forall (n : β), (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) -> (IsPreconnected.{u1} α _inst_1 (s n))) -> (forall (n : β), (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) -> (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3 n) t) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3 n))))) -> (IsPreconnected.{u1} α _inst_1 (Set.unionᵢ.{u1, succ u2} α β (fun (n : β) => Set.unionᵢ.{u1, 0} α (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) (fun (H : Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) => s n))))
-Case conversion may be inaccurate. Consider using '#align is_preconnected.bUnion_of_chain IsPreconnected.bunionᵢ_of_chainₓ'. -/
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2)))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3] {s : β -> (Set.{u1} α)} {t : Set.{u2} β}, (Set.OrdConnected.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) t) -> (forall (n : β), (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) -> (IsPreconnected.{u1} α _inst_1 (s n))) -> (forall (n : β), (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) -> (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3 n) t) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3 n))))) -> (IsPreconnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α β (fun (n : β) => Set.iUnion.{u1, 0} α (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) (fun (H : Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) => s n))))
+Case conversion may be inaccurate. Consider using '#align is_preconnected.bUnion_of_chain IsPreconnected.biUnion_of_chainₓ'. -/
 /-- The Union of preconnected sets indexed by a subset of a type with an archimedean successor
   (like `ℕ` or `ℤ`) such that any two neighboring sets meet is preconnected. -/
-theorem IsPreconnected.bunionᵢ_of_chain {s : β → Set α} {t : Set β} (ht : OrdConnected t)
+theorem IsPreconnected.biUnion_of_chain {s : β → Set α} {t : Set β} (ht : OrdConnected t)
     (H : ∀ n ∈ t, IsPreconnected (s n))
     (K : ∀ n : β, n ∈ t → succ n ∈ t → (s n ∩ s (succ n)).Nonempty) :
     IsPreconnected (⋃ n ∈ t, s n) :=
@@ -399,28 +399,28 @@ theorem IsPreconnected.bunionᵢ_of_chain {s : β → Set α} {t : Set β} (ht :
     ht.out hi hj ⟨hk.1.trans <| le_succ k, succ_le_of_lt hk.2⟩
   have h3 : ∀ {i j k : β}, i ∈ t → j ∈ t → k ∈ Ico i j → (s k ∩ s (succ k)).Nonempty :=
     fun i j k hi hj hk => K _ (h1 hi hj hk) (h2 hi hj hk)
-  refine' IsPreconnected.bunionᵢ_of_reflTransGen H fun i hi j hj => _
+  refine' IsPreconnected.biUnion_of_reflTransGen H fun i hi j hj => _
   exact
     reflTransGen_of_succ _ (fun k hk => ⟨h3 hi hj hk, h1 hi hj hk⟩) fun k hk =>
       ⟨by
         rw [inter_comm]
         exact h3 hj hi hk, h2 hj hi hk⟩
-#align is_preconnected.bUnion_of_chain IsPreconnected.bunionᵢ_of_chain
+#align is_preconnected.bUnion_of_chain IsPreconnected.biUnion_of_chain
 
-/- warning: is_connected.bUnion_of_chain -> IsConnected.bunionᵢ_of_chain is a dubious translation:
+/- warning: is_connected.bUnion_of_chain -> IsConnected.biUnion_of_chain is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3] {s : β -> (Set.{u1} α)} {t : Set.{u2} β}, (Set.Nonempty.{u2} β t) -> (Set.OrdConnected.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) t) -> (forall (n : β), (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) -> (IsConnected.{u1} α _inst_1 (s n))) -> (forall (n : β), (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) -> (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3 n) t) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3 n))))) -> (IsConnected.{u1} α _inst_1 (Set.unionᵢ.{u1, succ u2} α β (fun (n : β) => Set.unionᵢ.{u1, 0} α (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) (fun (H : Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) => s n))))
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3] {s : β -> (Set.{u1} α)} {t : Set.{u2} β}, (Set.Nonempty.{u2} β t) -> (Set.OrdConnected.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) t) -> (forall (n : β), (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) -> (IsConnected.{u1} α _inst_1 (s n))) -> (forall (n : β), (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) -> (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3 n) t) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_2)))) _inst_3 n))))) -> (IsConnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α β (fun (n : β) => Set.iUnion.{u1, 0} α (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) (fun (H : Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) n t) => s n))))
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2)))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3] {s : β -> (Set.{u1} α)} {t : Set.{u2} β}, (Set.Nonempty.{u2} β t) -> (Set.OrdConnected.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) t) -> (forall (n : β), (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) -> (IsConnected.{u1} α _inst_1 (s n))) -> (forall (n : β), (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) -> (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3 n) t) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3 n))))) -> (IsConnected.{u1} α _inst_1 (Set.unionᵢ.{u1, succ u2} α β (fun (n : β) => Set.unionᵢ.{u1, 0} α (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) (fun (H : Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) => s n))))
-Case conversion may be inaccurate. Consider using '#align is_connected.bUnion_of_chain IsConnected.bunionᵢ_of_chainₓ'. -/
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : LinearOrder.{u2} β] [_inst_3 : SuccOrder.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2)))))] [_inst_4 : IsSuccArchimedean.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3] {s : β -> (Set.{u1} α)} {t : Set.{u2} β}, (Set.Nonempty.{u2} β t) -> (Set.OrdConnected.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) t) -> (forall (n : β), (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) -> (IsConnected.{u1} α _inst_1 (s n))) -> (forall (n : β), (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) -> (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3 n) t) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (s n) (s (Order.succ.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_2))))) _inst_3 n))))) -> (IsConnected.{u1} α _inst_1 (Set.iUnion.{u1, succ u2} α β (fun (n : β) => Set.iUnion.{u1, 0} α (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) (fun (H : Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) n t) => s n))))
+Case conversion may be inaccurate. Consider using '#align is_connected.bUnion_of_chain IsConnected.biUnion_of_chainₓ'. -/
 /-- The Union of connected sets indexed by a subset of a type with an archimedean successor
   (like `ℕ` or `ℤ`) such that any two neighboring sets meet is preconnected. -/
-theorem IsConnected.bunionᵢ_of_chain {s : β → Set α} {t : Set β} (hnt : t.Nonempty)
+theorem IsConnected.biUnion_of_chain {s : β → Set α} {t : Set β} (hnt : t.Nonempty)
     (ht : OrdConnected t) (H : ∀ n ∈ t, IsConnected (s n))
     (K : ∀ n : β, n ∈ t → succ n ∈ t → (s n ∩ s (succ n)).Nonempty) : IsConnected (⋃ n ∈ t, s n) :=
-  ⟨nonempty_bunionᵢ.2 <| ⟨hnt.some, hnt.some_mem, (H _ hnt.some_mem).Nonempty⟩,
-    IsPreconnected.bunionᵢ_of_chain ht (fun i hi => (H i hi).IsPreconnected) K⟩
-#align is_connected.bUnion_of_chain IsConnected.bunionᵢ_of_chain
+  ⟨nonempty_biUnion.2 <| ⟨hnt.some, hnt.some_mem, (H _ hnt.some_mem).Nonempty⟩,
+    IsPreconnected.biUnion_of_chain ht (fun i hi => (H i hi).IsPreconnected) K⟩
+#align is_connected.bUnion_of_chain IsConnected.biUnion_of_chain
 
 end SuccOrder
 
@@ -872,7 +872,7 @@ theorem connectedComponentIn_eq_empty {F : Set α} {x : α} (h : x ∉ F) :
 
 #print mem_connectedComponent /-
 theorem mem_connectedComponent {x : α} : x ∈ connectedComponent x :=
-  mem_unionₛ_of_mem (mem_singleton x) ⟨isConnected_singleton.IsPreconnected, mem_singleton x⟩
+  mem_sUnion_of_mem (mem_singleton x) ⟨isConnected_singleton.IsPreconnected, mem_singleton x⟩
 #align mem_connected_component mem_connectedComponent
 -/
 
@@ -907,7 +907,7 @@ theorem connectedComponentIn_subset (F : Set α) (x : α) : connectedComponentIn
 
 #print isPreconnected_connectedComponent /-
 theorem isPreconnected_connectedComponent {x : α} : IsPreconnected (connectedComponent x) :=
-  isPreconnected_unionₛ x _ (fun _ => And.right) fun _ => And.left
+  isPreconnected_sUnion x _ (fun _ => And.right) fun _ => And.left
 #align is_preconnected_connected_component isPreconnected_connectedComponent
 -/
 
@@ -939,7 +939,7 @@ theorem isConnected_connectedComponentIn_iff {x : α} {F : Set α} :
 
 #print IsPreconnected.subset_connectedComponent /-
 theorem IsPreconnected.subset_connectedComponent {x : α} {s : Set α} (H1 : IsPreconnected s)
-    (H2 : x ∈ s) : s ⊆ connectedComponent x := fun z hz => mem_unionₛ_of_mem hz ⟨H1, H2⟩
+    (H2 : x ∈ s) : s ⊆ connectedComponent x := fun z hz => mem_sUnion_of_mem hz ⟨H1, H2⟩
 #align is_preconnected.subset_connected_component IsPreconnected.subset_connectedComponent
 -/
 
@@ -1311,16 +1311,16 @@ theorem isPreconnected_iff_subset_of_disjoint {s : Set α} :
       exact ⟨x, hxs, ⟨hxu, h hxs⟩⟩
 #align is_preconnected_iff_subset_of_disjoint isPreconnected_iff_subset_of_disjoint
 
-/- warning: is_connected_iff_sUnion_disjoint_open -> isConnected_iff_unionₛ_disjoint_open is a dubious translation:
+/- warning: is_connected_iff_sUnion_disjoint_open -> isConnected_iff_sUnion_disjoint_open is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, Iff (IsConnected.{u1} α _inst_1 s) (forall (U : Finset.{u1} (Set.{u1} α)), (forall (u : Set.{u1} α) (v : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.hasMem.{u1} (Set.{u1} α)) u U) -> (Membership.Mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.hasMem.{u1} (Set.{u1} α)) v U) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) u v))) -> (Eq.{succ u1} (Set.{u1} α) u v)) -> (forall (u : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.hasMem.{u1} (Set.{u1} α)) u U) -> (IsOpen.{u1} α _inst_1 u)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Set.unionₛ.{u1} α ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} (Set.{u1} α)) (Set.{u1} (Set.{u1} α)) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} (Set.{u1} α)) (Set.{u1} (Set.{u1} α)) (CoeTCₓ.coe.{succ u1, succ u1} (Finset.{u1} (Set.{u1} α)) (Set.{u1} (Set.{u1} α)) (Finset.Set.hasCoeT.{u1} (Set.{u1} α)))) U))) -> (Exists.{succ u1} (Set.{u1} α) (fun (u : Set.{u1} α) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.hasMem.{u1} (Set.{u1} α)) u U) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.hasMem.{u1} (Set.{u1} α)) u U) => HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s u))))
+  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, Iff (IsConnected.{u1} α _inst_1 s) (forall (U : Finset.{u1} (Set.{u1} α)), (forall (u : Set.{u1} α) (v : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.hasMem.{u1} (Set.{u1} α)) u U) -> (Membership.Mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.hasMem.{u1} (Set.{u1} α)) v U) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) u v))) -> (Eq.{succ u1} (Set.{u1} α) u v)) -> (forall (u : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.hasMem.{u1} (Set.{u1} α)) u U) -> (IsOpen.{u1} α _inst_1 u)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s (Set.sUnion.{u1} α ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} (Set.{u1} α)) (Set.{u1} (Set.{u1} α)) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} (Set.{u1} α)) (Set.{u1} (Set.{u1} α)) (CoeTCₓ.coe.{succ u1, succ u1} (Finset.{u1} (Set.{u1} α)) (Set.{u1} (Set.{u1} α)) (Finset.Set.hasCoeT.{u1} (Set.{u1} α)))) U))) -> (Exists.{succ u1} (Set.{u1} α) (fun (u : Set.{u1} α) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.hasMem.{u1} (Set.{u1} α)) u U) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.hasMem.{u1} (Set.{u1} α)) u U) => HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s u))))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, Iff (IsConnected.{u1} α _inst_1 s) (forall (U : Finset.{u1} (Set.{u1} α)), (forall (u : Set.{u1} α) (v : Set.{u1} α), (Membership.mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.instMembershipFinset.{u1} (Set.{u1} α)) u U) -> (Membership.mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.instMembershipFinset.{u1} (Set.{u1} α)) v U) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) u v))) -> (Eq.{succ u1} (Set.{u1} α) u v)) -> (forall (u : Set.{u1} α), (Membership.mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.instMembershipFinset.{u1} (Set.{u1} α)) u U) -> (IsOpen.{u1} α _inst_1 u)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s (Set.unionₛ.{u1} α (Finset.toSet.{u1} (Set.{u1} α) U))) -> (Exists.{succ u1} (Set.{u1} α) (fun (u : Set.{u1} α) => And (Membership.mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.instMembershipFinset.{u1} (Set.{u1} α)) u U) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s u))))
-Case conversion may be inaccurate. Consider using '#align is_connected_iff_sUnion_disjoint_open isConnected_iff_unionₛ_disjoint_openₓ'. -/
+  forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, Iff (IsConnected.{u1} α _inst_1 s) (forall (U : Finset.{u1} (Set.{u1} α)), (forall (u : Set.{u1} α) (v : Set.{u1} α), (Membership.mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.instMembershipFinset.{u1} (Set.{u1} α)) u U) -> (Membership.mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.instMembershipFinset.{u1} (Set.{u1} α)) v U) -> (Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) u v))) -> (Eq.{succ u1} (Set.{u1} α) u v)) -> (forall (u : Set.{u1} α), (Membership.mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.instMembershipFinset.{u1} (Set.{u1} α)) u U) -> (IsOpen.{u1} α _inst_1 u)) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s (Set.sUnion.{u1} α (Finset.toSet.{u1} (Set.{u1} α) U))) -> (Exists.{succ u1} (Set.{u1} α) (fun (u : Set.{u1} α) => And (Membership.mem.{u1, u1} (Set.{u1} α) (Finset.{u1} (Set.{u1} α)) (Finset.instMembershipFinset.{u1} (Set.{u1} α)) u U) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s u))))
+Case conversion may be inaccurate. Consider using '#align is_connected_iff_sUnion_disjoint_open isConnected_iff_sUnion_disjoint_openₓ'. -/
 /-- A set `s` is connected if and only if
 for every cover by a finite collection of open sets that are pairwise disjoint on `s`,
 it is contained in one of the members of the collection. -/
-theorem isConnected_iff_unionₛ_disjoint_open {s : Set α} :
+theorem isConnected_iff_sUnion_disjoint_open {s : Set α} :
     IsConnected s ↔
       ∀ (U : Finset (Set α)) (H : ∀ u v : Set α, u ∈ U → v ∈ U → (s ∩ (u ∩ v)).Nonempty → u = v)
         (hU : ∀ u ∈ U, IsOpen u) (hs : s ⊆ ⋃₀ ↑U), ∃ u ∈ U, s ⊆ u :=
@@ -1344,7 +1344,7 @@ theorem isConnected_iff_unionₛ_disjoint_open {s : Set α} :
         · intros
           solve_by_elim [Finset.mem_insert_of_mem]
       · solve_by_elim [Finset.mem_insert_self]
-      · apply isOpen_unionₛ
+      · apply isOpen_sUnion
         intros
         solve_by_elim [Finset.mem_insert_of_mem]
       · apply eq_empty_of_subset_empty
@@ -1374,7 +1374,7 @@ theorem isConnected_iff_unionₛ_disjoint_open {s : Set α} :
       rw [Finset.mem_insert, Finset.mem_singleton]
       rintro (rfl | rfl) <;> assumption
     · simpa using hs
-#align is_connected_iff_sUnion_disjoint_open isConnected_iff_unionₛ_disjoint_open
+#align is_connected_iff_sUnion_disjoint_open isConnected_iff_sUnion_disjoint_open
 
 /- warning: is_preconnected.subset_clopen -> IsPreconnected.subset_clopen is a dubious translation:
 lean 3 declaration is
@@ -1480,22 +1480,22 @@ theorem IsClopen.connectedComponent_subset {x} (hs : IsClopen s) (hx : x ∈ s)
 #align is_clopen.connected_component_subset IsClopen.connectedComponent_subset
 -/
 
-#print connectedComponent_subset_interᵢ_clopen /-
+#print connectedComponent_subset_iInter_clopen /-
 /-- The connected component of a point is always a subset of the intersection of all its clopen
 neighbourhoods. -/
-theorem connectedComponent_subset_interᵢ_clopen {x : α} :
+theorem connectedComponent_subset_iInter_clopen {x : α} :
     connectedComponent x ⊆ ⋂ Z : { Z : Set α // IsClopen Z ∧ x ∈ Z }, Z :=
-  subset_interᵢ fun Z => Z.2.1.connectedComponent_subset Z.2.2
-#align connected_component_subset_Inter_clopen connectedComponent_subset_interᵢ_clopen
+  subset_iInter fun Z => Z.2.1.connectedComponent_subset Z.2.2
+#align connected_component_subset_Inter_clopen connectedComponent_subset_iInter_clopen
 -/
 
-#print IsClopen.bunionᵢ_connectedComponent_eq /-
+#print IsClopen.biUnion_connectedComponent_eq /-
 /-- A clopen set is the union of its connected components. -/
-theorem IsClopen.bunionᵢ_connectedComponent_eq {Z : Set α} (h : IsClopen Z) :
+theorem IsClopen.biUnion_connectedComponent_eq {Z : Set α} (h : IsClopen Z) :
     (⋃ x ∈ Z, connectedComponent x) = Z :=
-  Subset.antisymm (unionᵢ₂_subset fun x => h.connectedComponent_subset) fun x hx =>
-    mem_unionᵢ₂_of_mem hx mem_connectedComponent
-#align is_clopen.bUnion_connected_component_eq IsClopen.bunionᵢ_connectedComponent_eq
+  Subset.antisymm (iUnion₂_subset fun x => h.connectedComponent_subset) fun x hx =>
+    mem_iUnion₂_of_mem hx mem_connectedComponent
+#align is_clopen.bUnion_connected_component_eq IsClopen.biUnion_connectedComponent_eq
 -/
 
 #print preimage_connectedComponent_connected /-
Diff
@@ -1086,7 +1086,7 @@ class ConnectedSpace (α : Type u) [TopologicalSpace α] extends PreconnectedSpa
 #align connected_space ConnectedSpace
 -/
 
-attribute [instance] ConnectedSpace.to_nonempty
+attribute [instance 50] ConnectedSpace.to_nonempty
 
 #print isConnected_univ /-
 -- see Note [lower instance priority]
@@ -2013,7 +2013,7 @@ alias isTotallyDisconnected_of_isTotallySeparated ← IsTotallySeparated.isTotal
 #align is_totally_separated.is_totally_disconnected IsTotallySeparated.isTotallyDisconnected
 
 #print TotallySeparatedSpace /-
-/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`isTotallySeparated_univ] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`isTotallySeparated_univ] [] -/
 /-- A space is totally separated if any two points can be separated by two disjoint open sets
 covering the whole space. -/
 class TotallySeparatedSpace (α : Type u) [TopologicalSpace α] : Prop where
Diff
@@ -128,7 +128,7 @@ lean 3 declaration is
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α} (x : α), (forall (y : α), (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) y s) -> (Exists.{succ u1} (Set.{u1} α) (fun (t : Set.{u1} α) => And (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) t s) (And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x t) (And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) y t) (IsPreconnected.{u1} α _inst_1 t)))))) -> (IsPreconnected.{u1} α _inst_1 s)
 Case conversion may be inaccurate. Consider using '#align is_preconnected_of_forall isPreconnected_of_forallₓ'. -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (t «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (t «expr ⊆ » s) -/
 /-- If any point of a set is joined to a fixed point by a preconnected subset,
 then the original set is preconnected as well. -/
 theorem isPreconnected_of_forall {s : Set α} (x : α)
@@ -153,8 +153,8 @@ lean 3 declaration is
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {s : Set.{u1} α}, (forall (x : α), (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x s) -> (forall (y : α), (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) y s) -> (Exists.{succ u1} (Set.{u1} α) (fun (t : Set.{u1} α) => And (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) t s) (And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x t) (And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) y t) (IsPreconnected.{u1} α _inst_1 t))))))) -> (IsPreconnected.{u1} α _inst_1 s)
 Case conversion may be inaccurate. Consider using '#align is_preconnected_of_forall_pair isPreconnected_of_forall_pairₓ'. -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (x y «expr ∈ » s) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (t «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x y «expr ∈ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (t «expr ⊆ » s) -/
 /-- If any two points of a set are contained in a preconnected subset,
 then the original set is preconnected as well. -/
 theorem isPreconnected_of_forall_pair {s : Set α}
@@ -249,9 +249,9 @@ lean 3 declaration is
 but is expected to have type
   forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {ι : Type.{u1}} {t : Set.{u1} ι} {s : ι -> (Set.{u2} α)}, (forall (i : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t) -> (IsPreconnected.{u2} α _inst_1 (s i))) -> (forall (i : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t) -> (forall (j : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) j t) -> (Relation.ReflTransGen.{u1} ι (fun (i : ι) (j : ι) => And (Set.Nonempty.{u2} α (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (s i) (s j))) (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t)) i j))) -> (IsPreconnected.{u2} α _inst_1 (Set.unionᵢ.{u2, succ u1} α ι (fun (n : ι) => Set.unionᵢ.{u2, 0} α (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) n t) (fun (H : Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) n t) => s n))))
 Case conversion may be inaccurate. Consider using '#align is_preconnected.bUnion_of_refl_trans_gen IsPreconnected.bunionᵢ_of_reflTransGenₓ'. -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (i j «expr ∈ » t) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (p «expr ⊆ » t) -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (i j «expr ∈ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i j «expr ∈ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (p «expr ⊆ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i j «expr ∈ » t) -/
 /-- The bUnion of a family of preconnected sets is preconnected if the graph determined by
 whether two sets intersect is preconnected. -/
 theorem IsPreconnected.bunionᵢ_of_reflTransGen {ι : Type _} {t : Set ι} {s : ι → Set α}
@@ -295,7 +295,7 @@ lean 3 declaration is
 but is expected to have type
   forall {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] {ι : Type.{u1}} {t : Set.{u1} ι} {s : ι -> (Set.{u2} α)}, (Set.Nonempty.{u1} ι t) -> (forall (i : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t) -> (IsConnected.{u2} α _inst_1 (s i))) -> (forall (i : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t) -> (forall (j : ι), (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) j t) -> (Relation.ReflTransGen.{u1} ι (fun (i : ι) (j : ι) => And (Set.Nonempty.{u2} α (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (s i) (s j))) (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i t)) i j))) -> (IsConnected.{u2} α _inst_1 (Set.unionᵢ.{u2, succ u1} α ι (fun (n : ι) => Set.unionᵢ.{u2, 0} α (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) n t) (fun (H : Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) n t) => s n))))
 Case conversion may be inaccurate. Consider using '#align is_connected.bUnion_of_refl_trans_gen IsConnected.bunionᵢ_of_reflTransGenₓ'. -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (i j «expr ∈ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i j «expr ∈ » t) -/
 /-- The bUnion of a family of preconnected sets is preconnected if the graph determined by
 whether two sets intersect is preconnected. -/
 theorem IsConnected.bunionᵢ_of_reflTransGen {ι : Type _} {t : Set ι} {s : ι → Set α}
@@ -1642,15 +1642,15 @@ lean 3 declaration is
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α], Iff (LocallyConnectedSpace.{u1} α _inst_1) (forall (x : α) (U : Set.{u1} α), (Membership.mem.{u1, u1} (Set.{u1} α) (Filter.{u1} α) (instMembershipSetFilter.{u1} α) U (nhds.{u1} α _inst_1 x)) -> (Exists.{succ u1} (Set.{u1} α) (fun (V : Set.{u1} α) => And (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) V U) (And (IsOpen.{u1} α _inst_1 V) (And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x V) (IsConnected.{u1} α _inst_1 V))))))
 Case conversion may be inaccurate. Consider using '#align locally_connected_space_iff_open_connected_subsets locallyConnectedSpace_iff_open_connected_subsetsₓ'. -/
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:76:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (V «expr ⊆ » U) -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (V «expr ⊆ » U) -/
 theorem locallyConnectedSpace_iff_open_connected_subsets :
     LocallyConnectedSpace α ↔
       ∀ (x : α), ∀ U ∈ 𝓝 x, ∃ (V : _)(_ : V ⊆ U), IsOpen V ∧ x ∈ V ∧ IsConnected V :=
   by
   rw [locallyConnectedSpace_iff_open_connected_basis]
   trace
-    "./././Mathport/Syntax/Translate/Tactic/Builtin.lean:76:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]]"
+    "./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]]"
   constructor
   · intro h U hU
     rcases h.mem_iff.mp hU with ⟨V, hV, hVU⟩
@@ -1751,7 +1751,7 @@ theorem locallyConnectedSpace_iff_connected_subsets :
     exact Filter.mem_of_superset hVy (hV.subset_connected_component_in (mem_of_mem_nhds hVy) hVU)
 #align locally_connected_space_iff_connected_subsets locallyConnectedSpace_iff_connected_subsets
 
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:76:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]] -/
 #print locallyConnectedSpace_iff_connected_basis /-
 theorem locallyConnectedSpace_iff_connected_basis :
     LocallyConnectedSpace α ↔
@@ -1759,7 +1759,7 @@ theorem locallyConnectedSpace_iff_connected_basis :
   by
   rw [locallyConnectedSpace_iff_connected_subsets]
   trace
-    "./././Mathport/Syntax/Translate/Tactic/Builtin.lean:76:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]]"
+    "./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr ∀ x, (_ : exprProp())]]"
   exact filter.has_basis_self.symm
 #align locally_connected_space_iff_connected_basis locallyConnectedSpace_iff_connected_basis
 -/

Changes in mathlib4

mathlib3
mathlib4
doc: convert many comments into doc comments (#11940)

All of these changes appear to be oversights to me.

Diff
@@ -372,6 +372,7 @@ theorem Inducing.isPreconnected_image [TopologicalSpace β] {s : Set α} {f : α
 
 /- TODO: The following lemmas about connection of preimages hold more generally for strict maps
 (the quotient and subspace topologies of the image agree) whose fibers are preconnected. -/
+
 theorem IsPreconnected.preimage_of_isOpenMap [TopologicalSpace β] {f : α → β} {s : Set β}
     (hs : IsPreconnected s) (hinj : Function.Injective f) (hf : IsOpenMap f) (hsf : s ⊆ range f) :
     IsPreconnected (f ⁻¹' s) := fun u v hu hv hsuv hsu hsv => by
chore: remove more bex and ball from lemma names (#11615)

Follow-up to #10816.

Remaining places containing such lemmas are

  • Option.bex_ne_none and Option.ball_ne_none: defined in Lean core
  • Nat.decidableBallLT and Nat.decidableBallLE: defined in Lean core
  • bef_def is still used in a number of places and could be renamed
  • BAll.imp_{left,right}, BEx.imp_{left,right}, BEx.intro and BEx.elim

I only audited the first ~150 lemmas mentioning "ball"; too many lemmas named after Metric.ball/openBall/closedBall.

Co-authored-by: Yaël Dillies <yael.dillies@gmail.com>

Diff
@@ -1057,7 +1057,7 @@ theorem isConnected_iff_sUnion_disjoint_open {s : Set α} :
   · induction U using Finset.induction_on with
     | empty => exact absurd (by simpa using hsU) hne.not_subset_empty
     | @insert u U uU IH =>
-      simp only [← ball_cond_comm, Finset.forall_mem_insert, Finset.exists_mem_insert,
+      simp only [← forall_cond_comm, Finset.forall_mem_insert, Finset.exists_mem_insert,
         Finset.coe_insert, sUnion_insert, implies_true, true_and] at *
       refine (h _ hUo.1 (⋃₀ ↑U) (isOpen_sUnion hUo.2) hsU ?_).imp_right ?_
       · refine subset_empty_iff.1 fun x ⟨hxs, hxu, v, hvU, hxv⟩ => ?_
chore: avoid Ne.def (adaptation for nightly-2024-03-27) (#11813)
Diff
@@ -938,7 +938,7 @@ theorem frontier_eq_empty_iff [PreconnectedSpace α] {s : Set α} :
 
 theorem nonempty_frontier_iff [PreconnectedSpace α] {s : Set α} :
     (frontier s).Nonempty ↔ s.Nonempty ∧ s ≠ univ := by
-  simp only [nonempty_iff_ne_empty, Ne.def, frontier_eq_empty_iff, not_or]
+  simp only [nonempty_iff_ne_empty, Ne, frontier_eq_empty_iff, not_or]
 #align nonempty_frontier_iff nonempty_frontier_iff
 
 theorem Subtype.preconnectedSpace {s : Set α} (h : IsPreconnected s) : PreconnectedSpace s where
chore: avoid some unused variables (#11594)

These will be caught by the linter in a future lean version.

Diff
@@ -1095,11 +1095,9 @@ theorem isPreconnected_iff_subset_of_disjoint_closed :
     exact h ⟨y, hys, hyu⟩ ⟨x, hxs, hxv⟩
   · rw [isPreconnected_closed_iff]
     intro u v hu hv hs hsu hsv
-    rw [nonempty_iff_ne_empty]
-    intro H
-    specialize h u v hu hv hs H
-    contrapose H
-    apply Nonempty.ne_empty
+    by_contra H
+    specialize h u v hu hv hs (Set.not_nonempty_iff_eq_empty.mp H)
+    apply H
     cases' h with h h
     · rcases hsv with ⟨x, hxs, hxv⟩
       exact ⟨x, hxs, ⟨h hxs, hxv⟩⟩
chore: avoid some unused variables (#11583)

These will be caught by the linter in a future lean version.

Diff
@@ -1035,11 +1035,9 @@ theorem isPreconnected_iff_subset_of_disjoint {s : Set α} :
     have hyu : y ∈ u := or_iff_not_imp_right.mp (hs hys) hyv
     exact h ⟨y, hys, hyu⟩ ⟨x, hxs, hxv⟩
   · intro u v hu hv hs hsu hsv
-    rw [nonempty_iff_ne_empty]
-    intro H
-    specialize h u v hu hv hs H
-    contrapose H
-    apply Nonempty.ne_empty
+    by_contra H
+    specialize h u v hu hv hs (Set.not_nonempty_iff_eq_empty.mp H)
+    apply H
     cases' h with h h
     · rcases hsv with ⟨x, hxs, hxv⟩
       exact ⟨x, hxs, ⟨h hxs, hxv⟩⟩
chore(Set/Finset): standardize names of distributivity laws (#11572)

Standardizes the following names for distributivity laws across Finset and Set:

  • inter_union_distrib_left
  • inter_union_distrib_right
  • union_inter_distrib_left
  • union_inter_distrib_right

Makes arguments explicit in:

  • Set.union_inter_distrib_right
  • Set.union_inter_distrib_left
  • Set.inter_union_distrib_right

Deprecates these theorem names:

  • Finset.inter_distrib_left
  • Finset.inter_distrib_right
  • Finset.union_distrib_right
  • Finset.union_distrib_left
  • Set.inter_distrib_left
  • Set.inter_distrib_right
  • Set.union_distrib_right
  • Set.union_distrib_left

Fixes use of deprecated names and implicit arguments in these files:

  • Topology/Basic
  • Topology/Connected/Basic
  • MeasureTheory/MeasurableSpace/Basic
  • MeasureTheory/Covering/Differentiation
  • MeasureTheory/Constructions/BorelSpace/Basic
  • Data/Set/Image
  • Data/Set/Basic
  • Data/PFun
  • Data/Matroid/Dual
  • Data/Finset/Sups
  • Data/Finset/Basic
  • Combinatorics/SetFamily/FourFunctions
  • Combinatorics/Additive/SalemSpencer
  • Counterexamples/Phillips.lean
  • Archive/Imo/Imo2021Q1.lean
Diff
@@ -318,7 +318,7 @@ protected theorem IsPreconnected.image [TopologicalSpace β] {s : Set α} (H : I
   replace huv : s ⊆ u' ∪ v' := by
     rw [image_subset_iff, preimage_union] at huv
     replace huv := subset_inter huv Subset.rfl
-    rw [inter_distrib_right, u'_eq, v'_eq, ← inter_distrib_right] at huv
+    rw [union_inter_distrib_right, u'_eq, v'_eq, ← union_inter_distrib_right] at huv
     exact (subset_inter_iff.1 huv).1
   -- Now `s ⊆ u' ∪ v'`, so we can apply `‹IsPreconnected s›`
   obtain ⟨z, hz⟩ : (s ∩ (u' ∩ v')).Nonempty := by
@@ -1121,7 +1121,7 @@ theorem isPreconnected_iff_subset_of_fully_disjoint_closed {s : Set α} (hs : Is
   rw [subset_inter_iff, subset_inter_iff] at H1
   simp only [Subset.refl, and_true] at H1
   apply H1 (hu.inter hs) (hv.inter hs)
-  · rw [← inter_distrib_right]
+  · rw [← union_inter_distrib_right]
     exact subset_inter hss Subset.rfl
   · rwa [disjoint_iff_inter_eq_empty, ← inter_inter_distrib_right, inter_comm]
 #align is_preconnected_iff_subset_of_fully_disjoint_closed isPreconnected_iff_subset_of_fully_disjoint_closed
chore: classify todo porting notes (#11216)

Classifies by adding issue number #11215 to porting notes claiming "TODO".

Diff
@@ -99,7 +99,7 @@ theorem isPreconnected_of_forall {s : Set α} (x : α)
   have xs : x ∈ s := by
     rcases H y ys with ⟨t, ts, xt, -, -⟩
     exact ts xt
-  -- Porting note: todo: use `wlog xu : x ∈ u := hs xs using u v y z, v u z y`
+  -- Porting note (#11215): TODO: use `wlog xu : x ∈ u := hs xs using u v y z, v u z y`
   cases hs xs with
   | inl xu =>
     rcases H y ys with ⟨t, ts, xt, yt, ht⟩
chore: Remove ball and bex from lemma names (#10816)

ball for "bounded forall" and bex for "bounded exists" are from experience very confusing abbreviations. This PR renames them to forall_mem and exists_mem in the few Set lemma names that mention them.

Also deprecate ball_image_of_ball, mem_image_elim, mem_image_elim_on since those lemmas are duplicates of the renamed lemmas (apart from argument order and implicitness, which I am also fixing by making the binder in the RHS of forall_mem_image semi-implicit), have obscure names and are completely unused.

Diff
@@ -130,7 +130,7 @@ theorem isPreconnected_sUnion (x : α) (c : Set (Set α)) (H1 : ∀ s ∈ c, x 
 
 theorem isPreconnected_iUnion {ι : Sort*} {s : ι → Set α} (h₁ : (⋂ i, s i).Nonempty)
     (h₂ : ∀ i, IsPreconnected (s i)) : IsPreconnected (⋃ i, s i) :=
-  Exists.elim h₁ fun f hf => isPreconnected_sUnion f _ hf (forall_range_iff.2 h₂)
+  Exists.elim h₁ fun f hf => isPreconnected_sUnion f _ hf (forall_mem_range.2 h₂)
 #align is_preconnected_Union isPreconnected_iUnion
 
 theorem IsPreconnected.union (x : α) {s t : Set α} (H1 : x ∈ s) (H2 : x ∈ t) (H3 : IsPreconnected s)
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -99,7 +99,7 @@ theorem isPreconnected_of_forall {s : Set α} (x : α)
   have xs : x ∈ s := by
     rcases H y ys with ⟨t, ts, xt, -, -⟩
     exact ts xt
-  -- porting note: todo: use `wlog xu : x ∈ u := hs xs using u v y z, v u z y`
+  -- Porting note: todo: use `wlog xu : x ∈ u := hs xs using u v y z, v u z y`
   cases hs xs with
   | inl xu =>
     rcases H y ys with ⟨t, ts, xt, yt, ht⟩
@@ -437,7 +437,7 @@ theorem IsPreconnected.subset_right_of_subset_union (hu : IsOpen u) (hv : IsOpen
   hs.subset_left_of_subset_union hv hu huv.symm (union_comm u v ▸ hsuv) hsv
 #align is_preconnected.subset_right_of_subset_union IsPreconnected.subset_right_of_subset_union
 
--- porting note: moved up
+-- Porting note: moved up
 /-- Preconnected sets are either contained in or disjoint to any given clopen set. -/
 theorem IsPreconnected.subset_isClopen {s t : Set α} (hs : IsPreconnected s) (ht : IsClopen t)
     (hne : (s ∩ t).Nonempty) : s ⊆ t :=
@@ -1071,7 +1071,7 @@ theorem isConnected_iff_sUnion_disjoint_open {s : Set α} :
     simpa [*, or_imp, forall_and] using h {u, v}
 #align is_connected_iff_sUnion_disjoint_open isConnected_iff_sUnion_disjoint_open
 
--- porting note: `IsPreconnected.subset_isClopen` moved up from here
+-- Porting note: `IsPreconnected.subset_isClopen` moved up from here
 
 /-- Preconnected sets are either contained in or disjoint to any given clopen set. -/
 theorem disjoint_or_subset_of_isClopen {s t : Set α} (hs : IsPreconnected s) (ht : IsClopen t) :
chore: remove terminal, terminal refines (#10762)

I replaced a few "terminal" refine/refine's with exact.

The strategy was very simple-minded: essentially any refine whose following line had smaller indentation got replaced by exact and then I cleaned up the mess.

This PR certainly leaves some further terminal refines, but maybe the current change is beneficial.

Diff
@@ -525,7 +525,7 @@ theorem Sigma.isPreconnected_iff [hι : Nonempty ι] [∀ i, TopologicalSpace (
   · obtain rfl | h := s.eq_empty_or_nonempty
     · exact ⟨Classical.choice hι, ∅, isPreconnected_empty, (Set.image_empty _).symm⟩
     · obtain ⟨a, t, ht, rfl⟩ := Sigma.isConnected_iff.1 ⟨h, hs⟩
-      refine' ⟨a, t, ht.isPreconnected, rfl⟩
+      exact ⟨a, t, ht.isPreconnected, rfl⟩
   · rintro ⟨a, t, ht, rfl⟩
     exact ht.image _ continuous_sigmaMk.continuousOn
 #align sigma.is_preconnected_iff Sigma.isPreconnected_iff
chore: remove stream-of-consciousness uses of have, replace and suffices (#10640)

No changes to tactic file, it's just boring fixes throughout the library.

This follows on from #6964.

Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -315,8 +315,8 @@ protected theorem IsPreconnected.image [TopologicalSpace β] {s : Set α} (H : I
   rcases continuousOn_iff'.1 hf u hu with ⟨u', hu', u'_eq⟩
   rcases continuousOn_iff'.1 hf v hv with ⟨v', hv', v'_eq⟩
   -- Reformulate `huv : f '' s ⊆ u ∪ v` in terms of `u'` and `v'`
-  replace huv : s ⊆ u' ∪ v'
-  · rw [image_subset_iff, preimage_union] at huv
+  replace huv : s ⊆ u' ∪ v' := by
+    rw [image_subset_iff, preimage_union] at huv
     replace huv := subset_inter huv Subset.rfl
     rw [inter_distrib_right, u'_eq, v'_eq, ← inter_distrib_right] at huv
     exact (subset_inter_iff.1 huv).1
@@ -364,7 +364,7 @@ theorem Inducing.isPreconnected_image [TopologicalSpace β] {s : Set α} {f : α
   rintro u v hu' hv' huv ⟨x, hxs, hxu⟩ ⟨y, hys, hyv⟩
   rcases hf.isOpen_iff.1 hu' with ⟨u, hu, rfl⟩
   rcases hf.isOpen_iff.1 hv' with ⟨v, hv, rfl⟩
-  replace huv : f '' s ⊆ u ∪ v; · rwa [image_subset_iff]
+  replace huv : f '' s ⊆ u ∪ v := by rwa [image_subset_iff]
   rcases h u v hu hv huv ⟨f x, mem_image_of_mem _ hxs, hxu⟩ ⟨f y, mem_image_of_mem _ hys, hyv⟩ with
     ⟨_, ⟨z, hzs, rfl⟩, hzuv⟩
   exact ⟨z, hzs, hzuv⟩
refactor: prefer s ∩ . when passing to a subset of s (#10433)

This is partial work to make s ∩ . be consistently used for passing to a subset of s. This is sort of an adjoint to (Subtype.val : s -> _) '' ., except for the fact that it does not produce a Set s.

The main API changes are to Subtype.image_preimage_val and Subtype.preimage_val_eq_preimage_val_iff in Mathlib.Data.Set.Image. Changes in other modules are all proof fixups.

Zulip discussion

Diff
@@ -640,14 +640,14 @@ theorem IsPreconnected.subset_connectedComponentIn {x : α} {F : Set α} (hs : I
     (hxs : x ∈ s) (hsF : s ⊆ F) : s ⊆ connectedComponentIn F x := by
   have : IsPreconnected (((↑) : F → α) ⁻¹' s) := by
     refine' inducing_subtype_val.isPreconnected_image.mp _
-    rwa [Subtype.image_preimage_coe, inter_eq_left.mpr hsF]
+    rwa [Subtype.image_preimage_coe, inter_eq_right.mpr hsF]
   have h2xs : (⟨x, hsF hxs⟩ : F) ∈ (↑) ⁻¹' s := by
     rw [mem_preimage]
     exact hxs
   have := this.subset_connectedComponent h2xs
   rw [connectedComponentIn_eq_image (hsF hxs)]
   refine' Subset.trans _ (image_subset _ this)
-  rw [Subtype.image_preimage_coe, inter_eq_left.mpr hsF]
+  rw [Subtype.image_preimage_coe, inter_eq_right.mpr hsF]
 #align is_preconnected.subset_connected_component_in IsPreconnected.subset_connectedComponentIn
 
 theorem IsConnected.subset_connectedComponent {x : α} {s : Set α} (H1 : IsConnected s)
refactor(Topology/Clopen): order of open and closed (#9957)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -873,7 +873,7 @@ theorem isClopen_iff [PreconnectedSpace α] {s : Set α} : IsClopen s ↔ s = 
         ⟨mt Or.inl h,
           mt (fun h2 => Or.inr <| (by rw [← compl_compl s, h2, compl_empty] : s = univ)) h⟩
       let ⟨_, h2, h3⟩ :=
-        nonempty_inter hs.1 hs.2.isOpen_compl (union_compl_self s) (nonempty_iff_ne_empty.2 h1.1)
+        nonempty_inter hs.2 hs.1.isOpen_compl (union_compl_self s) (nonempty_iff_ne_empty.2 h1.1)
           (nonempty_iff_ne_empty.2 h1.2)
       h3 h2,
     by rintro (rfl | rfl) <;> [exact isClopen_empty; exact isClopen_univ]⟩
@@ -910,7 +910,7 @@ element. -/
 lemma subsingleton_of_disjoint_isOpen_iUnion_eq_univ
     (h_open : ∀ i, IsOpen (s i)) (h_Union : ⋃ i, s i = univ) :
     Subsingleton ι := by
-  refine' subsingleton_of_disjoint_isClopen h_nonempty h_disj (fun i ↦ ⟨h_open i, _⟩)
+  refine' subsingleton_of_disjoint_isClopen h_nonempty h_disj (fun i ↦ ⟨_, h_open i⟩)
   rw [← isOpen_compl_iff, compl_eq_univ_diff, ← h_Union, iUnion_diff]
   refine' isOpen_iUnion (fun j ↦ _)
   rcases eq_or_ne i j with rfl | h_ne
@@ -922,7 +922,7 @@ element. -/
 lemma subsingleton_of_disjoint_isClosed_iUnion_eq_univ [Finite ι]
     (h_closed : ∀ i, IsClosed (s i)) (h_Union : ⋃ i, s i = univ) :
     Subsingleton ι := by
-  refine' subsingleton_of_disjoint_isClopen h_nonempty h_disj (fun i ↦ ⟨_, h_closed i⟩)
+  refine' subsingleton_of_disjoint_isClopen h_nonempty h_disj (fun i ↦ ⟨h_closed i, _⟩)
   rw [← isClosed_compl_iff, compl_eq_univ_diff, ← h_Union, iUnion_diff]
   refine' isClosed_iUnion_of_finite (fun j ↦ _)
   rcases eq_or_ne i j with rfl | h_ne
@@ -968,14 +968,14 @@ lemma PreconnectedSpace.induction₂' [PreconnectedSpace α] (P : α → α →
     (h : ∀ x, ∀ᶠ y in 𝓝 x, P x y ∧ P y x) (h' : Transitive P) (x y : α) :
     P x y := by
   let u := {z | P x z}
-  have A : IsOpen u := by
-    apply isOpen_iff_mem_nhds.2 (fun z hz ↦ ?_)
-    filter_upwards [h z] with t ht
-    exact h' hz ht.1
-  have B : IsClosed u := by
+  have A : IsClosed u := by
     apply isClosed_iff_nhds.2 (fun z hz ↦ ?_)
     rcases hz _ (h z) with ⟨t, ht, h't⟩
     exact h' h't ht.2
+  have B : IsOpen u := by
+    apply isOpen_iff_mem_nhds.2 (fun z hz ↦ ?_)
+    filter_upwards [h z] with t ht
+    exact h' hz ht.1
   have C : u.Nonempty := ⟨x, (mem_of_mem_nhds (h x)).1⟩
   have D : u = Set.univ := IsClopen.eq_univ ⟨A, B⟩ C
   show y ∈ u
@@ -1329,9 +1329,9 @@ theorem isPreconnected_of_forall_constant {s : Set α}
   have hy : y ∉ u := fun y_in_u => eq_empty_iff_forall_not_mem.mp H y ⟨y_in_s, ⟨y_in_u, y_in_v⟩⟩
   have : ContinuousOn u.boolIndicator s := by
     apply (continuousOn_boolIndicator_iff_isClopen _ _).mpr ⟨_, _⟩
-    · exact u_op.preimage continuous_subtype_val
     · rw [preimage_subtype_coe_eq_compl hsuv H]
       exact (v_op.preimage continuous_subtype_val).isClosed_compl
+    · exact u_op.preimage continuous_subtype_val
   simpa [(u.mem_iff_boolIndicator _).mp x_in_u, (u.not_mem_iff_boolIndicator _).mp hy] using
     hs _ this x x_in_s y y_in_s
 #align is_preconnected_of_forall_constant isPreconnected_of_forall_constant
feat: add Continuous.image_connectedComponentIn_subset (#9983)

and a version for homeomorphisms. From sphere-eversion; I'm just submitting things upstream.

Diff
@@ -707,11 +707,23 @@ theorem Continuous.image_connectedComponent_subset [TopologicalSpace β] {f : α
     ((mem_image f (connectedComponent a) (f a)).2 ⟨a, mem_connectedComponent, rfl⟩)
 #align continuous.image_connected_component_subset Continuous.image_connectedComponent_subset
 
+theorem Continuous.image_connectedComponentIn_subset [TopologicalSpace β] {f : α → β} {s : Set α}
+    {a : α} (hf : Continuous f) (hx : a ∈ s) :
+    f '' connectedComponentIn s a ⊆ connectedComponentIn (f '' s) (f a) :=
+  (isPreconnected_connectedComponentIn.image _ hf.continuousOn).subset_connectedComponentIn
+    (mem_image_of_mem _ <| mem_connectedComponentIn hx)
+    (image_subset _ <| connectedComponentIn_subset _ _)
+
 theorem Continuous.mapsTo_connectedComponent [TopologicalSpace β] {f : α → β} (h : Continuous f)
     (a : α) : MapsTo f (connectedComponent a) (connectedComponent (f a)) :=
   mapsTo'.2 <| h.image_connectedComponent_subset a
 #align continuous.maps_to_connected_component Continuous.mapsTo_connectedComponent
 
+theorem Continuous.mapsTo_connectedComponentIn [TopologicalSpace β] {f : α → β} {s : Set α}
+    (h : Continuous f) {a : α} (hx : a ∈ s) :
+    MapsTo f (connectedComponentIn s a) (connectedComponentIn (f '' s) (f a)) :=
+  mapsTo'.2 <| image_connectedComponentIn_subset h hx
+
 theorem irreducibleComponent_subset_connectedComponent {x : α} :
     irreducibleComponent x ⊆ connectedComponent x :=
   isIrreducible_irreducibleComponent.isConnected.subset_connectedComponent mem_irreducibleComponent
chore: reduce imports (#9830)

This uses the improved shake script from #9772 to reduce imports across mathlib. The corresponding noshake.json file has been added to #9772.

Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -3,6 +3,7 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Mario Carneiro, Yury Kudryashov
 -/
+import Mathlib.Data.Set.Image
 import Mathlib.Order.SuccPred.Relation
 import Mathlib.Topology.Clopen
 import Mathlib.Topology.Irreducible
chore(Data/Finset): drop some Nonempty arguments (#9377)
  • rename Finset.Nonempty.image_iff to Finset.image_nonempty, deprecate the old version;
  • rename Set.nonempty_image_iff to Set.image_nonempty, deprecate the old version;
  • drop unneeded Finset.Nonempty arguments here and there;
  • add versions of some lemmas that assume Nonempty s instead of Nonempty (s.image f) or Nonempty (s.map f).
Diff
@@ -331,7 +331,7 @@ protected theorem IsPreconnected.image [TopologicalSpace β] {s : Set α} (H : I
 /-- The image of a connected set is connected as well. -/
 protected theorem IsConnected.image [TopologicalSpace β] {s : Set α} (H : IsConnected s) (f : α → β)
     (hf : ContinuousOn f s) : IsConnected (f '' s) :=
-  ⟨nonempty_image_iff.mpr H.nonempty, H.isPreconnected.image f hf⟩
+  ⟨image_nonempty.mpr H.nonempty, H.isPreconnected.image f hf⟩
 #align is_connected.image IsConnected.image
 
 theorem isPreconnected_closed_iff {s : Set α} :
style: use cases x with | ... instead of cases x; case => ... (#9321)

This converts usages of the pattern

cases h
case inl h' => ...
case inr h' => ...

which derive from mathported code, to the "structured cases" syntax:

cases h with
| inl h' => ...
| inr h' => ...

The case where the subgoals are handled with · instead of case is more contentious (and much more numerous) so I left those alone. This pattern also appears with cases', induction, induction', and rcases. Furthermore, there is a similar transformation for by_cases:

by_cases h : cond
case pos => ...
case neg => ...

is replaced by:

if h : cond then
  ...
else
  ...

Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -99,12 +99,12 @@ theorem isPreconnected_of_forall {s : Set α} (x : α)
     rcases H y ys with ⟨t, ts, xt, -, -⟩
     exact ts xt
   -- porting note: todo: use `wlog xu : x ∈ u := hs xs using u v y z, v u z y`
-  cases hs xs
-  case inl xu =>
+  cases hs xs with
+  | inl xu =>
     rcases H y ys with ⟨t, ts, xt, yt, ht⟩
     have := ht u v hu hv (ts.trans hs) ⟨x, xt, xu⟩ ⟨y, yt, yv⟩
     exact this.imp fun z hz => ⟨ts hz.1, hz.2⟩
-  case inr xv =>
+  | inr xv =>
     rcases H z zs with ⟨t, ts, xt, zt, ht⟩
     have := ht v u hv hu (ts.trans <| by rwa [union_comm]) ⟨x, xt, xv⟩ ⟨z, zt, zu⟩
     exact this.imp fun _ h => ⟨ts h.1, h.2.2, h.2.1⟩
@@ -172,12 +172,12 @@ theorem IsPreconnected.biUnion_of_reflTransGen {ι : Type*} {t : Set ι} {s : ι
   let R := fun i j : ι => (s i ∩ s j).Nonempty ∧ i ∈ t
   have P : ∀ i, i ∈ t → ∀ j, j ∈ t → ReflTransGen R i j →
       ∃ p, p ⊆ t ∧ i ∈ p ∧ j ∈ p ∧ IsPreconnected (⋃ j ∈ p, s j) := fun i hi j hj h => by
-    induction h
-    case refl =>
+    induction h with
+    | refl =>
       refine ⟨{i}, singleton_subset_iff.mpr hi, mem_singleton i, mem_singleton i, ?_⟩
       rw [biUnion_singleton]
       exact H i hi
-    case tail j k _ hjk ih =>
+    | @tail j k _ hjk ih =>
       obtain ⟨p, hpt, hip, hjp, hp⟩ := ih hjk.2
       refine ⟨insert k p, insert_subset_iff.mpr ⟨hj, hpt⟩, mem_insert_of_mem k hip,
         mem_insert k p, ?_⟩
@@ -1043,9 +1043,9 @@ theorem isConnected_iff_sUnion_disjoint_open {s : Set α} :
         (∀ u ∈ U, IsOpen u) → (s ⊆ ⋃₀ ↑U) → ∃ u ∈ U, s ⊆ u := by
   rw [IsConnected, isPreconnected_iff_subset_of_disjoint]
   refine ⟨fun ⟨hne, h⟩ U hU hUo hsU => ?_, fun h => ⟨?_, fun u v hu hv hs hsuv => ?_⟩⟩
-  · induction U using Finset.induction_on
-    case empty => exact absurd (by simpa using hsU) hne.not_subset_empty
-    case insert u U uU IH =>
+  · induction U using Finset.induction_on with
+    | empty => exact absurd (by simpa using hsU) hne.not_subset_empty
+    | @insert u U uU IH =>
       simp only [← ball_cond_comm, Finset.forall_mem_insert, Finset.exists_mem_insert,
         Finset.coe_insert, sUnion_insert, implies_true, true_and] at *
       refine (h _ hUo.1 (⋃₀ ↑U) (isOpen_sUnion hUo.2) hsU ?_).imp_right ?_
chore: rename by_contra' to by_contra! (#8797)

To fit with the "please try harder" convention of ! tactics.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -1311,7 +1311,7 @@ continuous on a set `s`, is constant on s, then s is preconnected -/
 theorem isPreconnected_of_forall_constant {s : Set α}
     (hs : ∀ f : α → Bool, ContinuousOn f s → ∀ x ∈ s, ∀ y ∈ s, f x = f y) : IsPreconnected s := by
   unfold IsPreconnected
-  by_contra'
+  by_contra!
   rcases this with ⟨u, v, u_op, v_op, hsuv, ⟨x, x_in_s, x_in_u⟩, ⟨y, y_in_s, y_in_v⟩, H⟩
   have hy : y ∉ u := fun y_in_u => eq_empty_iff_forall_not_mem.mp H y ⟨y_in_s, ⟨y_in_u, y_in_v⟩⟩
   have : ContinuousOn u.boolIndicator s := by
chore: rename lemmas containing "of_open" to match the naming convention (#8229)

Mostly, this means replacing "of_open" by "of_isOpen". A few lemmas names were misleading and are corrected differently. Zulip discussion.

Diff
@@ -371,8 +371,8 @@ theorem Inducing.isPreconnected_image [TopologicalSpace β] {s : Set α} {f : α
 
 /- TODO: The following lemmas about connection of preimages hold more generally for strict maps
 (the quotient and subspace topologies of the image agree) whose fibers are preconnected. -/
-theorem IsPreconnected.preimage_of_open_map [TopologicalSpace β] {s : Set β} (hs : IsPreconnected s)
-    {f : α → β} (hinj : Function.Injective f) (hf : IsOpenMap f) (hsf : s ⊆ range f) :
+theorem IsPreconnected.preimage_of_isOpenMap [TopologicalSpace β] {f : α → β} {s : Set β}
+    (hs : IsPreconnected s) (hinj : Function.Injective f) (hf : IsOpenMap f) (hsf : s ⊆ range f) :
     IsPreconnected (f ⁻¹' s) := fun u v hu hv hsuv hsu hsv => by
   replace hsf : f '' (f ⁻¹' s) = s := image_preimage_eq_of_subset hsf
   obtain ⟨_, has, ⟨a, hau, rfl⟩, hav⟩ : (s ∩ (f '' u ∩ f '' v)).Nonempty
@@ -381,7 +381,7 @@ theorem IsPreconnected.preimage_of_open_map [TopologicalSpace β] {s : Set β} (
     · simpa only [image_preimage_inter] using hsu.image f
     · simpa only [image_preimage_inter] using hsv.image f
   · exact ⟨a, has, hau, hinj.mem_set_image.1 hav⟩
-#align is_preconnected.preimage_of_open_map IsPreconnected.preimage_of_open_map
+#align is_preconnected.preimage_of_open_map IsPreconnected.preimage_of_isOpenMap
 
 theorem IsPreconnected.preimage_of_isClosedMap [TopologicalSpace β] {s : Set β}
     (hs : IsPreconnected s) {f : α → β} (hinj : Function.Injective f) (hf : IsClosedMap f)
@@ -396,11 +396,11 @@ theorem IsPreconnected.preimage_of_isClosedMap [TopologicalSpace β] {s : Set β
     · exact ⟨a, has, hau, hinj.mem_set_image.1 hav⟩
 #align is_preconnected.preimage_of_closed_map IsPreconnected.preimage_of_isClosedMap
 
-theorem IsConnected.preimage_of_openMap [TopologicalSpace β] {s : Set β} (hs : IsConnected s)
+theorem IsConnected.preimage_of_isOpenMap [TopologicalSpace β] {s : Set β} (hs : IsConnected s)
     {f : α → β} (hinj : Function.Injective f) (hf : IsOpenMap f) (hsf : s ⊆ range f) :
     IsConnected (f ⁻¹' s) :=
-  ⟨hs.nonempty.preimage' hsf, hs.isPreconnected.preimage_of_open_map hinj hf hsf⟩
-#align is_connected.preimage_of_open_map IsConnected.preimage_of_openMap
+  ⟨hs.nonempty.preimage' hsf, hs.isPreconnected.preimage_of_isOpenMap hinj hf hsf⟩
+#align is_connected.preimage_of_open_map IsConnected.preimage_of_isOpenMap
 
 theorem IsConnected.preimage_of_isClosedMap [TopologicalSpace β] {s : Set β} (hs : IsConnected s)
     {f : α → β} (hinj : Function.Injective f) (hf : IsClosedMap f) (hsf : s ⊆ range f) :
@@ -512,7 +512,7 @@ theorem Sigma.isConnected_iff [∀ i, TopologicalSpace (π i)] {s : Set (Σi, π
   · obtain ⟨⟨i, x⟩, hx⟩ := hs.nonempty
     have : s ⊆ range (Sigma.mk i) :=
       hs.isPreconnected.subset_isClopen isClopen_range_sigmaMk ⟨⟨i, x⟩, hx, x, rfl⟩
-    exact ⟨i, Sigma.mk i ⁻¹' s, hs.preimage_of_openMap sigma_mk_injective isOpenMap_sigmaMk this,
+    exact ⟨i, Sigma.mk i ⁻¹' s, hs.preimage_of_isOpenMap sigma_mk_injective isOpenMap_sigmaMk this,
       (Set.image_preimage_eq_of_subset this).symm⟩
   · rintro ⟨i, t, ht, rfl⟩
     exact ht.image _ continuous_sigmaMk.continuousOn
@@ -537,12 +537,12 @@ theorem Sum.isConnected_iff [TopologicalSpace β] {s : Set (Sum α β)} :
     · have h : s ⊆ range Sum.inl :=
         hs.isPreconnected.subset_isClopen isClopen_range_inl ⟨.inl x, hx, x, rfl⟩
       refine' Or.inl ⟨Sum.inl ⁻¹' s, _, _⟩
-      · exact hs.preimage_of_openMap Sum.inl_injective isOpenMap_inl h
+      · exact hs.preimage_of_isOpenMap Sum.inl_injective isOpenMap_inl h
       · exact (image_preimage_eq_of_subset h).symm
     · have h : s ⊆ range Sum.inr :=
         hs.isPreconnected.subset_isClopen isClopen_range_inr ⟨.inr x, hx, x, rfl⟩
       refine' Or.inr ⟨Sum.inr ⁻¹' s, _, _⟩
-      · exact hs.preimage_of_openMap Sum.inr_injective isOpenMap_inr h
+      · exact hs.preimage_of_isOpenMap Sum.inr_injective isOpenMap_inr h
       · exact (image_preimage_eq_of_subset h).symm
   · rintro (⟨t, ht, rfl⟩ | ⟨t, ht, rfl⟩)
     · exact ht.image _ continuous_inl.continuousOn
chore: rename most lemmas involving clopen to isClopen (#8720)

This PR renames the field Clopens.clopen' -> Clopens.isClopen', and the lemmas

  • preimage_closed_of_closed -> ContinuousOn.preimage_isClosed_of_isClosed

as well as: ClopenUpperSet.clopen -> ClopenUpperSet.isClopen connectedComponent_eq_iInter_clopen -> connectedComponent_eq_iInter_isClopen connectedComponent_subset_iInter_clopen -> connectedComponent_subset_iInter_isClopen continuous_boolIndicator_iff_clopen -> continuous_boolIndicator_iff_isClopen continuousOn_boolIndicator_iff_clopen -> continuousOn_boolIndicator_iff_isClopen DiscreteQuotient.ofClopen -> DiscreteQuotient.ofIsClopen disjoint_or_subset_of_clopen -> disjoint_or_subset_of_isClopen exists_clopen_{lower,upper}of_not_le -> exists_isClopen{lower,upper}_of_not_le exists_clopen_of_cofiltered -> exists_isClopen_of_cofiltered exists_clopen_of_totally_separated -> exists_isClopen_of_totally_separated exists_clopen_upper_or_lower_of_ne -> exists_isClopen_upper_or_lower_of_ne IsPreconnected.subset_clopen -> IsPreconnected.subset_isClopen isTotallyDisconnected_of_clopen_set -> isTotallyDisconnected_of_isClopen_set LocallyConstant.ofClopen_fiber_one -> LocallyConstant.ofIsClopen_fiber_one LocallyConstant.ofClopen_fiber_zero -> LocallyConstant.ofIsClopen_fiber_zero LocallyConstant.ofClopen -> LocallyConstant.ofIsClopen preimage_clopen_of_clopen -> preimage_isClopen_of_isClopen TopologicalSpace.Clopens.clopen -> TopologicalSpace.Clopens.isClopen

Diff
@@ -438,10 +438,10 @@ theorem IsPreconnected.subset_right_of_subset_union (hu : IsOpen u) (hv : IsOpen
 
 -- porting note: moved up
 /-- Preconnected sets are either contained in or disjoint to any given clopen set. -/
-theorem IsPreconnected.subset_clopen {s t : Set α} (hs : IsPreconnected s) (ht : IsClopen t)
+theorem IsPreconnected.subset_isClopen {s t : Set α} (hs : IsPreconnected s) (ht : IsClopen t)
     (hne : (s ∩ t).Nonempty) : s ⊆ t :=
   hs.subset_left_of_subset_union ht.isOpen ht.compl.isOpen disjoint_compl_right (by simp) hne
-#align is_preconnected.subset_clopen IsPreconnected.subset_clopen
+#align is_preconnected.subset_clopen IsPreconnected.subset_isClopen
 
 /-- If a preconnected set `s` intersects an open set `u`, and limit points of `u` inside `s` are
 contained in `u`, then the whole set `s` is contained in `u`. -/
@@ -511,7 +511,7 @@ theorem Sigma.isConnected_iff [∀ i, TopologicalSpace (π i)] {s : Set (Σi, π
   refine' ⟨fun hs => _, _⟩
   · obtain ⟨⟨i, x⟩, hx⟩ := hs.nonempty
     have : s ⊆ range (Sigma.mk i) :=
-      hs.isPreconnected.subset_clopen isClopen_range_sigmaMk ⟨⟨i, x⟩, hx, x, rfl⟩
+      hs.isPreconnected.subset_isClopen isClopen_range_sigmaMk ⟨⟨i, x⟩, hx, x, rfl⟩
     exact ⟨i, Sigma.mk i ⁻¹' s, hs.preimage_of_openMap sigma_mk_injective isOpenMap_sigmaMk this,
       (Set.image_preimage_eq_of_subset this).symm⟩
   · rintro ⟨i, t, ht, rfl⟩
@@ -535,12 +535,12 @@ theorem Sum.isConnected_iff [TopologicalSpace β] {s : Set (Sum α β)} :
   refine' ⟨fun hs => _, _⟩
   · obtain ⟨x | x, hx⟩ := hs.nonempty
     · have h : s ⊆ range Sum.inl :=
-        hs.isPreconnected.subset_clopen isClopen_range_inl ⟨.inl x, hx, x, rfl⟩
+        hs.isPreconnected.subset_isClopen isClopen_range_inl ⟨.inl x, hx, x, rfl⟩
       refine' Or.inl ⟨Sum.inl ⁻¹' s, _, _⟩
       · exact hs.preimage_of_openMap Sum.inl_injective isOpenMap_inl h
       · exact (image_preimage_eq_of_subset h).symm
     · have h : s ⊆ range Sum.inr :=
-        hs.isPreconnected.subset_clopen isClopen_range_inr ⟨.inr x, hx, x, rfl⟩
+        hs.isPreconnected.subset_isClopen isClopen_range_inr ⟨.inr x, hx, x, rfl⟩
       refine' Or.inr ⟨Sum.inr ⁻¹' s, _, _⟩
       · exact hs.preimage_of_openMap Sum.inr_injective isOpenMap_inr h
       · exact (image_preimage_eq_of_subset h).symm
@@ -1058,13 +1058,13 @@ theorem isConnected_iff_sUnion_disjoint_open {s : Set α} :
     simpa [*, or_imp, forall_and] using h {u, v}
 #align is_connected_iff_sUnion_disjoint_open isConnected_iff_sUnion_disjoint_open
 
--- porting note: `IsPreconnected.subset_clopen` moved up from here
+-- porting note: `IsPreconnected.subset_isClopen` moved up from here
 
 /-- Preconnected sets are either contained in or disjoint to any given clopen set. -/
-theorem disjoint_or_subset_of_clopen {s t : Set α} (hs : IsPreconnected s) (ht : IsClopen t) :
+theorem disjoint_or_subset_of_isClopen {s t : Set α} (hs : IsPreconnected s) (ht : IsClopen t) :
     Disjoint s t ∨ s ⊆ t :=
-  (disjoint_or_nonempty_inter s t).imp_right <| hs.subset_clopen ht
-#align disjoint_or_subset_of_clopen disjoint_or_subset_of_clopen
+  (disjoint_or_nonempty_inter s t).imp_right <| hs.subset_isClopen ht
+#align disjoint_or_subset_of_clopen disjoint_or_subset_of_isClopen
 
 /-- A set `s` is preconnected if and only if
 for every cover by two closed sets that are disjoint on `s`,
@@ -1115,15 +1115,15 @@ theorem isPreconnected_iff_subset_of_fully_disjoint_closed {s : Set α} (hs : Is
 
 theorem IsClopen.connectedComponent_subset {x} (hs : IsClopen s) (hx : x ∈ s) :
     connectedComponent x ⊆ s :=
-  isPreconnected_connectedComponent.subset_clopen hs ⟨x, mem_connectedComponent, hx⟩
+  isPreconnected_connectedComponent.subset_isClopen hs ⟨x, mem_connectedComponent, hx⟩
 #align is_clopen.connected_component_subset IsClopen.connectedComponent_subset
 
 /-- The connected component of a point is always a subset of the intersection of all its clopen
 neighbourhoods. -/
-theorem connectedComponent_subset_iInter_clopen {x : α} :
+theorem connectedComponent_subset_iInter_isClopen {x : α} :
     connectedComponent x ⊆ ⋂ Z : { Z : Set α // IsClopen Z ∧ x ∈ Z }, Z :=
   subset_iInter fun Z => Z.2.1.connectedComponent_subset Z.2.2
-#align connected_component_subset_Inter_clopen connectedComponent_subset_iInter_clopen
+#align connected_component_subset_Inter_clopen connectedComponent_subset_iInter_isClopen
 
 /-- A clopen set is the union of its connected components. -/
 theorem IsClopen.biUnion_connectedComponent_eq {Z : Set α} (h : IsClopen Z) :
@@ -1315,7 +1315,7 @@ theorem isPreconnected_of_forall_constant {s : Set α}
   rcases this with ⟨u, v, u_op, v_op, hsuv, ⟨x, x_in_s, x_in_u⟩, ⟨y, y_in_s, y_in_v⟩, H⟩
   have hy : y ∉ u := fun y_in_u => eq_empty_iff_forall_not_mem.mp H y ⟨y_in_s, ⟨y_in_u, y_in_v⟩⟩
   have : ContinuousOn u.boolIndicator s := by
-    apply (continuousOn_boolIndicator_iff_clopen _ _).mpr ⟨_, _⟩
+    apply (continuousOn_boolIndicator_iff_isClopen _ _).mpr ⟨_, _⟩
     · exact u_op.preimage continuous_subtype_val
     · rw [preimage_subtype_coe_eq_compl hsuv H]
       exact (v_op.preimage continuous_subtype_val).isClosed_compl
chore: rename some lemmas involving "of_closed" (#8492)

Three particular examples which caught my eye; not exhaustive.

Diff
@@ -383,7 +383,7 @@ theorem IsPreconnected.preimage_of_open_map [TopologicalSpace β] {s : Set β} (
   · exact ⟨a, has, hau, hinj.mem_set_image.1 hav⟩
 #align is_preconnected.preimage_of_open_map IsPreconnected.preimage_of_open_map
 
-theorem IsPreconnected.preimage_of_closed_map [TopologicalSpace β] {s : Set β}
+theorem IsPreconnected.preimage_of_isClosedMap [TopologicalSpace β] {s : Set β}
     (hs : IsPreconnected s) {f : α → β} (hinj : Function.Injective f) (hf : IsClosedMap f)
     (hsf : s ⊆ range f) : IsPreconnected (f ⁻¹' s) :=
   isPreconnected_closed_iff.2 fun u v hu hv hsuv hsu hsv => by
@@ -394,7 +394,7 @@ theorem IsPreconnected.preimage_of_closed_map [TopologicalSpace β] {s : Set β}
       · simpa only [image_preimage_inter] using hsu.image f
       · simpa only [image_preimage_inter] using hsv.image f
     · exact ⟨a, has, hau, hinj.mem_set_image.1 hav⟩
-#align is_preconnected.preimage_of_closed_map IsPreconnected.preimage_of_closed_map
+#align is_preconnected.preimage_of_closed_map IsPreconnected.preimage_of_isClosedMap
 
 theorem IsConnected.preimage_of_openMap [TopologicalSpace β] {s : Set β} (hs : IsConnected s)
     {f : α → β} (hinj : Function.Injective f) (hf : IsOpenMap f) (hsf : s ⊆ range f) :
@@ -402,11 +402,11 @@ theorem IsConnected.preimage_of_openMap [TopologicalSpace β] {s : Set β} (hs :
   ⟨hs.nonempty.preimage' hsf, hs.isPreconnected.preimage_of_open_map hinj hf hsf⟩
 #align is_connected.preimage_of_open_map IsConnected.preimage_of_openMap
 
-theorem IsConnected.preimage_of_closedMap [TopologicalSpace β] {s : Set β} (hs : IsConnected s)
+theorem IsConnected.preimage_of_isClosedMap [TopologicalSpace β] {s : Set β} (hs : IsConnected s)
     {f : α → β} (hinj : Function.Injective f) (hf : IsClosedMap f) (hsf : s ⊆ range f) :
     IsConnected (f ⁻¹' s) :=
-  ⟨hs.nonempty.preimage' hsf, hs.isPreconnected.preimage_of_closed_map hinj hf hsf⟩
-#align is_connected.preimage_of_closed_map IsConnected.preimage_of_closedMap
+  ⟨hs.nonempty.preimage' hsf, hs.isPreconnected.preimage_of_isClosedMap hinj hf hsf⟩
+#align is_connected.preimage_of_closed_map IsConnected.preimage_of_isClosedMap
 
 theorem IsPreconnected.subset_or_subset (hu : IsOpen u) (hv : IsOpen v) (huv : Disjoint u v)
     (hsuv : s ⊆ u ∪ v) (hs : IsPreconnected s) : s ⊆ u ∨ s ⊆ v := by
chore: make sure all #align's are on a single line (#8215)

We'll need to do this step anyway when it is time to remove them all.

(See #8214 where I'm benchmarking the removal.)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -714,8 +714,7 @@ theorem Continuous.mapsTo_connectedComponent [TopologicalSpace β] {f : α → 
 theorem irreducibleComponent_subset_connectedComponent {x : α} :
     irreducibleComponent x ⊆ connectedComponent x :=
   isIrreducible_irreducibleComponent.isConnected.subset_connectedComponent mem_irreducibleComponent
-#align irreducible_component_subset_connected_component
-  irreducibleComponent_subset_connectedComponent
+#align irreducible_component_subset_connected_component irreducibleComponent_subset_connectedComponent
 
 @[mono]
 theorem connectedComponentIn_mono (x : α) {F G : Set α} (h : F ⊆ G) :
@@ -1112,8 +1111,7 @@ theorem isPreconnected_iff_subset_of_fully_disjoint_closed {s : Set α} (hs : Is
   · rw [← inter_distrib_right]
     exact subset_inter hss Subset.rfl
   · rwa [disjoint_iff_inter_eq_empty, ← inter_inter_distrib_right, inter_comm]
-#align is_preconnected_iff_subset_of_fully_disjoint_closed
-  isPreconnected_iff_subset_of_fully_disjoint_closed
+#align is_preconnected_iff_subset_of_fully_disjoint_closed isPreconnected_iff_subset_of_fully_disjoint_closed
 
 theorem IsClopen.connectedComponent_subset {x} (hs : IsClopen s) (hx : x ∈ s) :
     connectedComponent x ⊆ s :=
chore: exact, not refine when possible (#8130)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -977,7 +977,7 @@ lemma PreconnectedSpace.induction₂ [PreconnectedSpace α] (P : α → α → P
     P x y := by
   refine PreconnectedSpace.induction₂' P (fun z ↦ ?_) h' x y
   filter_upwards [h z] with a ha
-  refine ⟨ha, h'' ha⟩
+  exact ⟨ha, h'' ha⟩
 
 /-- In a preconnected set, given a transitive relation `P`, if `P x y` and `P y x` are true
 for `y` close enough to `x`, then `P x y` holds for all `x, y`. This is a version of the fact
feat: let push_neg replace not (Set.Nonempty s) with s = emptyset (#8000)

Co-authored-by: Kyle Miller <kmill31415@gmail.com>

Diff
@@ -1017,7 +1017,6 @@ theorem isPreconnected_iff_subset_of_disjoint {s : Set α} :
   · intro u v hu hv hs huv
     specialize h u v hu hv hs
     contrapose! huv
-    rw [← nonempty_iff_ne_empty]
     simp [not_subset] at huv
     rcases huv with ⟨⟨x, hxs, hxu⟩, ⟨y, hys, hyv⟩⟩
     have hxv : x ∈ v := or_iff_not_imp_left.mp (hs hxs) hxu
@@ -1079,7 +1078,6 @@ theorem isPreconnected_iff_subset_of_disjoint_closed :
     rw [isPreconnected_closed_iff] at h
     specialize h u v hu hv hs
     contrapose! huv
-    rw [← nonempty_iff_ne_empty]
     simp [not_subset] at huv
     rcases huv with ⟨⟨x, hxs, hxu⟩, ⟨y, hys, hyv⟩⟩
     have hxv : x ∈ v := or_iff_not_imp_left.mp (hs hxs) hxu
@@ -1317,7 +1315,6 @@ theorem isPreconnected_of_forall_constant {s : Set α}
   unfold IsPreconnected
   by_contra'
   rcases this with ⟨u, v, u_op, v_op, hsuv, ⟨x, x_in_s, x_in_u⟩, ⟨y, y_in_s, y_in_v⟩, H⟩
-  rw [not_nonempty_iff_eq_empty] at H
   have hy : y ∉ u := fun y_in_u => eq_empty_iff_forall_not_mem.mp H y ⟨y_in_s, ⟨y_in_u, y_in_v⟩⟩
   have : ContinuousOn u.boolIndicator s := by
     apply (continuousOn_boolIndicator_iff_clopen _ _).mpr ⟨_, _⟩
chore: remove some double spaces (#7983)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -994,7 +994,7 @@ lemma IsPreconnected.induction₂' {s : Set α} (hs : IsPreconnected s) (P : α
     have Z := h x hx
     rwa [nhdsWithin_eq_map_subtype_coe] at Z
   · rintro ⟨a, ha⟩ ⟨b, hb⟩ ⟨c, hc⟩ hab hbc
-    exact h' a b c ha hb hc  hab hbc
+    exact h' a b c ha hb hc hab hbc
 
 /-- In a preconnected set, if a symmetric transitive relation `P x y` is true for `y` close
 enough to `x`, then it holds for all `x, y`. This is a version of the fact that, if an equivalence
chore(Topology): minimize some imports (#7775)

For faster build times and clearer dependencies. No attempt at being exhaustive.

The new import in Clopen.lean had been transitively imported before.

Diff
@@ -3,7 +3,6 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Mario Carneiro, Yury Kudryashov
 -/
-import Mathlib.Data.Set.BoolIndicator
 import Mathlib.Order.SuccPred.Relation
 import Mathlib.Topology.Clopen
 import Mathlib.Topology.Irreducible
feat: split Topology/Connected.lean (#7646)

In the last step, I have removed redundant imports: those which are implied by the other imports. I can revert those changes if desired/if this seems too brittle.

Diff
@@ -23,12 +23,8 @@ We define the following properties for sets in a topological space:
 * `IsConnected`: a nonempty set that has no non-trivial open partition.
   See also the section below in the module doc.
 * `connectedComponent` is the connected component of an element in the space.
-* `IsTotallyDisconnected`: all of its connected components are singletons.
-* `IsTotallySeparated`: any two points can be separated by two disjoint opens that cover the set.
 
-For each of these definitions, we also have a class stating that the whole space
-satisfies that property:
-`ConnectedSpace`, `TotallyDisconnectedSpace`, `TotallySeparatedSpace`.
+We also have a class stating that the whole space satisfies that property: `ConnectedSpace`
 
 ## On the definition of connected sets/spaces
 
@@ -1236,345 +1232,7 @@ theorem QuotientMap.image_connectedComponent [TopologicalSpace β] {f : α → 
 
 end Preconnected
 
-section LocallyConnectedSpace
-
-/-- A topological space is **locally connected** if each neighborhood filter admits a basis
-of connected *open* sets. Note that it is equivalent to each point having a basis of connected
-(non necessarily open) sets but in a non-trivial way, so we choose this definition and prove the
-equivalence later in `locallyConnectedSpace_iff_connected_basis`. -/
-class LocallyConnectedSpace (α : Type*) [TopologicalSpace α] : Prop where
-  /-- Open connected neighborhoods form a basis of the neighborhoods filter. -/
-  open_connected_basis : ∀ x, (𝓝 x).HasBasis (fun s : Set α => IsOpen s ∧ x ∈ s ∧ IsConnected s) id
-#align locally_connected_space LocallyConnectedSpace
-
-theorem locallyConnectedSpace_iff_open_connected_basis :
-    LocallyConnectedSpace α ↔
-      ∀ x, (𝓝 x).HasBasis (fun s : Set α => IsOpen s ∧ x ∈ s ∧ IsConnected s) id :=
-  ⟨@LocallyConnectedSpace.open_connected_basis _ _, LocallyConnectedSpace.mk⟩
-#align locally_connected_space_iff_open_connected_basis
-  locallyConnectedSpace_iff_open_connected_basis
-
-theorem locallyConnectedSpace_iff_open_connected_subsets :
-    LocallyConnectedSpace α ↔
-      ∀ x, ∀ U ∈ 𝓝 x, ∃ V : Set α, V ⊆ U ∧ IsOpen V ∧ x ∈ V ∧ IsConnected V := by
-  simp_rw [locallyConnectedSpace_iff_open_connected_basis]
-  refine forall_congr' fun _ => ?_
-  constructor
-  · intro h U hU
-    rcases h.mem_iff.mp hU with ⟨V, hV, hVU⟩
-    exact ⟨V, hVU, hV⟩
-  · exact fun h => ⟨fun U => ⟨fun hU =>
-      let ⟨V, hVU, hV⟩ := h U hU
-      ⟨V, hV, hVU⟩, fun ⟨V, ⟨hV, hxV, _⟩, hVU⟩ => mem_nhds_iff.mpr ⟨V, hVU, hV, hxV⟩⟩⟩
-#align locally_connected_space_iff_open_connected_subsets locallyConnectedSpace_iff_open_connected_subsets
-
-/-- A space with discrete topology is a locally connected space. -/
-instance (priority := 100) DiscreteTopology.toLocallyConnectedSpace (α) [TopologicalSpace α]
-    [DiscreteTopology α] : LocallyConnectedSpace α :=
-  locallyConnectedSpace_iff_open_connected_subsets.2 fun x _U hU =>
-    ⟨{x}, singleton_subset_iff.2 <| mem_of_mem_nhds hU, isOpen_discrete _, rfl,
-      isConnected_singleton⟩
-#align discrete_topology.to_locally_connected_space DiscreteTopology.toLocallyConnectedSpace
-
-theorem connectedComponentIn_mem_nhds [LocallyConnectedSpace α] {F : Set α} {x : α} (h : F ∈ 𝓝 x) :
-    connectedComponentIn F x ∈ 𝓝 x := by
-  rw [(LocallyConnectedSpace.open_connected_basis x).mem_iff] at h
-  rcases h with ⟨s, ⟨h1s, hxs, h2s⟩, hsF⟩
-  exact mem_nhds_iff.mpr ⟨s, h2s.isPreconnected.subset_connectedComponentIn hxs hsF, h1s, hxs⟩
-#align connected_component_in_mem_nhds connectedComponentIn_mem_nhds
-
-protected theorem IsOpen.connectedComponentIn [LocallyConnectedSpace α] {F : Set α} {x : α}
-    (hF : IsOpen F) : IsOpen (connectedComponentIn F x) := by
-  rw [isOpen_iff_mem_nhds]
-  intro y hy
-  rw [connectedComponentIn_eq hy]
-  exact connectedComponentIn_mem_nhds (hF.mem_nhds <| connectedComponentIn_subset F x hy)
-#align is_open.connected_component_in IsOpen.connectedComponentIn
-
-theorem isOpen_connectedComponent [LocallyConnectedSpace α] {x : α} :
-    IsOpen (connectedComponent x) := by
-  rw [← connectedComponentIn_univ]
-  exact isOpen_univ.connectedComponentIn
-#align is_open_connected_component isOpen_connectedComponent
-
-theorem isClopen_connectedComponent [LocallyConnectedSpace α] {x : α} :
-    IsClopen (connectedComponent x) :=
-  ⟨isOpen_connectedComponent, isClosed_connectedComponent⟩
-#align is_clopen_connected_component isClopen_connectedComponent
-
-theorem locallyConnectedSpace_iff_connectedComponentIn_open :
-    LocallyConnectedSpace α ↔
-      ∀ F : Set α, IsOpen F → ∀ x ∈ F, IsOpen (connectedComponentIn F x) := by
-  constructor
-  · intro h
-    exact fun F hF x _ => hF.connectedComponentIn
-  · intro h
-    rw [locallyConnectedSpace_iff_open_connected_subsets]
-    refine' fun x U hU =>
-        ⟨connectedComponentIn (interior U) x,
-          (connectedComponentIn_subset _ _).trans interior_subset, h _ isOpen_interior x _,
-          mem_connectedComponentIn _, isConnected_connectedComponentIn_iff.mpr _⟩ <;>
-      exact mem_interior_iff_mem_nhds.mpr hU
-#align locally_connected_space_iff_connected_component_in_open locallyConnectedSpace_iff_connectedComponentIn_open
-
-theorem locallyConnectedSpace_iff_connected_subsets :
-    LocallyConnectedSpace α ↔ ∀ (x : α), ∀ U ∈ 𝓝 x, ∃ V ∈ 𝓝 x, IsPreconnected V ∧ V ⊆ U := by
-  constructor
-  · rw [locallyConnectedSpace_iff_open_connected_subsets]
-    intro h x U hxU
-    rcases h x U hxU with ⟨V, hVU, hV₁, hxV, hV₂⟩
-    exact ⟨V, hV₁.mem_nhds hxV, hV₂.isPreconnected, hVU⟩
-  · rw [locallyConnectedSpace_iff_connectedComponentIn_open]
-    refine' fun h U hU x _ => isOpen_iff_mem_nhds.mpr fun y hy => _
-    rw [connectedComponentIn_eq hy]
-    rcases h y U (hU.mem_nhds <| (connectedComponentIn_subset _ _) hy) with ⟨V, hVy, hV, hVU⟩
-    exact Filter.mem_of_superset hVy (hV.subset_connectedComponentIn (mem_of_mem_nhds hVy) hVU)
-#align locally_connected_space_iff_connected_subsets locallyConnectedSpace_iff_connected_subsets
-
-theorem locallyConnectedSpace_iff_connected_basis :
-    LocallyConnectedSpace α ↔
-      ∀ x, (𝓝 x).HasBasis (fun s : Set α => s ∈ 𝓝 x ∧ IsPreconnected s) id := by
-  rw [locallyConnectedSpace_iff_connected_subsets]
-  exact forall_congr' <| fun x => Filter.hasBasis_self.symm
-#align locally_connected_space_iff_connected_basis locallyConnectedSpace_iff_connected_basis
-
-theorem locallyConnectedSpace_of_connected_bases {ι : Type*} (b : α → ι → Set α) (p : α → ι → Prop)
-    (hbasis : ∀ x, (𝓝 x).HasBasis (p x) (b x))
-    (hconnected : ∀ x i, p x i → IsPreconnected (b x i)) : LocallyConnectedSpace α := by
-  rw [locallyConnectedSpace_iff_connected_basis]
-  exact fun x =>
-    (hbasis x).to_hasBasis
-      (fun i hi => ⟨b x i, ⟨(hbasis x).mem_of_mem hi, hconnected x i hi⟩, subset_rfl⟩) fun s hs =>
-      ⟨(hbasis x).index s hs.1, ⟨(hbasis x).property_index hs.1, (hbasis x).set_index_subset hs.1⟩⟩
-#align locally_connected_space_of_connected_bases locallyConnectedSpace_of_connected_bases
-
-theorem OpenEmbedding.locallyConnectedSpace [LocallyConnectedSpace α] [TopologicalSpace β]
-    {f : β → α} (h : OpenEmbedding f) : LocallyConnectedSpace β := by
-  refine locallyConnectedSpace_of_connected_bases (fun _ s ↦ f ⁻¹' s)
-    (fun x s ↦ (IsOpen s ∧ f x ∈ s ∧ IsConnected s) ∧ s ⊆ range f) (fun x ↦ ?_)
-    (fun x s hxs ↦ hxs.1.2.2.isPreconnected.preimage_of_open_map h.inj h.isOpenMap hxs.2)
-  rw [h.nhds_eq_comap]
-  exact LocallyConnectedSpace.open_connected_basis (f x) |>.restrict_subset
-    (h.open_range.mem_nhds <| mem_range_self _) |>.comap _
-
-theorem IsOpen.locallyConnectedSpace [LocallyConnectedSpace α] {U : Set α} (hU : IsOpen U) :
-    LocallyConnectedSpace U :=
-  hU.openEmbedding_subtype_val.locallyConnectedSpace
-
-end LocallyConnectedSpace
-
-section TotallyDisconnected
-
-/-- A set `s` is called totally disconnected if every subset `t ⊆ s` which is preconnected is
-a subsingleton, ie either empty or a singleton.-/
-def IsTotallyDisconnected (s : Set α) : Prop :=
-  ∀ t, t ⊆ s → IsPreconnected t → t.Subsingleton
-#align is_totally_disconnected IsTotallyDisconnected
-
-theorem isTotallyDisconnected_empty : IsTotallyDisconnected (∅ : Set α) := fun _ ht _ _ x_in _ _ =>
-  (ht x_in).elim
-#align is_totally_disconnected_empty isTotallyDisconnected_empty
-
-theorem isTotallyDisconnected_singleton {x} : IsTotallyDisconnected ({x} : Set α) := fun _ ht _ =>
-  subsingleton_singleton.anti ht
-#align is_totally_disconnected_singleton isTotallyDisconnected_singleton
-
-/-- A space is totally disconnected if all of its connected components are singletons. -/
-class TotallyDisconnectedSpace (α : Type u) [TopologicalSpace α] : Prop where
-  /-- The universal set `Set.univ` in a totally disconnected space is totally disconnected. -/
-  isTotallyDisconnected_univ : IsTotallyDisconnected (univ : Set α)
-#align totally_disconnected_space TotallyDisconnectedSpace
-
-theorem IsPreconnected.subsingleton [TotallyDisconnectedSpace α] {s : Set α}
-    (h : IsPreconnected s) : s.Subsingleton :=
-  TotallyDisconnectedSpace.isTotallyDisconnected_univ s (subset_univ s) h
-#align is_preconnected.subsingleton IsPreconnected.subsingleton
-
-instance Pi.totallyDisconnectedSpace {α : Type*} {β : α → Type*}
-    [∀ a, TopologicalSpace (β a)] [∀ a, TotallyDisconnectedSpace (β a)] :
-    TotallyDisconnectedSpace (∀ a : α, β a) :=
-  ⟨fun t _ h2 =>
-    have this : ∀ a, IsPreconnected ((fun x : ∀ a, β a => x a) '' t) := fun a =>
-      h2.image (fun x => x a) (continuous_apply a).continuousOn
-    fun x x_in y y_in => funext fun a => (this a).subsingleton ⟨x, x_in, rfl⟩ ⟨y, y_in, rfl⟩⟩
-#align pi.totally_disconnected_space Pi.totallyDisconnectedSpace
-
-instance Prod.totallyDisconnectedSpace [TopologicalSpace β] [TotallyDisconnectedSpace α]
-    [TotallyDisconnectedSpace β] : TotallyDisconnectedSpace (α × β) :=
-  ⟨fun t _ h2 =>
-    have H1 : IsPreconnected (Prod.fst '' t) := h2.image Prod.fst continuous_fst.continuousOn
-    have H2 : IsPreconnected (Prod.snd '' t) := h2.image Prod.snd continuous_snd.continuousOn
-    fun x hx y hy =>
-    Prod.ext (H1.subsingleton ⟨x, hx, rfl⟩ ⟨y, hy, rfl⟩)
-      (H2.subsingleton ⟨x, hx, rfl⟩ ⟨y, hy, rfl⟩)⟩
-#align prod.totally_disconnected_space Prod.totallyDisconnectedSpace
-
-instance [TopologicalSpace β] [TotallyDisconnectedSpace α] [TotallyDisconnectedSpace β] :
-    TotallyDisconnectedSpace (Sum α β) := by
-  refine' ⟨fun s _ hs => _⟩
-  obtain ⟨t, ht, rfl⟩ | ⟨t, ht, rfl⟩ := Sum.isPreconnected_iff.1 hs
-  · exact ht.subsingleton.image _
-  · exact ht.subsingleton.image _
-
-instance [∀ i, TopologicalSpace (π i)] [∀ i, TotallyDisconnectedSpace (π i)] :
-    TotallyDisconnectedSpace (Σi, π i) := by
-  refine' ⟨fun s _ hs => _⟩
-  obtain rfl | h := s.eq_empty_or_nonempty
-  · exact subsingleton_empty
-  · obtain ⟨a, t, ht, rfl⟩ := Sigma.isConnected_iff.1 ⟨h, hs⟩
-    exact ht.isPreconnected.subsingleton.image _
-
--- porting note: reformulated using `Pairwise`
-/-- Let `X` be a topological space, and suppose that for all distinct `x,y ∈ X`, there
-  is some clopen set `U` such that `x ∈ U` and `y ∉ U`. Then `X` is totally disconnected. -/
-theorem isTotallyDisconnected_of_clopen_set {X : Type*} [TopologicalSpace X]
-    (hX : Pairwise fun x y => ∃ (U : Set X), IsClopen U ∧ x ∈ U ∧ y ∉ U) :
-    IsTotallyDisconnected (Set.univ : Set X) := by
-  rintro S - hS
-  unfold Set.Subsingleton
-  by_contra' h_contra
-  rcases h_contra with ⟨x, hx, y, hy, hxy⟩
-  obtain ⟨U, h_clopen, hxU, hyU⟩ := hX hxy
-  specialize
-    hS U Uᶜ h_clopen.1 h_clopen.compl.1 (fun a _ => em (a ∈ U)) ⟨x, hx, hxU⟩ ⟨y, hy, hyU⟩
-  rw [inter_compl_self, Set.inter_empty] at hS
-  exact Set.not_nonempty_empty hS
-#align is_totally_disconnected_of_clopen_set isTotallyDisconnected_of_clopen_set
-
-/-- A space is totally disconnected iff its connected components are subsingletons. -/
-theorem totallyDisconnectedSpace_iff_connectedComponent_subsingleton :
-    TotallyDisconnectedSpace α ↔ ∀ x : α, (connectedComponent x).Subsingleton := by
-  constructor
-  · intro h x
-    apply h.1
-    · exact subset_univ _
-    exact isPreconnected_connectedComponent
-  intro h; constructor
-  intro s s_sub hs
-  rcases eq_empty_or_nonempty s with (rfl | ⟨x, x_in⟩)
-  · exact subsingleton_empty
-  · exact (h x).anti (hs.subset_connectedComponent x_in)
-#align totally_disconnected_space_iff_connected_component_subsingleton
-  totallyDisconnectedSpace_iff_connectedComponent_subsingleton
-
-/-- A space is totally disconnected iff its connected components are singletons. -/
-theorem totallyDisconnectedSpace_iff_connectedComponent_singleton :
-    TotallyDisconnectedSpace α ↔ ∀ x : α, connectedComponent x = {x} := by
-  rw [totallyDisconnectedSpace_iff_connectedComponent_subsingleton]
-  refine forall_congr' fun x => ?_
-  rw [subsingleton_iff_singleton]
-  exact mem_connectedComponent
-#align totally_disconnected_space_iff_connected_component_singleton
-  totallyDisconnectedSpace_iff_connectedComponent_singleton
-
-@[simp] theorem connectedComponent_eq_singleton [TotallyDisconnectedSpace α] (x : α) :
-    connectedComponent x = {x} :=
-  totallyDisconnectedSpace_iff_connectedComponent_singleton.1 ‹_› x
-#align connected_component_eq_singleton connectedComponent_eq_singleton
-
-/-- The image of a connected component in a totally disconnected space is a singleton. -/
-@[simp]
-theorem Continuous.image_connectedComponent_eq_singleton {β : Type*} [TopologicalSpace β]
-    [TotallyDisconnectedSpace β] {f : α → β} (h : Continuous f) (a : α) :
-    f '' connectedComponent a = {f a} :=
-  (Set.subsingleton_iff_singleton <| mem_image_of_mem f mem_connectedComponent).mp
-    (isPreconnected_connectedComponent.image f h.continuousOn).subsingleton
-#align continuous.image_connected_component_eq_singleton Continuous.image_connectedComponent_eq_singleton
-
-theorem isTotallyDisconnected_of_totallyDisconnectedSpace [TotallyDisconnectedSpace α] (s : Set α) :
-    IsTotallyDisconnected s := fun t _ ht =>
-  TotallyDisconnectedSpace.isTotallyDisconnected_univ _ t.subset_univ ht
-#align is_totally_disconnected_of_totally_disconnected_space isTotallyDisconnected_of_totallyDisconnectedSpace
-
-theorem isTotallyDisconnected_of_image [TopologicalSpace β] {f : α → β} (hf : ContinuousOn f s)
-    (hf' : Injective f) (h : IsTotallyDisconnected (f '' s)) : IsTotallyDisconnected s :=
-  fun _t hts ht _x x_in _y y_in =>
-  hf' <|
-    h _ (image_subset f hts) (ht.image f <| hf.mono hts) (mem_image_of_mem f x_in)
-      (mem_image_of_mem f y_in)
-#align is_totally_disconnected_of_image isTotallyDisconnected_of_image
-
-theorem Embedding.isTotallyDisconnected [TopologicalSpace β] {f : α → β} (hf : Embedding f)
-    {s : Set α} (h : IsTotallyDisconnected (f '' s)) : IsTotallyDisconnected s :=
-  isTotallyDisconnected_of_image hf.continuous.continuousOn hf.inj h
-#align embedding.is_totally_disconnected Embedding.isTotallyDisconnected
-
-instance Subtype.totallyDisconnectedSpace {α : Type*} {p : α → Prop} [TopologicalSpace α]
-    [TotallyDisconnectedSpace α] : TotallyDisconnectedSpace (Subtype p) :=
-  ⟨embedding_subtype_val.isTotallyDisconnected
-      (isTotallyDisconnected_of_totallyDisconnectedSpace _)⟩
-#align subtype.totally_disconnected_space Subtype.totallyDisconnectedSpace
-
-end TotallyDisconnected
-
-section TotallySeparated
-
--- todo: reformulate using `Set.Pairwise`
-/-- A set `s` is called totally separated if any two points of this set can be separated
-by two disjoint open sets covering `s`. -/
-def IsTotallySeparated (s : Set α) : Prop :=
-  ∀ x ∈ s, ∀ y ∈ s, x ≠ y →
-    ∃ u v : Set α, IsOpen u ∧ IsOpen v ∧ x ∈ u ∧ y ∈ v ∧ s ⊆ u ∪ v ∧ Disjoint u v
-#align is_totally_separated IsTotallySeparated
-
-theorem isTotallySeparated_empty : IsTotallySeparated (∅ : Set α) := fun _ => False.elim
-#align is_totally_separated_empty isTotallySeparated_empty
-
-theorem isTotallySeparated_singleton {x} : IsTotallySeparated ({x} : Set α) := fun _ hp _ hq hpq =>
-  (hpq <| (eq_of_mem_singleton hp).symm ▸ (eq_of_mem_singleton hq).symm).elim
-#align is_totally_separated_singleton isTotallySeparated_singleton
-
-theorem isTotallyDisconnected_of_isTotallySeparated {s : Set α} (H : IsTotallySeparated s) :
-    IsTotallyDisconnected s := by
-  intro t hts ht x x_in y y_in
-  by_contra h
-  obtain
-    ⟨u : Set α, v : Set α, hu : IsOpen u, hv : IsOpen v, hxu : x ∈ u, hyv : y ∈ v, hs : s ⊆ u ∪ v,
-      huv⟩ :=
-    H x (hts x_in) y (hts y_in) h
-  refine' (ht _ _ hu hv (hts.trans hs) ⟨x, x_in, hxu⟩ ⟨y, y_in, hyv⟩).ne_empty _
-  rw [huv.inter_eq, inter_empty]
-#align is_totally_disconnected_of_is_totally_separated isTotallyDisconnected_of_isTotallySeparated
-
-alias IsTotallySeparated.isTotallyDisconnected := isTotallyDisconnected_of_isTotallySeparated
-#align is_totally_separated.is_totally_disconnected IsTotallySeparated.isTotallyDisconnected
-
-/-- A space is totally separated if any two points can be separated by two disjoint open sets
-covering the whole space. -/
-class TotallySeparatedSpace (α : Type u) [TopologicalSpace α] : Prop where
-  /-- The universal set `Set.univ` in a totally separated space is totally separated. -/
-  isTotallySeparated_univ : IsTotallySeparated (univ : Set α)
-#align totally_separated_space TotallySeparatedSpace
-
--- see Note [lower instance priority]
-instance (priority := 100) TotallySeparatedSpace.totallyDisconnectedSpace (α : Type u)
-    [TopologicalSpace α] [TotallySeparatedSpace α] : TotallyDisconnectedSpace α :=
-  ⟨TotallySeparatedSpace.isTotallySeparated_univ.isTotallyDisconnected⟩
-#align totally_separated_space.totally_disconnected_space
-  TotallySeparatedSpace.totallyDisconnectedSpace
-
--- see Note [lower instance priority]
-instance (priority := 100) TotallySeparatedSpace.of_discrete (α : Type*) [TopologicalSpace α]
-    [DiscreteTopology α] : TotallySeparatedSpace α :=
-  ⟨fun _ _ b _ h => ⟨{b}ᶜ, {b}, isOpen_discrete _, isOpen_discrete _, h, rfl,
-    (compl_union_self _).symm.subset, disjoint_compl_left⟩⟩
-#align totally_separated_space.of_discrete TotallySeparatedSpace.of_discrete
-
-theorem exists_clopen_of_totally_separated {α : Type*} [TopologicalSpace α]
-    [TotallySeparatedSpace α] {x y : α} (hxy : x ≠ y) :
-    ∃ U : Set α, IsClopen U ∧ x ∈ U ∧ y ∈ Uᶜ := by
-  obtain ⟨U, V, hU, hV, Ux, Vy, f, disj⟩ :=
-    TotallySeparatedSpace.isTotallySeparated_univ x (Set.mem_univ x) y (Set.mem_univ y) hxy
-  have clopen_U := isClopen_inter_of_disjoint_cover_clopen isClopen_univ f hU hV disj
-  rw [univ_inter _] at clopen_U
-  rw [← Set.subset_compl_iff_disjoint_right, subset_compl_comm] at disj
-  exact ⟨U, clopen_U, Ux, disj Vy⟩
-#align exists_clopen_of_totally_separated exists_clopen_of_totally_separated
-
-end TotallySeparated
-
 section connectedComponentSetoid
-
 /-- The setoid of connected components of a topological space -/
 def connectedComponentSetoid (α : Type*) [TopologicalSpace α] : Setoid α :=
   ⟨fun x y => connectedComponent x = connectedComponent y,
@@ -1634,50 +1292,6 @@ theorem range_coe : range (mk : α → ConnectedComponents α) = univ :=
 
 end ConnectedComponents
 
-variable [TopologicalSpace β] [TotallyDisconnectedSpace β] {f : α → β}
-
-theorem Continuous.image_eq_of_connectedComponent_eq (h : Continuous f) (a b : α)
-    (hab : connectedComponent a = connectedComponent b) : f a = f b :=
-  singleton_eq_singleton_iff.1 <|
-    h.image_connectedComponent_eq_singleton a ▸
-      h.image_connectedComponent_eq_singleton b ▸ hab ▸ rfl
-#align continuous.image_eq_of_connected_component_eq Continuous.image_eq_of_connectedComponent_eq
-
-/--
-The lift to `connectedComponents α` of a continuous map from `α` to a totally disconnected space
--/
-def Continuous.connectedComponentsLift (h : Continuous f) : ConnectedComponents α → β := fun x =>
-  Quotient.liftOn' x f h.image_eq_of_connectedComponent_eq
-#align continuous.connected_components_lift Continuous.connectedComponentsLift
-
-@[continuity]
-theorem Continuous.connectedComponentsLift_continuous (h : Continuous f) :
-    Continuous h.connectedComponentsLift :=
-  h.quotient_liftOn' <| by convert h.image_eq_of_connectedComponent_eq
-#align continuous.connected_components_lift_continuous Continuous.connectedComponentsLift_continuous
-
-@[simp]
-theorem Continuous.connectedComponentsLift_apply_coe (h : Continuous f) (x : α) :
-    h.connectedComponentsLift x = f x :=
-  rfl
-#align continuous.connected_components_lift_apply_coe Continuous.connectedComponentsLift_apply_coe
-
-@[simp]
-theorem Continuous.connectedComponentsLift_comp_coe (h : Continuous f) :
-    h.connectedComponentsLift ∘ (↑) = f :=
-  rfl
-#align continuous.connected_components_lift_comp_coe Continuous.connectedComponentsLift_comp_coe
-
-theorem connectedComponents_lift_unique' {β : Sort*} {g₁ g₂ : ConnectedComponents α → β}
-    (hg : g₁ ∘ ((↑) : α → ConnectedComponents α) = g₂ ∘ (↑)) : g₁ = g₂ :=
-  ConnectedComponents.surjective_coe.injective_comp_right hg
-#align connected_components_lift_unique' connectedComponents_lift_unique'
-
-theorem Continuous.connectedComponentsLift_unique (h : Continuous f) (g : ConnectedComponents α → β)
-    (hg : g ∘ (↑) = f) : g = h.connectedComponentsLift :=
-  connectedComponents_lift_unique' <| hg.trans h.connectedComponentsLift_comp_coe.symm
-#align continuous.connected_components_lift_unique Continuous.connectedComponentsLift_unique
-
 /-- The preimage of a singleton in `connectedComponents` is the connected component
 of an element in the equivalence class. -/
 theorem connectedComponents_preimage_singleton {x : α} :
@@ -1693,37 +1307,9 @@ theorem connectedComponents_preimage_image (U : Set α) :
   simp only [connectedComponents_preimage_singleton, preimage_iUnion₂, image_eq_iUnion]
 #align connected_components_preimage_image connectedComponents_preimage_image
 
-instance ConnectedComponents.totallyDisconnectedSpace :
-    TotallyDisconnectedSpace (ConnectedComponents α) := by
-  rw [totallyDisconnectedSpace_iff_connectedComponent_singleton]
-  refine' ConnectedComponents.surjective_coe.forall.2 fun x => _
-  rw [← ConnectedComponents.quotientMap_coe.image_connectedComponent, ←
-    connectedComponents_preimage_singleton, image_preimage_eq _ ConnectedComponents.surjective_coe]
-  refine' ConnectedComponents.surjective_coe.forall.2 fun y => _
-  rw [connectedComponents_preimage_singleton]
-  exact isConnected_connectedComponent
-#align connected_components.totally_disconnected_space ConnectedComponents.totallyDisconnectedSpace
-
-/-- Functoriality of `connectedComponents` -/
-def Continuous.connectedComponentsMap {β : Type*} [TopologicalSpace β] {f : α → β}
-    (h : Continuous f) : ConnectedComponents α → ConnectedComponents β :=
-  Continuous.connectedComponentsLift (ConnectedComponents.continuous_coe.comp h)
-#align continuous.connected_components_map Continuous.connectedComponentsMap
-
-theorem Continuous.connectedComponentsMap_continuous {β : Type*} [TopologicalSpace β] {f : α → β}
-    (h : Continuous f) : Continuous h.connectedComponentsMap :=
-  Continuous.connectedComponentsLift_continuous (ConnectedComponents.continuous_coe.comp h)
-#align continuous.connected_components_map_continuous Continuous.connectedComponentsMap_continuous
 
-end connectedComponentSetoid
 
-/-- A preconnected set `s` has the property that every map to a
-discrete space that is continuous on `s` is constant on `s` -/
-theorem IsPreconnected.constant {Y : Type*} [TopologicalSpace Y] [DiscreteTopology Y] {s : Set α}
-    (hs : IsPreconnected s) {f : α → Y} (hf : ContinuousOn f s) {x y : α} (hx : x ∈ s)
-    (hy : y ∈ s) : f x = f y :=
-  (hs.image f hf).subsingleton (mem_image_of_mem f hx) (mem_image_of_mem f hy)
-#align is_preconnected.constant IsPreconnected.constant
+end connectedComponentSetoid
 
 /-- If every map to `Bool` (a discrete two-element space), that is
 continuous on a set `s`, is constant on s, then s is preconnected -/
@@ -1743,34 +1329,9 @@ theorem isPreconnected_of_forall_constant {s : Set α}
     hs _ this x x_in_s y y_in_s
 #align is_preconnected_of_forall_constant isPreconnected_of_forall_constant
 
-/-- A `PreconnectedSpace` version of `isPreconnected.constant` -/
-theorem PreconnectedSpace.constant {Y : Type*} [TopologicalSpace Y] [DiscreteTopology Y]
-    (hp : PreconnectedSpace α) {f : α → Y} (hf : Continuous f) {x y : α} : f x = f y :=
-  IsPreconnected.constant hp.isPreconnected_univ (Continuous.continuousOn hf) trivial trivial
-#align preconnected_space.constant PreconnectedSpace.constant
-
 /-- A `PreconnectedSpace` version of `isPreconnected_of_forall_constant` -/
 theorem preconnectedSpace_of_forall_constant
     (hs : ∀ f : α → Bool, Continuous f → ∀ x y, f x = f y) : PreconnectedSpace α :=
   ⟨isPreconnected_of_forall_constant fun f hf x _ y _ =>
       hs f (continuous_iff_continuousOn_univ.mpr hf) x y⟩
 #align preconnected_space_of_forall_constant preconnectedSpace_of_forall_constant
-
-/-- Refinement of `IsPreconnected.constant` only assuming the map factors through a
-discrete subset of the target. -/
-theorem IsPreconnected.constant_of_mapsTo [TopologicalSpace β] {S : Set α} (hS : IsPreconnected S)
-    {T : Set β} [DiscreteTopology T] {f : α → β} (hc : ContinuousOn f S) (hTm : MapsTo f S T)
-    {x y : α} (hx : x ∈ S) (hy : y ∈ S) : f x = f y := by
-  let F : S → T := hTm.restrict f S T
-  suffices F ⟨x, hx⟩ = F ⟨y, hy⟩ by rwa [← Subtype.coe_inj] at this
-  exact (isPreconnected_iff_preconnectedSpace.mp hS).constant (hc.restrict_mapsTo _)
-#align is_preconnected.constant_of_maps_to IsPreconnected.constant_of_mapsTo
-
-/-- A version of `IsPreconnected.constant_of_mapsTo` that assumes that the codomain is nonempty and
-proves that `f` is equal to `const α y` on `S` for some `y ∈ T`. -/
-theorem IsPreconnected.eqOn_const_of_mapsTo [TopologicalSpace β] {S : Set α} (hS : IsPreconnected S)
-    {T : Set β} [DiscreteTopology T] {f : α → β} (hc : ContinuousOn f S) (hTm : MapsTo f S T)
-    (hne : T.Nonempty) : ∃ y ∈ T, EqOn f (const α y) S := by
-  rcases S.eq_empty_or_nonempty with (rfl | ⟨x, hx⟩)
-  · exact hne.imp fun _ hy => ⟨hy, eqOn_empty _ _⟩
-  · exact ⟨f x, hTm hx, fun x' hx' => hS.constant_of_mapsTo hc hTm hx' hx⟩
chore(Topology/SubsetProperties): Refactor SubsetProperties.lean (#7628)

Split up the 2000-line Topology/SubsetProperties.lean into several smaller files. Not only is it too huge, but the name is very unhelpful, since actually about 90% of the file is about compactness; I've moved this material into various files inside a new subdirectory Topology/Compactness/.

Diff
@@ -5,7 +5,8 @@ Authors: Johannes Hölzl, Mario Carneiro, Yury Kudryashov
 -/
 import Mathlib.Data.Set.BoolIndicator
 import Mathlib.Order.SuccPred.Relation
-import Mathlib.Topology.SubsetProperties
+import Mathlib.Topology.Clopen
+import Mathlib.Topology.Irreducible
 
 #align_import topology.connected from "leanprover-community/mathlib"@"d101e93197bb5f6ea89bd7ba386b7f7dff1f3903"
 
feat: open subsets of locally connected spaces are locally connected (#7530)
Diff
@@ -1347,6 +1347,19 @@ theorem locallyConnectedSpace_of_connected_bases {ι : Type*} (b : α → ι →
       ⟨(hbasis x).index s hs.1, ⟨(hbasis x).property_index hs.1, (hbasis x).set_index_subset hs.1⟩⟩
 #align locally_connected_space_of_connected_bases locallyConnectedSpace_of_connected_bases
 
+theorem OpenEmbedding.locallyConnectedSpace [LocallyConnectedSpace α] [TopologicalSpace β]
+    {f : β → α} (h : OpenEmbedding f) : LocallyConnectedSpace β := by
+  refine locallyConnectedSpace_of_connected_bases (fun _ s ↦ f ⁻¹' s)
+    (fun x s ↦ (IsOpen s ∧ f x ∈ s ∧ IsConnected s) ∧ s ⊆ range f) (fun x ↦ ?_)
+    (fun x s hxs ↦ hxs.1.2.2.isPreconnected.preimage_of_open_map h.inj h.isOpenMap hxs.2)
+  rw [h.nhds_eq_comap]
+  exact LocallyConnectedSpace.open_connected_basis (f x) |>.restrict_subset
+    (h.open_range.mem_nhds <| mem_range_self _) |>.comap _
+
+theorem IsOpen.locallyConnectedSpace [LocallyConnectedSpace α] {U : Set α} (hU : IsOpen U) :
+    LocallyConnectedSpace U :=
+  hU.openEmbedding_subtype_val.locallyConnectedSpace
+
 end LocallyConnectedSpace
 
 section TotallyDisconnected
chore: Make Set/Finset lemmas match lattice lemma names (#7378)

Rename union_eq_left_iff_subset to union_eq_left to match sup_eq_left. Similarly for the right and inter versions.

Diff
@@ -643,14 +643,14 @@ theorem IsPreconnected.subset_connectedComponentIn {x : α} {F : Set α} (hs : I
     (hxs : x ∈ s) (hsF : s ⊆ F) : s ⊆ connectedComponentIn F x := by
   have : IsPreconnected (((↑) : F → α) ⁻¹' s) := by
     refine' inducing_subtype_val.isPreconnected_image.mp _
-    rwa [Subtype.image_preimage_coe, inter_eq_left_iff_subset.mpr hsF]
+    rwa [Subtype.image_preimage_coe, inter_eq_left.mpr hsF]
   have h2xs : (⟨x, hsF hxs⟩ : F) ∈ (↑) ⁻¹' s := by
     rw [mem_preimage]
     exact hxs
   have := this.subset_connectedComponent h2xs
   rw [connectedComponentIn_eq_image (hsF hxs)]
   refine' Subset.trans _ (image_subset _ this)
-  rw [Subtype.image_preimage_coe, inter_eq_left_iff_subset.mpr hsF]
+  rw [Subtype.image_preimage_coe, inter_eq_left.mpr hsF]
 #align is_preconnected.subset_connected_component_in IsPreconnected.subset_connectedComponentIn
 
 theorem IsConnected.subset_connectedComponent {x : α} {s : Set α} (H1 : IsConnected s)
chore: exactly 4 spaces in theorems (#7328)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -771,7 +771,7 @@ theorem isConnected_range [TopologicalSpace β] [ConnectedSpace α] {f : α →
 #align is_connected_range isConnected_range
 
 theorem Function.Surjective.connectedSpace [ConnectedSpace α] [TopologicalSpace β]
-  {f : α → β} (hf : Surjective f) (hf' : Continuous f) : ConnectedSpace β := by
+    {f : α → β} (hf : Surjective f) (hf' : Continuous f) : ConnectedSpace β := by
   rw [connectedSpace_iff_univ, ← hf.range_eq]
   exact isConnected_range hf'
 
chore: fix port of surjective_quotient_mk (#7096)

The mathlib3 lemma is about quotient.mk, which takes an instance argument and is translated into mathlib4 as Quotient.mk'.

Diff
@@ -777,7 +777,7 @@ theorem Function.Surjective.connectedSpace [ConnectedSpace α] [TopologicalSpace
 
 instance Quotient.instConnectedSpace {s : Setoid α} [ConnectedSpace α] :
     ConnectedSpace (Quotient s) :=
-  (surjective_quotient_mk _).connectedSpace continuous_coinduced_rng
+  (surjective_quotient_mk' _).connectedSpace continuous_coinduced_rng
 
 theorem DenseRange.preconnectedSpace [TopologicalSpace β] [PreconnectedSpace α] {f : α → β}
     (hf : DenseRange f) (hc : Continuous f) : PreconnectedSpace β :=
feat: Alexandrov-discrete spaces (#6962)

We define Alexandrov-discrete spaces as topological spaces where the intersection of a family of open sets is open.

This PR only gives a minimal API because the goal is to ensure that lemma names like isOpen_sInter are free to use for AlexandrovDiscrete. The existing lemmas are getting prefixed by Set.Finite or suffixed by _of_finite.

Diff
@@ -916,7 +916,7 @@ lemma subsingleton_of_disjoint_isClosed_iUnion_eq_univ [Finite ι]
     Subsingleton ι := by
   refine' subsingleton_of_disjoint_isClopen h_nonempty h_disj (fun i ↦ ⟨_, h_closed i⟩)
   rw [← isClosed_compl_iff, compl_eq_univ_diff, ← h_Union, iUnion_diff]
-  refine' isClosed_iUnion (fun j ↦ _)
+  refine' isClosed_iUnion_of_finite (fun j ↦ _)
   rcases eq_or_ne i j with rfl | h_ne
   · simp
   · simpa only [(h_disj h_ne.symm).sdiff_eq_left] using h_closed j
feat: patch for new alias command (#6172)
Diff
@@ -1522,7 +1522,7 @@ theorem isTotallyDisconnected_of_isTotallySeparated {s : Set α} (H : IsTotallyS
   rw [huv.inter_eq, inter_empty]
 #align is_totally_disconnected_of_is_totally_separated isTotallyDisconnected_of_isTotallySeparated
 
-alias isTotallyDisconnected_of_isTotallySeparated ← IsTotallySeparated.isTotallyDisconnected
+alias IsTotallySeparated.isTotallyDisconnected := isTotallyDisconnected_of_isTotallySeparated
 #align is_totally_separated.is_totally_disconnected IsTotallySeparated.isTotallyDisconnected
 
 /-- A space is totally separated if any two points can be separated by two disjoint open sets
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -46,7 +46,7 @@ open scoped Classical
 
 universe u v
 
-variable {α : Type u} {β : Type v} {ι : Type _} {π : ι → Type _} [TopologicalSpace α]
+variable {α : Type u} {β : Type v} {ι : Type*} {π : ι → Type*} [TopologicalSpace α]
   {s t u v : Set α}
 
 section Preconnected
@@ -131,7 +131,7 @@ theorem isPreconnected_sUnion (x : α) (c : Set (Set α)) (H1 : ∀ s ∈ c, x 
   exact ⟨s, subset_sUnion_of_mem sc, H1 s sc, ys, H2 s sc⟩
 #align is_preconnected_sUnion isPreconnected_sUnion
 
-theorem isPreconnected_iUnion {ι : Sort _} {s : ι → Set α} (h₁ : (⋂ i, s i).Nonempty)
+theorem isPreconnected_iUnion {ι : Sort*} {s : ι → Set α} (h₁ : (⋂ i, s i).Nonempty)
     (h₂ : ∀ i, IsPreconnected (s i)) : IsPreconnected (⋃ i, s i) :=
   Exists.elim h₁ fun f hf => isPreconnected_sUnion f _ hf (forall_range_iff.2 h₂)
 #align is_preconnected_Union isPreconnected_iUnion
@@ -169,7 +169,7 @@ theorem IsPreconnected.sUnion_directed {S : Set (Set α)} (K : DirectedOn (· 
 
 /-- The biUnion of a family of preconnected sets is preconnected if the graph determined by
 whether two sets intersect is preconnected. -/
-theorem IsPreconnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : ι → Set α}
+theorem IsPreconnected.biUnion_of_reflTransGen {ι : Type*} {t : Set ι} {s : ι → Set α}
     (H : ∀ i ∈ t, IsPreconnected (s i))
     (K : ∀ i, i ∈ t → ∀ j, j ∈ t → ReflTransGen (fun i j => (s i ∩ s j).Nonempty ∧ i ∈ t) i j) :
     IsPreconnected (⋃ n ∈ t, s n) := by
@@ -200,7 +200,7 @@ theorem IsPreconnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : 
 
 /-- The biUnion of a family of preconnected sets is preconnected if the graph determined by
 whether two sets intersect is preconnected. -/
-theorem IsConnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : ι → Set α}
+theorem IsConnected.biUnion_of_reflTransGen {ι : Type*} {t : Set ι} {s : ι → Set α}
     (ht : t.Nonempty) (H : ∀ i ∈ t, IsConnected (s i))
     (K : ∀ i, i ∈ t → ∀ j, j ∈ t → ReflTransGen (fun i j : ι => (s i ∩ s j).Nonempty ∧ i ∈ t) i j) :
     IsConnected (⋃ n ∈ t, s n) :=
@@ -211,7 +211,7 @@ theorem IsConnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : ι 
 /-- Preconnectedness of the iUnion of a family of preconnected sets
 indexed by the vertices of a preconnected graph,
 where two vertices are joined when the corresponding sets intersect. -/
-theorem IsPreconnected.iUnion_of_reflTransGen {ι : Type _} {s : ι → Set α}
+theorem IsPreconnected.iUnion_of_reflTransGen {ι : Type*} {s : ι → Set α}
     (H : ∀ i, IsPreconnected (s i))
     (K : ∀ i j, ReflTransGen (fun i j : ι => (s i ∩ s j).Nonempty) i j) :
     IsPreconnected (⋃ n, s n) := by
@@ -220,7 +220,7 @@ theorem IsPreconnected.iUnion_of_reflTransGen {ι : Type _} {s : ι → Set α}
     simpa [mem_univ] using K i j
 #align is_preconnected.Union_of_refl_trans_gen IsPreconnected.iUnion_of_reflTransGen
 
-theorem IsConnected.iUnion_of_reflTransGen {ι : Type _} [Nonempty ι] {s : ι → Set α}
+theorem IsConnected.iUnion_of_reflTransGen {ι : Type*} [Nonempty ι] {s : ι → Set α}
     (H : ∀ i, IsConnected (s i))
     (K : ∀ i j, ReflTransGen (fun i j : ι => (s i ∩ s j).Nonempty) i j) : IsConnected (⋃ n, s n) :=
   ⟨nonempty_iUnion.2 <| Nonempty.elim ‹_› fun i : ι => ⟨i, (H _).nonempty⟩,
@@ -808,7 +808,7 @@ theorem preconnectedSpace_iff_connectedComponent :
 #align preconnected_space_iff_connected_component preconnectedSpace_iff_connectedComponent
 
 @[simp]
-theorem PreconnectedSpace.connectedComponent_eq_univ {X : Type _} [TopologicalSpace X]
+theorem PreconnectedSpace.connectedComponent_eq_univ {X : Type*} [TopologicalSpace X]
     [h : PreconnectedSpace X] (x : X) : connectedComponent x = univ :=
   preconnectedSpace_iff_connectedComponent.mp h x
 #align preconnected_space.connected_component_eq_univ PreconnectedSpace.connectedComponent_eq_univ
@@ -1241,7 +1241,7 @@ section LocallyConnectedSpace
 of connected *open* sets. Note that it is equivalent to each point having a basis of connected
 (non necessarily open) sets but in a non-trivial way, so we choose this definition and prove the
 equivalence later in `locallyConnectedSpace_iff_connected_basis`. -/
-class LocallyConnectedSpace (α : Type _) [TopologicalSpace α] : Prop where
+class LocallyConnectedSpace (α : Type*) [TopologicalSpace α] : Prop where
   /-- Open connected neighborhoods form a basis of the neighborhoods filter. -/
   open_connected_basis : ∀ x, (𝓝 x).HasBasis (fun s : Set α => IsOpen s ∧ x ∈ s ∧ IsConnected s) id
 #align locally_connected_space LocallyConnectedSpace
@@ -1337,7 +1337,7 @@ theorem locallyConnectedSpace_iff_connected_basis :
   exact forall_congr' <| fun x => Filter.hasBasis_self.symm
 #align locally_connected_space_iff_connected_basis locallyConnectedSpace_iff_connected_basis
 
-theorem locallyConnectedSpace_of_connected_bases {ι : Type _} (b : α → ι → Set α) (p : α → ι → Prop)
+theorem locallyConnectedSpace_of_connected_bases {ι : Type*} (b : α → ι → Set α) (p : α → ι → Prop)
     (hbasis : ∀ x, (𝓝 x).HasBasis (p x) (b x))
     (hconnected : ∀ x i, p x i → IsPreconnected (b x i)) : LocallyConnectedSpace α := by
   rw [locallyConnectedSpace_iff_connected_basis]
@@ -1376,7 +1376,7 @@ theorem IsPreconnected.subsingleton [TotallyDisconnectedSpace α] {s : Set α}
   TotallyDisconnectedSpace.isTotallyDisconnected_univ s (subset_univ s) h
 #align is_preconnected.subsingleton IsPreconnected.subsingleton
 
-instance Pi.totallyDisconnectedSpace {α : Type _} {β : α → Type _}
+instance Pi.totallyDisconnectedSpace {α : Type*} {β : α → Type*}
     [∀ a, TopologicalSpace (β a)] [∀ a, TotallyDisconnectedSpace (β a)] :
     TotallyDisconnectedSpace (∀ a : α, β a) :=
   ⟨fun t _ h2 =>
@@ -1413,7 +1413,7 @@ instance [∀ i, TopologicalSpace (π i)] [∀ i, TotallyDisconnectedSpace (π i
 -- porting note: reformulated using `Pairwise`
 /-- Let `X` be a topological space, and suppose that for all distinct `x,y ∈ X`, there
   is some clopen set `U` such that `x ∈ U` and `y ∉ U`. Then `X` is totally disconnected. -/
-theorem isTotallyDisconnected_of_clopen_set {X : Type _} [TopologicalSpace X]
+theorem isTotallyDisconnected_of_clopen_set {X : Type*} [TopologicalSpace X]
     (hX : Pairwise fun x y => ∃ (U : Set X), IsClopen U ∧ x ∈ U ∧ y ∉ U) :
     IsTotallyDisconnected (Set.univ : Set X) := by
   rintro S - hS
@@ -1460,7 +1460,7 @@ theorem totallyDisconnectedSpace_iff_connectedComponent_singleton :
 
 /-- The image of a connected component in a totally disconnected space is a singleton. -/
 @[simp]
-theorem Continuous.image_connectedComponent_eq_singleton {β : Type _} [TopologicalSpace β]
+theorem Continuous.image_connectedComponent_eq_singleton {β : Type*} [TopologicalSpace β]
     [TotallyDisconnectedSpace β] {f : α → β} (h : Continuous f) (a : α) :
     f '' connectedComponent a = {f a} :=
   (Set.subsingleton_iff_singleton <| mem_image_of_mem f mem_connectedComponent).mp
@@ -1485,7 +1485,7 @@ theorem Embedding.isTotallyDisconnected [TopologicalSpace β] {f : α → β} (h
   isTotallyDisconnected_of_image hf.continuous.continuousOn hf.inj h
 #align embedding.is_totally_disconnected Embedding.isTotallyDisconnected
 
-instance Subtype.totallyDisconnectedSpace {α : Type _} {p : α → Prop} [TopologicalSpace α]
+instance Subtype.totallyDisconnectedSpace {α : Type*} {p : α → Prop} [TopologicalSpace α]
     [TotallyDisconnectedSpace α] : TotallyDisconnectedSpace (Subtype p) :=
   ⟨embedding_subtype_val.isTotallyDisconnected
       (isTotallyDisconnected_of_totallyDisconnectedSpace _)⟩
@@ -1540,13 +1540,13 @@ instance (priority := 100) TotallySeparatedSpace.totallyDisconnectedSpace (α :
   TotallySeparatedSpace.totallyDisconnectedSpace
 
 -- see Note [lower instance priority]
-instance (priority := 100) TotallySeparatedSpace.of_discrete (α : Type _) [TopologicalSpace α]
+instance (priority := 100) TotallySeparatedSpace.of_discrete (α : Type*) [TopologicalSpace α]
     [DiscreteTopology α] : TotallySeparatedSpace α :=
   ⟨fun _ _ b _ h => ⟨{b}ᶜ, {b}, isOpen_discrete _, isOpen_discrete _, h, rfl,
     (compl_union_self _).symm.subset, disjoint_compl_left⟩⟩
 #align totally_separated_space.of_discrete TotallySeparatedSpace.of_discrete
 
-theorem exists_clopen_of_totally_separated {α : Type _} [TopologicalSpace α]
+theorem exists_clopen_of_totally_separated {α : Type*} [TopologicalSpace α]
     [TotallySeparatedSpace α] {x y : α} (hxy : x ≠ y) :
     ∃ U : Set α, IsClopen U ∧ x ∈ U ∧ y ∈ Uᶜ := by
   obtain ⟨U, V, hU, hV, Ux, Vy, f, disj⟩ :=
@@ -1562,7 +1562,7 @@ end TotallySeparated
 section connectedComponentSetoid
 
 /-- The setoid of connected components of a topological space -/
-def connectedComponentSetoid (α : Type _) [TopologicalSpace α] : Setoid α :=
+def connectedComponentSetoid (α : Type*) [TopologicalSpace α] : Setoid α :=
   ⟨fun x y => connectedComponent x = connectedComponent y,
     ⟨fun x => by trivial, fun h1 => h1.symm, fun h1 h2 => h1.trans h2⟩⟩
 #align connected_component_setoid connectedComponentSetoid
@@ -1654,7 +1654,7 @@ theorem Continuous.connectedComponentsLift_comp_coe (h : Continuous f) :
   rfl
 #align continuous.connected_components_lift_comp_coe Continuous.connectedComponentsLift_comp_coe
 
-theorem connectedComponents_lift_unique' {β : Sort _} {g₁ g₂ : ConnectedComponents α → β}
+theorem connectedComponents_lift_unique' {β : Sort*} {g₁ g₂ : ConnectedComponents α → β}
     (hg : g₁ ∘ ((↑) : α → ConnectedComponents α) = g₂ ∘ (↑)) : g₁ = g₂ :=
   ConnectedComponents.surjective_coe.injective_comp_right hg
 #align connected_components_lift_unique' connectedComponents_lift_unique'
@@ -1691,12 +1691,12 @@ instance ConnectedComponents.totallyDisconnectedSpace :
 #align connected_components.totally_disconnected_space ConnectedComponents.totallyDisconnectedSpace
 
 /-- Functoriality of `connectedComponents` -/
-def Continuous.connectedComponentsMap {β : Type _} [TopologicalSpace β] {f : α → β}
+def Continuous.connectedComponentsMap {β : Type*} [TopologicalSpace β] {f : α → β}
     (h : Continuous f) : ConnectedComponents α → ConnectedComponents β :=
   Continuous.connectedComponentsLift (ConnectedComponents.continuous_coe.comp h)
 #align continuous.connected_components_map Continuous.connectedComponentsMap
 
-theorem Continuous.connectedComponentsMap_continuous {β : Type _} [TopologicalSpace β] {f : α → β}
+theorem Continuous.connectedComponentsMap_continuous {β : Type*} [TopologicalSpace β] {f : α → β}
     (h : Continuous f) : Continuous h.connectedComponentsMap :=
   Continuous.connectedComponentsLift_continuous (ConnectedComponents.continuous_coe.comp h)
 #align continuous.connected_components_map_continuous Continuous.connectedComponentsMap_continuous
@@ -1705,7 +1705,7 @@ end connectedComponentSetoid
 
 /-- A preconnected set `s` has the property that every map to a
 discrete space that is continuous on `s` is constant on `s` -/
-theorem IsPreconnected.constant {Y : Type _} [TopologicalSpace Y] [DiscreteTopology Y] {s : Set α}
+theorem IsPreconnected.constant {Y : Type*} [TopologicalSpace Y] [DiscreteTopology Y] {s : Set α}
     (hs : IsPreconnected s) {f : α → Y} (hf : ContinuousOn f s) {x y : α} (hx : x ∈ s)
     (hy : y ∈ s) : f x = f y :=
   (hs.image f hf).subsingleton (mem_image_of_mem f hx) (mem_image_of_mem f hy)
@@ -1730,7 +1730,7 @@ theorem isPreconnected_of_forall_constant {s : Set α}
 #align is_preconnected_of_forall_constant isPreconnected_of_forall_constant
 
 /-- A `PreconnectedSpace` version of `isPreconnected.constant` -/
-theorem PreconnectedSpace.constant {Y : Type _} [TopologicalSpace Y] [DiscreteTopology Y]
+theorem PreconnectedSpace.constant {Y : Type*} [TopologicalSpace Y] [DiscreteTopology Y]
     (hp : PreconnectedSpace α) {f : α → Y} (hf : Continuous f) {x y : α} : f x = f y :=
   IsPreconnected.constant hp.isPreconnected_univ (Continuous.continuousOn hf) trivial trivial
 #align preconnected_space.constant PreconnectedSpace.constant
feat: complements on connectedness and path-connectedness (#6347)
Diff
@@ -953,6 +953,65 @@ theorem isConnected_iff_connectedSpace {s : Set α} : IsConnected s ↔ Connecte
     ⟨nonempty_subtype.mp h.2, isPreconnected_iff_preconnectedSpace.mpr h.1⟩⟩
 #align is_connected_iff_connected_space isConnected_iff_connectedSpace
 
+/-- In a preconnected space, given a transitive relation `P`, if `P x y` and `P y x` are true
+for `y` close enough to `x`, then `P x y` holds for all `x, y`. This is a version of the fact
+that, if an equivalence relation has open classes, then it has a single equivalence class. -/
+lemma PreconnectedSpace.induction₂' [PreconnectedSpace α] (P : α → α → Prop)
+    (h : ∀ x, ∀ᶠ y in 𝓝 x, P x y ∧ P y x) (h' : Transitive P) (x y : α) :
+    P x y := by
+  let u := {z | P x z}
+  have A : IsOpen u := by
+    apply isOpen_iff_mem_nhds.2 (fun z hz ↦ ?_)
+    filter_upwards [h z] with t ht
+    exact h' hz ht.1
+  have B : IsClosed u := by
+    apply isClosed_iff_nhds.2 (fun z hz ↦ ?_)
+    rcases hz _ (h z) with ⟨t, ht, h't⟩
+    exact h' h't ht.2
+  have C : u.Nonempty := ⟨x, (mem_of_mem_nhds (h x)).1⟩
+  have D : u = Set.univ := IsClopen.eq_univ ⟨A, B⟩ C
+  show y ∈ u
+  simp [D]
+
+/-- In a preconnected space, if a symmetric transitive relation `P x y` is true for `y` close
+enough to `x`, then it holds for all `x, y`. This is a version of the fact that, if an equivalence
+relation has open classes, then it has a single equivalence class. -/
+lemma PreconnectedSpace.induction₂ [PreconnectedSpace α] (P : α → α → Prop)
+    (h : ∀ x, ∀ᶠ y in 𝓝 x, P x y) (h' : Transitive P) (h'' : Symmetric P) (x y : α) :
+    P x y := by
+  refine PreconnectedSpace.induction₂' P (fun z ↦ ?_) h' x y
+  filter_upwards [h z] with a ha
+  refine ⟨ha, h'' ha⟩
+
+/-- In a preconnected set, given a transitive relation `P`, if `P x y` and `P y x` are true
+for `y` close enough to `x`, then `P x y` holds for all `x, y`. This is a version of the fact
+that, if an equivalence relation has open classes, then it has a single equivalence class. -/
+lemma IsPreconnected.induction₂' {s : Set α} (hs : IsPreconnected s) (P : α → α → Prop)
+    (h : ∀ x ∈ s, ∀ᶠ y in 𝓝[s] x, P x y ∧ P y x)
+    (h' : ∀ x y z, x ∈ s → y ∈ s → z ∈ s → P x y → P y z → P x z)
+    {x y : α} (hx : x ∈ s) (hy : y ∈ s) : P x y := by
+  let Q : s → s → Prop := fun a b ↦ P a b
+  show Q ⟨x, hx⟩ ⟨y, hy⟩
+  have : PreconnectedSpace s := Subtype.preconnectedSpace hs
+  apply PreconnectedSpace.induction₂'
+  · rintro ⟨x, hx⟩
+    have Z := h x hx
+    rwa [nhdsWithin_eq_map_subtype_coe] at Z
+  · rintro ⟨a, ha⟩ ⟨b, hb⟩ ⟨c, hc⟩ hab hbc
+    exact h' a b c ha hb hc  hab hbc
+
+/-- In a preconnected set, if a symmetric transitive relation `P x y` is true for `y` close
+enough to `x`, then it holds for all `x, y`. This is a version of the fact that, if an equivalence
+relation has open classes, then it has a single equivalence class. -/
+lemma IsPreconnected.induction₂ {s : Set α} (hs : IsPreconnected s) (P : α → α → Prop)
+    (h : ∀ x ∈ s, ∀ᶠ y in 𝓝[s] x, P x y)
+    (h' : ∀ x y z, x ∈ s → y ∈ s → z ∈ s → P x y → P y z → P x z)
+    (h'' : ∀ x y, x ∈ s → y ∈ s → P x y → P y x)
+    {x y : α} (hx : x ∈ s) (hy : y ∈ s) : P x y := by
+  apply hs.induction₂' P (fun z hz ↦ ?_) h' hx hy
+  filter_upwards [h z hz, self_mem_nhdsWithin] with a ha h'a
+  exact ⟨ha, h'' z a hz h'a ha⟩
+
 /-- A set `s` is preconnected if and only if for every cover by two open sets that are disjoint on
 `s`, it is contained in one of the two covering sets. -/
 theorem isPreconnected_iff_subset_of_disjoint {s : Set α} :
feat: the additive circle is path connected (#6022)
Diff
@@ -753,6 +753,13 @@ theorem isConnected_univ [ConnectedSpace α] : IsConnected (univ : Set α) :=
   ⟨univ_nonempty, isPreconnected_univ⟩
 #align is_connected_univ isConnected_univ
 
+lemma preconnectedSpace_iff_univ : PreconnectedSpace α ↔ IsPreconnected (univ : Set α) :=
+  ⟨fun h ↦ h.1, fun h ↦ ⟨h⟩⟩
+
+lemma connectedSpace_iff_univ : ConnectedSpace α ↔ IsConnected (univ : Set α) :=
+  ⟨fun h ↦ ⟨univ_nonempty, h.1.1⟩,
+   fun h ↦ ConnectedSpace.mk (toPreconnectedSpace := ⟨h.2⟩) ⟨h.1.some⟩⟩
+
 theorem isPreconnected_range [TopologicalSpace β] [PreconnectedSpace α] {f : α → β}
     (h : Continuous f) : IsPreconnected (range f) :=
   @image_univ _ _ f ▸ isPreconnected_univ.image _ h.continuousOn
@@ -763,6 +770,15 @@ theorem isConnected_range [TopologicalSpace β] [ConnectedSpace α] {f : α →
   ⟨range_nonempty f, isPreconnected_range h⟩
 #align is_connected_range isConnected_range
 
+theorem Function.Surjective.connectedSpace [ConnectedSpace α] [TopologicalSpace β]
+  {f : α → β} (hf : Surjective f) (hf' : Continuous f) : ConnectedSpace β := by
+  rw [connectedSpace_iff_univ, ← hf.range_eq]
+  exact isConnected_range hf'
+
+instance Quotient.instConnectedSpace {s : Setoid α} [ConnectedSpace α] :
+    ConnectedSpace (Quotient s) :=
+  (surjective_quotient_mk _).connectedSpace continuous_coinduced_rng
+
 theorem DenseRange.preconnectedSpace [TopologicalSpace β] [PreconnectedSpace α] {f : α → β}
     (hf : DenseRange f) (hc : Continuous f) : PreconnectedSpace β :=
   ⟨hf.closure_eq ▸ (isPreconnected_range hc).closure⟩
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Mario Carneiro, Yury Kudryashov
-
-! This file was ported from Lean 3 source module topology.connected
-! leanprover-community/mathlib commit d101e93197bb5f6ea89bd7ba386b7f7dff1f3903
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Data.Set.BoolIndicator
 import Mathlib.Order.SuccPred.Relation
 import Mathlib.Topology.SubsetProperties
 
+#align_import topology.connected from "leanprover-community/mathlib"@"d101e93197bb5f6ea89bd7ba386b7f7dff1f3903"
+
 /-!
 # Connected subsets of topological spaces
 
feat: in a preconnected space, a (finite) disjoint cover of non-empty open/closed/clopen subsets contains at most one element. (#5677)
Diff
@@ -863,6 +863,53 @@ theorem IsClopen.eq_univ [PreconnectedSpace α] {s : Set α} (h' : IsClopen s) (
   (isClopen_iff.mp h').resolve_left h.ne_empty
 #align is_clopen.eq_univ IsClopen.eq_univ
 
+section disjoint_subsets
+
+variable [PreconnectedSpace α]
+  {s : ι → Set α} (h_nonempty : ∀ i, (s i).Nonempty) (h_disj : Pairwise (Disjoint on s))
+
+/-- In a preconnected space, any disjoint family of non-empty clopen subsets has at most one
+element. -/
+lemma subsingleton_of_disjoint_isClopen
+    (h_clopen : ∀ i, IsClopen (s i)) :
+    Subsingleton ι := by
+  replace h_nonempty : ∀ i, s i ≠ ∅ := by intro i; rw [← nonempty_iff_ne_empty]; exact h_nonempty i
+  rw [← not_nontrivial_iff_subsingleton]
+  by_contra contra
+  obtain ⟨i, j, h_ne⟩ := contra
+  replace h_ne : s i ∩ s j = ∅ := by
+    simpa only [← bot_eq_empty, eq_bot_iff, ← inf_eq_inter, ← disjoint_iff_inf_le] using h_disj h_ne
+  cases' isClopen_iff.mp (h_clopen i) with hi hi
+  · exact h_nonempty i hi
+  · rw [hi, univ_inter] at h_ne
+    exact h_nonempty j h_ne
+
+/-- In a preconnected space, any disjoint cover by non-empty open subsets has at most one
+element. -/
+lemma subsingleton_of_disjoint_isOpen_iUnion_eq_univ
+    (h_open : ∀ i, IsOpen (s i)) (h_Union : ⋃ i, s i = univ) :
+    Subsingleton ι := by
+  refine' subsingleton_of_disjoint_isClopen h_nonempty h_disj (fun i ↦ ⟨h_open i, _⟩)
+  rw [← isOpen_compl_iff, compl_eq_univ_diff, ← h_Union, iUnion_diff]
+  refine' isOpen_iUnion (fun j ↦ _)
+  rcases eq_or_ne i j with rfl | h_ne
+  · simp
+  · simpa only [(h_disj h_ne.symm).sdiff_eq_left] using h_open j
+
+/-- In a preconnected space, any finite disjoint cover by non-empty closed subsets has at most one
+element. -/
+lemma subsingleton_of_disjoint_isClosed_iUnion_eq_univ [Finite ι]
+    (h_closed : ∀ i, IsClosed (s i)) (h_Union : ⋃ i, s i = univ) :
+    Subsingleton ι := by
+  refine' subsingleton_of_disjoint_isClopen h_nonempty h_disj (fun i ↦ ⟨_, h_closed i⟩)
+  rw [← isClosed_compl_iff, compl_eq_univ_diff, ← h_Union, iUnion_diff]
+  refine' isClosed_iUnion (fun j ↦ _)
+  rcases eq_or_ne i j with rfl | h_ne
+  · simp
+  · simpa only [(h_disj h_ne.symm).sdiff_eq_left] using h_closed j
+
+end disjoint_subsets
+
 theorem frontier_eq_empty_iff [PreconnectedSpace α] {s : Set α} :
     frontier s = ∅ ↔ s = ∅ ∨ s = univ :=
   isClopen_iff_frontier_eq_empty.symm.trans isClopen_iff
chore: fix align linebreaks (#5683)

The result of running

find . -type f -name "*.lean" -exec sed -i -E 'N;s/^#align ([^[:space:]]+)\n *([^[:space:]]+)$/#align \1 \2/' {} \;

Hopefully for the last time...

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -1146,8 +1146,7 @@ theorem locallyConnectedSpace_iff_open_connected_subsets :
   · exact fun h => ⟨fun U => ⟨fun hU =>
       let ⟨V, hVU, hV⟩ := h U hU
       ⟨V, hV, hVU⟩, fun ⟨V, ⟨hV, hxV, _⟩, hVU⟩ => mem_nhds_iff.mpr ⟨V, hVU, hV, hxV⟩⟩⟩
-#align locally_connected_space_iff_open_connected_subsets
-  locallyConnectedSpace_iff_open_connected_subsets
+#align locally_connected_space_iff_open_connected_subsets locallyConnectedSpace_iff_open_connected_subsets
 
 /-- A space with discrete topology is a locally connected space. -/
 instance (priority := 100) DiscreteTopology.toLocallyConnectedSpace (α) [TopologicalSpace α]
@@ -1196,8 +1195,7 @@ theorem locallyConnectedSpace_iff_connectedComponentIn_open :
           (connectedComponentIn_subset _ _).trans interior_subset, h _ isOpen_interior x _,
           mem_connectedComponentIn _, isConnected_connectedComponentIn_iff.mpr _⟩ <;>
       exact mem_interior_iff_mem_nhds.mpr hU
-#align locally_connected_space_iff_connected_component_in_open
-  locallyConnectedSpace_iff_connectedComponentIn_open
+#align locally_connected_space_iff_connected_component_in_open locallyConnectedSpace_iff_connectedComponentIn_open
 
 theorem locallyConnectedSpace_iff_connected_subsets :
     LocallyConnectedSpace α ↔ ∀ (x : α), ∀ U ∈ 𝓝 x, ∃ V ∈ 𝓝 x, IsPreconnected V ∧ V ⊆ U := by
@@ -1348,14 +1346,12 @@ theorem Continuous.image_connectedComponent_eq_singleton {β : Type _} [Topologi
     f '' connectedComponent a = {f a} :=
   (Set.subsingleton_iff_singleton <| mem_image_of_mem f mem_connectedComponent).mp
     (isPreconnected_connectedComponent.image f h.continuousOn).subsingleton
-#align continuous.image_connected_component_eq_singleton
-  Continuous.image_connectedComponent_eq_singleton
+#align continuous.image_connected_component_eq_singleton Continuous.image_connectedComponent_eq_singleton
 
 theorem isTotallyDisconnected_of_totallyDisconnectedSpace [TotallyDisconnectedSpace α] (s : Set α) :
     IsTotallyDisconnected s := fun t _ ht =>
   TotallyDisconnectedSpace.isTotallyDisconnected_univ _ t.subset_univ ht
-#align is_totally_disconnected_of_totally_disconnected_space
-  isTotallyDisconnected_of_totallyDisconnectedSpace
+#align is_totally_disconnected_of_totally_disconnected_space isTotallyDisconnected_of_totallyDisconnectedSpace
 
 theorem isTotallyDisconnected_of_image [TopologicalSpace β] {f : α → β} (hf : ContinuousOn f s)
     (hf' : Injective f) (h : IsTotallyDisconnected (f '' s)) : IsTotallyDisconnected s :=
fix: precedences of ⨆⋃⋂⨅ (#5614)
Diff
@@ -1016,7 +1016,7 @@ theorem connectedComponent_subset_iInter_clopen {x : α} :
 
 /-- A clopen set is the union of its connected components. -/
 theorem IsClopen.biUnion_connectedComponent_eq {Z : Set α} (h : IsClopen Z) :
-    (⋃ x ∈ Z, connectedComponent x) = Z :=
+    ⋃ x ∈ Z, connectedComponent x = Z :=
   Subset.antisymm (iUnion₂_subset fun _ => h.connectedComponent_subset) fun _ h =>
     mem_iUnion₂_of_mem h mem_connectedComponent
 #align is_clopen.bUnion_connected_component_eq IsClopen.biUnion_connectedComponent_eq
feat: lift a continuous map from a connected space to a sigma type (#4325)

Motivated by a theorem in the Brouwer Fixed Point project

Diff
@@ -827,6 +827,19 @@ instance (priority := 100) IrreducibleSpace.connectedSpace (α : Type u) [Topolo
     [IrreducibleSpace α] : ConnectedSpace α where toNonempty := IrreducibleSpace.toNonempty
 #align irreducible_space.connected_space IrreducibleSpace.connectedSpace
 
+/-- A continuous map from a connected space to a disjoint union `Σ i, π i` can be lifted to one of
+the components `π i`. See also `ContinuousMap.exists_lift_sigma` for a version with bundled
+`ContinuousMap`s. -/
+theorem Continuous.exists_lift_sigma [ConnectedSpace α] [∀ i, TopologicalSpace (π i)]
+    {f : α → Σ i, π i} (hf : Continuous f) :
+    ∃ (i : ι) (g : α → π i), Continuous g ∧ f = Sigma.mk i ∘ g := by
+  obtain ⟨i, hi⟩ : ∃ i, range f ⊆ range (.mk i)
+  · rcases Sigma.isConnected_iff.1 (isConnected_range hf) with ⟨i, s, -, hs⟩
+    exact ⟨i, hs.trans_subset (image_subset_range _ _)⟩
+  rcases range_subset_range_iff_exists_comp.1 hi with ⟨g, rfl⟩
+  refine ⟨i, g, ?_, rfl⟩
+  rwa [← embedding_sigmaMk.continuous_iff] at hf
+
 theorem nonempty_inter [PreconnectedSpace α] {s t : Set α} :
     IsOpen s → IsOpen t → s ∪ t = univ → s.Nonempty → t.Nonempty → (s ∩ t).Nonempty := by
   simpa only [univ_inter, univ_subset_iff] using @PreconnectedSpace.isPreconnected_univ α _ _ s t
fix: change compl precedence (#5586)

Co-authored-by: Yury G. Kudryashov <urkud@urkud.name>

Diff
@@ -454,7 +454,7 @@ theorem IsPreconnected.subset_clopen {s t : Set α} (hs : IsPreconnected s) (ht
 contained in `u`, then the whole set `s` is contained in `u`. -/
 theorem IsPreconnected.subset_of_closure_inter_subset (hs : IsPreconnected s) (hu : IsOpen u)
     (h'u : (s ∩ u).Nonempty) (h : closure u ∩ s ⊆ u) : s ⊆ u := by
-  have A : s ⊆ u ∪ closure uᶜ := by
+  have A : s ⊆ u ∪ (closure u)ᶜ := by
     intro x hx
     by_cases xu : x ∈ u
     · exact Or.inl xu
@@ -1292,7 +1292,7 @@ theorem isTotallyDisconnected_of_clopen_set {X : Type _} [TopologicalSpace X]
   rcases h_contra with ⟨x, hx, y, hy, hxy⟩
   obtain ⟨U, h_clopen, hxU, hyU⟩ := hX hxy
   specialize
-    hS U (Uᶜ) h_clopen.1 h_clopen.compl.1 (fun a _ => em (a ∈ U)) ⟨x, hx, hxU⟩ ⟨y, hy, hyU⟩
+    hS U Uᶜ h_clopen.1 h_clopen.compl.1 (fun a _ => em (a ∈ U)) ⟨x, hx, hxU⟩ ⟨y, hy, hyU⟩
   rw [inter_compl_self, Set.inter_empty] at hS
   exact Set.not_nonempty_empty hS
 #align is_totally_disconnected_of_clopen_set isTotallyDisconnected_of_clopen_set
feat(Data.Set.Basic/Data.Finset.Basic): rename insert_subset (#5450)

Currently, (for both Set and Finset) insert_subset is an iff lemma stating that insert a s ⊆ t if and only if a ∈ t and s ⊆ t. For both types, this PR renames this lemma to insert_subset_iff, and adds an insert_subset lemma that gives the implication just in the reverse direction : namely theorem insert_subset (ha : a ∈ t) (hs : s ⊆ t) : insert a s ⊆ t .

This both aligns the naming with union_subset and union_subset_iff, and removes the need for the awkward insert_subset.mpr ⟨_,_⟩ idiom. It touches a lot of files (too many to list), but in a trivial way.

Diff
@@ -186,7 +186,8 @@ theorem IsPreconnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : 
       exact H i hi
     case tail j k _ hjk ih =>
       obtain ⟨p, hpt, hip, hjp, hp⟩ := ih hjk.2
-      refine ⟨insert k p, insert_subset.mpr ⟨hj, hpt⟩, mem_insert_of_mem k hip, mem_insert k p, ?_⟩
+      refine ⟨insert k p, insert_subset_iff.mpr ⟨hj, hpt⟩, mem_insert_of_mem k hip,
+        mem_insert k p, ?_⟩
       rw [biUnion_insert]
       refine (H k hj).union' (hjk.1.mono ?_) hp
       rw [inter_comm]
@@ -720,7 +721,8 @@ theorem Continuous.mapsTo_connectedComponent [TopologicalSpace β] {f : α → 
 theorem irreducibleComponent_subset_connectedComponent {x : α} :
     irreducibleComponent x ⊆ connectedComponent x :=
   isIrreducible_irreducibleComponent.isConnected.subset_connectedComponent mem_irreducibleComponent
-#align irreducible_component_subset_connected_component irreducibleComponent_subset_connectedComponent
+#align irreducible_component_subset_connected_component
+  irreducibleComponent_subset_connectedComponent
 
 @[mono]
 theorem connectedComponentIn_mono (x : α) {F G : Set α} (h : F ⊆ G) :
@@ -984,7 +986,8 @@ theorem isPreconnected_iff_subset_of_fully_disjoint_closed {s : Set α} (hs : Is
   · rw [← inter_distrib_right]
     exact subset_inter hss Subset.rfl
   · rwa [disjoint_iff_inter_eq_empty, ← inter_inter_distrib_right, inter_comm]
-#align is_preconnected_iff_subset_of_fully_disjoint_closed isPreconnected_iff_subset_of_fully_disjoint_closed
+#align is_preconnected_iff_subset_of_fully_disjoint_closed
+  isPreconnected_iff_subset_of_fully_disjoint_closed
 
 theorem IsClopen.connectedComponent_subset {x} (hs : IsClopen s) (hx : x ∈ s) :
     connectedComponent x ⊆ s :=
@@ -1115,7 +1118,8 @@ theorem locallyConnectedSpace_iff_open_connected_basis :
     LocallyConnectedSpace α ↔
       ∀ x, (𝓝 x).HasBasis (fun s : Set α => IsOpen s ∧ x ∈ s ∧ IsConnected s) id :=
   ⟨@LocallyConnectedSpace.open_connected_basis _ _, LocallyConnectedSpace.mk⟩
-#align locally_connected_space_iff_open_connected_basis locallyConnectedSpace_iff_open_connected_basis
+#align locally_connected_space_iff_open_connected_basis
+  locallyConnectedSpace_iff_open_connected_basis
 
 theorem locallyConnectedSpace_iff_open_connected_subsets :
     LocallyConnectedSpace α ↔
@@ -1129,7 +1133,8 @@ theorem locallyConnectedSpace_iff_open_connected_subsets :
   · exact fun h => ⟨fun U => ⟨fun hU =>
       let ⟨V, hVU, hV⟩ := h U hU
       ⟨V, hV, hVU⟩, fun ⟨V, ⟨hV, hxV, _⟩, hVU⟩ => mem_nhds_iff.mpr ⟨V, hVU, hV, hxV⟩⟩⟩
-#align locally_connected_space_iff_open_connected_subsets locallyConnectedSpace_iff_open_connected_subsets
+#align locally_connected_space_iff_open_connected_subsets
+  locallyConnectedSpace_iff_open_connected_subsets
 
 /-- A space with discrete topology is a locally connected space. -/
 instance (priority := 100) DiscreteTopology.toLocallyConnectedSpace (α) [TopologicalSpace α]
@@ -1178,7 +1183,8 @@ theorem locallyConnectedSpace_iff_connectedComponentIn_open :
           (connectedComponentIn_subset _ _).trans interior_subset, h _ isOpen_interior x _,
           mem_connectedComponentIn _, isConnected_connectedComponentIn_iff.mpr _⟩ <;>
       exact mem_interior_iff_mem_nhds.mpr hU
-#align locally_connected_space_iff_connected_component_in_open locallyConnectedSpace_iff_connectedComponentIn_open
+#align locally_connected_space_iff_connected_component_in_open
+  locallyConnectedSpace_iff_connectedComponentIn_open
 
 theorem locallyConnectedSpace_iff_connected_subsets :
     LocallyConnectedSpace α ↔ ∀ (x : α), ∀ U ∈ 𝓝 x, ∃ V ∈ 𝓝 x, IsPreconnected V ∧ V ⊆ U := by
@@ -1304,7 +1310,8 @@ theorem totallyDisconnectedSpace_iff_connectedComponent_subsingleton :
   rcases eq_empty_or_nonempty s with (rfl | ⟨x, x_in⟩)
   · exact subsingleton_empty
   · exact (h x).anti (hs.subset_connectedComponent x_in)
-#align totally_disconnected_space_iff_connected_component_subsingleton totallyDisconnectedSpace_iff_connectedComponent_subsingleton
+#align totally_disconnected_space_iff_connected_component_subsingleton
+  totallyDisconnectedSpace_iff_connectedComponent_subsingleton
 
 /-- A space is totally disconnected iff its connected components are singletons. -/
 theorem totallyDisconnectedSpace_iff_connectedComponent_singleton :
@@ -1313,7 +1320,8 @@ theorem totallyDisconnectedSpace_iff_connectedComponent_singleton :
   refine forall_congr' fun x => ?_
   rw [subsingleton_iff_singleton]
   exact mem_connectedComponent
-#align totally_disconnected_space_iff_connected_component_singleton totallyDisconnectedSpace_iff_connectedComponent_singleton
+#align totally_disconnected_space_iff_connected_component_singleton
+  totallyDisconnectedSpace_iff_connectedComponent_singleton
 
 @[simp] theorem connectedComponent_eq_singleton [TotallyDisconnectedSpace α] (x : α) :
     connectedComponent x = {x} :=
@@ -1327,12 +1335,14 @@ theorem Continuous.image_connectedComponent_eq_singleton {β : Type _} [Topologi
     f '' connectedComponent a = {f a} :=
   (Set.subsingleton_iff_singleton <| mem_image_of_mem f mem_connectedComponent).mp
     (isPreconnected_connectedComponent.image f h.continuousOn).subsingleton
-#align continuous.image_connected_component_eq_singleton Continuous.image_connectedComponent_eq_singleton
+#align continuous.image_connected_component_eq_singleton
+  Continuous.image_connectedComponent_eq_singleton
 
 theorem isTotallyDisconnected_of_totallyDisconnectedSpace [TotallyDisconnectedSpace α] (s : Set α) :
     IsTotallyDisconnected s := fun t _ ht =>
   TotallyDisconnectedSpace.isTotallyDisconnected_univ _ t.subset_univ ht
-#align is_totally_disconnected_of_totally_disconnected_space isTotallyDisconnected_of_totallyDisconnectedSpace
+#align is_totally_disconnected_of_totally_disconnected_space
+  isTotallyDisconnected_of_totallyDisconnectedSpace
 
 theorem isTotallyDisconnected_of_image [TopologicalSpace β] {f : α → β} (hf : ContinuousOn f s)
     (hf' : Injective f) (h : IsTotallyDisconnected (f '' s)) : IsTotallyDisconnected s :=
@@ -1398,7 +1408,8 @@ class TotallySeparatedSpace (α : Type u) [TopologicalSpace α] : Prop where
 instance (priority := 100) TotallySeparatedSpace.totallyDisconnectedSpace (α : Type u)
     [TopologicalSpace α] [TotallySeparatedSpace α] : TotallyDisconnectedSpace α :=
   ⟨TotallySeparatedSpace.isTotallySeparated_univ.isTotallyDisconnected⟩
-#align totally_separated_space.totally_disconnected_space TotallySeparatedSpace.totallyDisconnectedSpace
+#align totally_separated_space.totally_disconnected_space
+  TotallySeparatedSpace.totallyDisconnectedSpace
 
 -- see Note [lower instance priority]
 instance (priority := 100) TotallySeparatedSpace.of_discrete (α : Type _) [TopologicalSpace α]
chore: clean up spacing around at and goals (#5387)

Changes are of the form

  • some_tactic at h⊢ -> some_tactic at h ⊢
  • some_tactic at h -> some_tactic at h
Diff
@@ -681,7 +681,7 @@ theorem connectedComponent_eq_iff_mem {x y : α} :
 theorem connectedComponentIn_eq {x y : α} {F : Set α} (h : y ∈ connectedComponentIn F x) :
     connectedComponentIn F x = connectedComponentIn F y := by
   have hx : x ∈ F := connectedComponentIn_nonempty_iff.mp ⟨y, h⟩
-  simp_rw [connectedComponentIn_eq_image hx] at h⊢
+  simp_rw [connectedComponentIn_eq_image hx] at h ⊢
   obtain ⟨⟨y, hy⟩, h2y, rfl⟩ := h
   simp_rw [connectedComponentIn_eq_image hy, connectedComponent_eq h2y]
 #align connected_component_in_eq connectedComponentIn_eq
chore: fix many typos (#4535)

Run codespell Mathlib and keep some suggestions.

Diff
@@ -1435,7 +1435,7 @@ def ConnectedComponents (α : Type u) [TopologicalSpace α] :=
 
 namespace ConnectedComponents
 
-/-- Coersion from a topological space to the set of connected components of this space. -/
+/-- Coercion from a topological space to the set of connected components of this space. -/
 def mk : α → ConnectedComponents α := Quotient.mk''
 
 instance : CoeTC α (ConnectedComponents α) := ⟨mk⟩
chore: improve docs (#4324)

Also use ∀ x ∈ s, _

Diff
@@ -120,7 +120,7 @@ theorem isPreconnected_of_forall {s : Set α} (x : α)
 /-- If any two points of a set are contained in a preconnected subset,
 then the original set is preconnected as well. -/
 theorem isPreconnected_of_forall_pair {s : Set α}
-    (H : ∀ x, x ∈ s → ∀ y, y ∈ s → ∃ t, t ⊆ s ∧ x ∈ t ∧ y ∈ t ∧ IsPreconnected t) :
+    (H : ∀ x ∈ s, ∀ y ∈ s, ∃ t, t ⊆ s ∧ x ∈ t ∧ y ∈ t ∧ IsPreconnected t) :
     IsPreconnected s := by
   rcases eq_empty_or_nonempty s with (rfl | ⟨x, hx⟩)
   exacts [isPreconnected_empty, isPreconnected_of_forall x fun y => H x hx y]
@@ -283,8 +283,8 @@ theorem IsConnected.biUnion_of_chain {s : β → Set α} {t : Set β} (hnt : t.N
 
 end SuccOrder
 
-/-- Theorem of bark and tree: if a set is within a (pre)connected set
-and its closure, then it is (pre)connected as well. -/
+/-- Theorem of bark and tree: if a set is within a preconnected set and its closure, then it is
+preconnected as well. See also `IsConnected.subset_closure`. -/
 protected theorem IsPreconnected.subset_closure {s : Set α} {t : Set α} (H : IsPreconnected s)
     (Kst : s ⊆ t) (Ktcs : t ⊆ closure s) : IsPreconnected t :=
   fun u v hu hv htuv ⟨_y, hyt, hyu⟩ ⟨_z, hzt, hzv⟩ =>
@@ -294,22 +294,25 @@ protected theorem IsPreconnected.subset_closure {s : Set α} {t : Set α} (H : I
   ⟨r, Kst hrs, hruv⟩
 #align is_preconnected.subset_closure IsPreconnected.subset_closure
 
+/-- Theorem of bark and tree: if a set is within a connected set and its closure, then it is
+connected as well. See also `IsPreconnected.subset_closure`. -/
 protected theorem IsConnected.subset_closure {s : Set α} {t : Set α} (H : IsConnected s)
     (Kst : s ⊆ t) (Ktcs : t ⊆ closure s) : IsConnected t :=
   ⟨Nonempty.mono Kst H.left, IsPreconnected.subset_closure H.right Kst Ktcs⟩
 #align is_connected.subset_closure IsConnected.subset_closure
 
-/-- The closure of a (pre)connected set is (pre)connected as well. -/
+/-- The closure of a preconnected set is preconnected as well. -/
 protected theorem IsPreconnected.closure {s : Set α} (H : IsPreconnected s) :
     IsPreconnected (closure s) :=
   IsPreconnected.subset_closure H subset_closure Subset.rfl
 #align is_preconnected.closure IsPreconnected.closure
 
+/-- The closure of a connected set is connected as well. -/
 protected theorem IsConnected.closure {s : Set α} (H : IsConnected s) : IsConnected (closure s) :=
   IsConnected.subset_closure H subset_closure <| Subset.rfl
 #align is_connected.closure IsConnected.closure
 
-/-- The image of a (pre)connected set is (pre)connected as well. -/
+/-- The image of a preconnected set is preconnected as well. -/
 protected theorem IsPreconnected.image [TopologicalSpace β] {s : Set α} (H : IsPreconnected s)
     (f : α → β) (hf : ContinuousOn f s) : IsPreconnected (f '' s) := by
   -- Unfold/destruct definitions in hypotheses
@@ -331,6 +334,7 @@ protected theorem IsPreconnected.image [TopologicalSpace β] {s : Set α} (H : I
   exact ⟨f z, ⟨z, hz.1.2, rfl⟩, hz.1.1, hz.2.1⟩
 #align is_preconnected.image IsPreconnected.image
 
+/-- The image of a connected set is connected as well. -/
 protected theorem IsConnected.image [TopologicalSpace β] {s : Set α} (H : IsConnected s) (f : α → β)
     (hf : ContinuousOn f s) : IsConnected (f '' s) :=
   ⟨nonempty_image_iff.mpr H.nonempty, H.isPreconnected.image f hf⟩
chore: update std 05-22 (#4248)

The main breaking change is that tac <;> [t1, t2] is now written tac <;> [t1; t2], to avoid clashing with tactics like cases and use that take comma-separated lists.

Diff
@@ -836,7 +836,7 @@ theorem isClopen_iff [PreconnectedSpace α] {s : Set α} : IsClopen s ↔ s = 
         nonempty_inter hs.1 hs.2.isOpen_compl (union_compl_self s) (nonempty_iff_ne_empty.2 h1.1)
           (nonempty_iff_ne_empty.2 h1.2)
       h3 h2,
-    by rintro (rfl | rfl) <;> [exact isClopen_empty, exact isClopen_univ]⟩
+    by rintro (rfl | rfl) <;> [exact isClopen_empty; exact isClopen_univ]⟩
 #align is_clopen_iff isClopen_iff
 
 theorem IsClopen.eq_univ [PreconnectedSpace α] {s : Set α} (h' : IsClopen s) (h : s.Nonempty) :
chore: Rename to sSup/iSup (#3938)

As discussed on Zulip

Renames

  • supₛsSup
  • infₛsInf
  • supᵢiSup
  • infᵢiInf
  • bsupₛbsSup
  • binfₛbsInf
  • bsupᵢbiSup
  • binfᵢbiInf
  • csupₛcsSup
  • cinfₛcsInf
  • csupᵢciSup
  • cinfᵢciInf
  • unionₛsUnion
  • interₛsInter
  • unionᵢiUnion
  • interᵢiInter
  • bunionₛbsUnion
  • binterₛbsInter
  • bunionᵢbiUnion
  • binterᵢbiInter

Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -127,21 +127,21 @@ theorem isPreconnected_of_forall_pair {s : Set α}
 #align is_preconnected_of_forall_pair isPreconnected_of_forall_pair
 
 /-- A union of a family of preconnected sets with a common point is preconnected as well. -/
-theorem isPreconnected_unionₛ (x : α) (c : Set (Set α)) (H1 : ∀ s ∈ c, x ∈ s)
+theorem isPreconnected_sUnion (x : α) (c : Set (Set α)) (H1 : ∀ s ∈ c, x ∈ s)
     (H2 : ∀ s ∈ c, IsPreconnected s) : IsPreconnected (⋃₀ c) := by
   apply isPreconnected_of_forall x
   rintro y ⟨s, sc, ys⟩
-  exact ⟨s, subset_unionₛ_of_mem sc, H1 s sc, ys, H2 s sc⟩
-#align is_preconnected_sUnion isPreconnected_unionₛ
+  exact ⟨s, subset_sUnion_of_mem sc, H1 s sc, ys, H2 s sc⟩
+#align is_preconnected_sUnion isPreconnected_sUnion
 
-theorem isPreconnected_unionᵢ {ι : Sort _} {s : ι → Set α} (h₁ : (⋂ i, s i).Nonempty)
+theorem isPreconnected_iUnion {ι : Sort _} {s : ι → Set α} (h₁ : (⋂ i, s i).Nonempty)
     (h₂ : ∀ i, IsPreconnected (s i)) : IsPreconnected (⋃ i, s i) :=
-  Exists.elim h₁ fun f hf => isPreconnected_unionₛ f _ hf (forall_range_iff.2 h₂)
-#align is_preconnected_Union isPreconnected_unionᵢ
+  Exists.elim h₁ fun f hf => isPreconnected_sUnion f _ hf (forall_range_iff.2 h₂)
+#align is_preconnected_Union isPreconnected_iUnion
 
 theorem IsPreconnected.union (x : α) {s t : Set α} (H1 : x ∈ s) (H2 : x ∈ t) (H3 : IsPreconnected s)
     (H4 : IsPreconnected t) : IsPreconnected (s ∪ t) :=
-  unionₛ_pair s t ▸ isPreconnected_unionₛ x {s, t} (by rintro r (rfl | rfl | h) <;> assumption)
+  sUnion_pair s t ▸ isPreconnected_sUnion x {s, t} (by rintro r (rfl | rfl | h) <;> assumption)
     (by rintro r (rfl | rfl | h) <;> assumption)
 #align is_preconnected.union IsPreconnected.union
 
@@ -159,20 +159,20 @@ theorem IsConnected.union {s t : Set α} (H : (s ∩ t).Nonempty) (Hs : IsConnec
     Ht.isPreconnected
 #align is_connected.union IsConnected.union
 
-/-- The directed unionₛ of a set S of preconnected subsets is preconnected. -/
-theorem IsPreconnected.unionₛ_directed {S : Set (Set α)} (K : DirectedOn (· ⊆ ·) S)
+/-- The directed sUnion of a set S of preconnected subsets is preconnected. -/
+theorem IsPreconnected.sUnion_directed {S : Set (Set α)} (K : DirectedOn (· ⊆ ·) S)
     (H : ∀ s ∈ S, IsPreconnected s) : IsPreconnected (⋃₀ S) := by
   rintro u v hu hv Huv ⟨a, ⟨s, hsS, has⟩, hau⟩ ⟨b, ⟨t, htS, hbt⟩, hbv⟩
   obtain ⟨r, hrS, hsr, htr⟩ : ∃ r ∈ S, s ⊆ r ∧ t ⊆ r := K s hsS t htS
   have Hnuv : (r ∩ (u ∩ v)).Nonempty :=
-    H _ hrS u v hu hv ((subset_unionₛ_of_mem hrS).trans Huv) ⟨a, hsr has, hau⟩ ⟨b, htr hbt, hbv⟩
-  have Kruv : r ∩ (u ∩ v) ⊆ ⋃₀ S ∩ (u ∩ v) := inter_subset_inter_left _ (subset_unionₛ_of_mem hrS)
+    H _ hrS u v hu hv ((subset_sUnion_of_mem hrS).trans Huv) ⟨a, hsr has, hau⟩ ⟨b, htr hbt, hbv⟩
+  have Kruv : r ∩ (u ∩ v) ⊆ ⋃₀ S ∩ (u ∩ v) := inter_subset_inter_left _ (subset_sUnion_of_mem hrS)
   exact Hnuv.mono Kruv
-#align is_preconnected.sUnion_directed IsPreconnected.unionₛ_directed
+#align is_preconnected.sUnion_directed IsPreconnected.sUnion_directed
 
-/-- The bunionᵢ of a family of preconnected sets is preconnected if the graph determined by
+/-- The biUnion of a family of preconnected sets is preconnected if the graph determined by
 whether two sets intersect is preconnected. -/
-theorem IsPreconnected.bunionᵢ_of_reflTransGen {ι : Type _} {t : Set ι} {s : ι → Set α}
+theorem IsPreconnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : ι → Set α}
     (H : ∀ i ∈ t, IsPreconnected (s i))
     (K : ∀ i, i ∈ t → ∀ j, j ∈ t → ReflTransGen (fun i j => (s i ∩ s j).Nonempty ∧ i ∈ t) i j) :
     IsPreconnected (⋃ n ∈ t, s n) := by
@@ -182,52 +182,52 @@ theorem IsPreconnected.bunionᵢ_of_reflTransGen {ι : Type _} {t : Set ι} {s :
     induction h
     case refl =>
       refine ⟨{i}, singleton_subset_iff.mpr hi, mem_singleton i, mem_singleton i, ?_⟩
-      rw [bunionᵢ_singleton]
+      rw [biUnion_singleton]
       exact H i hi
     case tail j k _ hjk ih =>
       obtain ⟨p, hpt, hip, hjp, hp⟩ := ih hjk.2
       refine ⟨insert k p, insert_subset.mpr ⟨hj, hpt⟩, mem_insert_of_mem k hip, mem_insert k p, ?_⟩
-      rw [bunionᵢ_insert]
+      rw [biUnion_insert]
       refine (H k hj).union' (hjk.1.mono ?_) hp
       rw [inter_comm]
-      exact inter_subset_inter_right _ (subset_bunionᵢ_of_mem hjp)
+      exact inter_subset_inter_right _ (subset_biUnion_of_mem hjp)
   refine' isPreconnected_of_forall_pair _
   intro x hx y hy
-  obtain ⟨i : ι, hi : i ∈ t, hxi : x ∈ s i⟩ := mem_unionᵢ₂.1 hx
-  obtain ⟨j : ι, hj : j ∈ t, hyj : y ∈ s j⟩ := mem_unionᵢ₂.1 hy
+  obtain ⟨i : ι, hi : i ∈ t, hxi : x ∈ s i⟩ := mem_iUnion₂.1 hx
+  obtain ⟨j : ι, hj : j ∈ t, hyj : y ∈ s j⟩ := mem_iUnion₂.1 hy
   obtain ⟨p, hpt, hip, hjp, hp⟩ := P i hi j hj (K i hi j hj)
-  exact ⟨⋃ j ∈ p, s j, bunionᵢ_subset_bunionᵢ_left hpt, mem_bunionᵢ hip hxi,
-    mem_bunionᵢ hjp hyj, hp⟩
-#align is_preconnected.bUnion_of_refl_trans_gen IsPreconnected.bunionᵢ_of_reflTransGen
+  exact ⟨⋃ j ∈ p, s j, biUnion_subset_biUnion_left hpt, mem_biUnion hip hxi,
+    mem_biUnion hjp hyj, hp⟩
+#align is_preconnected.bUnion_of_refl_trans_gen IsPreconnected.biUnion_of_reflTransGen
 
-/-- The bunionᵢ of a family of preconnected sets is preconnected if the graph determined by
+/-- The biUnion of a family of preconnected sets is preconnected if the graph determined by
 whether two sets intersect is preconnected. -/
-theorem IsConnected.bunionᵢ_of_reflTransGen {ι : Type _} {t : Set ι} {s : ι → Set α}
+theorem IsConnected.biUnion_of_reflTransGen {ι : Type _} {t : Set ι} {s : ι → Set α}
     (ht : t.Nonempty) (H : ∀ i ∈ t, IsConnected (s i))
     (K : ∀ i, i ∈ t → ∀ j, j ∈ t → ReflTransGen (fun i j : ι => (s i ∩ s j).Nonempty ∧ i ∈ t) i j) :
     IsConnected (⋃ n ∈ t, s n) :=
-  ⟨nonempty_bunionᵢ.2 <| ⟨ht.some, ht.some_mem, (H _ ht.some_mem).nonempty⟩,
-    IsPreconnected.bunionᵢ_of_reflTransGen (fun i hi => (H i hi).isPreconnected) K⟩
-#align is_connected.bUnion_of_refl_trans_gen IsConnected.bunionᵢ_of_reflTransGen
+  ⟨nonempty_biUnion.2 <| ⟨ht.some, ht.some_mem, (H _ ht.some_mem).nonempty⟩,
+    IsPreconnected.biUnion_of_reflTransGen (fun i hi => (H i hi).isPreconnected) K⟩
+#align is_connected.bUnion_of_refl_trans_gen IsConnected.biUnion_of_reflTransGen
 
-/-- Preconnectedness of the unionᵢ of a family of preconnected sets
+/-- Preconnectedness of the iUnion of a family of preconnected sets
 indexed by the vertices of a preconnected graph,
 where two vertices are joined when the corresponding sets intersect. -/
-theorem IsPreconnected.unionᵢ_of_reflTransGen {ι : Type _} {s : ι → Set α}
+theorem IsPreconnected.iUnion_of_reflTransGen {ι : Type _} {s : ι → Set α}
     (H : ∀ i, IsPreconnected (s i))
     (K : ∀ i j, ReflTransGen (fun i j : ι => (s i ∩ s j).Nonempty) i j) :
     IsPreconnected (⋃ n, s n) := by
-  rw [← bunionᵢ_univ]
-  exact IsPreconnected.bunionᵢ_of_reflTransGen (fun i _ => H i) fun i _ j _ => by
+  rw [← biUnion_univ]
+  exact IsPreconnected.biUnion_of_reflTransGen (fun i _ => H i) fun i _ j _ => by
     simpa [mem_univ] using K i j
-#align is_preconnected.Union_of_refl_trans_gen IsPreconnected.unionᵢ_of_reflTransGen
+#align is_preconnected.Union_of_refl_trans_gen IsPreconnected.iUnion_of_reflTransGen
 
-theorem IsConnected.unionᵢ_of_reflTransGen {ι : Type _} [Nonempty ι] {s : ι → Set α}
+theorem IsConnected.iUnion_of_reflTransGen {ι : Type _} [Nonempty ι] {s : ι → Set α}
     (H : ∀ i, IsConnected (s i))
     (K : ∀ i j, ReflTransGen (fun i j : ι => (s i ∩ s j).Nonempty) i j) : IsConnected (⋃ n, s n) :=
-  ⟨nonempty_unionᵢ.2 <| Nonempty.elim ‹_› fun i : ι => ⟨i, (H _).nonempty⟩,
-    IsPreconnected.unionᵢ_of_reflTransGen (fun i => (H i).isPreconnected) K⟩
-#align is_connected.Union_of_refl_trans_gen IsConnected.unionᵢ_of_reflTransGen
+  ⟨nonempty_iUnion.2 <| Nonempty.elim ‹_› fun i : ι => ⟨i, (H _).nonempty⟩,
+    IsPreconnected.iUnion_of_reflTransGen (fun i => (H i).isPreconnected) K⟩
+#align is_connected.Union_of_refl_trans_gen IsConnected.iUnion_of_reflTransGen
 
 section SuccOrder
 
@@ -235,29 +235,29 @@ open Order
 
 variable [LinearOrder β] [SuccOrder β] [IsSuccArchimedean β]
 
-/-- The unionᵢ of connected sets indexed by a type with an archimedean successor (like `ℕ` or `ℤ`)
+/-- The iUnion of connected sets indexed by a type with an archimedean successor (like `ℕ` or `ℤ`)
   such that any two neighboring sets meet is preconnected. -/
-theorem IsPreconnected.unionᵢ_of_chain {s : β → Set α} (H : ∀ n, IsPreconnected (s n))
+theorem IsPreconnected.iUnion_of_chain {s : β → Set α} (H : ∀ n, IsPreconnected (s n))
     (K : ∀ n, (s n ∩ s (succ n)).Nonempty) : IsPreconnected (⋃ n, s n) :=
-  IsPreconnected.unionᵢ_of_reflTransGen H fun i j =>
+  IsPreconnected.iUnion_of_reflTransGen H fun i j =>
     reflTransGen_of_succ _ (fun i _ => K i) fun i _ => by
       rw [inter_comm]
       exact K i
-#align is_preconnected.Union_of_chain IsPreconnected.unionᵢ_of_chain
+#align is_preconnected.Union_of_chain IsPreconnected.iUnion_of_chain
 
-/-- The unionᵢ of connected sets indexed by a type with an archimedean successor (like `ℕ` or `ℤ`)
+/-- The iUnion of connected sets indexed by a type with an archimedean successor (like `ℕ` or `ℤ`)
   such that any two neighboring sets meet is connected. -/
-theorem IsConnected.unionᵢ_of_chain [Nonempty β] {s : β → Set α} (H : ∀ n, IsConnected (s n))
+theorem IsConnected.iUnion_of_chain [Nonempty β] {s : β → Set α} (H : ∀ n, IsConnected (s n))
     (K : ∀ n, (s n ∩ s (succ n)).Nonempty) : IsConnected (⋃ n, s n) :=
-  IsConnected.unionᵢ_of_reflTransGen H fun i j =>
+  IsConnected.iUnion_of_reflTransGen H fun i j =>
     reflTransGen_of_succ _ (fun i _ => K i) fun i _ => by
       rw [inter_comm]
       exact K i
-#align is_connected.Union_of_chain IsConnected.unionᵢ_of_chain
+#align is_connected.Union_of_chain IsConnected.iUnion_of_chain
 
-/-- The unionᵢ of preconnected sets indexed by a subset of a type with an archimedean successor
+/-- The iUnion of preconnected sets indexed by a subset of a type with an archimedean successor
   (like `ℕ` or `ℤ`) such that any two neighboring sets meet is preconnected. -/
-theorem IsPreconnected.bunionᵢ_of_chain {s : β → Set α} {t : Set β} (ht : OrdConnected t)
+theorem IsPreconnected.biUnion_of_chain {s : β → Set α} {t : Set β} (ht : OrdConnected t)
     (H : ∀ n ∈ t, IsPreconnected (s n))
     (K : ∀ n : β, n ∈ t → succ n ∈ t → (s n ∩ s (succ n)).Nonempty) :
     IsPreconnected (⋃ n ∈ t, s n) := by
@@ -267,19 +267,19 @@ theorem IsPreconnected.bunionᵢ_of_chain {s : β → Set α} {t : Set β} (ht :
     ht.out hi hj ⟨hk.1.trans <| le_succ _, succ_le_of_lt hk.2⟩
   have h3 : ∀ {i j k : β}, i ∈ t → j ∈ t → k ∈ Ico i j → (s k ∩ s (succ k)).Nonempty :=
     fun hi hj hk => K _ (h1 hi hj hk) (h2 hi hj hk)
-  refine' IsPreconnected.bunionᵢ_of_reflTransGen H fun i hi j hj => _
+  refine' IsPreconnected.biUnion_of_reflTransGen H fun i hi j hj => _
   exact reflTransGen_of_succ _ (fun k hk => ⟨h3 hi hj hk, h1 hi hj hk⟩) fun k hk =>
       ⟨by rw [inter_comm]; exact h3 hj hi hk, h2 hj hi hk⟩
-#align is_preconnected.bUnion_of_chain IsPreconnected.bunionᵢ_of_chain
+#align is_preconnected.bUnion_of_chain IsPreconnected.biUnion_of_chain
 
-/-- The unionᵢ of connected sets indexed by a subset of a type with an archimedean successor
+/-- The iUnion of connected sets indexed by a subset of a type with an archimedean successor
   (like `ℕ` or `ℤ`) such that any two neighboring sets meet is preconnected. -/
-theorem IsConnected.bunionᵢ_of_chain {s : β → Set α} {t : Set β} (hnt : t.Nonempty)
+theorem IsConnected.biUnion_of_chain {s : β → Set α} {t : Set β} (hnt : t.Nonempty)
     (ht : OrdConnected t) (H : ∀ n ∈ t, IsConnected (s n))
     (K : ∀ n : β, n ∈ t → succ n ∈ t → (s n ∩ s (succ n)).Nonempty) : IsConnected (⋃ n ∈ t, s n) :=
-  ⟨nonempty_bunionᵢ.2 <| ⟨hnt.some, hnt.some_mem, (H _ hnt.some_mem).nonempty⟩,
-    IsPreconnected.bunionᵢ_of_chain ht (fun i hi => (H i hi).isPreconnected) K⟩
-#align is_connected.bUnion_of_chain IsConnected.bunionᵢ_of_chain
+  ⟨nonempty_biUnion.2 <| ⟨hnt.some, hnt.some_mem, (H _ hnt.some_mem).nonempty⟩,
+    IsPreconnected.biUnion_of_chain ht (fun i hi => (H i hi).isPreconnected) K⟩
+#align is_connected.bUnion_of_chain IsConnected.biUnion_of_chain
 
 end SuccOrder
 
@@ -590,7 +590,7 @@ theorem connectedComponentIn_eq_empty {F : Set α} {x : α} (h : x ∉ F) :
 #align connected_component_in_eq_empty connectedComponentIn_eq_empty
 
 theorem mem_connectedComponent {x : α} : x ∈ connectedComponent x :=
-  mem_unionₛ_of_mem (mem_singleton x) ⟨isPreconnected_singleton, mem_singleton x⟩
+  mem_sUnion_of_mem (mem_singleton x) ⟨isPreconnected_singleton, mem_singleton x⟩
 #align mem_connected_component mem_connectedComponent
 
 theorem mem_connectedComponentIn {x : α} {F : Set α} (hx : x ∈ F) : x ∈ connectedComponentIn F x :=
@@ -613,7 +613,7 @@ theorem connectedComponentIn_subset (F : Set α) (x : α) : connectedComponentIn
 #align connected_component_in_subset connectedComponentIn_subset
 
 theorem isPreconnected_connectedComponent {x : α} : IsPreconnected (connectedComponent x) :=
-  isPreconnected_unionₛ x _ (fun _ => And.right) fun _ => And.left
+  isPreconnected_sUnion x _ (fun _ => And.right) fun _ => And.left
 #align is_preconnected_connected_component isPreconnected_connectedComponent
 
 theorem isPreconnected_connectedComponentIn {x : α} {F : Set α} :
@@ -634,7 +634,7 @@ theorem isConnected_connectedComponentIn_iff {x : α} {F : Set α} :
 #align is_connected_connected_component_in_iff isConnected_connectedComponentIn_iff
 
 theorem IsPreconnected.subset_connectedComponent {x : α} {s : Set α} (H1 : IsPreconnected s)
-    (H2 : x ∈ s) : s ⊆ connectedComponent x := fun _z hz => mem_unionₛ_of_mem hz ⟨H1, H2⟩
+    (H2 : x ∈ s) : s ⊆ connectedComponent x := fun _z hz => mem_sUnion_of_mem hz ⟨H1, H2⟩
 #align is_preconnected.subset_connected_component IsPreconnected.subset_connectedComponent
 
 theorem IsPreconnected.subset_connectedComponentIn {x : α} {F : Set α} (hs : IsPreconnected s)
@@ -905,7 +905,7 @@ theorem isPreconnected_iff_subset_of_disjoint {s : Set α} :
 /-- A set `s` is connected if and only if
 for every cover by a finite collection of open sets that are pairwise disjoint on `s`,
 it is contained in one of the members of the collection. -/
-theorem isConnected_iff_unionₛ_disjoint_open {s : Set α} :
+theorem isConnected_iff_sUnion_disjoint_open {s : Set α} :
     IsConnected s ↔
       ∀ U : Finset (Set α), (∀ u v : Set α, u ∈ U → v ∈ U → (s ∩ (u ∩ v)).Nonempty → u = v) →
         (∀ u ∈ U, IsOpen u) → (s ⊆ ⋃₀ ↑U) → ∃ u ∈ U, s ⊆ u := by
@@ -915,8 +915,8 @@ theorem isConnected_iff_unionₛ_disjoint_open {s : Set α} :
     case empty => exact absurd (by simpa using hsU) hne.not_subset_empty
     case insert u U uU IH =>
       simp only [← ball_cond_comm, Finset.forall_mem_insert, Finset.exists_mem_insert,
-        Finset.coe_insert, unionₛ_insert, implies_true, true_and] at *
-      refine (h _ hUo.1 (⋃₀ ↑U) (isOpen_unionₛ hUo.2) hsU ?_).imp_right ?_
+        Finset.coe_insert, sUnion_insert, implies_true, true_and] at *
+      refine (h _ hUo.1 (⋃₀ ↑U) (isOpen_sUnion hUo.2) hsU ?_).imp_right ?_
       · refine subset_empty_iff.1 fun x ⟨hxs, hxu, v, hvU, hxv⟩ => ?_
         exact ne_of_mem_of_not_mem hvU uU (hU.1 v hvU ⟨x, hxs, hxu, hxv⟩).symm
       · exact IH (fun u hu => (hU.2 u hu).2) hUo.2
@@ -924,7 +924,7 @@ theorem isConnected_iff_unionₛ_disjoint_open {s : Set α} :
   · rw [← not_nonempty_iff_eq_empty] at hsuv
     have := hsuv; rw [inter_comm u] at this
     simpa [*, or_imp, forall_and] using h {u, v}
-#align is_connected_iff_sUnion_disjoint_open isConnected_iff_unionₛ_disjoint_open
+#align is_connected_iff_sUnion_disjoint_open isConnected_iff_sUnion_disjoint_open
 
 -- porting note: `IsPreconnected.subset_clopen` moved up from here
 
@@ -989,17 +989,17 @@ theorem IsClopen.connectedComponent_subset {x} (hs : IsClopen s) (hx : x ∈ s)
 
 /-- The connected component of a point is always a subset of the intersection of all its clopen
 neighbourhoods. -/
-theorem connectedComponent_subset_interᵢ_clopen {x : α} :
+theorem connectedComponent_subset_iInter_clopen {x : α} :
     connectedComponent x ⊆ ⋂ Z : { Z : Set α // IsClopen Z ∧ x ∈ Z }, Z :=
-  subset_interᵢ fun Z => Z.2.1.connectedComponent_subset Z.2.2
-#align connected_component_subset_Inter_clopen connectedComponent_subset_interᵢ_clopen
+  subset_iInter fun Z => Z.2.1.connectedComponent_subset Z.2.2
+#align connected_component_subset_Inter_clopen connectedComponent_subset_iInter_clopen
 
 /-- A clopen set is the union of its connected components. -/
-theorem IsClopen.bunionᵢ_connectedComponent_eq {Z : Set α} (h : IsClopen Z) :
+theorem IsClopen.biUnion_connectedComponent_eq {Z : Set α} (h : IsClopen Z) :
     (⋃ x ∈ Z, connectedComponent x) = Z :=
-  Subset.antisymm (unionᵢ₂_subset fun _ => h.connectedComponent_subset) fun _ h =>
-    mem_unionᵢ₂_of_mem h mem_connectedComponent
-#align is_clopen.bUnion_connected_component_eq IsClopen.bunionᵢ_connectedComponent_eq
+  Subset.antisymm (iUnion₂_subset fun _ => h.connectedComponent_subset) fun _ h =>
+    mem_iUnion₂_of_mem h mem_connectedComponent
+#align is_clopen.bUnion_connected_component_eq IsClopen.biUnion_connectedComponent_eq
 
 /-- The preimage of a connected component is preconnected if the function has connected fibers
 and a subset is closed iff the preimage is. -/
@@ -1029,8 +1029,8 @@ theorem preimage_connectedComponent_connected [TopologicalSpace β] {f : α →
     rw [uv_disj.inter_eq, inter_empty]
   have T₁_u : f ⁻¹' T₁ = f ⁻¹' connectedComponent t ∩ u := by
     apply eq_of_subset_of_subset
-    · rw [← bunionᵢ_preimage_singleton]
-      refine' unionᵢ₂_subset fun t' ht' => subset_inter _ ht'.2
+    · rw [← biUnion_preimage_singleton]
+      refine' iUnion₂_subset fun t' ht' => subset_inter _ ht'.2
       rw [hf.preimage_subset_preimage_iff, singleton_subset_iff]
       exact ht'.1
     rintro a ⟨hat, hau⟩
@@ -1041,8 +1041,8 @@ theorem preimage_connectedComponent_connected [TopologicalSpace β] {f : α →
   -- This proof is exactly the same as the above (modulo some symmetry)
   have T₂_v : f ⁻¹' T₂ = f ⁻¹' connectedComponent t ∩ v := by
     apply eq_of_subset_of_subset
-    · rw [← bunionᵢ_preimage_singleton]
-      refine' unionᵢ₂_subset fun t' ht' => subset_inter _ ht'.2
+    · rw [← biUnion_preimage_singleton]
+      refine' iUnion₂_subset fun t' ht' => subset_inter _ ht'.2
       rw [hf.preimage_subset_preimage_iff, singleton_subset_iff]
       exact ht'.1
     rintro a ⟨hat, hav⟩
@@ -1533,7 +1533,7 @@ theorem connectedComponents_preimage_singleton {x : α} :
 is the union of the connected components of the elements in it. -/
 theorem connectedComponents_preimage_image (U : Set α) :
     (↑) ⁻¹' ((↑) '' U : Set (ConnectedComponents α)) = ⋃ x ∈ U, connectedComponent x := by
-  simp only [connectedComponents_preimage_singleton, preimage_unionᵢ₂, image_eq_unionᵢ]
+  simp only [connectedComponents_preimage_singleton, preimage_iUnion₂, image_eq_iUnion]
 #align connected_components_preimage_image connectedComponents_preimage_image
 
 instance ConnectedComponents.totallyDisconnectedSpace :
chore: bye-bye, solo bys! (#3825)

This PR puts, with one exception, every single remaining by that lies all by itself on its own line to the previous line, thus matching the current behaviour of start-port.sh. The exception is when the by begins the second or later argument to a tuple or anonymous constructor; see https://github.com/leanprover-community/mathlib4/pull/3825#discussion_r1186702599.

Essentially this is s/\n *by$/ by/g, but with manual editing to satisfy the linter's max-100-char-line requirement. The Python style linter is also modified to catch these "isolated bys".

Diff
@@ -340,23 +340,23 @@ theorem isPreconnected_closed_iff {s : Set α} :
     IsPreconnected s ↔ ∀ t t', IsClosed t → IsClosed t' →
       s ⊆ t ∪ t' → (s ∩ t).Nonempty → (s ∩ t').Nonempty → (s ∩ (t ∩ t')).Nonempty :=
   ⟨by
-    rintro h t t' ht ht' htt' ⟨x, xs, xt⟩ ⟨y, ys, yt'⟩
-    rw [← not_disjoint_iff_nonempty_inter, ← subset_compl_iff_disjoint_right, compl_inter]
-    intro h'
-    have xt' : x ∉ t' := (h' xs).resolve_left (absurd xt)
-    have yt : y ∉ t := (h' ys).resolve_right (absurd yt')
-    have := h _ _ ht.isOpen_compl ht'.isOpen_compl h' ⟨y, ys, yt⟩ ⟨x, xs, xt'⟩
-    rw [← compl_union] at this
-    exact this.ne_empty htt'.disjoint_compl_right.inter_eq,
+      rintro h t t' ht ht' htt' ⟨x, xs, xt⟩ ⟨y, ys, yt'⟩
+      rw [← not_disjoint_iff_nonempty_inter, ← subset_compl_iff_disjoint_right, compl_inter]
+      intro h'
+      have xt' : x ∉ t' := (h' xs).resolve_left (absurd xt)
+      have yt : y ∉ t := (h' ys).resolve_right (absurd yt')
+      have := h _ _ ht.isOpen_compl ht'.isOpen_compl h' ⟨y, ys, yt⟩ ⟨x, xs, xt'⟩
+      rw [← compl_union] at this
+      exact this.ne_empty htt'.disjoint_compl_right.inter_eq,
     by
-    rintro h u v hu hv huv ⟨x, xs, xu⟩ ⟨y, ys, yv⟩
-    rw [← not_disjoint_iff_nonempty_inter, ← subset_compl_iff_disjoint_right, compl_inter]
-    intro h'
-    have xv : x ∉ v := (h' xs).elim (absurd xu) id
-    have yu : y ∉ u := (h' ys).elim id (absurd yv)
-    have := h _ _ hu.isClosed_compl hv.isClosed_compl h' ⟨y, ys, yu⟩ ⟨x, xs, xv⟩
-    rw [← compl_union] at this
-    exact this.ne_empty huv.disjoint_compl_right.inter_eq⟩
+      rintro h u v hu hv huv ⟨x, xs, xu⟩ ⟨y, ys, yv⟩
+      rw [← not_disjoint_iff_nonempty_inter, ← subset_compl_iff_disjoint_right, compl_inter]
+      intro h'
+      have xv : x ∉ v := (h' xs).elim (absurd xu) id
+      have yu : y ∉ u := (h' ys).elim id (absurd yv)
+      have := h _ _ hu.isClosed_compl hv.isClosed_compl h' ⟨y, ys, yu⟩ ⟨x, xs, xv⟩
+      rw [← compl_union] at this
+      exact this.ne_empty huv.disjoint_compl_right.inter_eq⟩
 #align is_preconnected_closed_iff isPreconnected_closed_iff
 
 theorem Inducing.isPreconnected_image [TopologicalSpace β] {s : Set α} {f : α → β}
@@ -487,8 +487,7 @@ theorem isPreconnected_univ_pi [∀ i, TopologicalSpace (π i)] {s : ∀ i, Set
     have := I.piecewise_mem_set_pi hfs hgs
     refine' (hsuv this).elim ihI fun h => _
     set S := update (I.piecewise f g) i '' s i
-    have hsub : S ⊆ pi univ s :=
-      by
+    have hsub : S ⊆ pi univ s := by
       refine' image_subset_iff.2 fun z hz => _
       rwa [update_preimage_univ_pi]
       exact fun j _ => this j trivial
@@ -1040,8 +1039,7 @@ theorem preimage_connectedComponent_connected [TopologicalSpace β] {f : α →
     refine (fiber_decomp (f a) (mem_preimage.1 hat)).resolve_right fun h => ?_
     exact uv_disj.subset_compl_right hau (h rfl)
   -- This proof is exactly the same as the above (modulo some symmetry)
-  have T₂_v : f ⁻¹' T₂ = f ⁻¹' connectedComponent t ∩ v :=
-    by
+  have T₂_v : f ⁻¹' T₂ = f ⁻¹' connectedComponent t ∩ v := by
     apply eq_of_subset_of_subset
     · rw [← bunionᵢ_preimage_singleton]
       refine' unionᵢ₂_subset fun t' ht' => subset_inter _ ht'.2
Diff
@@ -680,7 +680,7 @@ theorem connectedComponentIn_eq {x y : α} {F : Set α} (h : y ∈ connectedComp
   have hx : x ∈ F := connectedComponentIn_nonempty_iff.mp ⟨y, h⟩
   simp_rw [connectedComponentIn_eq_image hx] at h⊢
   obtain ⟨⟨y, hy⟩, h2y, rfl⟩ := h
-  simp_rw [Subtype.coe_mk, connectedComponentIn_eq_image hy, connectedComponent_eq h2y]
+  simp_rw [connectedComponentIn_eq_image hy, connectedComponent_eq h2y]
 #align connected_component_in_eq connectedComponentIn_eq
 
 theorem connectedComponentIn_univ (x : α) : connectedComponentIn univ x = connectedComponent x :=
chore: port missing instance priorities (#3613)

See discussion at https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/mathport.20drops.20priorities.20in.20.60attribute.20.5Binstance.5D.60. mathport has been dropping the priorities on instances when using the attribute command.

This PR adds back all the priorities, except for local attribute, and instances involving coercions, which I didn't want to mess with.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -744,7 +744,7 @@ class ConnectedSpace (α : Type u) [TopologicalSpace α] extends PreconnectedSpa
   toNonempty : Nonempty α
 #align connected_space ConnectedSpace
 
-attribute [instance] ConnectedSpace.toNonempty
+attribute [instance 50] ConnectedSpace.toNonempty  -- see Note [lower instance priority]
 
 -- see Note [lower instance priority]
 theorem isConnected_univ [ConnectedSpace α] : IsConnected (univ : Set α) :=
chore: strip trailing spaces in lean files (#2828)

vscode is already configured by .vscode/settings.json to trim these on save. It's not clear how they've managed to stick around.

By doing this all in one PR now, it avoids getting random whitespace diffs in PRs later.

This was done with a regex search in vscode,

image

Diff
@@ -673,7 +673,7 @@ theorem connectedComponent_eq {x y : α} (h : y ∈ connectedComponent x) :
 theorem connectedComponent_eq_iff_mem {x y : α} :
     connectedComponent x = connectedComponent y ↔ x ∈ connectedComponent y :=
   ⟨fun h => h ▸ mem_connectedComponent, fun h => (connectedComponent_eq h).symm⟩
-#align connected_component_eq_iff_mem connectedComponent_eq_iff_mem 
+#align connected_component_eq_iff_mem connectedComponent_eq_iff_mem
 
 theorem connectedComponentIn_eq {x y : α} {F : Set α} (h : y ∈ connectedComponentIn F x) :
     connectedComponentIn F x = connectedComponentIn F y := by
feat: port Topology.Algebra.Field (#2617)
Diff
@@ -1610,3 +1610,12 @@ theorem IsPreconnected.constant_of_mapsTo [TopologicalSpace β] {S : Set α} (hS
   suffices F ⟨x, hx⟩ = F ⟨y, hy⟩ by rwa [← Subtype.coe_inj] at this
   exact (isPreconnected_iff_preconnectedSpace.mp hS).constant (hc.restrict_mapsTo _)
 #align is_preconnected.constant_of_maps_to IsPreconnected.constant_of_mapsTo
+
+/-- A version of `IsPreconnected.constant_of_mapsTo` that assumes that the codomain is nonempty and
+proves that `f` is equal to `const α y` on `S` for some `y ∈ T`. -/
+theorem IsPreconnected.eqOn_const_of_mapsTo [TopologicalSpace β] {S : Set α} (hS : IsPreconnected S)
+    {T : Set β} [DiscreteTopology T] {f : α → β} (hc : ContinuousOn f S) (hTm : MapsTo f S T)
+    (hne : T.Nonempty) : ∃ y ∈ T, EqOn f (const α y) S := by
+  rcases S.eq_empty_or_nonempty with (rfl | ⟨x, hx⟩)
+  · exact hne.imp fun _ hy => ⟨hy, eqOn_empty _ _⟩
+  · exact ⟨f x, hTm hx, fun x' hx' => hS.constant_of_mapsTo hc hTm hx' hx⟩
chore: Restore most of the mono attribute (#2491)

Restore most of the mono attribute now that #1740 is merged.

I think I got all of the monos.

Diff
@@ -719,7 +719,7 @@ theorem irreducibleComponent_subset_connectedComponent {x : α} :
   isIrreducible_irreducibleComponent.isConnected.subset_connectedComponent mem_irreducibleComponent
 #align irreducible_component_subset_connected_component irreducibleComponent_subset_connectedComponent
 
--- porting note: todo: restore @[mono]
+@[mono]
 theorem connectedComponentIn_mono (x : α) {F G : Set α} (h : F ⊆ G) :
     connectedComponentIn F x ⊆ connectedComponentIn G x := by
   by_cases hx : x ∈ F
feat: port continuity tactic (#2145)

We implement the continuity tactic using aesop, this makes it more robust and reduces the code to trivial macros.

Diff
@@ -1467,7 +1467,7 @@ theorem quotientMap_coe : QuotientMap (mk : α → ConnectedComponents α) :=
   quotientMap_quot_mk
 #align connected_components.quotient_map_coe ConnectedComponents.quotientMap_coe
 
--- porting note: todo: restore @[continuity]
+@[continuity]
 theorem continuous_coe : Continuous (mk : α → ConnectedComponents α) :=
   quotientMap_coe.continuous
 #align connected_components.continuous_coe ConnectedComponents.continuous_coe
@@ -1495,7 +1495,7 @@ def Continuous.connectedComponentsLift (h : Continuous f) : ConnectedComponents
   Quotient.liftOn' x f h.image_eq_of_connectedComponent_eq
 #align continuous.connected_components_lift Continuous.connectedComponentsLift
 
--- porting note: todo: restore @[continuity]
+@[continuity]
 theorem Continuous.connectedComponentsLift_continuous (h : Continuous f) :
     Continuous h.connectedComponentsLift :=
   h.quotient_liftOn' <| by convert h.image_eq_of_connectedComponent_eq
feat: port Topology.DiscreteQuotient (#2157)

Also sync SHA in Topology.Connected. The changes in Mathlib 3 were backported from this branch, see

Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Mario Carneiro, Yury Kudryashov
 
 ! This file was ported from Lean 3 source module topology.connected
-! leanprover-community/mathlib commit 92ca63f0fb391a9ca5f22d2409a6080e786d99f7
+! leanprover-community/mathlib commit d101e93197bb5f6ea89bd7ba386b7f7dff1f3903
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -670,6 +670,11 @@ theorem connectedComponent_eq {x y : α} (h : y ∈ connectedComponent x) :
         (isConnected_connectedComponent.subset_connectedComponent h)))
 #align connected_component_eq connectedComponent_eq
 
+theorem connectedComponent_eq_iff_mem {x y : α} :
+    connectedComponent x = connectedComponent y ↔ x ∈ connectedComponent y :=
+  ⟨fun h => h ▸ mem_connectedComponent, fun h => (connectedComponent_eq h).symm⟩
+#align connected_component_eq_iff_mem connectedComponent_eq_iff_mem 
+
 theorem connectedComponentIn_eq {x y : α} {F : Set α} (h : y ∈ connectedComponentIn F x) :
     connectedComponentIn F x = connectedComponentIn F y := by
   have hx : x ∈ F := connectedComponentIn_nonempty_iff.mp ⟨y, h⟩
@@ -1124,6 +1129,14 @@ theorem locallyConnectedSpace_iff_open_connected_subsets :
       ⟨V, hV, hVU⟩, fun ⟨V, ⟨hV, hxV, _⟩, hVU⟩ => mem_nhds_iff.mpr ⟨V, hVU, hV, hxV⟩⟩⟩
 #align locally_connected_space_iff_open_connected_subsets locallyConnectedSpace_iff_open_connected_subsets
 
+/-- A space with discrete topology is a locally connected space. -/
+instance (priority := 100) DiscreteTopology.toLocallyConnectedSpace (α) [TopologicalSpace α]
+    [DiscreteTopology α] : LocallyConnectedSpace α :=
+  locallyConnectedSpace_iff_open_connected_subsets.2 fun x _U hU =>
+    ⟨{x}, singleton_subset_iff.2 <| mem_of_mem_nhds hU, isOpen_discrete _, rfl,
+      isConnected_singleton⟩
+#align discrete_topology.to_locally_connected_space DiscreteTopology.toLocallyConnectedSpace
+
 theorem connectedComponentIn_mem_nhds [LocallyConnectedSpace α] {F : Set α} {x : α} (h : F ∈ 𝓝 x) :
     connectedComponentIn F x ∈ 𝓝 x := by
   rw [(LocallyConnectedSpace.open_connected_basis x).mem_iff] at h
@@ -1300,6 +1313,11 @@ theorem totallyDisconnectedSpace_iff_connectedComponent_singleton :
   exact mem_connectedComponent
 #align totally_disconnected_space_iff_connected_component_singleton totallyDisconnectedSpace_iff_connectedComponent_singleton
 
+@[simp] theorem connectedComponent_eq_singleton [TotallyDisconnectedSpace α] (x : α) :
+    connectedComponent x = {x} :=
+  totallyDisconnectedSpace_iff_connectedComponent_singleton.1 ‹_› x
+#align connected_component_eq_singleton connectedComponent_eq_singleton
+
 /-- The image of a connected component in a totally disconnected space is a singleton. -/
 @[simp]
 theorem Continuous.image_connectedComponent_eq_singleton {β : Type _} [TopologicalSpace β]
@@ -1432,7 +1450,7 @@ theorem coe_ne_coe {x y : α} :
 #align connected_components.coe_ne_coe ConnectedComponents.coe_ne_coe
 
 theorem coe_eq_coe' {x y : α} : (x : ConnectedComponents α) = y ↔ x ∈ connectedComponent y :=
-  coe_eq_coe.trans ⟨fun h => h ▸ mem_connectedComponent, fun h => (connectedComponent_eq h).symm⟩
+  coe_eq_coe.trans connectedComponent_eq_iff_mem
 #align connected_components.coe_eq_coe' ConnectedComponents.coe_eq_coe'
 
 instance [Inhabited α] : Inhabited (ConnectedComponents α) :=
chore: resync ported files (#2135)

This PR resyncs the first 28 entries of https://leanprover-community.github.io/mathlib-port-status/out-of-sync.html after sorting by diff size.

  • resync Mathlib/Data/Bool/Count
  • resync Mathlib/Order/Max
  • resync Mathlib/Algebra/EuclideanDomain/Instances
  • resync Mathlib/Data/List/Duplicate
  • resync Mathlib/Data/Multiset/Nodup
  • resync Mathlib/Data/Set/Pointwise/ListOfFn
  • resync Mathlib/Dynamics/FixedPoints/Basic
  • resync Mathlib/Order/OmegaCompletePartialOrder
  • resync Mathlib/Order/PropInstances
  • resync Mathlib/Topology/LocallyFinite
  • resync Mathlib/Data/Bool/Set
  • resync Mathlib/Data/Fintype/Card
  • resync Mathlib/Data/Multiset/Bind
  • resync Mathlib/Data/Rat/Floor
  • resync Mathlib/Algebra/Order/Floor
  • resync Mathlib/Data/Int/Basic
  • resync Mathlib/Data/Int/Dvd/Basic
  • resync Mathlib/Data/List/Sort
  • resync Mathlib/Data/Nat/GCD/Basic
  • resync Mathlib/Data/Set/Enumerate
  • resync Mathlib/Data/Set/Intervals/OrdConnectedComponent
  • resync Mathlib/GroupTheory/Subsemigroup/Basic
  • resync Mathlib/Topology/Connected
  • resync Mathlib/Topology/NhdsSet
  • resync Mathlib/Algebra/BigOperators/Multiset/Lemmas
  • resync Mathlib/Algebra/CharZero/Infinite
  • resync Mathlib/Data/Multiset/Range
  • resync Mathlib/Data/Set/Pointwise/Finite
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Mario Carneiro, Yury Kudryashov
 
 ! This file was ported from Lean 3 source module topology.connected
-! leanprover-community/mathlib commit 59694bd07f0a39c5beccba34bd9f413a160782bf
+! leanprover-community/mathlib commit 92ca63f0fb391a9ca5f22d2409a6080e786d99f7
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
feat: port Topology.Connected (#1934)

Dependencies 8 + 300

301 files ported (97.4%)
130670 lines ported (96.3%)
Show graph

The unported dependencies are