group_theory.subsemigroup.membershipMathlib.GroupTheory.Subsemigroup.Membership

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)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -139,7 +139,7 @@ then it holds for all elements of the supremum of `S`. -/
 theorem iSup_induction (S : ι → Subsemigroup M) {C : M → Prop} {x : M} (hx : x ∈ ⨆ i, S i)
     (hp : ∀ (i), ∀ x ∈ S i, C x) (hmul : ∀ x y, C x → C y → C (x * y)) : C x :=
   by
-  rw [supr_eq_closure] at hx 
+  rw [supr_eq_closure] at hx
   refine' closure_induction hx (fun x hx => _) hmul
   obtain ⟨i, hi⟩ := set.mem_Union.mp hx
   exact hp _ _ hi
Diff
@@ -52,7 +52,7 @@ theorem mem_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤
   by
   refine' ⟨_, fun ⟨i, hi⟩ => (SetLike.le_def.1 <| le_iSup S i) hi⟩
   suffices x ∈ closure (⋃ i, (S i : Set M)) → ∃ i, x ∈ S i by
-    simpa only [closure_Union_of_finite, closure_eq (S _)] using this
+    simpa only [closure_iUnion_of_finite, closure_eq (S _)] using this
   refine' fun hx => closure_induction hx (fun y hy => mem_Union.mp hy) _
   · rintro x y ⟨i, hi⟩ ⟨j, hj⟩
     rcases hS i j with ⟨k, hki, hkj⟩
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2022 Jireh Loreaux. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Jireh Loreaux
 -/
-import Mathbin.GroupTheory.Subsemigroup.Basic
+import GroupTheory.Subsemigroup.Basic
 
 #align_import group_theory.subsemigroup.membership from "leanprover-community/mathlib"@"baba818b9acea366489e8ba32d2cc0fcaf50a1f7"
 
Diff
@@ -52,7 +52,7 @@ theorem mem_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤
   by
   refine' ⟨_, fun ⟨i, hi⟩ => (SetLike.le_def.1 <| le_iSup S i) hi⟩
   suffices x ∈ closure (⋃ i, (S i : Set M)) → ∃ i, x ∈ S i by
-    simpa only [closure_iUnion, closure_eq (S _)] using this
+    simpa only [closure_Union_of_finite, closure_eq (S _)] using this
   refine' fun hx => closure_induction hx (fun y hy => mem_Union.mp hy) _
   · rintro x y ⟨i, hi⟩ ⟨j, hj⟩
     rcases hS i j with ⟨k, hki, hkj⟩
Diff
@@ -56,7 +56,7 @@ theorem mem_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤
   refine' fun hx => closure_induction hx (fun y hy => mem_Union.mp hy) _
   · rintro x y ⟨i, hi⟩ ⟨j, hj⟩
     rcases hS i j with ⟨k, hki, hkj⟩
-    exact ⟨k, (S k).mul_mem (hki hi) (hkj hj)⟩
+    exact ⟨k, (S k).hMul_mem (hki hi) (hkj hj)⟩
 #align subsemigroup.mem_supr_of_directed Subsemigroup.mem_iSup_of_directed
 #align add_subsemigroup.mem_supr_of_directed AddSubsemigroup.mem_iSup_of_directed
 -/
@@ -107,7 +107,7 @@ theorem mem_sup_right {S T : Subsemigroup M} : ∀ {x : M}, x ∈ T → x ∈ S
 #print Subsemigroup.mul_mem_sup /-
 @[to_additive]
 theorem mul_mem_sup {S T : Subsemigroup M} {x y : M} (hx : x ∈ S) (hy : y ∈ T) : x * y ∈ S ⊔ T :=
-  mul_mem (mem_sup_left hx) (mem_sup_right hy)
+  hMul_mem (mem_sup_left hx) (mem_sup_right hy)
 #align subsemigroup.mul_mem_sup Subsemigroup.mul_mem_sup
 #align add_subsemigroup.add_mem_sup AddSubsemigroup.add_mem_sup
 -/
@@ -152,7 +152,7 @@ theorem iSup_induction (S : ι → Subsemigroup M) {C : M → Prop} {x : M} (hx
 @[elab_as_elim, to_additive "A dependent version of `add_subsemigroup.supr_induction`. "]
 theorem iSup_induction' (S : ι → Subsemigroup M) {C : ∀ x, (x ∈ ⨆ i, S i) → Prop}
     (hp : ∀ (i), ∀ x ∈ S i, C x (mem_iSup_of_mem i ‹_›))
-    (hmul : ∀ x y hx hy, C x hx → C y hy → C (x * y) (mul_mem ‹_› ‹_›)) {x : M}
+    (hmul : ∀ x y hx hy, C x hx → C y hy → C (x * y) (hMul_mem ‹_› ‹_›)) {x : M}
     (hx : x ∈ ⨆ i, S i) : C x hx :=
   by
   refine' Exists.elim _ fun (hx : x ∈ ⨆ i, S i) (hc : C x hx) => hc
Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2022 Jireh Loreaux. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Jireh Loreaux
-
-! This file was ported from Lean 3 source module group_theory.subsemigroup.membership
-! leanprover-community/mathlib commit baba818b9acea366489e8ba32d2cc0fcaf50a1f7
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.GroupTheory.Subsemigroup.Basic
 
+#align_import group_theory.subsemigroup.membership from "leanprover-community/mathlib"@"baba818b9acea366489e8ba32d2cc0fcaf50a1f7"
+
 /-!
 # Subsemigroups: membership criteria
 
Diff
@@ -46,6 +46,7 @@ open Set
 
 namespace Subsemigroup
 
+#print Subsemigroup.mem_iSup_of_directed /-
 -- TODO: this section can be generalized to `[mul_mem_class B M] [complete_lattice B]`
 -- such that `complete_lattice.le` coincides with `set_like.le`
 @[to_additive]
@@ -61,59 +62,77 @@ theorem mem_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤
     exact ⟨k, (S k).mul_mem (hki hi) (hkj hj)⟩
 #align subsemigroup.mem_supr_of_directed Subsemigroup.mem_iSup_of_directed
 #align add_subsemigroup.mem_supr_of_directed AddSubsemigroup.mem_iSup_of_directed
+-/
 
+#print Subsemigroup.coe_iSup_of_directed /-
 @[to_additive]
 theorem coe_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤ ·) S) :
     ((⨆ i, S i : Subsemigroup M) : Set M) = ⋃ i, ↑(S i) :=
   Set.ext fun x => by simp [mem_supr_of_directed hS]
 #align subsemigroup.coe_supr_of_directed Subsemigroup.coe_iSup_of_directed
 #align add_subsemigroup.coe_supr_of_directed AddSubsemigroup.coe_iSup_of_directed
+-/
 
+#print Subsemigroup.mem_sSup_of_directed_on /-
 @[to_additive]
 theorem mem_sSup_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (· ≤ ·) S) {x : M} :
     x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s := by
   simp only [sSup_eq_iSup', mem_supr_of_directed hS.directed_coe, SetCoe.exists, Subtype.coe_mk]
 #align subsemigroup.mem_Sup_of_directed_on Subsemigroup.mem_sSup_of_directed_on
 #align add_subsemigroup.mem_Sup_of_directed_on AddSubsemigroup.mem_sSup_of_directed_on
+-/
 
+#print Subsemigroup.coe_sSup_of_directed_on /-
 @[to_additive]
 theorem coe_sSup_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (· ≤ ·) S) :
     (↑(sSup S) : Set M) = ⋃ s ∈ S, ↑s :=
   Set.ext fun x => by simp [mem_Sup_of_directed_on hS]
 #align subsemigroup.coe_Sup_of_directed_on Subsemigroup.coe_sSup_of_directed_on
 #align add_subsemigroup.coe_Sup_of_directed_on AddSubsemigroup.coe_sSup_of_directed_on
+-/
 
+#print Subsemigroup.mem_sup_left /-
 @[to_additive]
 theorem mem_sup_left {S T : Subsemigroup M} : ∀ {x : M}, x ∈ S → x ∈ S ⊔ T :=
   show S ≤ S ⊔ T from le_sup_left
 #align subsemigroup.mem_sup_left Subsemigroup.mem_sup_left
 #align add_subsemigroup.mem_sup_left AddSubsemigroup.mem_sup_left
+-/
 
+#print Subsemigroup.mem_sup_right /-
 @[to_additive]
 theorem mem_sup_right {S T : Subsemigroup M} : ∀ {x : M}, x ∈ T → x ∈ S ⊔ T :=
   show T ≤ S ⊔ T from le_sup_right
 #align subsemigroup.mem_sup_right Subsemigroup.mem_sup_right
 #align add_subsemigroup.mem_sup_right AddSubsemigroup.mem_sup_right
+-/
 
+#print Subsemigroup.mul_mem_sup /-
 @[to_additive]
 theorem mul_mem_sup {S T : Subsemigroup M} {x y : M} (hx : x ∈ S) (hy : y ∈ T) : x * y ∈ S ⊔ T :=
   mul_mem (mem_sup_left hx) (mem_sup_right hy)
 #align subsemigroup.mul_mem_sup Subsemigroup.mul_mem_sup
 #align add_subsemigroup.add_mem_sup AddSubsemigroup.add_mem_sup
+-/
 
+#print Subsemigroup.mem_iSup_of_mem /-
 @[to_additive]
 theorem mem_iSup_of_mem {S : ι → Subsemigroup M} (i : ι) : ∀ {x : M}, x ∈ S i → x ∈ iSup S :=
   show S i ≤ iSup S from le_iSup _ _
 #align subsemigroup.mem_supr_of_mem Subsemigroup.mem_iSup_of_mem
 #align add_subsemigroup.mem_supr_of_mem AddSubsemigroup.mem_iSup_of_mem
+-/
 
+#print Subsemigroup.mem_sSup_of_mem /-
 @[to_additive]
 theorem mem_sSup_of_mem {S : Set (Subsemigroup M)} {s : Subsemigroup M} (hs : s ∈ S) :
     ∀ {x : M}, x ∈ s → x ∈ sSup S :=
   show s ≤ sSup S from le_sSup hs
 #align subsemigroup.mem_Sup_of_mem Subsemigroup.mem_sSup_of_mem
 #align add_subsemigroup.mem_Sup_of_mem AddSubsemigroup.mem_sSup_of_mem
+-/
 
+#print Subsemigroup.iSup_induction /-
 /-- An induction principle for elements of `⨆ i, S i`.
 If `C` holds all elements of `S i` for all `i`, and is preserved under multiplication,
 then it holds for all elements of the supremum of `S`. -/
@@ -129,7 +148,9 @@ theorem iSup_induction (S : ι → Subsemigroup M) {C : M → Prop} {x : M} (hx
   exact hp _ _ hi
 #align subsemigroup.supr_induction Subsemigroup.iSup_induction
 #align add_subsemigroup.supr_induction AddSubsemigroup.iSup_induction
+-/
 
+#print Subsemigroup.iSup_induction' /-
 /-- A dependent version of `subsemigroup.supr_induction`. -/
 @[elab_as_elim, to_additive "A dependent version of `add_subsemigroup.supr_induction`. "]
 theorem iSup_induction' (S : ι → Subsemigroup M) {C : ∀ x, (x ∈ ⨆ i, S i) → Prop}
@@ -144,6 +165,7 @@ theorem iSup_induction' (S : ι → Subsemigroup M) {C : ∀ x, (x ∈ ⨆ i, S
     exact ⟨_, hmul _ _ _ _ Cx Cy⟩
 #align subsemigroup.supr_induction' Subsemigroup.iSup_induction'
 #align add_subsemigroup.supr_induction' AddSubsemigroup.iSup_induction'
+-/
 
 end Subsemigroup
 
Diff
@@ -123,7 +123,7 @@ then it holds for all elements of the supremum of `S`. -/
 theorem iSup_induction (S : ι → Subsemigroup M) {C : M → Prop} {x : M} (hx : x ∈ ⨆ i, S i)
     (hp : ∀ (i), ∀ x ∈ S i, C x) (hmul : ∀ x y, C x → C y → C (x * y)) : C x :=
   by
-  rw [supr_eq_closure] at hx
+  rw [supr_eq_closure] at hx 
   refine' closure_induction hx (fun x hx => _) hmul
   obtain ⟨i, hi⟩ := set.mem_Union.mp hx
   exact hp _ _ hi
Diff
@@ -46,12 +46,6 @@ open Set
 
 namespace Subsemigroup
 
-/- warning: subsemigroup.mem_supr_of_directed -> Subsemigroup.mem_iSup_of_directed is a dubious translation:
-lean 3 declaration is
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)}, (Directed.{u2, u1} (Subsemigroup.{u2} M _inst_1) ι (LE.le.{u2} (Subsemigroup.{u2} M _inst_1) (Preorder.toHasLe.{u2} (Subsemigroup.{u2} M _inst_1) (PartialOrder.toPreorder.{u2} (Subsemigroup.{u2} M _inst_1) (SetLike.partialOrder.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1))))) S) -> (forall {x : M}, Iff (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))) (Exists.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (S i))))
-but is expected to have type
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)}, (Directed.{u2, u1} (Subsemigroup.{u2} M _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.40 : Subsemigroup.{u2} M _inst_1) (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.42 : Subsemigroup.{u2} M _inst_1) => LE.le.{u2} (Subsemigroup.{u2} M _inst_1) (Preorder.toLE.{u2} (Subsemigroup.{u2} M _inst_1) (PartialOrder.toPreorder.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1))))) x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.40 x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.42) S) -> (forall {x : M}, Iff (Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))) (Exists.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (S i))))
-Case conversion may be inaccurate. Consider using '#align subsemigroup.mem_supr_of_directed Subsemigroup.mem_iSup_of_directedₓ'. -/
 -- TODO: this section can be generalized to `[mul_mem_class B M] [complete_lattice B]`
 -- such that `complete_lattice.le` coincides with `set_like.le`
 @[to_additive]
@@ -68,12 +62,6 @@ theorem mem_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤
 #align subsemigroup.mem_supr_of_directed Subsemigroup.mem_iSup_of_directed
 #align add_subsemigroup.mem_supr_of_directed AddSubsemigroup.mem_iSup_of_directed
 
-/- warning: subsemigroup.coe_supr_of_directed -> Subsemigroup.coe_iSup_of_directed is a dubious translation:
-lean 3 declaration is
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)}, (Directed.{u2, u1} (Subsemigroup.{u2} M _inst_1) ι (LE.le.{u2} (Subsemigroup.{u2} M _inst_1) (Preorder.toHasLe.{u2} (Subsemigroup.{u2} M _inst_1) (PartialOrder.toPreorder.{u2} (Subsemigroup.{u2} M _inst_1) (SetLike.partialOrder.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1))))) S) -> (Eq.{succ u2} (Set.{u2} M) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)))) (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))) (Set.iUnion.{u2, u1} M ι (fun (i : ι) => (fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)))) (S i))))
-but is expected to have type
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)}, (Directed.{u2, u1} (Subsemigroup.{u2} M _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.267 : Subsemigroup.{u2} M _inst_1) (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.269 : Subsemigroup.{u2} M _inst_1) => LE.le.{u2} (Subsemigroup.{u2} M _inst_1) (Preorder.toLE.{u2} (Subsemigroup.{u2} M _inst_1) (PartialOrder.toPreorder.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1))))) x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.267 x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.269) S) -> (Eq.{succ u2} (Set.{u2} M) (SetLike.coe.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1) (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))) (Set.iUnion.{u2, u1} M ι (fun (i : ι) => SetLike.coe.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1) (S i))))
-Case conversion may be inaccurate. Consider using '#align subsemigroup.coe_supr_of_directed Subsemigroup.coe_iSup_of_directedₓ'. -/
 @[to_additive]
 theorem coe_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤ ·) S) :
     ((⨆ i, S i : Subsemigroup M) : Set M) = ⋃ i, ↑(S i) :=
@@ -81,12 +69,6 @@ theorem coe_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤
 #align subsemigroup.coe_supr_of_directed Subsemigroup.coe_iSup_of_directed
 #align add_subsemigroup.coe_supr_of_directed AddSubsemigroup.coe_iSup_of_directed
 
-/- warning: subsemigroup.mem_Sup_of_directed_on -> Subsemigroup.mem_sSup_of_directed_on is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)}, (DirectedOn.{u1} (Subsemigroup.{u1} M _inst_1) (LE.le.{u1} (Subsemigroup.{u1} M _inst_1) (Preorder.toHasLe.{u1} (Subsemigroup.{u1} M _inst_1) (PartialOrder.toPreorder.{u1} (Subsemigroup.{u1} M _inst_1) (SetLike.partialOrder.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1))))) S) -> (forall {x : M}, Iff (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x (SupSet.sSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1))) S)) (Exists.{succ u1} (Subsemigroup.{u1} M _inst_1) (fun (s : Subsemigroup.{u1} M _inst_1) => Exists.{0} (Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) (fun (H : Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) => Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x s))))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)}, (DirectedOn.{u1} (Subsemigroup.{u1} M _inst_1) (fun (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.357 : Subsemigroup.{u1} M _inst_1) (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.359 : Subsemigroup.{u1} M _inst_1) => LE.le.{u1} (Subsemigroup.{u1} M _inst_1) (Preorder.toLE.{u1} (Subsemigroup.{u1} M _inst_1) (PartialOrder.toPreorder.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1))))) x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.357 x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.359) S) -> (forall {x : M}, Iff (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x (SupSet.sSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toSupSet.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)) S)) (Exists.{succ u1} (Subsemigroup.{u1} M _inst_1) (fun (s : Subsemigroup.{u1} M _inst_1) => And (Membership.mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.instMembershipSet.{u1} (Subsemigroup.{u1} M _inst_1)) s S) (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x s))))
-Case conversion may be inaccurate. Consider using '#align subsemigroup.mem_Sup_of_directed_on Subsemigroup.mem_sSup_of_directed_onₓ'. -/
 @[to_additive]
 theorem mem_sSup_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (· ≤ ·) S) {x : M} :
     x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s := by
@@ -94,12 +76,6 @@ theorem mem_sSup_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (·
 #align subsemigroup.mem_Sup_of_directed_on Subsemigroup.mem_sSup_of_directed_on
 #align add_subsemigroup.mem_Sup_of_directed_on AddSubsemigroup.mem_sSup_of_directed_on
 
-/- warning: subsemigroup.coe_Sup_of_directed_on -> Subsemigroup.coe_sSup_of_directed_on is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)}, (DirectedOn.{u1} (Subsemigroup.{u1} M _inst_1) (LE.le.{u1} (Subsemigroup.{u1} M _inst_1) (Preorder.toHasLe.{u1} (Subsemigroup.{u1} M _inst_1) (PartialOrder.toPreorder.{u1} (Subsemigroup.{u1} M _inst_1) (SetLike.partialOrder.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1))))) S) -> (Eq.{succ u1} (Set.{u1} M) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)))) (SupSet.sSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1))) S)) (Set.iUnion.{u1, succ u1} M (Subsemigroup.{u1} M _inst_1) (fun (s : Subsemigroup.{u1} M _inst_1) => Set.iUnion.{u1, 0} M (Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) (fun (H : Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)))) s))))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)}, (DirectedOn.{u1} (Subsemigroup.{u1} M _inst_1) (fun (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.428 : Subsemigroup.{u1} M _inst_1) (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.430 : Subsemigroup.{u1} M _inst_1) => LE.le.{u1} (Subsemigroup.{u1} M _inst_1) (Preorder.toLE.{u1} (Subsemigroup.{u1} M _inst_1) (PartialOrder.toPreorder.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1))))) x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.428 x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.430) S) -> (Eq.{succ u1} (Set.{u1} M) (SetLike.coe.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1) (SupSet.sSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toSupSet.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)) S)) (Set.iUnion.{u1, succ u1} M (Subsemigroup.{u1} M _inst_1) (fun (s : Subsemigroup.{u1} M _inst_1) => Set.iUnion.{u1, 0} M (Membership.mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.instMembershipSet.{u1} (Subsemigroup.{u1} M _inst_1)) s S) (fun (H : Membership.mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.instMembershipSet.{u1} (Subsemigroup.{u1} M _inst_1)) s S) => SetLike.coe.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1) s))))
-Case conversion may be inaccurate. Consider using '#align subsemigroup.coe_Sup_of_directed_on Subsemigroup.coe_sSup_of_directed_onₓ'. -/
 @[to_additive]
 theorem coe_sSup_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (· ≤ ·) S) :
     (↑(sSup S) : Set M) = ⋃ s ∈ S, ↑s :=
@@ -107,60 +83,30 @@ theorem coe_sSup_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (·
 #align subsemigroup.coe_Sup_of_directed_on Subsemigroup.coe_sSup_of_directed_on
 #align add_subsemigroup.coe_Sup_of_directed_on AddSubsemigroup.coe_sSup_of_directed_on
 
-/- warning: subsemigroup.mem_sup_left -> Subsemigroup.mem_sup_left is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Subsemigroup.{u1} M _inst_1} {T : Subsemigroup.{u1} M _inst_1} {x : M}, (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x S) -> (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x (Sup.sup.{u1} (Subsemigroup.{u1} M _inst_1) (SemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (Lattice.toSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toLattice.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1)))) S T))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Subsemigroup.{u1} M _inst_1} {T : Subsemigroup.{u1} M _inst_1} {x : M}, (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x S) -> (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x (Sup.sup.{u1} (Subsemigroup.{u1} M _inst_1) (SemilatticeSup.toSup.{u1} (Subsemigroup.{u1} M _inst_1) (Lattice.toSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toLattice.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)))) S T))
-Case conversion may be inaccurate. Consider using '#align subsemigroup.mem_sup_left Subsemigroup.mem_sup_leftₓ'. -/
 @[to_additive]
 theorem mem_sup_left {S T : Subsemigroup M} : ∀ {x : M}, x ∈ S → x ∈ S ⊔ T :=
   show S ≤ S ⊔ T from le_sup_left
 #align subsemigroup.mem_sup_left Subsemigroup.mem_sup_left
 #align add_subsemigroup.mem_sup_left AddSubsemigroup.mem_sup_left
 
-/- warning: subsemigroup.mem_sup_right -> Subsemigroup.mem_sup_right is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Subsemigroup.{u1} M _inst_1} {T : Subsemigroup.{u1} M _inst_1} {x : M}, (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x T) -> (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x (Sup.sup.{u1} (Subsemigroup.{u1} M _inst_1) (SemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (Lattice.toSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toLattice.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1)))) S T))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Subsemigroup.{u1} M _inst_1} {T : Subsemigroup.{u1} M _inst_1} {x : M}, (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x T) -> (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x (Sup.sup.{u1} (Subsemigroup.{u1} M _inst_1) (SemilatticeSup.toSup.{u1} (Subsemigroup.{u1} M _inst_1) (Lattice.toSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toLattice.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)))) S T))
-Case conversion may be inaccurate. Consider using '#align subsemigroup.mem_sup_right Subsemigroup.mem_sup_rightₓ'. -/
 @[to_additive]
 theorem mem_sup_right {S T : Subsemigroup M} : ∀ {x : M}, x ∈ T → x ∈ S ⊔ T :=
   show T ≤ S ⊔ T from le_sup_right
 #align subsemigroup.mem_sup_right Subsemigroup.mem_sup_right
 #align add_subsemigroup.mem_sup_right AddSubsemigroup.mem_sup_right
 
-/- warning: subsemigroup.mul_mem_sup -> Subsemigroup.mul_mem_sup is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Subsemigroup.{u1} M _inst_1} {T : Subsemigroup.{u1} M _inst_1} {x : M} {y : M}, (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x S) -> (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) y T) -> (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M _inst_1) x y) (Sup.sup.{u1} (Subsemigroup.{u1} M _inst_1) (SemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (Lattice.toSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toLattice.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1)))) S T))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Subsemigroup.{u1} M _inst_1} {T : Subsemigroup.{u1} M _inst_1} {x : M} {y : M}, (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x S) -> (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) y T) -> (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M _inst_1) x y) (Sup.sup.{u1} (Subsemigroup.{u1} M _inst_1) (SemilatticeSup.toSup.{u1} (Subsemigroup.{u1} M _inst_1) (Lattice.toSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toLattice.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)))) S T))
-Case conversion may be inaccurate. Consider using '#align subsemigroup.mul_mem_sup Subsemigroup.mul_mem_supₓ'. -/
 @[to_additive]
 theorem mul_mem_sup {S T : Subsemigroup M} {x y : M} (hx : x ∈ S) (hy : y ∈ T) : x * y ∈ S ⊔ T :=
   mul_mem (mem_sup_left hx) (mem_sup_right hy)
 #align subsemigroup.mul_mem_sup Subsemigroup.mul_mem_sup
 #align add_subsemigroup.add_mem_sup AddSubsemigroup.add_mem_sup
 
-/- warning: subsemigroup.mem_supr_of_mem -> Subsemigroup.mem_iSup_of_mem is a dubious translation:
-lean 3 declaration is
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)} (i : ι) {x : M}, (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (S i)) -> (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι S))
-but is expected to have type
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)} (i : ι) {x : M}, (Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (S i)) -> (Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι S))
-Case conversion may be inaccurate. Consider using '#align subsemigroup.mem_supr_of_mem Subsemigroup.mem_iSup_of_memₓ'. -/
 @[to_additive]
 theorem mem_iSup_of_mem {S : ι → Subsemigroup M} (i : ι) : ∀ {x : M}, x ∈ S i → x ∈ iSup S :=
   show S i ≤ iSup S from le_iSup _ _
 #align subsemigroup.mem_supr_of_mem Subsemigroup.mem_iSup_of_mem
 #align add_subsemigroup.mem_supr_of_mem AddSubsemigroup.mem_iSup_of_mem
 
-/- warning: subsemigroup.mem_Sup_of_mem -> Subsemigroup.mem_sSup_of_mem is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)} {s : Subsemigroup.{u1} M _inst_1}, (Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) -> (forall {x : M}, (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x s) -> (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x (SupSet.sSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1))) S)))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)} {s : Subsemigroup.{u1} M _inst_1}, (Membership.mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.instMembershipSet.{u1} (Subsemigroup.{u1} M _inst_1)) s S) -> (forall {x : M}, (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x s) -> (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x (SupSet.sSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toSupSet.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)) S)))
-Case conversion may be inaccurate. Consider using '#align subsemigroup.mem_Sup_of_mem Subsemigroup.mem_sSup_of_memₓ'. -/
 @[to_additive]
 theorem mem_sSup_of_mem {S : Set (Subsemigroup M)} {s : Subsemigroup M} (hs : s ∈ S) :
     ∀ {x : M}, x ∈ s → x ∈ sSup S :=
@@ -168,12 +114,6 @@ theorem mem_sSup_of_mem {S : Set (Subsemigroup M)} {s : Subsemigroup M} (hs : s
 #align subsemigroup.mem_Sup_of_mem Subsemigroup.mem_sSup_of_mem
 #align add_subsemigroup.mem_Sup_of_mem AddSubsemigroup.mem_sSup_of_mem
 
-/- warning: subsemigroup.supr_induction -> Subsemigroup.iSup_induction is a dubious translation:
-lean 3 declaration is
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] (S : ι -> (Subsemigroup.{u2} M _inst_1)) {C : M -> Prop} {x : M}, (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))) -> (forall (i : ι) (x : M), (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (S i)) -> (C x)) -> (forall (x : M) (y : M), (C x) -> (C y) -> (C (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M _inst_1) x y))) -> (C x)
-but is expected to have type
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] (S : ι -> (Subsemigroup.{u2} M _inst_1)) {C : M -> Prop} {x : M}, (Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))) -> (forall (i : ι) (x : M), (Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (S i)) -> (C x)) -> (forall (x : M) (y : M), (C x) -> (C y) -> (C (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M _inst_1) x y))) -> (C x)
-Case conversion may be inaccurate. Consider using '#align subsemigroup.supr_induction Subsemigroup.iSup_inductionₓ'. -/
 /-- An induction principle for elements of `⨆ i, S i`.
 If `C` holds all elements of `S i` for all `i`, and is preserved under multiplication,
 then it holds for all elements of the supremum of `S`. -/
@@ -190,12 +130,6 @@ theorem iSup_induction (S : ι → Subsemigroup M) {C : M → Prop} {x : M} (hx
 #align subsemigroup.supr_induction Subsemigroup.iSup_induction
 #align add_subsemigroup.supr_induction AddSubsemigroup.iSup_induction
 
-/- warning: subsemigroup.supr_induction' -> Subsemigroup.iSup_induction' is a dubious translation:
-lean 3 declaration is
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] (S : ι -> (Subsemigroup.{u2} M _inst_1)) {C : forall (x : M), (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))) -> Prop}, (forall (i : ι) (x : M) (H : Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (S i)), C x (Subsemigroup.mem_iSup_of_mem.{u1, u2} ι M _inst_1 (fun (i : ι) => S i) i x H)) -> (forall (x : M) (y : M) (hx : Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))) (hy : Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) y (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))), (C x hx) -> (C y hy) -> (C (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M _inst_1) x y) (MulMemClass.mul_mem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M _inst_1 (Subsemigroup.setLike.{u2} M _inst_1) (Subsemigroup.mulMemClass.{u2} M _inst_1) (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i)) x y hx hy))) -> (forall {x : M} (hx : Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))), C x hx)
-but is expected to have type
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] (S : ι -> (Subsemigroup.{u2} M _inst_1)) {C : forall (x : M), (Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))) -> Prop}, (forall (i : ι) (x : M) (H : Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (S i)), C x (Subsemigroup.mem_iSup_of_mem.{u1, u2} ι M _inst_1 (fun (i : ι) => S i) i x H)) -> (forall (x : M) (y : M) (hx : Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))) (hy : Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) y (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))), (C x hx) -> (C y hy) -> (C (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M _inst_1) x y) (MulMemClass.mul_mem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M _inst_1 (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1) (Subsemigroup.instMulMemClassSubsemigroupInstSetLikeSubsemigroup.{u2} M _inst_1) (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i)) x y hx hy))) -> (forall {x : M} (hx : Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))), C x hx)
-Case conversion may be inaccurate. Consider using '#align subsemigroup.supr_induction' Subsemigroup.iSup_induction'ₓ'. -/
 /-- A dependent version of `subsemigroup.supr_induction`. -/
 @[elab_as_elim, to_additive "A dependent version of `add_subsemigroup.supr_induction`. "]
 theorem iSup_induction' (S : ι → Subsemigroup M) {C : ∀ x, (x ∈ ⨆ i, S i) → Prop}
Diff
@@ -48,7 +48,7 @@ namespace Subsemigroup
 
 /- warning: subsemigroup.mem_supr_of_directed -> Subsemigroup.mem_iSup_of_directed is a dubious translation:
 lean 3 declaration is
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)}, (Directed.{u2, u1} (Subsemigroup.{u2} M _inst_1) ι (LE.le.{u2} (Subsemigroup.{u2} M _inst_1) (Preorder.toLE.{u2} (Subsemigroup.{u2} M _inst_1) (PartialOrder.toPreorder.{u2} (Subsemigroup.{u2} M _inst_1) (SetLike.partialOrder.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1))))) S) -> (forall {x : M}, Iff (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))) (Exists.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (S i))))
+  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)}, (Directed.{u2, u1} (Subsemigroup.{u2} M _inst_1) ι (LE.le.{u2} (Subsemigroup.{u2} M _inst_1) (Preorder.toHasLe.{u2} (Subsemigroup.{u2} M _inst_1) (PartialOrder.toPreorder.{u2} (Subsemigroup.{u2} M _inst_1) (SetLike.partialOrder.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1))))) S) -> (forall {x : M}, Iff (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))) (Exists.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (S i))))
 but is expected to have type
   forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)}, (Directed.{u2, u1} (Subsemigroup.{u2} M _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.40 : Subsemigroup.{u2} M _inst_1) (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.42 : Subsemigroup.{u2} M _inst_1) => LE.le.{u2} (Subsemigroup.{u2} M _inst_1) (Preorder.toLE.{u2} (Subsemigroup.{u2} M _inst_1) (PartialOrder.toPreorder.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1))))) x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.40 x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.42) S) -> (forall {x : M}, Iff (Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))) (Exists.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (S i))))
 Case conversion may be inaccurate. Consider using '#align subsemigroup.mem_supr_of_directed Subsemigroup.mem_iSup_of_directedₓ'. -/
@@ -70,7 +70,7 @@ theorem mem_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤
 
 /- warning: subsemigroup.coe_supr_of_directed -> Subsemigroup.coe_iSup_of_directed is a dubious translation:
 lean 3 declaration is
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)}, (Directed.{u2, u1} (Subsemigroup.{u2} M _inst_1) ι (LE.le.{u2} (Subsemigroup.{u2} M _inst_1) (Preorder.toLE.{u2} (Subsemigroup.{u2} M _inst_1) (PartialOrder.toPreorder.{u2} (Subsemigroup.{u2} M _inst_1) (SetLike.partialOrder.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1))))) S) -> (Eq.{succ u2} (Set.{u2} M) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)))) (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))) (Set.iUnion.{u2, u1} M ι (fun (i : ι) => (fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)))) (S i))))
+  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)}, (Directed.{u2, u1} (Subsemigroup.{u2} M _inst_1) ι (LE.le.{u2} (Subsemigroup.{u2} M _inst_1) (Preorder.toHasLe.{u2} (Subsemigroup.{u2} M _inst_1) (PartialOrder.toPreorder.{u2} (Subsemigroup.{u2} M _inst_1) (SetLike.partialOrder.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1))))) S) -> (Eq.{succ u2} (Set.{u2} M) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)))) (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))) (Set.iUnion.{u2, u1} M ι (fun (i : ι) => (fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)))) (S i))))
 but is expected to have type
   forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)}, (Directed.{u2, u1} (Subsemigroup.{u2} M _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.267 : Subsemigroup.{u2} M _inst_1) (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.269 : Subsemigroup.{u2} M _inst_1) => LE.le.{u2} (Subsemigroup.{u2} M _inst_1) (Preorder.toLE.{u2} (Subsemigroup.{u2} M _inst_1) (PartialOrder.toPreorder.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1))))) x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.267 x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.269) S) -> (Eq.{succ u2} (Set.{u2} M) (SetLike.coe.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1) (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))) (Set.iUnion.{u2, u1} M ι (fun (i : ι) => SetLike.coe.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1) (S i))))
 Case conversion may be inaccurate. Consider using '#align subsemigroup.coe_supr_of_directed Subsemigroup.coe_iSup_of_directedₓ'. -/
@@ -83,7 +83,7 @@ theorem coe_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤
 
 /- warning: subsemigroup.mem_Sup_of_directed_on -> Subsemigroup.mem_sSup_of_directed_on is a dubious translation:
 lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)}, (DirectedOn.{u1} (Subsemigroup.{u1} M _inst_1) (LE.le.{u1} (Subsemigroup.{u1} M _inst_1) (Preorder.toLE.{u1} (Subsemigroup.{u1} M _inst_1) (PartialOrder.toPreorder.{u1} (Subsemigroup.{u1} M _inst_1) (SetLike.partialOrder.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1))))) S) -> (forall {x : M}, Iff (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x (SupSet.sSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1))) S)) (Exists.{succ u1} (Subsemigroup.{u1} M _inst_1) (fun (s : Subsemigroup.{u1} M _inst_1) => Exists.{0} (Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) (fun (H : Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) => Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x s))))
+  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)}, (DirectedOn.{u1} (Subsemigroup.{u1} M _inst_1) (LE.le.{u1} (Subsemigroup.{u1} M _inst_1) (Preorder.toHasLe.{u1} (Subsemigroup.{u1} M _inst_1) (PartialOrder.toPreorder.{u1} (Subsemigroup.{u1} M _inst_1) (SetLike.partialOrder.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1))))) S) -> (forall {x : M}, Iff (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x (SupSet.sSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1))) S)) (Exists.{succ u1} (Subsemigroup.{u1} M _inst_1) (fun (s : Subsemigroup.{u1} M _inst_1) => Exists.{0} (Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) (fun (H : Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) => Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x s))))
 but is expected to have type
   forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)}, (DirectedOn.{u1} (Subsemigroup.{u1} M _inst_1) (fun (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.357 : Subsemigroup.{u1} M _inst_1) (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.359 : Subsemigroup.{u1} M _inst_1) => LE.le.{u1} (Subsemigroup.{u1} M _inst_1) (Preorder.toLE.{u1} (Subsemigroup.{u1} M _inst_1) (PartialOrder.toPreorder.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1))))) x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.357 x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.359) S) -> (forall {x : M}, Iff (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x (SupSet.sSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toSupSet.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)) S)) (Exists.{succ u1} (Subsemigroup.{u1} M _inst_1) (fun (s : Subsemigroup.{u1} M _inst_1) => And (Membership.mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.instMembershipSet.{u1} (Subsemigroup.{u1} M _inst_1)) s S) (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x s))))
 Case conversion may be inaccurate. Consider using '#align subsemigroup.mem_Sup_of_directed_on Subsemigroup.mem_sSup_of_directed_onₓ'. -/
@@ -96,7 +96,7 @@ theorem mem_sSup_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (·
 
 /- warning: subsemigroup.coe_Sup_of_directed_on -> Subsemigroup.coe_sSup_of_directed_on is a dubious translation:
 lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)}, (DirectedOn.{u1} (Subsemigroup.{u1} M _inst_1) (LE.le.{u1} (Subsemigroup.{u1} M _inst_1) (Preorder.toLE.{u1} (Subsemigroup.{u1} M _inst_1) (PartialOrder.toPreorder.{u1} (Subsemigroup.{u1} M _inst_1) (SetLike.partialOrder.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1))))) S) -> (Eq.{succ u1} (Set.{u1} M) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)))) (SupSet.sSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1))) S)) (Set.iUnion.{u1, succ u1} M (Subsemigroup.{u1} M _inst_1) (fun (s : Subsemigroup.{u1} M _inst_1) => Set.iUnion.{u1, 0} M (Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) (fun (H : Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)))) s))))
+  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)}, (DirectedOn.{u1} (Subsemigroup.{u1} M _inst_1) (LE.le.{u1} (Subsemigroup.{u1} M _inst_1) (Preorder.toHasLe.{u1} (Subsemigroup.{u1} M _inst_1) (PartialOrder.toPreorder.{u1} (Subsemigroup.{u1} M _inst_1) (SetLike.partialOrder.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1))))) S) -> (Eq.{succ u1} (Set.{u1} M) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)))) (SupSet.sSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1))) S)) (Set.iUnion.{u1, succ u1} M (Subsemigroup.{u1} M _inst_1) (fun (s : Subsemigroup.{u1} M _inst_1) => Set.iUnion.{u1, 0} M (Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) (fun (H : Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)))) s))))
 but is expected to have type
   forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)}, (DirectedOn.{u1} (Subsemigroup.{u1} M _inst_1) (fun (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.428 : Subsemigroup.{u1} M _inst_1) (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.430 : Subsemigroup.{u1} M _inst_1) => LE.le.{u1} (Subsemigroup.{u1} M _inst_1) (Preorder.toLE.{u1} (Subsemigroup.{u1} M _inst_1) (PartialOrder.toPreorder.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1))))) x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.428 x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.430) S) -> (Eq.{succ u1} (Set.{u1} M) (SetLike.coe.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1) (SupSet.sSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toSupSet.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)) S)) (Set.iUnion.{u1, succ u1} M (Subsemigroup.{u1} M _inst_1) (fun (s : Subsemigroup.{u1} M _inst_1) => Set.iUnion.{u1, 0} M (Membership.mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.instMembershipSet.{u1} (Subsemigroup.{u1} M _inst_1)) s S) (fun (H : Membership.mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.instMembershipSet.{u1} (Subsemigroup.{u1} M _inst_1)) s S) => SetLike.coe.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1) s))))
 Case conversion may be inaccurate. Consider using '#align subsemigroup.coe_Sup_of_directed_on Subsemigroup.coe_sSup_of_directed_onₓ'. -/
Diff
@@ -46,66 +46,66 @@ open Set
 
 namespace Subsemigroup
 
-/- warning: subsemigroup.mem_supr_of_directed -> Subsemigroup.mem_supᵢ_of_directed is a dubious translation:
+/- warning: subsemigroup.mem_supr_of_directed -> Subsemigroup.mem_iSup_of_directed is a dubious translation:
 lean 3 declaration is
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)}, (Directed.{u2, u1} (Subsemigroup.{u2} M _inst_1) ι (LE.le.{u2} (Subsemigroup.{u2} M _inst_1) (Preorder.toLE.{u2} (Subsemigroup.{u2} M _inst_1) (PartialOrder.toPreorder.{u2} (Subsemigroup.{u2} M _inst_1) (SetLike.partialOrder.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1))))) S) -> (forall {x : M}, Iff (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (supᵢ.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))) (Exists.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (S i))))
+  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)}, (Directed.{u2, u1} (Subsemigroup.{u2} M _inst_1) ι (LE.le.{u2} (Subsemigroup.{u2} M _inst_1) (Preorder.toLE.{u2} (Subsemigroup.{u2} M _inst_1) (PartialOrder.toPreorder.{u2} (Subsemigroup.{u2} M _inst_1) (SetLike.partialOrder.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1))))) S) -> (forall {x : M}, Iff (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))) (Exists.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (S i))))
 but is expected to have type
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)}, (Directed.{u2, u1} (Subsemigroup.{u2} M _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.40 : Subsemigroup.{u2} M _inst_1) (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.42 : Subsemigroup.{u2} M _inst_1) => LE.le.{u2} (Subsemigroup.{u2} M _inst_1) (Preorder.toLE.{u2} (Subsemigroup.{u2} M _inst_1) (PartialOrder.toPreorder.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1))))) x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.40 x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.42) S) -> (forall {x : M}, Iff (Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (supᵢ.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))) (Exists.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (S i))))
-Case conversion may be inaccurate. Consider using '#align subsemigroup.mem_supr_of_directed Subsemigroup.mem_supᵢ_of_directedₓ'. -/
+  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)}, (Directed.{u2, u1} (Subsemigroup.{u2} M _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.40 : Subsemigroup.{u2} M _inst_1) (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.42 : Subsemigroup.{u2} M _inst_1) => LE.le.{u2} (Subsemigroup.{u2} M _inst_1) (Preorder.toLE.{u2} (Subsemigroup.{u2} M _inst_1) (PartialOrder.toPreorder.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1))))) x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.40 x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.42) S) -> (forall {x : M}, Iff (Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))) (Exists.{u1} ι (fun (i : ι) => Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (S i))))
+Case conversion may be inaccurate. Consider using '#align subsemigroup.mem_supr_of_directed Subsemigroup.mem_iSup_of_directedₓ'. -/
 -- TODO: this section can be generalized to `[mul_mem_class B M] [complete_lattice B]`
 -- such that `complete_lattice.le` coincides with `set_like.le`
 @[to_additive]
-theorem mem_supᵢ_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤ ·) S) {x : M} :
+theorem mem_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤ ·) S) {x : M} :
     (x ∈ ⨆ i, S i) ↔ ∃ i, x ∈ S i :=
   by
-  refine' ⟨_, fun ⟨i, hi⟩ => (SetLike.le_def.1 <| le_supᵢ S i) hi⟩
+  refine' ⟨_, fun ⟨i, hi⟩ => (SetLike.le_def.1 <| le_iSup S i) hi⟩
   suffices x ∈ closure (⋃ i, (S i : Set M)) → ∃ i, x ∈ S i by
-    simpa only [closure_unionᵢ, closure_eq (S _)] using this
+    simpa only [closure_iUnion, closure_eq (S _)] using this
   refine' fun hx => closure_induction hx (fun y hy => mem_Union.mp hy) _
   · rintro x y ⟨i, hi⟩ ⟨j, hj⟩
     rcases hS i j with ⟨k, hki, hkj⟩
     exact ⟨k, (S k).mul_mem (hki hi) (hkj hj)⟩
-#align subsemigroup.mem_supr_of_directed Subsemigroup.mem_supᵢ_of_directed
-#align add_subsemigroup.mem_supr_of_directed AddSubsemigroup.mem_supᵢ_of_directed
+#align subsemigroup.mem_supr_of_directed Subsemigroup.mem_iSup_of_directed
+#align add_subsemigroup.mem_supr_of_directed AddSubsemigroup.mem_iSup_of_directed
 
-/- warning: subsemigroup.coe_supr_of_directed -> Subsemigroup.coe_supᵢ_of_directed is a dubious translation:
+/- warning: subsemigroup.coe_supr_of_directed -> Subsemigroup.coe_iSup_of_directed is a dubious translation:
 lean 3 declaration is
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)}, (Directed.{u2, u1} (Subsemigroup.{u2} M _inst_1) ι (LE.le.{u2} (Subsemigroup.{u2} M _inst_1) (Preorder.toLE.{u2} (Subsemigroup.{u2} M _inst_1) (PartialOrder.toPreorder.{u2} (Subsemigroup.{u2} M _inst_1) (SetLike.partialOrder.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1))))) S) -> (Eq.{succ u2} (Set.{u2} M) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)))) (supᵢ.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u2, u1} M ι (fun (i : ι) => (fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)))) (S i))))
+  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)}, (Directed.{u2, u1} (Subsemigroup.{u2} M _inst_1) ι (LE.le.{u2} (Subsemigroup.{u2} M _inst_1) (Preorder.toLE.{u2} (Subsemigroup.{u2} M _inst_1) (PartialOrder.toPreorder.{u2} (Subsemigroup.{u2} M _inst_1) (SetLike.partialOrder.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1))))) S) -> (Eq.{succ u2} (Set.{u2} M) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)))) (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))) (Set.iUnion.{u2, u1} M ι (fun (i : ι) => (fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Subsemigroup.{u2} M _inst_1) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)))) (S i))))
 but is expected to have type
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)}, (Directed.{u2, u1} (Subsemigroup.{u2} M _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.267 : Subsemigroup.{u2} M _inst_1) (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.269 : Subsemigroup.{u2} M _inst_1) => LE.le.{u2} (Subsemigroup.{u2} M _inst_1) (Preorder.toLE.{u2} (Subsemigroup.{u2} M _inst_1) (PartialOrder.toPreorder.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1))))) x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.267 x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.269) S) -> (Eq.{succ u2} (Set.{u2} M) (SetLike.coe.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1) (supᵢ.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u2, u1} M ι (fun (i : ι) => SetLike.coe.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1) (S i))))
-Case conversion may be inaccurate. Consider using '#align subsemigroup.coe_supr_of_directed Subsemigroup.coe_supᵢ_of_directedₓ'. -/
+  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)}, (Directed.{u2, u1} (Subsemigroup.{u2} M _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.267 : Subsemigroup.{u2} M _inst_1) (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.269 : Subsemigroup.{u2} M _inst_1) => LE.le.{u2} (Subsemigroup.{u2} M _inst_1) (Preorder.toLE.{u2} (Subsemigroup.{u2} M _inst_1) (PartialOrder.toPreorder.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1))))) x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.267 x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.269) S) -> (Eq.{succ u2} (Set.{u2} M) (SetLike.coe.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1) (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))) (Set.iUnion.{u2, u1} M ι (fun (i : ι) => SetLike.coe.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1) (S i))))
+Case conversion may be inaccurate. Consider using '#align subsemigroup.coe_supr_of_directed Subsemigroup.coe_iSup_of_directedₓ'. -/
 @[to_additive]
-theorem coe_supᵢ_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤ ·) S) :
+theorem coe_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤ ·) S) :
     ((⨆ i, S i : Subsemigroup M) : Set M) = ⋃ i, ↑(S i) :=
   Set.ext fun x => by simp [mem_supr_of_directed hS]
-#align subsemigroup.coe_supr_of_directed Subsemigroup.coe_supᵢ_of_directed
-#align add_subsemigroup.coe_supr_of_directed AddSubsemigroup.coe_supᵢ_of_directed
+#align subsemigroup.coe_supr_of_directed Subsemigroup.coe_iSup_of_directed
+#align add_subsemigroup.coe_supr_of_directed AddSubsemigroup.coe_iSup_of_directed
 
-/- warning: subsemigroup.mem_Sup_of_directed_on -> Subsemigroup.mem_supₛ_of_directed_on is a dubious translation:
+/- warning: subsemigroup.mem_Sup_of_directed_on -> Subsemigroup.mem_sSup_of_directed_on is a dubious translation:
 lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)}, (DirectedOn.{u1} (Subsemigroup.{u1} M _inst_1) (LE.le.{u1} (Subsemigroup.{u1} M _inst_1) (Preorder.toLE.{u1} (Subsemigroup.{u1} M _inst_1) (PartialOrder.toPreorder.{u1} (Subsemigroup.{u1} M _inst_1) (SetLike.partialOrder.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1))))) S) -> (forall {x : M}, Iff (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x (SupSet.supₛ.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1))) S)) (Exists.{succ u1} (Subsemigroup.{u1} M _inst_1) (fun (s : Subsemigroup.{u1} M _inst_1) => Exists.{0} (Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) (fun (H : Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) => Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x s))))
+  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)}, (DirectedOn.{u1} (Subsemigroup.{u1} M _inst_1) (LE.le.{u1} (Subsemigroup.{u1} M _inst_1) (Preorder.toLE.{u1} (Subsemigroup.{u1} M _inst_1) (PartialOrder.toPreorder.{u1} (Subsemigroup.{u1} M _inst_1) (SetLike.partialOrder.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1))))) S) -> (forall {x : M}, Iff (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x (SupSet.sSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1))) S)) (Exists.{succ u1} (Subsemigroup.{u1} M _inst_1) (fun (s : Subsemigroup.{u1} M _inst_1) => Exists.{0} (Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) (fun (H : Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) => Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x s))))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)}, (DirectedOn.{u1} (Subsemigroup.{u1} M _inst_1) (fun (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.357 : Subsemigroup.{u1} M _inst_1) (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.359 : Subsemigroup.{u1} M _inst_1) => LE.le.{u1} (Subsemigroup.{u1} M _inst_1) (Preorder.toLE.{u1} (Subsemigroup.{u1} M _inst_1) (PartialOrder.toPreorder.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1))))) x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.357 x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.359) S) -> (forall {x : M}, Iff (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x (SupSet.supₛ.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toSupSet.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)) S)) (Exists.{succ u1} (Subsemigroup.{u1} M _inst_1) (fun (s : Subsemigroup.{u1} M _inst_1) => And (Membership.mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.instMembershipSet.{u1} (Subsemigroup.{u1} M _inst_1)) s S) (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x s))))
-Case conversion may be inaccurate. Consider using '#align subsemigroup.mem_Sup_of_directed_on Subsemigroup.mem_supₛ_of_directed_onₓ'. -/
+  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)}, (DirectedOn.{u1} (Subsemigroup.{u1} M _inst_1) (fun (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.357 : Subsemigroup.{u1} M _inst_1) (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.359 : Subsemigroup.{u1} M _inst_1) => LE.le.{u1} (Subsemigroup.{u1} M _inst_1) (Preorder.toLE.{u1} (Subsemigroup.{u1} M _inst_1) (PartialOrder.toPreorder.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1))))) x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.357 x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.359) S) -> (forall {x : M}, Iff (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x (SupSet.sSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toSupSet.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)) S)) (Exists.{succ u1} (Subsemigroup.{u1} M _inst_1) (fun (s : Subsemigroup.{u1} M _inst_1) => And (Membership.mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.instMembershipSet.{u1} (Subsemigroup.{u1} M _inst_1)) s S) (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x s))))
+Case conversion may be inaccurate. Consider using '#align subsemigroup.mem_Sup_of_directed_on Subsemigroup.mem_sSup_of_directed_onₓ'. -/
 @[to_additive]
-theorem mem_supₛ_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (· ≤ ·) S) {x : M} :
-    x ∈ supₛ S ↔ ∃ s ∈ S, x ∈ s := by
-  simp only [supₛ_eq_supᵢ', mem_supr_of_directed hS.directed_coe, SetCoe.exists, Subtype.coe_mk]
-#align subsemigroup.mem_Sup_of_directed_on Subsemigroup.mem_supₛ_of_directed_on
-#align add_subsemigroup.mem_Sup_of_directed_on AddSubsemigroup.mem_supₛ_of_directed_on
+theorem mem_sSup_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (· ≤ ·) S) {x : M} :
+    x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s := by
+  simp only [sSup_eq_iSup', mem_supr_of_directed hS.directed_coe, SetCoe.exists, Subtype.coe_mk]
+#align subsemigroup.mem_Sup_of_directed_on Subsemigroup.mem_sSup_of_directed_on
+#align add_subsemigroup.mem_Sup_of_directed_on AddSubsemigroup.mem_sSup_of_directed_on
 
-/- warning: subsemigroup.coe_Sup_of_directed_on -> Subsemigroup.coe_supₛ_of_directed_on is a dubious translation:
+/- warning: subsemigroup.coe_Sup_of_directed_on -> Subsemigroup.coe_sSup_of_directed_on is a dubious translation:
 lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)}, (DirectedOn.{u1} (Subsemigroup.{u1} M _inst_1) (LE.le.{u1} (Subsemigroup.{u1} M _inst_1) (Preorder.toLE.{u1} (Subsemigroup.{u1} M _inst_1) (PartialOrder.toPreorder.{u1} (Subsemigroup.{u1} M _inst_1) (SetLike.partialOrder.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1))))) S) -> (Eq.{succ u1} (Set.{u1} M) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)))) (SupSet.supₛ.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1))) S)) (Set.unionᵢ.{u1, succ u1} M (Subsemigroup.{u1} M _inst_1) (fun (s : Subsemigroup.{u1} M _inst_1) => Set.unionᵢ.{u1, 0} M (Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) (fun (H : Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)))) s))))
+  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)}, (DirectedOn.{u1} (Subsemigroup.{u1} M _inst_1) (LE.le.{u1} (Subsemigroup.{u1} M _inst_1) (Preorder.toLE.{u1} (Subsemigroup.{u1} M _inst_1) (PartialOrder.toPreorder.{u1} (Subsemigroup.{u1} M _inst_1) (SetLike.partialOrder.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1))))) S) -> (Eq.{succ u1} (Set.{u1} M) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)))) (SupSet.sSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1))) S)) (Set.iUnion.{u1, succ u1} M (Subsemigroup.{u1} M _inst_1) (fun (s : Subsemigroup.{u1} M _inst_1) => Set.iUnion.{u1, 0} M (Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) (fun (H : Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)))) s))))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)}, (DirectedOn.{u1} (Subsemigroup.{u1} M _inst_1) (fun (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.428 : Subsemigroup.{u1} M _inst_1) (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.430 : Subsemigroup.{u1} M _inst_1) => LE.le.{u1} (Subsemigroup.{u1} M _inst_1) (Preorder.toLE.{u1} (Subsemigroup.{u1} M _inst_1) (PartialOrder.toPreorder.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1))))) x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.428 x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.430) S) -> (Eq.{succ u1} (Set.{u1} M) (SetLike.coe.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1) (SupSet.supₛ.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toSupSet.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)) S)) (Set.unionᵢ.{u1, succ u1} M (Subsemigroup.{u1} M _inst_1) (fun (s : Subsemigroup.{u1} M _inst_1) => Set.unionᵢ.{u1, 0} M (Membership.mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.instMembershipSet.{u1} (Subsemigroup.{u1} M _inst_1)) s S) (fun (H : Membership.mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.instMembershipSet.{u1} (Subsemigroup.{u1} M _inst_1)) s S) => SetLike.coe.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1) s))))
-Case conversion may be inaccurate. Consider using '#align subsemigroup.coe_Sup_of_directed_on Subsemigroup.coe_supₛ_of_directed_onₓ'. -/
+  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)}, (DirectedOn.{u1} (Subsemigroup.{u1} M _inst_1) (fun (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.428 : Subsemigroup.{u1} M _inst_1) (x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.430 : Subsemigroup.{u1} M _inst_1) => LE.le.{u1} (Subsemigroup.{u1} M _inst_1) (Preorder.toLE.{u1} (Subsemigroup.{u1} M _inst_1) (PartialOrder.toPreorder.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1))))) x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.428 x._@.Mathlib.GroupTheory.Subsemigroup.Membership._hyg.430) S) -> (Eq.{succ u1} (Set.{u1} M) (SetLike.coe.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1) (SupSet.sSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toSupSet.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)) S)) (Set.iUnion.{u1, succ u1} M (Subsemigroup.{u1} M _inst_1) (fun (s : Subsemigroup.{u1} M _inst_1) => Set.iUnion.{u1, 0} M (Membership.mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.instMembershipSet.{u1} (Subsemigroup.{u1} M _inst_1)) s S) (fun (H : Membership.mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.instMembershipSet.{u1} (Subsemigroup.{u1} M _inst_1)) s S) => SetLike.coe.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1) s))))
+Case conversion may be inaccurate. Consider using '#align subsemigroup.coe_Sup_of_directed_on Subsemigroup.coe_sSup_of_directed_onₓ'. -/
 @[to_additive]
-theorem coe_supₛ_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (· ≤ ·) S) :
-    (↑(supₛ S) : Set M) = ⋃ s ∈ S, ↑s :=
+theorem coe_sSup_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (· ≤ ·) S) :
+    (↑(sSup S) : Set M) = ⋃ s ∈ S, ↑s :=
   Set.ext fun x => by simp [mem_Sup_of_directed_on hS]
-#align subsemigroup.coe_Sup_of_directed_on Subsemigroup.coe_supₛ_of_directed_on
-#align add_subsemigroup.coe_Sup_of_directed_on AddSubsemigroup.coe_supₛ_of_directed_on
+#align subsemigroup.coe_Sup_of_directed_on Subsemigroup.coe_sSup_of_directed_on
+#align add_subsemigroup.coe_Sup_of_directed_on AddSubsemigroup.coe_sSup_of_directed_on
 
 /- warning: subsemigroup.mem_sup_left -> Subsemigroup.mem_sup_left is a dubious translation:
 lean 3 declaration is
@@ -143,63 +143,63 @@ theorem mul_mem_sup {S T : Subsemigroup M} {x y : M} (hx : x ∈ S) (hy : y ∈
 #align subsemigroup.mul_mem_sup Subsemigroup.mul_mem_sup
 #align add_subsemigroup.add_mem_sup AddSubsemigroup.add_mem_sup
 
-/- warning: subsemigroup.mem_supr_of_mem -> Subsemigroup.mem_supᵢ_of_mem is a dubious translation:
+/- warning: subsemigroup.mem_supr_of_mem -> Subsemigroup.mem_iSup_of_mem is a dubious translation:
 lean 3 declaration is
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)} (i : ι) {x : M}, (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (S i)) -> (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (supᵢ.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι S))
+  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)} (i : ι) {x : M}, (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (S i)) -> (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι S))
 but is expected to have type
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)} (i : ι) {x : M}, (Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (S i)) -> (Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (supᵢ.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι S))
-Case conversion may be inaccurate. Consider using '#align subsemigroup.mem_supr_of_mem Subsemigroup.mem_supᵢ_of_memₓ'. -/
+  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] {S : ι -> (Subsemigroup.{u2} M _inst_1)} (i : ι) {x : M}, (Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (S i)) -> (Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι S))
+Case conversion may be inaccurate. Consider using '#align subsemigroup.mem_supr_of_mem Subsemigroup.mem_iSup_of_memₓ'. -/
 @[to_additive]
-theorem mem_supᵢ_of_mem {S : ι → Subsemigroup M} (i : ι) : ∀ {x : M}, x ∈ S i → x ∈ supᵢ S :=
-  show S i ≤ supᵢ S from le_supᵢ _ _
-#align subsemigroup.mem_supr_of_mem Subsemigroup.mem_supᵢ_of_mem
-#align add_subsemigroup.mem_supr_of_mem AddSubsemigroup.mem_supᵢ_of_mem
+theorem mem_iSup_of_mem {S : ι → Subsemigroup M} (i : ι) : ∀ {x : M}, x ∈ S i → x ∈ iSup S :=
+  show S i ≤ iSup S from le_iSup _ _
+#align subsemigroup.mem_supr_of_mem Subsemigroup.mem_iSup_of_mem
+#align add_subsemigroup.mem_supr_of_mem AddSubsemigroup.mem_iSup_of_mem
 
-/- warning: subsemigroup.mem_Sup_of_mem -> Subsemigroup.mem_supₛ_of_mem is a dubious translation:
+/- warning: subsemigroup.mem_Sup_of_mem -> Subsemigroup.mem_sSup_of_mem is a dubious translation:
 lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)} {s : Subsemigroup.{u1} M _inst_1}, (Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) -> (forall {x : M}, (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x s) -> (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x (SupSet.supₛ.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1))) S)))
+  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)} {s : Subsemigroup.{u1} M _inst_1}, (Membership.Mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.hasMem.{u1} (Subsemigroup.{u1} M _inst_1)) s S) -> (forall {x : M}, (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x s) -> (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x (SupSet.sSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1))) S)))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)} {s : Subsemigroup.{u1} M _inst_1}, (Membership.mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.instMembershipSet.{u1} (Subsemigroup.{u1} M _inst_1)) s S) -> (forall {x : M}, (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x s) -> (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x (SupSet.supₛ.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toSupSet.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)) S)))
-Case conversion may be inaccurate. Consider using '#align subsemigroup.mem_Sup_of_mem Subsemigroup.mem_supₛ_of_memₓ'. -/
+  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Set.{u1} (Subsemigroup.{u1} M _inst_1)} {s : Subsemigroup.{u1} M _inst_1}, (Membership.mem.{u1, u1} (Subsemigroup.{u1} M _inst_1) (Set.{u1} (Subsemigroup.{u1} M _inst_1)) (Set.instMembershipSet.{u1} (Subsemigroup.{u1} M _inst_1)) s S) -> (forall {x : M}, (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x s) -> (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x (SupSet.sSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toSupSet.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)) S)))
+Case conversion may be inaccurate. Consider using '#align subsemigroup.mem_Sup_of_mem Subsemigroup.mem_sSup_of_memₓ'. -/
 @[to_additive]
-theorem mem_supₛ_of_mem {S : Set (Subsemigroup M)} {s : Subsemigroup M} (hs : s ∈ S) :
-    ∀ {x : M}, x ∈ s → x ∈ supₛ S :=
-  show s ≤ supₛ S from le_supₛ hs
-#align subsemigroup.mem_Sup_of_mem Subsemigroup.mem_supₛ_of_mem
-#align add_subsemigroup.mem_Sup_of_mem AddSubsemigroup.mem_supₛ_of_mem
+theorem mem_sSup_of_mem {S : Set (Subsemigroup M)} {s : Subsemigroup M} (hs : s ∈ S) :
+    ∀ {x : M}, x ∈ s → x ∈ sSup S :=
+  show s ≤ sSup S from le_sSup hs
+#align subsemigroup.mem_Sup_of_mem Subsemigroup.mem_sSup_of_mem
+#align add_subsemigroup.mem_Sup_of_mem AddSubsemigroup.mem_sSup_of_mem
 
-/- warning: subsemigroup.supr_induction -> Subsemigroup.supᵢ_induction is a dubious translation:
+/- warning: subsemigroup.supr_induction -> Subsemigroup.iSup_induction is a dubious translation:
 lean 3 declaration is
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] (S : ι -> (Subsemigroup.{u2} M _inst_1)) {C : M -> Prop} {x : M}, (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (supᵢ.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))) -> (forall (i : ι) (x : M), (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (S i)) -> (C x)) -> (forall (x : M) (y : M), (C x) -> (C y) -> (C (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M _inst_1) x y))) -> (C x)
+  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] (S : ι -> (Subsemigroup.{u2} M _inst_1)) {C : M -> Prop} {x : M}, (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))) -> (forall (i : ι) (x : M), (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (S i)) -> (C x)) -> (forall (x : M) (y : M), (C x) -> (C y) -> (C (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M _inst_1) x y))) -> (C x)
 but is expected to have type
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] (S : ι -> (Subsemigroup.{u2} M _inst_1)) {C : M -> Prop} {x : M}, (Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (supᵢ.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))) -> (forall (i : ι) (x : M), (Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (S i)) -> (C x)) -> (forall (x : M) (y : M), (C x) -> (C y) -> (C (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M _inst_1) x y))) -> (C x)
-Case conversion may be inaccurate. Consider using '#align subsemigroup.supr_induction Subsemigroup.supᵢ_inductionₓ'. -/
+  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] (S : ι -> (Subsemigroup.{u2} M _inst_1)) {C : M -> Prop} {x : M}, (Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))) -> (forall (i : ι) (x : M), (Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (S i)) -> (C x)) -> (forall (x : M) (y : M), (C x) -> (C y) -> (C (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M _inst_1) x y))) -> (C x)
+Case conversion may be inaccurate. Consider using '#align subsemigroup.supr_induction Subsemigroup.iSup_inductionₓ'. -/
 /-- An induction principle for elements of `⨆ i, S i`.
 If `C` holds all elements of `S i` for all `i`, and is preserved under multiplication,
 then it holds for all elements of the supremum of `S`. -/
 @[elab_as_elim,
   to_additive
       " An induction principle for elements of `⨆ i, S i`.\nIf `C` holds all elements of `S i` for all `i`, and is preserved under addition,\nthen it holds for all elements of the supremum of `S`. "]
-theorem supᵢ_induction (S : ι → Subsemigroup M) {C : M → Prop} {x : M} (hx : x ∈ ⨆ i, S i)
+theorem iSup_induction (S : ι → Subsemigroup M) {C : M → Prop} {x : M} (hx : x ∈ ⨆ i, S i)
     (hp : ∀ (i), ∀ x ∈ S i, C x) (hmul : ∀ x y, C x → C y → C (x * y)) : C x :=
   by
   rw [supr_eq_closure] at hx
   refine' closure_induction hx (fun x hx => _) hmul
   obtain ⟨i, hi⟩ := set.mem_Union.mp hx
   exact hp _ _ hi
-#align subsemigroup.supr_induction Subsemigroup.supᵢ_induction
-#align add_subsemigroup.supr_induction AddSubsemigroup.supᵢ_induction
+#align subsemigroup.supr_induction Subsemigroup.iSup_induction
+#align add_subsemigroup.supr_induction AddSubsemigroup.iSup_induction
 
-/- warning: subsemigroup.supr_induction' -> Subsemigroup.supᵢ_induction' is a dubious translation:
+/- warning: subsemigroup.supr_induction' -> Subsemigroup.iSup_induction' is a dubious translation:
 lean 3 declaration is
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] (S : ι -> (Subsemigroup.{u2} M _inst_1)) {C : forall (x : M), (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (supᵢ.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))) -> Prop}, (forall (i : ι) (x : M) (H : Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (S i)), C x (Subsemigroup.mem_supᵢ_of_mem.{u1, u2} ι M _inst_1 (fun (i : ι) => S i) i x H)) -> (forall (x : M) (y : M) (hx : Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (supᵢ.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))) (hy : Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) y (supᵢ.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))), (C x hx) -> (C y hy) -> (C (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M _inst_1) x y) (MulMemClass.mul_mem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M _inst_1 (Subsemigroup.setLike.{u2} M _inst_1) (Subsemigroup.mulMemClass.{u2} M _inst_1) (supᵢ.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i)) x y hx hy))) -> (forall {x : M} (hx : Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (supᵢ.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))), C x hx)
+  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] (S : ι -> (Subsemigroup.{u2} M _inst_1)) {C : forall (x : M), (Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))) -> Prop}, (forall (i : ι) (x : M) (H : Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (S i)), C x (Subsemigroup.mem_iSup_of_mem.{u1, u2} ι M _inst_1 (fun (i : ι) => S i) i x H)) -> (forall (x : M) (y : M) (hx : Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))) (hy : Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) y (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))), (C x hx) -> (C y hy) -> (C (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M _inst_1) x y) (MulMemClass.mul_mem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M _inst_1 (Subsemigroup.setLike.{u2} M _inst_1) (Subsemigroup.mulMemClass.{u2} M _inst_1) (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i)) x y hx hy))) -> (forall {x : M} (hx : Membership.Mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.hasMem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.setLike.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteSemilatticeSup.toHasSup.{u2} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.completeLattice.{u2} M _inst_1))) ι (fun (i : ι) => S i))), C x hx)
 but is expected to have type
-  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] (S : ι -> (Subsemigroup.{u2} M _inst_1)) {C : forall (x : M), (Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (supᵢ.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))) -> Prop}, (forall (i : ι) (x : M) (H : Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (S i)), C x (Subsemigroup.mem_supᵢ_of_mem.{u1, u2} ι M _inst_1 (fun (i : ι) => S i) i x H)) -> (forall (x : M) (y : M) (hx : Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (supᵢ.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))) (hy : Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) y (supᵢ.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))), (C x hx) -> (C y hy) -> (C (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M _inst_1) x y) (MulMemClass.mul_mem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M _inst_1 (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1) (Subsemigroup.instMulMemClassSubsemigroupInstSetLikeSubsemigroup.{u2} M _inst_1) (supᵢ.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i)) x y hx hy))) -> (forall {x : M} (hx : Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (supᵢ.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))), C x hx)
-Case conversion may be inaccurate. Consider using '#align subsemigroup.supr_induction' Subsemigroup.supᵢ_induction'ₓ'. -/
+  forall {ι : Sort.{u1}} {M : Type.{u2}} [_inst_1 : Mul.{u2} M] (S : ι -> (Subsemigroup.{u2} M _inst_1)) {C : forall (x : M), (Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))) -> Prop}, (forall (i : ι) (x : M) (H : Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (S i)), C x (Subsemigroup.mem_iSup_of_mem.{u1, u2} ι M _inst_1 (fun (i : ι) => S i) i x H)) -> (forall (x : M) (y : M) (hx : Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))) (hy : Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) y (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))), (C x hx) -> (C y hy) -> (C (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M _inst_1) x y) (MulMemClass.mul_mem.{u2, u2} (Subsemigroup.{u2} M _inst_1) M _inst_1 (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1) (Subsemigroup.instMulMemClassSubsemigroupInstSetLikeSubsemigroup.{u2} M _inst_1) (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i)) x y hx hy))) -> (forall {x : M} (hx : Membership.mem.{u2, u2} M (Subsemigroup.{u2} M _inst_1) (SetLike.instMembership.{u2, u2} (Subsemigroup.{u2} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u2} M _inst_1)) x (iSup.{u2, u1} (Subsemigroup.{u2} M _inst_1) (CompleteLattice.toSupSet.{u2} (Subsemigroup.{u2} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u2} M _inst_1)) ι (fun (i : ι) => S i))), C x hx)
+Case conversion may be inaccurate. Consider using '#align subsemigroup.supr_induction' Subsemigroup.iSup_induction'ₓ'. -/
 /-- A dependent version of `subsemigroup.supr_induction`. -/
 @[elab_as_elim, to_additive "A dependent version of `add_subsemigroup.supr_induction`. "]
-theorem supᵢ_induction' (S : ι → Subsemigroup M) {C : ∀ x, (x ∈ ⨆ i, S i) → Prop}
-    (hp : ∀ (i), ∀ x ∈ S i, C x (mem_supᵢ_of_mem i ‹_›))
+theorem iSup_induction' (S : ι → Subsemigroup M) {C : ∀ x, (x ∈ ⨆ i, S i) → Prop}
+    (hp : ∀ (i), ∀ x ∈ S i, C x (mem_iSup_of_mem i ‹_›))
     (hmul : ∀ x y hx hy, C x hx → C y hy → C (x * y) (mul_mem ‹_› ‹_›)) {x : M}
     (hx : x ∈ ⨆ i, S i) : C x hx :=
   by
@@ -208,8 +208,8 @@ theorem supᵢ_induction' (S : ι → Subsemigroup M) {C : ∀ x, (x ∈ ⨆ i,
   · exact ⟨_, hp _ _ hx⟩
   · rintro ⟨_, Cx⟩ ⟨_, Cy⟩
     exact ⟨_, hmul _ _ _ _ Cx Cy⟩
-#align subsemigroup.supr_induction' Subsemigroup.supᵢ_induction'
-#align add_subsemigroup.supr_induction' AddSubsemigroup.supᵢ_induction'
+#align subsemigroup.supr_induction' Subsemigroup.iSup_induction'
+#align add_subsemigroup.supr_induction' AddSubsemigroup.iSup_induction'
 
 end Subsemigroup
 
Diff
@@ -109,9 +109,9 @@ theorem coe_supₛ_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (
 
 /- warning: subsemigroup.mem_sup_left -> Subsemigroup.mem_sup_left is a dubious translation:
 lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Subsemigroup.{u1} M _inst_1} {T : Subsemigroup.{u1} M _inst_1} {x : M}, (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x S) -> (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x (HasSup.sup.{u1} (Subsemigroup.{u1} M _inst_1) (SemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (Lattice.toSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toLattice.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1)))) S T))
+  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Subsemigroup.{u1} M _inst_1} {T : Subsemigroup.{u1} M _inst_1} {x : M}, (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x S) -> (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x (Sup.sup.{u1} (Subsemigroup.{u1} M _inst_1) (SemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (Lattice.toSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toLattice.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1)))) S T))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Subsemigroup.{u1} M _inst_1} {T : Subsemigroup.{u1} M _inst_1} {x : M}, (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x S) -> (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x (HasSup.sup.{u1} (Subsemigroup.{u1} M _inst_1) (SemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (Lattice.toSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toLattice.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)))) S T))
+  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Subsemigroup.{u1} M _inst_1} {T : Subsemigroup.{u1} M _inst_1} {x : M}, (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x S) -> (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x (Sup.sup.{u1} (Subsemigroup.{u1} M _inst_1) (SemilatticeSup.toSup.{u1} (Subsemigroup.{u1} M _inst_1) (Lattice.toSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toLattice.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)))) S T))
 Case conversion may be inaccurate. Consider using '#align subsemigroup.mem_sup_left Subsemigroup.mem_sup_leftₓ'. -/
 @[to_additive]
 theorem mem_sup_left {S T : Subsemigroup M} : ∀ {x : M}, x ∈ S → x ∈ S ⊔ T :=
@@ -121,9 +121,9 @@ theorem mem_sup_left {S T : Subsemigroup M} : ∀ {x : M}, x ∈ S → x ∈ S 
 
 /- warning: subsemigroup.mem_sup_right -> Subsemigroup.mem_sup_right is a dubious translation:
 lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Subsemigroup.{u1} M _inst_1} {T : Subsemigroup.{u1} M _inst_1} {x : M}, (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x T) -> (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x (HasSup.sup.{u1} (Subsemigroup.{u1} M _inst_1) (SemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (Lattice.toSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toLattice.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1)))) S T))
+  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Subsemigroup.{u1} M _inst_1} {T : Subsemigroup.{u1} M _inst_1} {x : M}, (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x T) -> (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x (Sup.sup.{u1} (Subsemigroup.{u1} M _inst_1) (SemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (Lattice.toSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toLattice.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1)))) S T))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Subsemigroup.{u1} M _inst_1} {T : Subsemigroup.{u1} M _inst_1} {x : M}, (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x T) -> (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x (HasSup.sup.{u1} (Subsemigroup.{u1} M _inst_1) (SemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (Lattice.toSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toLattice.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)))) S T))
+  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Subsemigroup.{u1} M _inst_1} {T : Subsemigroup.{u1} M _inst_1} {x : M}, (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x T) -> (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x (Sup.sup.{u1} (Subsemigroup.{u1} M _inst_1) (SemilatticeSup.toSup.{u1} (Subsemigroup.{u1} M _inst_1) (Lattice.toSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toLattice.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)))) S T))
 Case conversion may be inaccurate. Consider using '#align subsemigroup.mem_sup_right Subsemigroup.mem_sup_rightₓ'. -/
 @[to_additive]
 theorem mem_sup_right {S T : Subsemigroup M} : ∀ {x : M}, x ∈ T → x ∈ S ⊔ T :=
@@ -133,9 +133,9 @@ theorem mem_sup_right {S T : Subsemigroup M} : ∀ {x : M}, x ∈ T → x ∈ S
 
 /- warning: subsemigroup.mul_mem_sup -> Subsemigroup.mul_mem_sup is a dubious translation:
 lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Subsemigroup.{u1} M _inst_1} {T : Subsemigroup.{u1} M _inst_1} {x : M} {y : M}, (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x S) -> (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) y T) -> (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M _inst_1) x y) (HasSup.sup.{u1} (Subsemigroup.{u1} M _inst_1) (SemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (Lattice.toSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toLattice.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1)))) S T))
+  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Subsemigroup.{u1} M _inst_1} {T : Subsemigroup.{u1} M _inst_1} {x : M} {y : M}, (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) x S) -> (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) y T) -> (Membership.Mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.hasMem.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.setLike.{u1} M _inst_1)) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M _inst_1) x y) (Sup.sup.{u1} (Subsemigroup.{u1} M _inst_1) (SemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (Lattice.toSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toLattice.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.completeLattice.{u1} M _inst_1)))) S T))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Subsemigroup.{u1} M _inst_1} {T : Subsemigroup.{u1} M _inst_1} {x : M} {y : M}, (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x S) -> (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) y T) -> (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M _inst_1) x y) (HasSup.sup.{u1} (Subsemigroup.{u1} M _inst_1) (SemilatticeSup.toHasSup.{u1} (Subsemigroup.{u1} M _inst_1) (Lattice.toSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toLattice.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)))) S T))
+  forall {M : Type.{u1}} [_inst_1 : Mul.{u1} M] {S : Subsemigroup.{u1} M _inst_1} {T : Subsemigroup.{u1} M _inst_1} {x : M} {y : M}, (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) x S) -> (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) y T) -> (Membership.mem.{u1, u1} M (Subsemigroup.{u1} M _inst_1) (SetLike.instMembership.{u1, u1} (Subsemigroup.{u1} M _inst_1) M (Subsemigroup.instSetLikeSubsemigroup.{u1} M _inst_1)) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M _inst_1) x y) (Sup.sup.{u1} (Subsemigroup.{u1} M _inst_1) (SemilatticeSup.toSup.{u1} (Subsemigroup.{u1} M _inst_1) (Lattice.toSemilatticeSup.{u1} (Subsemigroup.{u1} M _inst_1) (CompleteLattice.toLattice.{u1} (Subsemigroup.{u1} M _inst_1) (Subsemigroup.instCompleteLatticeSubsemigroup.{u1} M _inst_1)))) S T))
 Case conversion may be inaccurate. Consider using '#align subsemigroup.mul_mem_sup Subsemigroup.mul_mem_supₓ'. -/
 @[to_additive]
 theorem mul_mem_sup {S T : Subsemigroup M} {x y : M} (hx : x ∈ S) (hy : y ∈ T) : x * y ∈ S ⊔ T :=

Changes in mathlib4

mathlib3
mathlib4
chore: remove unnecessary cdots (#12417)

These · are scoping when there is a single active goal.

These were found using a modification of the linter at #12339.

Diff
@@ -48,9 +48,9 @@ theorem mem_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤
   suffices x ∈ closure (⋃ i, (S i : Set M)) → ∃ i, x ∈ S i by
     simpa only [closure_iUnion, closure_eq (S _)] using this
   refine fun hx ↦ closure_induction hx (fun y hy ↦ mem_iUnion.mp hy) ?_
-  · rintro x y ⟨i, hi⟩ ⟨j, hj⟩
-    rcases hS i j with ⟨k, hki, hkj⟩
-    exact ⟨k, (S k).mul_mem (hki hi) (hkj hj)⟩
+  rintro x y ⟨i, hi⟩ ⟨j, hj⟩
+  rcases hS i j with ⟨k, hki, hkj⟩
+  exact ⟨k, (S k).mul_mem (hki hi) (hkj hj)⟩
 #align subsemigroup.mem_supr_of_directed Subsemigroup.mem_iSup_of_directed
 #align add_subsemigroup.mem_supr_of_directed AddSubsemigroup.mem_iSup_of_directed
 
chore(GroupTheory): rename induction arguments for Sub{semigroup,monoid,group} (#11461)

The additive version are still incorrectly named, but these can easily be tracked down later (#11462) by searching for to_additive (attr := elab_as_elim).

Diff
@@ -119,11 +119,11 @@ then it holds for all elements of the supremum of `S`. -/
 elements of `S i` for all `i`, and is preserved under addition, then it holds for all elements of
 the supremum of `S`."]
 theorem iSup_induction (S : ι → Subsemigroup M) {C : M → Prop} {x₁ : M} (hx₁ : x₁ ∈ ⨆ i, S i)
-    (hp : ∀ i, ∀ x₂ ∈ S i, C x₂) (hmul : ∀ x y, C x → C y → C (x * y)) : C x₁ := by
+    (mem : ∀ i, ∀ x₂ ∈ S i, C x₂) (mul : ∀ x y, C x → C y → C (x * y)) : C x₁ := by
   rw [iSup_eq_closure] at hx₁
-  refine' closure_induction hx₁ (fun x₂ hx₂ => _) hmul
+  refine' closure_induction hx₁ (fun x₂ hx₂ => _) mul
   obtain ⟨i, hi⟩ := Set.mem_iUnion.mp hx₂
-  exact hp _ _ hi
+  exact mem _ _ hi
 #align subsemigroup.supr_induction Subsemigroup.iSup_induction
 #align add_subsemigroup.supr_induction AddSubsemigroup.iSup_induction
 
@@ -131,15 +131,15 @@ theorem iSup_induction (S : ι → Subsemigroup M) {C : M → Prop} {x₁ : M} (
 @[to_additive (attr := elab_as_elim)
 "A dependent version of `AddSubsemigroup.iSup_induction`."]
 theorem iSup_induction' (S : ι → Subsemigroup M) {C : ∀ x, (x ∈ ⨆ i, S i) → Prop}
-    (hp : ∀ (i) (x) (hxS : x ∈ S i), C x (mem_iSup_of_mem i ‹_›))
-    (hmul : ∀ x y hx hy, C x hx → C y hy → C (x * y) (mul_mem ‹_› ‹_›)) {x₁ : M}
+    (mem : ∀ (i) (x) (hxS : x ∈ S i), C x (mem_iSup_of_mem i ‹_›))
+    (mul : ∀ x y hx hy, C x hx → C y hy → C (x * y) (mul_mem ‹_› ‹_›)) {x₁ : M}
     (hx₁ : x₁ ∈ ⨆ i, S i) : C x₁ hx₁ := by
   refine Exists.elim ?_ fun (hx₁' : x₁ ∈ ⨆ i, S i) (hc : C x₁ hx₁') => hc
   refine @iSup_induction _ _ _ S (fun x' => ∃ hx'', C x' hx'') _ hx₁
       (fun i x₂ hx₂ => ?_) fun x₃ y => ?_
-  · exact ⟨_, hp _ _ hx₂⟩
+  · exact ⟨_, mem _ _ hx₂⟩
   · rintro ⟨_, Cx⟩ ⟨_, Cy⟩
-    exact ⟨_, hmul _ _ _ _ Cx Cy⟩
+    exact ⟨_, mul _ _ _ _ Cx Cy⟩
 #align subsemigroup.supr_induction' Subsemigroup.iSup_induction'
 #align add_subsemigroup.supr_induction' AddSubsemigroup.iSup_induction'
 
chore(*): use ∀ s ⊆ t, _ etc (#9276)

Changes in this PR shouldn't change the public API. The only changes about ∃ x ∈ s, _ is inside a proof.

Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com>

Diff
@@ -119,7 +119,7 @@ then it holds for all elements of the supremum of `S`. -/
 elements of `S i` for all `i`, and is preserved under addition, then it holds for all elements of
 the supremum of `S`."]
 theorem iSup_induction (S : ι → Subsemigroup M) {C : M → Prop} {x₁ : M} (hx₁ : x₁ ∈ ⨆ i, S i)
-    (hp : ∀ (i) (x₂ : M) (_hxS : x₂ ∈ S i), C x₂) (hmul : ∀ x y, C x → C y → C (x * y)) : C x₁ := by
+    (hp : ∀ i, ∀ x₂ ∈ S i, C x₂) (hmul : ∀ x y, C x → C y → C (x * y)) : C x₁ := by
   rw [iSup_eq_closure] at hx₁
   refine' closure_induction hx₁ (fun x₂ hx₂ => _) hmul
   obtain ⟨i, hi⟩ := Set.mem_iUnion.mp hx₂
chore: golf all coe_iSup_of_directed (#8232)
Diff
@@ -44,10 +44,10 @@ namespace Subsemigroup
 @[to_additive]
 theorem mem_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤ ·) S) {x : M} :
     (x ∈ ⨆ i, S i) ↔ ∃ i, x ∈ S i := by
-  refine' ⟨_, fun ⟨i, hi⟩ => (SetLike.le_def.1 <| le_iSup S i) hi⟩
+  refine ⟨?_, fun ⟨i, hi⟩ ↦ le_iSup S i hi⟩
   suffices x ∈ closure (⋃ i, (S i : Set M)) → ∃ i, x ∈ S i by
     simpa only [closure_iUnion, closure_eq (S _)] using this
-  refine' fun hx => closure_induction hx (fun y hy => mem_iUnion.mp hy) _
+  refine fun hx ↦ closure_induction hx (fun y hy ↦ mem_iUnion.mp hy) ?_
   · rintro x y ⟨i, hi⟩ ⟨j, hj⟩
     rcases hS i j with ⟨k, hki, hkj⟩
     exact ⟨k, (S k).mul_mem (hki hi) (hkj hj)⟩
@@ -56,7 +56,7 @@ theorem mem_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤
 
 @[to_additive]
 theorem coe_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤ ·) S) :
-    ((⨆ i, S i : Subsemigroup M) : Set M) = ⋃ i, ↑(S i) :=
+    ((⨆ i, S i : Subsemigroup M) : Set M) = ⋃ i, S i :=
   Set.ext fun x => by simp [mem_iSup_of_directed hS]
 #align subsemigroup.coe_supr_of_directed Subsemigroup.coe_iSup_of_directed
 #align add_subsemigroup.coe_supr_of_directed AddSubsemigroup.coe_iSup_of_directed
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
@@ -29,7 +29,7 @@ stub and only provides rudimentary support.
 subsemigroup
 -/
 
-variable {ι : Sort _} {M A B : Type _}
+variable {ι : Sort*} {M A B : Type*}
 
 section NonAssoc
 
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,14 +2,11 @@
 Copyright (c) 2022 Jireh Loreaux. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Jireh Loreaux
-
-! This file was ported from Lean 3 source module group_theory.subsemigroup.membership
-! leanprover-community/mathlib commit 6cb77a8eaff0ddd100e87b1591c6d3ad319514ff
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.GroupTheory.Subsemigroup.Basic
 
+#align_import group_theory.subsemigroup.membership from "leanprover-community/mathlib"@"6cb77a8eaff0ddd100e87b1591c6d3ad319514ff"
+
 /-!
 # Subsemigroups: membership criteria
 
chore: fix upper/lowercase in comments (#4360)
  • Run a non-interactive version of fix-comments.py on all files.
  • Go through the diff and manually add/discard/edit chunks.
Diff
@@ -42,7 +42,7 @@ open Set
 
 namespace Subsemigroup
 
--- TODO: this section can be generalized to `[mul_mem_class B M] [complete_lattice B]`
+-- TODO: this section can be generalized to `[MulMemClass B M] [CompleteLattice B]`
 -- such that `complete_lattice.le` coincides with `set_like.le`
 @[to_additive]
 theorem mem_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤ ·) S) {x : M} :
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
@@ -17,8 +17,8 @@ In this file we prove various facts about membership in a subsemigroup.
 The intent is to mimic `GroupTheory/Submonoid/Membership`, but currently this file is mostly a
 stub and only provides rudimentary support.
 
-* `mem_supᵢ_of_directed`, `coe_supᵢ_of_directed`, `mem_supₛ_of_directed_on`,
-  `coe_supₛ_of_directed_on`: the supremum of a directed collection of subsemigroup is their union.
+* `mem_iSup_of_directed`, `coe_iSup_of_directed`, `mem_sSup_of_directed_on`,
+  `coe_sSup_of_directed_on`: the supremum of a directed collection of subsemigroup is their union.
 
 ## TODO
 
@@ -45,39 +45,39 @@ namespace Subsemigroup
 -- TODO: this section can be generalized to `[mul_mem_class B M] [complete_lattice B]`
 -- such that `complete_lattice.le` coincides with `set_like.le`
 @[to_additive]
-theorem mem_supᵢ_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤ ·) S) {x : M} :
+theorem mem_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤ ·) S) {x : M} :
     (x ∈ ⨆ i, S i) ↔ ∃ i, x ∈ S i := by
-  refine' ⟨_, fun ⟨i, hi⟩ => (SetLike.le_def.1 <| le_supᵢ S i) hi⟩
+  refine' ⟨_, fun ⟨i, hi⟩ => (SetLike.le_def.1 <| le_iSup S i) hi⟩
   suffices x ∈ closure (⋃ i, (S i : Set M)) → ∃ i, x ∈ S i by
-    simpa only [closure_unionᵢ, closure_eq (S _)] using this
-  refine' fun hx => closure_induction hx (fun y hy => mem_unionᵢ.mp hy) _
+    simpa only [closure_iUnion, closure_eq (S _)] using this
+  refine' fun hx => closure_induction hx (fun y hy => mem_iUnion.mp hy) _
   · rintro x y ⟨i, hi⟩ ⟨j, hj⟩
     rcases hS i j with ⟨k, hki, hkj⟩
     exact ⟨k, (S k).mul_mem (hki hi) (hkj hj)⟩
-#align subsemigroup.mem_supr_of_directed Subsemigroup.mem_supᵢ_of_directed
-#align add_subsemigroup.mem_supr_of_directed AddSubsemigroup.mem_supᵢ_of_directed
+#align subsemigroup.mem_supr_of_directed Subsemigroup.mem_iSup_of_directed
+#align add_subsemigroup.mem_supr_of_directed AddSubsemigroup.mem_iSup_of_directed
 
 @[to_additive]
-theorem coe_supᵢ_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤ ·) S) :
+theorem coe_iSup_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤ ·) S) :
     ((⨆ i, S i : Subsemigroup M) : Set M) = ⋃ i, ↑(S i) :=
-  Set.ext fun x => by simp [mem_supᵢ_of_directed hS]
-#align subsemigroup.coe_supr_of_directed Subsemigroup.coe_supᵢ_of_directed
-#align add_subsemigroup.coe_supr_of_directed AddSubsemigroup.coe_supᵢ_of_directed
+  Set.ext fun x => by simp [mem_iSup_of_directed hS]
+#align subsemigroup.coe_supr_of_directed Subsemigroup.coe_iSup_of_directed
+#align add_subsemigroup.coe_supr_of_directed AddSubsemigroup.coe_iSup_of_directed
 
 @[to_additive]
-theorem mem_supₛ_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (· ≤ ·) S) {x : M} :
-    x ∈ supₛ S ↔ ∃ s ∈ S, x ∈ s := by
-  simp only [supₛ_eq_supᵢ', mem_supᵢ_of_directed hS.directed_val, SetCoe.exists, Subtype.coe_mk,
+theorem mem_sSup_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (· ≤ ·) S) {x : M} :
+    x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s := by
+  simp only [sSup_eq_iSup', mem_iSup_of_directed hS.directed_val, SetCoe.exists, Subtype.coe_mk,
     exists_prop]
-#align subsemigroup.mem_Sup_of_directed_on Subsemigroup.mem_supₛ_of_directed_on
-#align add_subsemigroup.mem_Sup_of_directed_on AddSubsemigroup.mem_supₛ_of_directed_on
+#align subsemigroup.mem_Sup_of_directed_on Subsemigroup.mem_sSup_of_directed_on
+#align add_subsemigroup.mem_Sup_of_directed_on AddSubsemigroup.mem_sSup_of_directed_on
 
 @[to_additive]
-theorem coe_supₛ_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (· ≤ ·) S) :
-    (↑(supₛ S) : Set M) = ⋃ s ∈ S, ↑s :=
-  Set.ext fun x => by simp [mem_supₛ_of_directed_on hS]
-#align subsemigroup.coe_Sup_of_directed_on Subsemigroup.coe_supₛ_of_directed_on
-#align add_subsemigroup.coe_Sup_of_directed_on AddSubsemigroup.coe_supₛ_of_directed_on
+theorem coe_sSup_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (· ≤ ·) S) :
+    (↑(sSup S) : Set M) = ⋃ s ∈ S, ↑s :=
+  Set.ext fun x => by simp [mem_sSup_of_directed_on hS]
+#align subsemigroup.coe_Sup_of_directed_on Subsemigroup.coe_sSup_of_directed_on
+#align add_subsemigroup.coe_Sup_of_directed_on AddSubsemigroup.coe_sSup_of_directed_on
 
 @[to_additive]
 theorem mem_sup_left {S T : Subsemigroup M} : ∀ {x : M}, x ∈ S → x ∈ S ⊔ T := by
@@ -100,19 +100,19 @@ theorem mul_mem_sup {S T : Subsemigroup M} {x y : M} (hx : x ∈ S) (hy : y ∈
 #align add_subsemigroup.add_mem_sup AddSubsemigroup.add_mem_sup
 
 @[to_additive]
-theorem mem_supᵢ_of_mem {S : ι → Subsemigroup M} (i : ι) : ∀ {x : M}, x ∈ S i → x ∈ supᵢ S := by
-  have : S i ≤ supᵢ S := le_supᵢ _ _
+theorem mem_iSup_of_mem {S : ι → Subsemigroup M} (i : ι) : ∀ {x : M}, x ∈ S i → x ∈ iSup S := by
+  have : S i ≤ iSup S := le_iSup _ _
   tauto
-#align subsemigroup.mem_supr_of_mem Subsemigroup.mem_supᵢ_of_mem
-#align add_subsemigroup.mem_supr_of_mem AddSubsemigroup.mem_supᵢ_of_mem
+#align subsemigroup.mem_supr_of_mem Subsemigroup.mem_iSup_of_mem
+#align add_subsemigroup.mem_supr_of_mem AddSubsemigroup.mem_iSup_of_mem
 
 @[to_additive]
-theorem mem_supₛ_of_mem {S : Set (Subsemigroup M)} {s : Subsemigroup M} (hs : s ∈ S) :
-    ∀ {x : M}, x ∈ s → x ∈ supₛ S := by
-  have : s ≤ supₛ S := le_supₛ hs
+theorem mem_sSup_of_mem {S : Set (Subsemigroup M)} {s : Subsemigroup M} (hs : s ∈ S) :
+    ∀ {x : M}, x ∈ s → x ∈ sSup S := by
+  have : s ≤ sSup S := le_sSup hs
   tauto
-#align subsemigroup.mem_Sup_of_mem Subsemigroup.mem_supₛ_of_mem
-#align add_subsemigroup.mem_Sup_of_mem AddSubsemigroup.mem_supₛ_of_mem
+#align subsemigroup.mem_Sup_of_mem Subsemigroup.mem_sSup_of_mem
+#align add_subsemigroup.mem_Sup_of_mem AddSubsemigroup.mem_sSup_of_mem
 
 /-- An induction principle for elements of `⨆ i, S i`.
 If `C` holds all elements of `S i` for all `i`, and is preserved under multiplication,
@@ -121,30 +121,30 @@ then it holds for all elements of the supremum of `S`. -/
 "An induction principle for elements of `⨆ i, S i`. If `C` holds all
 elements of `S i` for all `i`, and is preserved under addition, then it holds for all elements of
 the supremum of `S`."]
-theorem supᵢ_induction (S : ι → Subsemigroup M) {C : M → Prop} {x₁ : M} (hx₁ : x₁ ∈ ⨆ i, S i)
+theorem iSup_induction (S : ι → Subsemigroup M) {C : M → Prop} {x₁ : M} (hx₁ : x₁ ∈ ⨆ i, S i)
     (hp : ∀ (i) (x₂ : M) (_hxS : x₂ ∈ S i), C x₂) (hmul : ∀ x y, C x → C y → C (x * y)) : C x₁ := by
-  rw [supᵢ_eq_closure] at hx₁
+  rw [iSup_eq_closure] at hx₁
   refine' closure_induction hx₁ (fun x₂ hx₂ => _) hmul
-  obtain ⟨i, hi⟩ := Set.mem_unionᵢ.mp hx₂
+  obtain ⟨i, hi⟩ := Set.mem_iUnion.mp hx₂
   exact hp _ _ hi
-#align subsemigroup.supr_induction Subsemigroup.supᵢ_induction
-#align add_subsemigroup.supr_induction AddSubsemigroup.supᵢ_induction
+#align subsemigroup.supr_induction Subsemigroup.iSup_induction
+#align add_subsemigroup.supr_induction AddSubsemigroup.iSup_induction
 
-/-- A dependent version of `Subsemigroup.supᵢ_induction`. -/
+/-- A dependent version of `Subsemigroup.iSup_induction`. -/
 @[to_additive (attr := elab_as_elim)
-"A dependent version of `AddSubsemigroup.supᵢ_induction`."]
-theorem supᵢ_induction' (S : ι → Subsemigroup M) {C : ∀ x, (x ∈ ⨆ i, S i) → Prop}
-    (hp : ∀ (i) (x) (hxS : x ∈ S i), C x (mem_supᵢ_of_mem i ‹_›))
+"A dependent version of `AddSubsemigroup.iSup_induction`."]
+theorem iSup_induction' (S : ι → Subsemigroup M) {C : ∀ x, (x ∈ ⨆ i, S i) → Prop}
+    (hp : ∀ (i) (x) (hxS : x ∈ S i), C x (mem_iSup_of_mem i ‹_›))
     (hmul : ∀ x y hx hy, C x hx → C y hy → C (x * y) (mul_mem ‹_› ‹_›)) {x₁ : M}
     (hx₁ : x₁ ∈ ⨆ i, S i) : C x₁ hx₁ := by
   refine Exists.elim ?_ fun (hx₁' : x₁ ∈ ⨆ i, S i) (hc : C x₁ hx₁') => hc
-  refine @supᵢ_induction _ _ _ S (fun x' => ∃ hx'', C x' hx'') _ hx₁
+  refine @iSup_induction _ _ _ S (fun x' => ∃ hx'', C x' hx'') _ hx₁
       (fun i x₂ hx₂ => ?_) fun x₃ y => ?_
   · exact ⟨_, hp _ _ hx₂⟩
   · rintro ⟨_, Cx⟩ ⟨_, Cy⟩
     exact ⟨_, hmul _ _ _ _ Cx Cy⟩
-#align subsemigroup.supr_induction' Subsemigroup.supᵢ_induction'
-#align add_subsemigroup.supr_induction' AddSubsemigroup.supᵢ_induction'
+#align subsemigroup.supr_induction' Subsemigroup.iSup_induction'
+#align add_subsemigroup.supr_induction' AddSubsemigroup.iSup_induction'
 
 end Subsemigroup
 
chore: add #align statements for to_additive decls (#1816)

Co-authored-by: Floris van Doorn <fpvdoorn@gmail.com>

Diff
@@ -55,12 +55,14 @@ theorem mem_supᵢ_of_directed {S : ι → Subsemigroup M} (hS : Directed (· 
     rcases hS i j with ⟨k, hki, hkj⟩
     exact ⟨k, (S k).mul_mem (hki hi) (hkj hj)⟩
 #align subsemigroup.mem_supr_of_directed Subsemigroup.mem_supᵢ_of_directed
+#align add_subsemigroup.mem_supr_of_directed AddSubsemigroup.mem_supᵢ_of_directed
 
 @[to_additive]
 theorem coe_supᵢ_of_directed {S : ι → Subsemigroup M} (hS : Directed (· ≤ ·) S) :
     ((⨆ i, S i : Subsemigroup M) : Set M) = ⋃ i, ↑(S i) :=
   Set.ext fun x => by simp [mem_supᵢ_of_directed hS]
 #align subsemigroup.coe_supr_of_directed Subsemigroup.coe_supᵢ_of_directed
+#align add_subsemigroup.coe_supr_of_directed AddSubsemigroup.coe_supᵢ_of_directed
 
 @[to_additive]
 theorem mem_supₛ_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (· ≤ ·) S) {x : M} :
@@ -68,35 +70,41 @@ theorem mem_supₛ_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (
   simp only [supₛ_eq_supᵢ', mem_supᵢ_of_directed hS.directed_val, SetCoe.exists, Subtype.coe_mk,
     exists_prop]
 #align subsemigroup.mem_Sup_of_directed_on Subsemigroup.mem_supₛ_of_directed_on
+#align add_subsemigroup.mem_Sup_of_directed_on AddSubsemigroup.mem_supₛ_of_directed_on
 
 @[to_additive]
 theorem coe_supₛ_of_directed_on {S : Set (Subsemigroup M)} (hS : DirectedOn (· ≤ ·) S) :
     (↑(supₛ S) : Set M) = ⋃ s ∈ S, ↑s :=
   Set.ext fun x => by simp [mem_supₛ_of_directed_on hS]
 #align subsemigroup.coe_Sup_of_directed_on Subsemigroup.coe_supₛ_of_directed_on
+#align add_subsemigroup.coe_Sup_of_directed_on AddSubsemigroup.coe_supₛ_of_directed_on
 
 @[to_additive]
 theorem mem_sup_left {S T : Subsemigroup M} : ∀ {x : M}, x ∈ S → x ∈ S ⊔ T := by
   have : S ≤ S ⊔ T := le_sup_left
   tauto
 #align subsemigroup.mem_sup_left Subsemigroup.mem_sup_left
+#align add_subsemigroup.mem_sup_left AddSubsemigroup.mem_sup_left
 
 @[to_additive]
 theorem mem_sup_right {S T : Subsemigroup M} : ∀ {x : M}, x ∈ T → x ∈ S ⊔ T := by
   have : T ≤ S ⊔ T := le_sup_right
   tauto
 #align subsemigroup.mem_sup_right Subsemigroup.mem_sup_right
+#align add_subsemigroup.mem_sup_right AddSubsemigroup.mem_sup_right
 
 @[to_additive]
 theorem mul_mem_sup {S T : Subsemigroup M} {x y : M} (hx : x ∈ S) (hy : y ∈ T) : x * y ∈ S ⊔ T :=
   mul_mem (mem_sup_left hx) (mem_sup_right hy)
 #align subsemigroup.mul_mem_sup Subsemigroup.mul_mem_sup
+#align add_subsemigroup.add_mem_sup AddSubsemigroup.add_mem_sup
 
 @[to_additive]
 theorem mem_supᵢ_of_mem {S : ι → Subsemigroup M} (i : ι) : ∀ {x : M}, x ∈ S i → x ∈ supᵢ S := by
   have : S i ≤ supᵢ S := le_supᵢ _ _
   tauto
 #align subsemigroup.mem_supr_of_mem Subsemigroup.mem_supᵢ_of_mem
+#align add_subsemigroup.mem_supr_of_mem AddSubsemigroup.mem_supᵢ_of_mem
 
 @[to_additive]
 theorem mem_supₛ_of_mem {S : Set (Subsemigroup M)} {s : Subsemigroup M} (hs : s ∈ S) :
@@ -104,6 +112,7 @@ theorem mem_supₛ_of_mem {S : Set (Subsemigroup M)} {s : Subsemigroup M} (hs :
   have : s ≤ supₛ S := le_supₛ hs
   tauto
 #align subsemigroup.mem_Sup_of_mem Subsemigroup.mem_supₛ_of_mem
+#align add_subsemigroup.mem_Sup_of_mem AddSubsemigroup.mem_supₛ_of_mem
 
 /-- An induction principle for elements of `⨆ i, S i`.
 If `C` holds all elements of `S i` for all `i`, and is preserved under multiplication,
@@ -119,6 +128,7 @@ theorem supᵢ_induction (S : ι → Subsemigroup M) {C : M → Prop} {x₁ : M}
   obtain ⟨i, hi⟩ := Set.mem_unionᵢ.mp hx₂
   exact hp _ _ hi
 #align subsemigroup.supr_induction Subsemigroup.supᵢ_induction
+#align add_subsemigroup.supr_induction AddSubsemigroup.supᵢ_induction
 
 /-- A dependent version of `Subsemigroup.supᵢ_induction`. -/
 @[to_additive (attr := elab_as_elim)
@@ -134,6 +144,7 @@ theorem supᵢ_induction' (S : ι → Subsemigroup M) {C : ∀ x, (x ∈ ⨆ i,
   · rintro ⟨_, Cx⟩ ⟨_, Cy⟩
     exact ⟨_, hmul _ _ _ _ Cx Cy⟩
 #align subsemigroup.supr_induction' Subsemigroup.supᵢ_induction'
+#align add_subsemigroup.supr_induction' AddSubsemigroup.supᵢ_induction'
 
 end Subsemigroup
 
feat: improve the way to_additive deals with attributes (#1314)
  • The new syntax for any attributes that need to be copied by to_additive is @[to_additive (attrs := simp, ext, simps)]
  • Adds the auxiliary declarations generated by the simp and simps attributes to the to_additive-dictionary.
  • Future issue: Does not yet translate auxiliary declarations for other attributes (including custom simp-attributes). In particular it's possible that norm_cast might generate some auxiliary declarations.
  • Fixes #950
  • Fixes #953
  • Fixes #1149
  • This moves the interaction between to_additive and simps from the Simps file to the toAdditive file for uniformity.
  • Make the same changes to @[reassoc]

Co-authored-by: Johan Commelin <johan@commelin.net> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -108,7 +108,8 @@ theorem mem_supₛ_of_mem {S : Set (Subsemigroup M)} {s : Subsemigroup M} (hs :
 /-- An induction principle for elements of `⨆ i, S i`.
 If `C` holds all elements of `S i` for all `i`, and is preserved under multiplication,
 then it holds for all elements of the supremum of `S`. -/
-@[elab_as_elim, to_additive "An induction principle for elements of `⨆ i, S i`. If `C` holds all
+@[to_additive (attr := elab_as_elim)
+"An induction principle for elements of `⨆ i, S i`. If `C` holds all
 elements of `S i` for all `i`, and is preserved under addition, then it holds for all elements of
 the supremum of `S`."]
 theorem supᵢ_induction (S : ι → Subsemigroup M) {C : M → Prop} {x₁ : M} (hx₁ : x₁ ∈ ⨆ i, S i)
@@ -120,7 +121,8 @@ theorem supᵢ_induction (S : ι → Subsemigroup M) {C : M → Prop} {x₁ : M}
 #align subsemigroup.supr_induction Subsemigroup.supᵢ_induction
 
 /-- A dependent version of `Subsemigroup.supᵢ_induction`. -/
-@[elab_as_elim, to_additive "A dependent version of `AddSubsemigroup.supᵢ_induction`."]
+@[to_additive (attr := elab_as_elim)
+"A dependent version of `AddSubsemigroup.supᵢ_induction`."]
 theorem supᵢ_induction' (S : ι → Subsemigroup M) {C : ∀ x, (x ∈ ⨆ i, S i) → Prop}
     (hp : ∀ (i) (x) (hxS : x ∈ S i), C x (mem_supᵢ_of_mem i ‹_›))
     (hmul : ∀ x y hx hy, C x hx → C y hy → C (x * y) (mul_mem ‹_› ‹_›)) {x₁ : M}
feat: port GroupTheory.Subsemigroup.Membership (#1318)

Co-authored-by: Moritz Firsching <firsching@google.com> Co-authored-by: Frédéric Dupuis <dupuisf@iro.umontreal.ca>

Dependencies 66

67 files ported (100.0%)
37467 lines ported (100.0%)

All dependencies are ported!