algebra.indicator_functionMathlib.Algebra.Function.Indicator

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)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -407,8 +407,7 @@ theorem mulIndicator_preimage_of_not_mem (s : Set α) (f : α → M) {t : Set M}
 @[to_additive]
 theorem mem_range_mulIndicator {r : M} {s : Set α} {f : α → M} :
     r ∈ range (mulIndicator s f) ↔ r = 1 ∧ s ≠ univ ∨ r ∈ f '' s := by
-  simp [mul_indicator, ite_eq_iff, exists_or, eq_univ_iff_forall, and_comm', or_comm',
-    @eq_comm _ r 1]
+  simp [mul_indicator, ite_eq_iff, exists_or, eq_univ_iff_forall, and_comm, or_comm, @eq_comm _ r 1]
 #align set.mem_range_mul_indicator Set.mem_range_mulIndicator
 #align set.mem_range_indicator Set.mem_range_indicator
 -/
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2020 Zhouhang Zhou. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Zhouhang Zhou
 -/
-import Algebra.Support
+import Algebra.Function.Support
 
 #align_import algebra.indicator_function from "leanprover-community/mathlib"@"327c3c0d9232d80e250dc8f65e7835b82b266ea5"
 
@@ -884,7 +884,7 @@ theorem mulIndicator_apply_le' (hfg : a ∈ s → f a ≤ y) (hg : a ∉ s → 1
 #align set.indicator_apply_le' Set.indicator_apply_le'
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (a «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (a «expr ∉ » s) -/
 #print Set.mulIndicator_le' /-
 @[to_additive]
 theorem mulIndicator_le' (hfg : ∀ a ∈ s, f a ≤ g a) (hg : ∀ (a) (_ : a ∉ s), 1 ≤ g a) :
@@ -902,7 +902,7 @@ theorem le_mulIndicator_apply {y} (hfg : a ∈ s → y ≤ g a) (hf : a ∉ s 
 #align set.le_indicator_apply Set.le_indicator_apply
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (a «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (a «expr ∉ » s) -/
 #print Set.le_mulIndicator /-
 @[to_additive]
 theorem le_mulIndicator (hfg : ∀ a ∈ s, f a ≤ g a) (hf : ∀ (a) (_ : a ∉ s), f a ≤ 1) :
@@ -968,7 +968,7 @@ theorem mulIndicator_le_mulIndicator_of_subset (h : s ⊆ t) (hf : ∀ a, 1 ≤
 #align set.indicator_le_indicator_of_subset Set.indicator_le_indicator_of_subset
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (x «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (x «expr ∉ » s) -/
 #print Set.mulIndicator_le_self' /-
 @[to_additive]
 theorem mulIndicator_le_self' (hf : ∀ (x) (_ : x ∉ s), 1 ≤ f x) : mulIndicator s f ≤ f :=
Diff
@@ -985,12 +985,12 @@ theorem mulIndicator_iUnion_apply {ι M} [CompleteLattice M] [One M] (h1 : (⊥
   by
   by_cases hx : x ∈ ⋃ i, s i
   · rw [mul_indicator_of_mem hx]
-    rw [mem_Union] at hx 
+    rw [mem_Union] at hx
     refine' le_antisymm _ (iSup_le fun i => mul_indicator_le_self' (fun x hx => h1 ▸ bot_le) x)
     rcases hx with ⟨i, hi⟩
     exact le_iSup_of_le i (ge_of_eq <| mul_indicator_of_mem hi _)
   · rw [mul_indicator_of_not_mem hx]
-    simp only [mem_Union, not_exists] at hx 
+    simp only [mem_Union, not_exists] at hx
     simp [hx, ← h1]
 #align set.mul_indicator_Union_apply Set.mulIndicator_iUnion_apply
 #align set.indicator_Union_apply Set.indicator_iUnion_apply
Diff
@@ -356,7 +356,10 @@ theorem mulIndicator_preimage (s : Set α) (f : α → M) (B : Set M) :
 #print Set.mulIndicator_one_preimage /-
 @[to_additive]
 theorem mulIndicator_one_preimage (s : Set M) :
-    t.mulIndicator 1 ⁻¹' s ∈ ({Set.univ, ∅} : Set (Set α)) := by classical
+    t.mulIndicator 1 ⁻¹' s ∈ ({Set.univ, ∅} : Set (Set α)) := by
+  classical
+  rw [mul_indicator_one', preimage_one]
+  split_ifs <;> simp
 #align set.mul_indicator_one_preimage Set.mulIndicator_one_preimage
 #align set.indicator_zero_preimage Set.indicator_zero_preimage
 -/
@@ -376,7 +379,10 @@ theorem mulIndicator_const_preimage_eq_union (U : Set α) (s : Set M) (a : M) [D
 #print Set.mulIndicator_const_preimage /-
 @[to_additive]
 theorem mulIndicator_const_preimage (U : Set α) (s : Set M) (a : M) :
-    (U.mulIndicator fun x => a) ⁻¹' s ∈ ({Set.univ, U, Uᶜ, ∅} : Set (Set α)) := by classical
+    (U.mulIndicator fun x => a) ⁻¹' s ∈ ({Set.univ, U, Uᶜ, ∅} : Set (Set α)) := by
+  classical
+  rw [mul_indicator_const_preimage_eq_union]
+  split_ifs <;> simp
 #align set.mul_indicator_const_preimage Set.mulIndicator_const_preimage
 #align set.indicator_const_preimage Set.indicator_const_preimage
 -/
@@ -755,7 +761,19 @@ theorem mulIndicator_prod (I : Finset ι) (s : Set α) (f : ι → α → M) :
 theorem mulIndicator_biUnion {ι} (I : Finset ι) (s : ι → Set α) {f : α → M} :
     (∀ i ∈ I, ∀ j ∈ I, i ≠ j → Disjoint (s i) (s j)) →
       mulIndicator (⋃ i ∈ I, s i) f = fun a => ∏ i in I, mulIndicator (s i) f a :=
-  by classical
+  by
+  classical
+  refine' Finset.induction_on I _ _
+  · intro h; funext; simp
+  intro a I haI ih hI
+  funext
+  rw [Finset.prod_insert haI, Finset.set_biUnion_insert, mul_indicator_union_of_not_mem_inter, ih _]
+  · intro i hi j hj hij
+    exact hI i (Finset.mem_insert_of_mem hi) j (Finset.mem_insert_of_mem hj) hij
+  simp only [not_exists, exists_prop, mem_Union, mem_inter_iff, not_and]
+  intro hx a' ha'
+  refine' disjoint_left.1 (hI a (Finset.mem_insert_self _ _) a' (Finset.mem_insert_of_mem ha') _) hx
+  exact (ne_of_mem_of_not_mem ha' haI).symm
 #align set.mul_indicator_finset_bUnion Finset.mulIndicator_biUnion
 #align set.indicator_finset_bUnion Finset.indicator_biUnion
 -/
@@ -820,7 +838,8 @@ theorem inter_indicator_one {s t : Set α} :
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print Set.indicator_prod_one /-
 theorem indicator_prod_one {s : Set α} {t : Set β} {x : α} {y : β} :
-    (s ×ˢ t).indicator (1 : _ → M) (x, y) = s.indicator 1 x * t.indicator 1 y := by classical
+    (s ×ˢ t).indicator (1 : _ → M) (x, y) = s.indicator 1 x * t.indicator 1 y := by
+  classical simp [indicator_apply, ← ite_and]
 #align set.indicator_prod_one Set.indicator_prod_one
 -/
 
@@ -828,13 +847,13 @@ variable (M) [Nontrivial M]
 
 #print Set.indicator_eq_zero_iff_not_mem /-
 theorem indicator_eq_zero_iff_not_mem {U : Set α} {x : α} : indicator U 1 x = (0 : M) ↔ x ∉ U := by
-  classical
+  classical simp [indicator_apply, imp_false]
 #align set.indicator_eq_zero_iff_not_mem Set.indicator_eq_zero_iff_not_mem
 -/
 
 #print Set.indicator_eq_one_iff_mem /-
 theorem indicator_eq_one_iff_mem {U : Set α} {x : α} : indicator U 1 x = (1 : M) ↔ x ∈ U := by
-  classical
+  classical simp [indicator_apply, imp_false]
 #align set.indicator_eq_one_iff_mem Set.indicator_eq_one_iff_mem
 -/
 
@@ -1017,6 +1036,12 @@ theorem indicator_le_indicator_nonneg {β} [LinearOrder β] [Zero β] (s : Set 
   by
   intro x
   classical
+  simp_rw [indicator_apply]
+  split_ifs
+  · exact le_rfl
+  · exact (not_le.mp h_1).le
+  · exact h_1
+  · exact le_rfl
 #align set.indicator_le_indicator_nonneg Set.indicator_le_indicator_nonneg
 -/
 
Diff
@@ -356,10 +356,7 @@ theorem mulIndicator_preimage (s : Set α) (f : α → M) (B : Set M) :
 #print Set.mulIndicator_one_preimage /-
 @[to_additive]
 theorem mulIndicator_one_preimage (s : Set M) :
-    t.mulIndicator 1 ⁻¹' s ∈ ({Set.univ, ∅} : Set (Set α)) := by
-  classical
-  rw [mul_indicator_one', preimage_one]
-  split_ifs <;> simp
+    t.mulIndicator 1 ⁻¹' s ∈ ({Set.univ, ∅} : Set (Set α)) := by classical
 #align set.mul_indicator_one_preimage Set.mulIndicator_one_preimage
 #align set.indicator_zero_preimage Set.indicator_zero_preimage
 -/
@@ -379,10 +376,7 @@ theorem mulIndicator_const_preimage_eq_union (U : Set α) (s : Set M) (a : M) [D
 #print Set.mulIndicator_const_preimage /-
 @[to_additive]
 theorem mulIndicator_const_preimage (U : Set α) (s : Set M) (a : M) :
-    (U.mulIndicator fun x => a) ⁻¹' s ∈ ({Set.univ, U, Uᶜ, ∅} : Set (Set α)) := by
-  classical
-  rw [mul_indicator_const_preimage_eq_union]
-  split_ifs <;> simp
+    (U.mulIndicator fun x => a) ⁻¹' s ∈ ({Set.univ, U, Uᶜ, ∅} : Set (Set α)) := by classical
 #align set.mul_indicator_const_preimage Set.mulIndicator_const_preimage
 #align set.indicator_const_preimage Set.indicator_const_preimage
 -/
@@ -761,19 +755,7 @@ theorem mulIndicator_prod (I : Finset ι) (s : Set α) (f : ι → α → M) :
 theorem mulIndicator_biUnion {ι} (I : Finset ι) (s : ι → Set α) {f : α → M} :
     (∀ i ∈ I, ∀ j ∈ I, i ≠ j → Disjoint (s i) (s j)) →
       mulIndicator (⋃ i ∈ I, s i) f = fun a => ∏ i in I, mulIndicator (s i) f a :=
-  by
-  classical
-  refine' Finset.induction_on I _ _
-  · intro h; funext; simp
-  intro a I haI ih hI
-  funext
-  rw [Finset.prod_insert haI, Finset.set_biUnion_insert, mul_indicator_union_of_not_mem_inter, ih _]
-  · intro i hi j hj hij
-    exact hI i (Finset.mem_insert_of_mem hi) j (Finset.mem_insert_of_mem hj) hij
-  simp only [not_exists, exists_prop, mem_Union, mem_inter_iff, not_and]
-  intro hx a' ha'
-  refine' disjoint_left.1 (hI a (Finset.mem_insert_self _ _) a' (Finset.mem_insert_of_mem ha') _) hx
-  exact (ne_of_mem_of_not_mem ha' haI).symm
+  by classical
 #align set.mul_indicator_finset_bUnion Finset.mulIndicator_biUnion
 #align set.indicator_finset_bUnion Finset.indicator_biUnion
 -/
@@ -838,8 +820,7 @@ theorem inter_indicator_one {s t : Set α} :
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print Set.indicator_prod_one /-
 theorem indicator_prod_one {s : Set α} {t : Set β} {x : α} {y : β} :
-    (s ×ˢ t).indicator (1 : _ → M) (x, y) = s.indicator 1 x * t.indicator 1 y := by
-  classical simp [indicator_apply, ← ite_and]
+    (s ×ˢ t).indicator (1 : _ → M) (x, y) = s.indicator 1 x * t.indicator 1 y := by classical
 #align set.indicator_prod_one Set.indicator_prod_one
 -/
 
@@ -847,13 +828,13 @@ variable (M) [Nontrivial M]
 
 #print Set.indicator_eq_zero_iff_not_mem /-
 theorem indicator_eq_zero_iff_not_mem {U : Set α} {x : α} : indicator U 1 x = (0 : M) ↔ x ∉ U := by
-  classical simp [indicator_apply, imp_false]
+  classical
 #align set.indicator_eq_zero_iff_not_mem Set.indicator_eq_zero_iff_not_mem
 -/
 
 #print Set.indicator_eq_one_iff_mem /-
 theorem indicator_eq_one_iff_mem {U : Set α} {x : α} : indicator U 1 x = (1 : M) ↔ x ∈ U := by
-  classical simp [indicator_apply, imp_false]
+  classical
 #align set.indicator_eq_one_iff_mem Set.indicator_eq_one_iff_mem
 -/
 
@@ -1036,12 +1017,6 @@ theorem indicator_le_indicator_nonneg {β} [LinearOrder β] [Zero β] (s : Set 
   by
   intro x
   classical
-  simp_rw [indicator_apply]
-  split_ifs
-  · exact le_rfl
-  · exact (not_le.mp h_1).le
-  · exact h_1
-  · exact le_rfl
 #align set.indicator_le_indicator_nonneg Set.indicator_le_indicator_nonneg
 -/
 
Diff
@@ -686,7 +686,7 @@ section CommMonoid
 
 variable [CommMonoid M]
 
-#print Set.prod_mulIndicator_subset_of_eq_one /-
+#print Finset.prod_mulIndicator_subset_of_eq_one /-
 /-- Consider a product of `g i (f i)` over a `finset`.  Suppose `g` is a
 function such as `pow`, which maps a second argument of `1` to
 `1`. Then if `f` is replaced by the corresponding multiplicative indicator
@@ -706,8 +706,8 @@ theorem prod_mulIndicator_subset_of_eq_one [One N] (f : α → N) (g : α → N
   · refine' fun i hi hn => _
     convert hg i
     exact mul_indicator_of_not_mem hn _
-#align set.prod_mul_indicator_subset_of_eq_one Set.prod_mulIndicator_subset_of_eq_one
-#align set.sum_indicator_subset_of_eq_zero Set.sum_indicator_subset_of_eq_zero
+#align set.prod_mul_indicator_subset_of_eq_one Finset.prod_mulIndicator_subset_of_eq_one
+#align set.sum_indicator_subset_of_eq_zero Finset.sum_indicator_subset_of_eq_zero
 -/
 
 /-- Consider a sum of `g i (f i)` over a `finset`. Suppose `g` is a
@@ -717,9 +717,9 @@ function such as multiplication, which maps a second argument of 0 to
 function `h`.)  Then if `f` is replaced by the corresponding indicator
 function, the `finset` may be replaced by a possibly larger `finset`
 without changing the value of the sum. -/
-add_decl_doc Set.sum_indicator_subset_of_eq_zero
+add_decl_doc Finset.sum_indicator_subset_of_eq_zero
 
-#print Set.prod_mulIndicator_subset /-
+#print Finset.prod_mulIndicator_subset /-
 /-- Taking the product of an indicator function over a possibly larger `finset` is the same as
 taking the original function over the original `finset`. -/
 @[to_additive
@@ -727,8 +727,8 @@ taking the original function over the original `finset`. -/
 theorem prod_mulIndicator_subset (f : α → M) {s t : Finset α} (h : s ⊆ t) :
     ∏ i in s, f i = ∏ i in t, mulIndicator (↑s) f i :=
   prod_mulIndicator_subset_of_eq_one _ (fun a b => b) h fun _ => rfl
-#align set.prod_mul_indicator_subset Set.prod_mulIndicator_subset
-#align set.sum_indicator_subset Set.sum_indicator_subset
+#align set.prod_mul_indicator_subset Finset.prod_mulIndicator_subset
+#align set.sum_indicator_subset Finset.sum_indicator_subset
 -/
 
 #print Finset.prod_mulIndicator_eq_prod_filter /-
@@ -747,18 +747,18 @@ theorem Finset.prod_mulIndicator_eq_prod_filter (s : Finset ι) (f : ι → α 
 #align finset.sum_indicator_eq_sum_filter Finset.sum_indicator_eq_sum_filter
 -/
 
-#print Set.mulIndicator_finset_prod /-
+#print Finset.mulIndicator_prod /-
 @[to_additive]
-theorem mulIndicator_finset_prod (I : Finset ι) (s : Set α) (f : ι → α → M) :
+theorem mulIndicator_prod (I : Finset ι) (s : Set α) (f : ι → α → M) :
     mulIndicator s (∏ i in I, f i) = ∏ i in I, mulIndicator s (f i) :=
   (mulIndicatorHom M s).map_prod _ _
-#align set.mul_indicator_finset_prod Set.mulIndicator_finset_prod
-#align set.indicator_finset_sum Set.indicator_finset_sum
+#align set.mul_indicator_finset_prod Finset.mulIndicator_prod
+#align set.indicator_finset_sum Finset.indicator_sum
 -/
 
-#print Set.mulIndicator_finset_biUnion /-
+#print Finset.mulIndicator_biUnion /-
 @[to_additive]
-theorem mulIndicator_finset_biUnion {ι} (I : Finset ι) (s : ι → Set α) {f : α → M} :
+theorem mulIndicator_biUnion {ι} (I : Finset ι) (s : ι → Set α) {f : α → M} :
     (∀ i ∈ I, ∀ j ∈ I, i ≠ j → Disjoint (s i) (s j)) →
       mulIndicator (⋃ i ∈ I, s i) f = fun a => ∏ i in I, mulIndicator (s i) f a :=
   by
@@ -774,18 +774,18 @@ theorem mulIndicator_finset_biUnion {ι} (I : Finset ι) (s : ι → Set α) {f
   intro hx a' ha'
   refine' disjoint_left.1 (hI a (Finset.mem_insert_self _ _) a' (Finset.mem_insert_of_mem ha') _) hx
   exact (ne_of_mem_of_not_mem ha' haI).symm
-#align set.mul_indicator_finset_bUnion Set.mulIndicator_finset_biUnion
-#align set.indicator_finset_bUnion Set.indicator_finset_biUnion
+#align set.mul_indicator_finset_bUnion Finset.mulIndicator_biUnion
+#align set.indicator_finset_bUnion Finset.indicator_biUnion
 -/
 
-#print Set.mulIndicator_finset_biUnion_apply /-
+#print Finset.mulIndicator_biUnion_apply /-
 @[to_additive]
-theorem mulIndicator_finset_biUnion_apply {ι} (I : Finset ι) (s : ι → Set α) {f : α → M}
+theorem mulIndicator_biUnion_apply {ι} (I : Finset ι) (s : ι → Set α) {f : α → M}
     (h : ∀ i ∈ I, ∀ j ∈ I, i ≠ j → Disjoint (s i) (s j)) (x : α) :
     mulIndicator (⋃ i ∈ I, s i) f x = ∏ i in I, mulIndicator (s i) f x := by
-  rw [Set.mulIndicator_finset_biUnion I s h]
-#align set.mul_indicator_finset_bUnion_apply Set.mulIndicator_finset_biUnion_apply
-#align set.indicator_finset_bUnion_apply Set.indicator_finset_biUnion_apply
+  rw [Finset.mulIndicator_biUnion I s h]
+#align set.mul_indicator_finset_bUnion_apply Finset.mulIndicator_biUnion_apply
+#align set.indicator_finset_bUnion_apply Finset.indicator_biUnion_apply
 -/
 
 end CommMonoid
Diff
@@ -998,9 +998,9 @@ theorem mulIndicator_iUnion_apply {ι M} [CompleteLattice M] [One M] (h1 : (⊥
 
 end Order
 
-section CanonicallyOrderedCommMonoid
+section CanonicallyOrderedAddCommMonoid
 
-variable [CanonicallyOrderedCommMonoid M]
+variable [CanonicallyOrderedAddCommMonoid M]
 
 #print Set.mulIndicator_le_self /-
 @[to_additive]
@@ -1028,7 +1028,7 @@ theorem mulIndicator_le {s : Set α} {f g : α → M} (hfg : ∀ a ∈ s, f a 
 #align set.indicator_le Set.indicator_le
 -/
 
-end CanonicallyOrderedCommMonoid
+end CanonicallyOrderedAddCommMonoid
 
 #print Set.indicator_le_indicator_nonneg /-
 theorem indicator_le_indicator_nonneg {β} [LinearOrder β] [Zero β] (s : Set α) (f : α → β) :
Diff
@@ -998,9 +998,9 @@ theorem mulIndicator_iUnion_apply {ι M} [CompleteLattice M] [One M] (h1 : (⊥
 
 end Order
 
-section CanonicallyOrderedMonoid
+section CanonicallyOrderedCommMonoid
 
-variable [CanonicallyOrderedMonoid M]
+variable [CanonicallyOrderedCommMonoid M]
 
 #print Set.mulIndicator_le_self /-
 @[to_additive]
@@ -1028,7 +1028,7 @@ theorem mulIndicator_le {s : Set α} {f g : α → M} (hfg : ∀ a ∈ s, f a 
 #align set.indicator_le Set.indicator_le
 -/
 
-end CanonicallyOrderedMonoid
+end CanonicallyOrderedCommMonoid
 
 #print Set.indicator_le_indicator_nonneg /-
 theorem indicator_le_indicator_nonneg {β} [LinearOrder β] [Zero β] (s : Set α) (f : α → β) :
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2020 Zhouhang Zhou. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Zhouhang Zhou
 -/
-import Mathbin.Algebra.Support
+import Algebra.Support
 
 #align_import algebra.indicator_function from "leanprover-community/mathlib"@"327c3c0d9232d80e250dc8f65e7835b82b266ea5"
 
@@ -884,7 +884,7 @@ theorem mulIndicator_apply_le' (hfg : a ∈ s → f a ≤ y) (hg : a ∉ s → 1
 #align set.indicator_apply_le' Set.indicator_apply_le'
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (a «expr ∉ » s) -/
 #print Set.mulIndicator_le' /-
 @[to_additive]
 theorem mulIndicator_le' (hfg : ∀ a ∈ s, f a ≤ g a) (hg : ∀ (a) (_ : a ∉ s), 1 ≤ g a) :
@@ -902,7 +902,7 @@ theorem le_mulIndicator_apply {y} (hfg : a ∈ s → y ≤ g a) (hf : a ∉ s 
 #align set.le_indicator_apply Set.le_indicator_apply
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (a «expr ∉ » s) -/
 #print Set.le_mulIndicator /-
 @[to_additive]
 theorem le_mulIndicator (hfg : ∀ a ∈ s, f a ≤ g a) (hf : ∀ (a) (_ : a ∉ s), f a ≤ 1) :
@@ -968,7 +968,7 @@ theorem mulIndicator_le_mulIndicator_of_subset (h : s ⊆ t) (hf : ∀ a, 1 ≤
 #align set.indicator_le_indicator_of_subset Set.indicator_le_indicator_of_subset
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (x «expr ∉ » s) -/
 #print Set.mulIndicator_le_self' /-
 @[to_additive]
 theorem mulIndicator_le_self' (hf : ∀ (x) (_ : x ∉ s), 1 ≤ f x) : mulIndicator s f ≤ f :=
Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2020 Zhouhang Zhou. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Zhouhang Zhou
-
-! This file was ported from Lean 3 source module algebra.indicator_function
-! leanprover-community/mathlib commit 327c3c0d9232d80e250dc8f65e7835b82b266ea5
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Algebra.Support
 
+#align_import algebra.indicator_function from "leanprover-community/mathlib"@"327c3c0d9232d80e250dc8f65e7835b82b266ea5"
+
 /-!
 # Indicator function
 
@@ -887,7 +884,7 @@ theorem mulIndicator_apply_le' (hfg : a ∈ s → f a ≤ y) (hg : a ∉ s → 1
 #align set.indicator_apply_le' Set.indicator_apply_le'
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (a «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ∉ » s) -/
 #print Set.mulIndicator_le' /-
 @[to_additive]
 theorem mulIndicator_le' (hfg : ∀ a ∈ s, f a ≤ g a) (hg : ∀ (a) (_ : a ∉ s), 1 ≤ g a) :
@@ -905,7 +902,7 @@ theorem le_mulIndicator_apply {y} (hfg : a ∈ s → y ≤ g a) (hf : a ∉ s 
 #align set.le_indicator_apply Set.le_indicator_apply
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (a «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ∉ » s) -/
 #print Set.le_mulIndicator /-
 @[to_additive]
 theorem le_mulIndicator (hfg : ∀ a ∈ s, f a ≤ g a) (hf : ∀ (a) (_ : a ∉ s), f a ≤ 1) :
@@ -971,7 +968,7 @@ theorem mulIndicator_le_mulIndicator_of_subset (h : s ⊆ t) (hf : ∀ a, 1 ≤
 #align set.indicator_le_indicator_of_subset Set.indicator_le_indicator_of_subset
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (x «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x «expr ∉ » s) -/
 #print Set.mulIndicator_le_self' /-
 @[to_additive]
 theorem mulIndicator_le_self' (hf : ∀ (x) (_ : x ∉ s), 1 ≤ f x) : mulIndicator s f ≤ f :=
Diff
@@ -69,32 +69,41 @@ noncomputable def mulIndicator (s : Set α) (f : α → M) : α → M
 #align set.indicator Set.indicator
 -/
 
+#print Set.piecewise_eq_mulIndicator /-
 @[simp, to_additive]
 theorem piecewise_eq_mulIndicator [DecidablePred (· ∈ s)] : s.piecewise f 1 = s.mulIndicator f :=
   funext fun x => @if_congr _ _ _ _ (id _) _ _ _ _ Iff.rfl rfl rfl
 #align set.piecewise_eq_mul_indicator Set.piecewise_eq_mulIndicator
 #align set.piecewise_eq_indicator Set.piecewise_eq_indicator
+-/
 
+#print Set.mulIndicator_apply /-
 @[to_additive]
 theorem mulIndicator_apply (s : Set α) (f : α → M) (a : α) [Decidable (a ∈ s)] :
     mulIndicator s f a = if a ∈ s then f a else 1 := by convert rfl
 #align set.mul_indicator_apply Set.mulIndicator_apply
 #align set.indicator_apply Set.indicator_apply
+-/
 
+#print Set.mulIndicator_of_mem /-
 @[simp, to_additive]
 theorem mulIndicator_of_mem (h : a ∈ s) (f : α → M) : mulIndicator s f a = f a :=
   letI := Classical.dec (a ∈ s)
   if_pos h
 #align set.mul_indicator_of_mem Set.mulIndicator_of_mem
 #align set.indicator_of_mem Set.indicator_of_mem
+-/
 
+#print Set.mulIndicator_of_not_mem /-
 @[simp, to_additive]
 theorem mulIndicator_of_not_mem (h : a ∉ s) (f : α → M) : mulIndicator s f a = 1 :=
   letI := Classical.dec (a ∈ s)
   if_neg h
 #align set.mul_indicator_of_not_mem Set.mulIndicator_of_not_mem
 #align set.indicator_of_not_mem Set.indicator_of_not_mem
+-/
 
+#print Set.mulIndicator_eq_one_or_self /-
 @[to_additive]
 theorem mulIndicator_eq_one_or_self (s : Set α) (f : α → M) (a : α) :
     mulIndicator s f a = 1 ∨ mulIndicator s f a = f a :=
@@ -104,6 +113,7 @@ theorem mulIndicator_eq_one_or_self (s : Set α) (f : α → M) (a : α) :
   · exact Or.inl (mul_indicator_of_not_mem h f)
 #align set.mul_indicator_eq_one_or_self Set.mulIndicator_eq_one_or_self
 #align set.indicator_eq_zero_or_self Set.indicator_eq_zero_or_self
+-/
 
 #print Set.mulIndicator_apply_eq_self /-
 @[simp, to_additive]
@@ -114,17 +124,21 @@ theorem mulIndicator_apply_eq_self : s.mulIndicator f a = f a ↔ a ∉ s → f
 #align set.indicator_apply_eq_self Set.indicator_apply_eq_self
 -/
 
+#print Set.mulIndicator_eq_self /-
 @[simp, to_additive]
 theorem mulIndicator_eq_self : s.mulIndicator f = f ↔ mulSupport f ⊆ s := by
   simp only [funext_iff, subset_def, mem_mul_support, mul_indicator_apply_eq_self, not_imp_comm]
 #align set.mul_indicator_eq_self Set.mulIndicator_eq_self
 #align set.indicator_eq_self Set.indicator_eq_self
+-/
 
+#print Set.mulIndicator_eq_self_of_superset /-
 @[to_additive]
 theorem mulIndicator_eq_self_of_superset (h1 : s.mulIndicator f = f) (h2 : s ⊆ t) :
     t.mulIndicator f = f := by rw [mul_indicator_eq_self] at h1 ⊢; exact subset.trans h1 h2
 #align set.mul_indicator_eq_self_of_superset Set.mulIndicator_eq_self_of_superset
 #align set.indicator_eq_self_of_superset Set.indicator_eq_self_of_superset
+-/
 
 #print Set.mulIndicator_apply_eq_one /-
 @[simp, to_additive]
@@ -135,31 +149,39 @@ theorem mulIndicator_apply_eq_one : mulIndicator s f a = 1 ↔ a ∈ s → f a =
 #align set.indicator_apply_eq_zero Set.indicator_apply_eq_zero
 -/
 
+#print Set.mulIndicator_eq_one /-
 @[simp, to_additive]
 theorem mulIndicator_eq_one : (mulIndicator s f = fun x => 1) ↔ Disjoint (mulSupport f) s := by
   simp only [funext_iff, mul_indicator_apply_eq_one, Set.disjoint_left, mem_mul_support,
     not_imp_not]
 #align set.mul_indicator_eq_one Set.mulIndicator_eq_one
 #align set.indicator_eq_zero Set.indicator_eq_zero
+-/
 
+#print Set.mulIndicator_eq_one' /-
 @[simp, to_additive]
 theorem mulIndicator_eq_one' : mulIndicator s f = 1 ↔ Disjoint (mulSupport f) s :=
   mulIndicator_eq_one
 #align set.mul_indicator_eq_one' Set.mulIndicator_eq_one'
 #align set.indicator_eq_zero' Set.indicator_eq_zero'
+-/
 
+#print Set.mulIndicator_apply_ne_one /-
 @[to_additive]
 theorem mulIndicator_apply_ne_one {a : α} : s.mulIndicator f a ≠ 1 ↔ a ∈ s ∩ mulSupport f := by
   simp only [Ne.def, mul_indicator_apply_eq_one, not_imp, mem_inter_iff, mem_mul_support]
 #align set.mul_indicator_apply_ne_one Set.mulIndicator_apply_ne_one
 #align set.indicator_apply_ne_zero Set.indicator_apply_ne_zero
+-/
 
+#print Set.mulSupport_mulIndicator /-
 @[simp, to_additive]
 theorem mulSupport_mulIndicator :
     Function.mulSupport (s.mulIndicator f) = s ∩ Function.mulSupport f :=
   ext fun x => by simp [Function.mem_mulSupport, mul_indicator_apply_eq_one]
 #align set.mul_support_mul_indicator Set.mulSupport_mulIndicator
 #align set.support_indicator Set.support_indicator
+-/
 
 #print Set.mem_of_mulIndicator_ne_one /-
 /-- If a multiplicative indicator function is not equal to `1` at a point, then that point is in the
@@ -172,22 +194,28 @@ theorem mem_of_mulIndicator_ne_one (h : mulIndicator s f a ≠ 1) : a ∈ s :=
 #align set.mem_of_indicator_ne_zero Set.mem_of_indicator_ne_zero
 -/
 
+#print Set.eqOn_mulIndicator /-
 @[to_additive]
 theorem eqOn_mulIndicator : EqOn (mulIndicator s f) f s := fun x hx => mulIndicator_of_mem hx f
 #align set.eq_on_mul_indicator Set.eqOn_mulIndicator
 #align set.eq_on_indicator Set.eqOn_indicator
+-/
 
+#print Set.mulSupport_mulIndicator_subset /-
 @[to_additive]
 theorem mulSupport_mulIndicator_subset : mulSupport (s.mulIndicator f) ⊆ s := fun x hx =>
   hx.imp_symm fun h => mulIndicator_of_not_mem h f
 #align set.mul_support_mul_indicator_subset Set.mulSupport_mulIndicator_subset
 #align set.support_indicator_subset Set.support_indicator_subset
+-/
 
+#print Set.mulIndicator_mulSupport /-
 @[simp, to_additive]
 theorem mulIndicator_mulSupport : mulIndicator (mulSupport f) f = f :=
   mulIndicator_eq_self.2 Subset.rfl
 #align set.mul_indicator_mul_support Set.mulIndicator_mulSupport
 #align set.indicator_support Set.indicator_support
+-/
 
 #print Set.mulIndicator_range_comp /-
 @[simp, to_additive]
@@ -199,46 +227,59 @@ theorem mulIndicator_range_comp {ι : Sort _} (f : ι → α) (g : α → M) :
 #align set.indicator_range_comp Set.indicator_range_comp
 -/
 
+#print Set.mulIndicator_congr /-
 @[to_additive]
 theorem mulIndicator_congr (h : EqOn f g s) : mulIndicator s f = mulIndicator s g :=
   funext fun x => by simp only [mul_indicator]; split_ifs; · exact h h_1; rfl
 #align set.mul_indicator_congr Set.mulIndicator_congr
 #align set.indicator_congr Set.indicator_congr
+-/
 
+#print Set.mulIndicator_univ /-
 @[simp, to_additive]
 theorem mulIndicator_univ (f : α → M) : mulIndicator (univ : Set α) f = f :=
   mulIndicator_eq_self.2 <| subset_univ _
 #align set.mul_indicator_univ Set.mulIndicator_univ
 #align set.indicator_univ Set.indicator_univ
+-/
 
+#print Set.mulIndicator_empty /-
 @[simp, to_additive]
 theorem mulIndicator_empty (f : α → M) : mulIndicator (∅ : Set α) f = fun a => 1 :=
   mulIndicator_eq_one.2 <| disjoint_empty _
 #align set.mul_indicator_empty Set.mulIndicator_empty
 #align set.indicator_empty Set.indicator_empty
+-/
 
+#print Set.mulIndicator_empty' /-
 @[to_additive]
 theorem mulIndicator_empty' (f : α → M) : mulIndicator (∅ : Set α) f = 1 :=
   mulIndicator_empty f
 #align set.mul_indicator_empty' Set.mulIndicator_empty'
 #align set.indicator_empty' Set.indicator_empty'
+-/
 
 variable (M)
 
+#print Set.mulIndicator_one /-
 @[simp, to_additive]
 theorem mulIndicator_one (s : Set α) : (mulIndicator s fun x => (1 : M)) = fun x => (1 : M) :=
   mulIndicator_eq_one.2 <| by simp only [mul_support_one, empty_disjoint]
 #align set.mul_indicator_one Set.mulIndicator_one
 #align set.indicator_zero Set.indicator_zero
+-/
 
+#print Set.mulIndicator_one' /-
 @[simp, to_additive]
 theorem mulIndicator_one' {s : Set α} : s.mulIndicator (1 : α → M) = 1 :=
   mulIndicator_one M s
 #align set.mul_indicator_one' Set.mulIndicator_one'
 #align set.indicator_zero' Set.indicator_zero'
+-/
 
 variable {M}
 
+#print Set.mulIndicator_mulIndicator /-
 @[to_additive]
 theorem mulIndicator_mulIndicator (s t : Set α) (f : α → M) :
     mulIndicator s (mulIndicator t f) = mulIndicator (s ∩ t) f :=
@@ -246,34 +287,43 @@ theorem mulIndicator_mulIndicator (s t : Set α) (f : α → M) :
     repeat' simp_all (config := { contextual := true })
 #align set.mul_indicator_mul_indicator Set.mulIndicator_mulIndicator
 #align set.indicator_indicator Set.indicator_indicator
+-/
 
+#print Set.mulIndicator_inter_mulSupport /-
 @[simp, to_additive]
 theorem mulIndicator_inter_mulSupport (s : Set α) (f : α → M) :
     mulIndicator (s ∩ mulSupport f) f = mulIndicator s f := by
   rw [← mul_indicator_mul_indicator, mul_indicator_mul_support]
 #align set.mul_indicator_inter_mul_support Set.mulIndicator_inter_mulSupport
 #align set.indicator_inter_support Set.indicator_inter_support
+-/
 
+#print Set.comp_mulIndicator /-
 @[to_additive]
 theorem comp_mulIndicator (h : M → β) (f : α → M) {s : Set α} {x : α} [DecidablePred (· ∈ s)] :
     h (s.mulIndicator f x) = s.piecewise (h ∘ f) (const α (h 1)) x := by
   letI := Classical.decPred (· ∈ s) <;> convert s.apply_piecewise f (const α 1) fun _ => h
 #align set.comp_mul_indicator Set.comp_mulIndicator
 #align set.comp_indicator Set.comp_indicator
+-/
 
+#print Set.mulIndicator_comp_right /-
 @[to_additive]
 theorem mulIndicator_comp_right {s : Set α} (f : β → α) {g : α → M} {x : β} :
     mulIndicator (f ⁻¹' s) (g ∘ f) x = mulIndicator s g (f x) := by simp only [mul_indicator];
   split_ifs <;> rfl
 #align set.mul_indicator_comp_right Set.mulIndicator_comp_right
 #align set.indicator_comp_right Set.indicator_comp_right
+-/
 
+#print Set.mulIndicator_image /-
 @[to_additive]
 theorem mulIndicator_image {s : Set α} {f : β → M} {g : α → β} (hg : Injective g) {x : α} :
     mulIndicator (g '' s) f (g x) = mulIndicator s (f ∘ g) x := by
   rw [← mul_indicator_comp_right, preimage_image_eq _ hg]
 #align set.mul_indicator_image Set.mulIndicator_image
 #align set.indicator_image Set.indicator_image
+-/
 
 #print Set.mulIndicator_comp_of_one /-
 @[to_additive]
@@ -296,6 +346,7 @@ theorem comp_mulIndicator_const (c : M) (f : M → N) (hf : f 1 = 1) :
 #align set.comp_indicator_const Set.comp_indicator_const
 -/
 
+#print Set.mulIndicator_preimage /-
 @[to_additive]
 theorem mulIndicator_preimage (s : Set α) (f : α → M) (B : Set M) :
     mulIndicator s f ⁻¹' B = s.ite (f ⁻¹' B) (1 ⁻¹' B) :=
@@ -303,6 +354,7 @@ theorem mulIndicator_preimage (s : Set α) (f : α → M) (B : Set M) :
   piecewise_preimage s f 1 B
 #align set.mul_indicator_preimage Set.mulIndicator_preimage
 #align set.indicator_preimage Set.indicator_preimage
+-/
 
 #print Set.mulIndicator_one_preimage /-
 @[to_additive]
@@ -315,6 +367,7 @@ theorem mulIndicator_one_preimage (s : Set M) :
 #align set.indicator_zero_preimage Set.indicator_zero_preimage
 -/
 
+#print Set.mulIndicator_const_preimage_eq_union /-
 @[to_additive]
 theorem mulIndicator_const_preimage_eq_union (U : Set α) (s : Set M) (a : M) [Decidable (a ∈ s)]
     [Decidable ((1 : M) ∈ s)] :
@@ -324,7 +377,9 @@ theorem mulIndicator_const_preimage_eq_union (U : Set α) (s : Set M) (a : M) [D
   split_ifs <;> simp [← compl_eq_univ_diff]
 #align set.mul_indicator_const_preimage_eq_union Set.mulIndicator_const_preimage_eq_union
 #align set.indicator_const_preimage_eq_union Set.indicator_const_preimage_eq_union
+-/
 
+#print Set.mulIndicator_const_preimage /-
 @[to_additive]
 theorem mulIndicator_const_preimage (U : Set α) (s : Set M) (a : M) :
     (U.mulIndicator fun x => a) ⁻¹' s ∈ ({Set.univ, U, Uᶜ, ∅} : Set (Set α)) := by
@@ -333,19 +388,25 @@ theorem mulIndicator_const_preimage (U : Set α) (s : Set M) (a : M) :
   split_ifs <;> simp
 #align set.mul_indicator_const_preimage Set.mulIndicator_const_preimage
 #align set.indicator_const_preimage Set.indicator_const_preimage
+-/
 
+#print Set.indicator_one_preimage /-
 theorem indicator_one_preimage [Zero M] (U : Set α) (s : Set M) :
     U.indicator 1 ⁻¹' s ∈ ({Set.univ, U, Uᶜ, ∅} : Set (Set α)) :=
   indicator_const_preimage _ _ 1
 #align set.indicator_one_preimage Set.indicator_one_preimage
+-/
 
+#print Set.mulIndicator_preimage_of_not_mem /-
 @[to_additive]
 theorem mulIndicator_preimage_of_not_mem (s : Set α) (f : α → M) {t : Set M} (ht : (1 : M) ∉ t) :
     mulIndicator s f ⁻¹' t = f ⁻¹' t ∩ s := by
   simp [mul_indicator_preimage, Pi.one_def, Set.preimage_const_of_not_mem ht]
 #align set.mul_indicator_preimage_of_not_mem Set.mulIndicator_preimage_of_not_mem
 #align set.indicator_preimage_of_not_mem Set.indicator_preimage_of_not_mem
+-/
 
+#print Set.mem_range_mulIndicator /-
 @[to_additive]
 theorem mem_range_mulIndicator {r : M} {s : Set α} {f : α → M} :
     r ∈ range (mulIndicator s f) ↔ r = 1 ∧ s ≠ univ ∨ r ∈ f '' s := by
@@ -353,6 +414,7 @@ theorem mem_range_mulIndicator {r : M} {s : Set α} {f : α → M} :
     @eq_comm _ r 1]
 #align set.mem_range_mul_indicator Set.mem_range_mulIndicator
 #align set.mem_range_indicator Set.mem_range_indicator
+-/
 
 #print Set.mulIndicator_rel_mulIndicator /-
 @[to_additive]
@@ -369,76 +431,97 @@ section Monoid
 
 variable [MulOneClass M] {s t : Set α} {f g : α → M} {a : α}
 
+#print Set.mulIndicator_union_mul_inter_apply /-
 @[to_additive]
 theorem mulIndicator_union_mul_inter_apply (f : α → M) (s t : Set α) (a : α) :
     mulIndicator (s ∪ t) f a * mulIndicator (s ∩ t) f a = mulIndicator s f a * mulIndicator t f a :=
   by by_cases hs : a ∈ s <;> by_cases ht : a ∈ t <;> simp [*]
 #align set.mul_indicator_union_mul_inter_apply Set.mulIndicator_union_mul_inter_apply
 #align set.indicator_union_add_inter_apply Set.indicator_union_add_inter_apply
+-/
 
+#print Set.mulIndicator_union_mul_inter /-
 @[to_additive]
 theorem mulIndicator_union_mul_inter (f : α → M) (s t : Set α) :
     mulIndicator (s ∪ t) f * mulIndicator (s ∩ t) f = mulIndicator s f * mulIndicator t f :=
   funext <| mulIndicator_union_mul_inter_apply f s t
 #align set.mul_indicator_union_mul_inter Set.mulIndicator_union_mul_inter
 #align set.indicator_union_add_inter Set.indicator_union_add_inter
+-/
 
+#print Set.mulIndicator_union_of_not_mem_inter /-
 @[to_additive]
 theorem mulIndicator_union_of_not_mem_inter (h : a ∉ s ∩ t) (f : α → M) :
     mulIndicator (s ∪ t) f a = mulIndicator s f a * mulIndicator t f a := by
   rw [← mul_indicator_union_mul_inter_apply f s t, mul_indicator_of_not_mem h, mul_one]
 #align set.mul_indicator_union_of_not_mem_inter Set.mulIndicator_union_of_not_mem_inter
 #align set.indicator_union_of_not_mem_inter Set.indicator_union_of_not_mem_inter
+-/
 
+#print Set.mulIndicator_union_of_disjoint /-
 @[to_additive]
 theorem mulIndicator_union_of_disjoint (h : Disjoint s t) (f : α → M) :
     mulIndicator (s ∪ t) f = fun a => mulIndicator s f a * mulIndicator t f a :=
   funext fun a => mulIndicator_union_of_not_mem_inter (fun ha => h.le_bot ha) _
 #align set.mul_indicator_union_of_disjoint Set.mulIndicator_union_of_disjoint
 #align set.indicator_union_of_disjoint Set.indicator_union_of_disjoint
+-/
 
+#print Set.mulIndicator_mul /-
 @[to_additive]
 theorem mulIndicator_mul (s : Set α) (f g : α → M) :
     (mulIndicator s fun a => f a * g a) = fun a => mulIndicator s f a * mulIndicator s g a := by
   funext; simp only [mul_indicator]; split_ifs; · rfl; rw [mul_one]
 #align set.mul_indicator_mul Set.mulIndicator_mul
 #align set.indicator_add Set.indicator_add
+-/
 
+#print Set.mulIndicator_mul' /-
 @[to_additive]
 theorem mulIndicator_mul' (s : Set α) (f g : α → M) :
     mulIndicator s (f * g) = mulIndicator s f * mulIndicator s g :=
   mulIndicator_mul s f g
 #align set.mul_indicator_mul' Set.mulIndicator_mul'
 #align set.indicator_add' Set.indicator_add'
+-/
 
+#print Set.mulIndicator_compl_mul_self_apply /-
 @[simp, to_additive]
 theorem mulIndicator_compl_mul_self_apply (s : Set α) (f : α → M) (a : α) :
     mulIndicator (sᶜ) f a * mulIndicator s f a = f a :=
   by_cases (fun ha : a ∈ s => by simp [ha]) fun ha => by simp [ha]
 #align set.mul_indicator_compl_mul_self_apply Set.mulIndicator_compl_mul_self_apply
 #align set.indicator_compl_add_self_apply Set.indicator_compl_add_self_apply
+-/
 
+#print Set.mulIndicator_compl_mul_self /-
 @[simp, to_additive]
 theorem mulIndicator_compl_mul_self (s : Set α) (f : α → M) :
     mulIndicator (sᶜ) f * mulIndicator s f = f :=
   funext <| mulIndicator_compl_mul_self_apply s f
 #align set.mul_indicator_compl_mul_self Set.mulIndicator_compl_mul_self
 #align set.indicator_compl_add_self Set.indicator_compl_add_self
+-/
 
+#print Set.mulIndicator_self_mul_compl_apply /-
 @[simp, to_additive]
 theorem mulIndicator_self_mul_compl_apply (s : Set α) (f : α → M) (a : α) :
     mulIndicator s f a * mulIndicator (sᶜ) f a = f a :=
   by_cases (fun ha : a ∈ s => by simp [ha]) fun ha => by simp [ha]
 #align set.mul_indicator_self_mul_compl_apply Set.mulIndicator_self_mul_compl_apply
 #align set.indicator_self_add_compl_apply Set.indicator_self_add_compl_apply
+-/
 
+#print Set.mulIndicator_self_mul_compl /-
 @[simp, to_additive]
 theorem mulIndicator_self_mul_compl (s : Set α) (f : α → M) :
     mulIndicator s f * mulIndicator (sᶜ) f = f :=
   funext <| mulIndicator_self_mul_compl_apply s f
 #align set.mul_indicator_self_mul_compl Set.mulIndicator_self_mul_compl
 #align set.indicator_self_add_compl Set.indicator_self_add_compl
+-/
 
+#print Set.mulIndicator_mul_eq_left /-
 @[to_additive]
 theorem mulIndicator_mul_eq_left {f g : α → M} (h : Disjoint (mulSupport f) (mulSupport g)) :
     (mulSupport f).mulIndicator (f * g) = f :=
@@ -448,7 +531,9 @@ theorem mulIndicator_mul_eq_left {f g : α → M} (h : Disjoint (mulSupport f) (
   rw [Pi.mul_apply, this, mul_one]
 #align set.mul_indicator_mul_eq_left Set.mulIndicator_mul_eq_left
 #align set.indicator_add_eq_left Set.indicator_add_eq_left
+-/
 
+#print Set.mulIndicator_mul_eq_right /-
 @[to_additive]
 theorem mulIndicator_mul_eq_right {f g : α → M} (h : Disjoint (mulSupport f) (mulSupport g)) :
     (mulSupport g).mulIndicator (f * g) = g :=
@@ -458,7 +543,9 @@ theorem mulIndicator_mul_eq_right {f g : α → M} (h : Disjoint (mulSupport f)
   rw [Pi.mul_apply, this, one_mul]
 #align set.mul_indicator_mul_eq_right Set.mulIndicator_mul_eq_right
 #align set.indicator_add_eq_right Set.indicator_add_eq_right
+-/
 
+#print Set.mulIndicator_mul_compl_eq_piecewise /-
 @[to_additive]
 theorem mulIndicator_mul_compl_eq_piecewise [DecidablePred (· ∈ s)] (f g : α → M) :
     s.mulIndicator f * sᶜ.mulIndicator g = s.piecewise f g :=
@@ -473,6 +560,7 @@ theorem mulIndicator_mul_compl_eq_piecewise [DecidablePred (· ∈ s)] (f g : α
       Set.mulIndicator_of_mem (Set.mem_compl h), one_mul]
 #align set.mul_indicator_mul_compl_eq_piecewise Set.mulIndicator_mul_compl_eq_piecewise
 #align set.indicator_add_compl_eq_piecewise Set.indicator_add_compl_eq_piecewise
+-/
 
 #print Set.mulIndicatorHom /-
 /-- `set.mul_indicator` as a `monoid_hom`. -/
@@ -492,25 +580,33 @@ section DistribMulAction
 
 variable {A : Type _} [AddMonoid A] [Monoid M] [DistribMulAction M A]
 
+#print Set.indicator_smul_apply /-
 theorem indicator_smul_apply (s : Set α) (r : α → M) (f : α → A) (x : α) :
     indicator s (fun x => r x • f x) x = r x • indicator s f x := by dsimp only [indicator];
   split_ifs; exacts [rfl, (smul_zero (r x)).symm]
 #align set.indicator_smul_apply Set.indicator_smul_apply
+-/
 
+#print Set.indicator_smul /-
 theorem indicator_smul (s : Set α) (r : α → M) (f : α → A) :
     (indicator s fun x : α => r x • f x) = fun x : α => r x • indicator s f x :=
   funext <| indicator_smul_apply s r f
 #align set.indicator_smul Set.indicator_smul
+-/
 
+#print Set.indicator_const_smul_apply /-
 theorem indicator_const_smul_apply (s : Set α) (r : M) (f : α → A) (x : α) :
     indicator s (fun x => r • f x) x = r • indicator s f x :=
   indicator_smul_apply s (fun x => r) f x
 #align set.indicator_const_smul_apply Set.indicator_const_smul_apply
+-/
 
+#print Set.indicator_const_smul /-
 theorem indicator_const_smul (s : Set α) (r : M) (f : α → A) :
     (indicator s fun x : α => r • f x) = fun x : α => r • indicator s f x :=
   funext <| indicator_const_smul_apply s r f
 #align set.indicator_const_smul Set.indicator_const_smul
+-/
 
 end DistribMulAction
 
@@ -518,44 +614,57 @@ section Group
 
 variable {G : Type _} [Group G] {s t : Set α} {f g : α → G} {a : α}
 
+#print Set.mulIndicator_inv' /-
 @[to_additive]
 theorem mulIndicator_inv' (s : Set α) (f : α → G) : mulIndicator s f⁻¹ = (mulIndicator s f)⁻¹ :=
   (mulIndicatorHom G s).map_inv f
 #align set.mul_indicator_inv' Set.mulIndicator_inv'
 #align set.indicator_neg' Set.indicator_neg'
+-/
 
+#print Set.mulIndicator_inv /-
 @[to_additive]
 theorem mulIndicator_inv (s : Set α) (f : α → G) :
     (mulIndicator s fun a => (f a)⁻¹) = fun a => (mulIndicator s f a)⁻¹ :=
   mulIndicator_inv' s f
 #align set.mul_indicator_inv Set.mulIndicator_inv
 #align set.indicator_neg Set.indicator_neg
+-/
 
+#print Set.mulIndicator_div /-
 @[to_additive]
 theorem mulIndicator_div (s : Set α) (f g : α → G) :
     (mulIndicator s fun a => f a / g a) = fun a => mulIndicator s f a / mulIndicator s g a :=
   (mulIndicatorHom G s).map_div f g
 #align set.mul_indicator_div Set.mulIndicator_div
 #align set.indicator_sub Set.indicator_sub
+-/
 
+#print Set.mulIndicator_div' /-
 @[to_additive]
 theorem mulIndicator_div' (s : Set α) (f g : α → G) :
     mulIndicator s (f / g) = mulIndicator s f / mulIndicator s g :=
   mulIndicator_div s f g
 #align set.mul_indicator_div' Set.mulIndicator_div'
 #align set.indicator_sub' Set.indicator_sub'
+-/
 
+#print Set.mulIndicator_compl /-
 @[to_additive indicator_compl']
 theorem mulIndicator_compl (s : Set α) (f : α → G) :
     mulIndicator (sᶜ) f = f * (mulIndicator s f)⁻¹ :=
   eq_mul_inv_of_mul_eq <| s.mulIndicator_compl_mul_self f
 #align set.mul_indicator_compl Set.mulIndicator_compl
 #align set.indicator_compl' Set.indicator_compl'
+-/
 
+#print Set.indicator_compl /-
 theorem indicator_compl {G} [AddGroup G] (s : Set α) (f : α → G) :
     indicator (sᶜ) f = f - indicator s f := by rw [sub_eq_add_neg, indicator_compl']
 #align set.indicator_compl Set.indicator_compl
+-/
 
+#print Set.mulIndicator_diff /-
 @[to_additive indicator_diff']
 theorem mulIndicator_diff (h : s ⊆ t) (f : α → G) :
     mulIndicator (t \ s) f = mulIndicator t f * (mulIndicator s f)⁻¹ :=
@@ -566,10 +675,13 @@ theorem mulIndicator_diff (h : s ⊆ t) (f : α → G) :
     exact disjoint_sdiff_self_left
 #align set.mul_indicator_diff Set.mulIndicator_diff
 #align set.indicator_diff' Set.indicator_diff'
+-/
 
+#print Set.indicator_diff /-
 theorem indicator_diff {G : Type _} [AddGroup G] {s t : Set α} (h : s ⊆ t) (f : α → G) :
     indicator (t \ s) f = indicator t f - indicator s f := by rw [indicator_diff' h, sub_eq_add_neg]
 #align set.indicator_diff Set.indicator_diff
+-/
 
 end Group
 
@@ -577,6 +689,7 @@ section CommMonoid
 
 variable [CommMonoid M]
 
+#print Set.prod_mulIndicator_subset_of_eq_one /-
 /-- Consider a product of `g i (f i)` over a `finset`.  Suppose `g` is a
 function such as `pow`, which maps a second argument of `1` to
 `1`. Then if `f` is replaced by the corresponding multiplicative indicator
@@ -598,6 +711,7 @@ theorem prod_mulIndicator_subset_of_eq_one [One N] (f : α → N) (g : α → N
     exact mul_indicator_of_not_mem hn _
 #align set.prod_mul_indicator_subset_of_eq_one Set.prod_mulIndicator_subset_of_eq_one
 #align set.sum_indicator_subset_of_eq_zero Set.sum_indicator_subset_of_eq_zero
+-/
 
 /-- Consider a sum of `g i (f i)` over a `finset`. Suppose `g` is a
 function such as multiplication, which maps a second argument of 0 to
@@ -608,6 +722,7 @@ function, the `finset` may be replaced by a possibly larger `finset`
 without changing the value of the sum. -/
 add_decl_doc Set.sum_indicator_subset_of_eq_zero
 
+#print Set.prod_mulIndicator_subset /-
 /-- Taking the product of an indicator function over a possibly larger `finset` is the same as
 taking the original function over the original `finset`. -/
 @[to_additive
@@ -617,7 +732,9 @@ theorem prod_mulIndicator_subset (f : α → M) {s t : Finset α} (h : s ⊆ t)
   prod_mulIndicator_subset_of_eq_one _ (fun a b => b) h fun _ => rfl
 #align set.prod_mul_indicator_subset Set.prod_mulIndicator_subset
 #align set.sum_indicator_subset Set.sum_indicator_subset
+-/
 
+#print Finset.prod_mulIndicator_eq_prod_filter /-
 @[to_additive]
 theorem Finset.prod_mulIndicator_eq_prod_filter (s : Finset ι) (f : ι → α → M) (t : ι → Set α)
     (g : ι → α) [DecidablePred fun i => g i ∈ t i] :
@@ -631,14 +748,18 @@ theorem Finset.prod_mulIndicator_eq_prod_filter (s : Finset ι) (f : ι → α 
       (Finset.prod_eq_one fun x hx => mul_indicator_of_not_mem (Finset.mem_filter.1 hx).2 _)
 #align finset.prod_mul_indicator_eq_prod_filter Finset.prod_mulIndicator_eq_prod_filter
 #align finset.sum_indicator_eq_sum_filter Finset.sum_indicator_eq_sum_filter
+-/
 
+#print Set.mulIndicator_finset_prod /-
 @[to_additive]
 theorem mulIndicator_finset_prod (I : Finset ι) (s : Set α) (f : ι → α → M) :
     mulIndicator s (∏ i in I, f i) = ∏ i in I, mulIndicator s (f i) :=
   (mulIndicatorHom M s).map_prod _ _
 #align set.mul_indicator_finset_prod Set.mulIndicator_finset_prod
 #align set.indicator_finset_sum Set.indicator_finset_sum
+-/
 
+#print Set.mulIndicator_finset_biUnion /-
 @[to_additive]
 theorem mulIndicator_finset_biUnion {ι} (I : Finset ι) (s : ι → Set α) {f : α → M} :
     (∀ i ∈ I, ∀ j ∈ I, i ≠ j → Disjoint (s i) (s j)) →
@@ -658,7 +779,9 @@ theorem mulIndicator_finset_biUnion {ι} (I : Finset ι) (s : ι → Set α) {f
   exact (ne_of_mem_of_not_mem ha' haI).symm
 #align set.mul_indicator_finset_bUnion Set.mulIndicator_finset_biUnion
 #align set.indicator_finset_bUnion Set.indicator_finset_biUnion
+-/
 
+#print Set.mulIndicator_finset_biUnion_apply /-
 @[to_additive]
 theorem mulIndicator_finset_biUnion_apply {ι} (I : Finset ι) (s : ι → Set α) {f : α → M}
     (h : ∀ i ∈ I, ∀ j ∈ I, i ≠ j → Disjoint (s i) (s j)) (x : α) :
@@ -666,6 +789,7 @@ theorem mulIndicator_finset_biUnion_apply {ι} (I : Finset ι) (s : ι → Set 
   rw [Set.mulIndicator_finset_biUnion I s h]
 #align set.mul_indicator_finset_bUnion_apply Set.mulIndicator_finset_biUnion_apply
 #align set.indicator_finset_bUnion_apply Set.indicator_finset_biUnion_apply
+-/
 
 end CommMonoid
 
@@ -673,25 +797,33 @@ section MulZeroClass
 
 variable [MulZeroClass M] {s t : Set α} {f g : α → M} {a : α}
 
+#print Set.indicator_mul /-
 theorem indicator_mul (s : Set α) (f g : α → M) :
     (indicator s fun a => f a * g a) = fun a => indicator s f a * indicator s g a := by funext;
   simp only [indicator]; split_ifs; · rfl; rw [MulZeroClass.mul_zero]
 #align set.indicator_mul Set.indicator_mul
+-/
 
+#print Set.indicator_mul_left /-
 theorem indicator_mul_left (s : Set α) (f g : α → M) :
     indicator s (fun a => f a * g a) a = indicator s f a * g a := by simp only [indicator];
   split_ifs; · rfl; rw [MulZeroClass.zero_mul]
 #align set.indicator_mul_left Set.indicator_mul_left
+-/
 
+#print Set.indicator_mul_right /-
 theorem indicator_mul_right (s : Set α) (f g : α → M) :
     indicator s (fun a => f a * g a) a = f a * indicator s g a := by simp only [indicator];
   split_ifs; · rfl; rw [MulZeroClass.mul_zero]
 #align set.indicator_mul_right Set.indicator_mul_right
+-/
 
+#print Set.inter_indicator_mul /-
 theorem inter_indicator_mul {t1 t2 : Set α} (f g : α → M) (x : α) :
     (t1 ∩ t2).indicator (fun x => f x * g x) x = t1.indicator f x * t2.indicator g x := by
   rw [← Set.indicator_indicator]; simp [indicator]
 #align set.inter_indicator_mul Set.inter_indicator_mul
+-/
 
 end MulZeroClass
 
@@ -699,30 +831,40 @@ section MulZeroOneClass
 
 variable [MulZeroOneClass M]
 
+#print Set.inter_indicator_one /-
 theorem inter_indicator_one {s t : Set α} :
     (s ∩ t).indicator (1 : _ → M) = s.indicator 1 * t.indicator 1 :=
   funext fun _ => by simpa only [← inter_indicator_mul, Pi.mul_apply, Pi.one_apply, one_mul]
 #align set.inter_indicator_one Set.inter_indicator_one
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Set.indicator_prod_one /-
 theorem indicator_prod_one {s : Set α} {t : Set β} {x : α} {y : β} :
     (s ×ˢ t).indicator (1 : _ → M) (x, y) = s.indicator 1 x * t.indicator 1 y := by
   classical simp [indicator_apply, ← ite_and]
 #align set.indicator_prod_one Set.indicator_prod_one
+-/
 
 variable (M) [Nontrivial M]
 
+#print Set.indicator_eq_zero_iff_not_mem /-
 theorem indicator_eq_zero_iff_not_mem {U : Set α} {x : α} : indicator U 1 x = (0 : M) ↔ x ∉ U := by
   classical simp [indicator_apply, imp_false]
 #align set.indicator_eq_zero_iff_not_mem Set.indicator_eq_zero_iff_not_mem
+-/
 
+#print Set.indicator_eq_one_iff_mem /-
 theorem indicator_eq_one_iff_mem {U : Set α} {x : α} : indicator U 1 x = (1 : M) ↔ x ∈ U := by
   classical simp [indicator_apply, imp_false]
 #align set.indicator_eq_one_iff_mem Set.indicator_eq_one_iff_mem
+-/
 
+#print Set.indicator_one_inj /-
 theorem indicator_one_inj {U V : Set α} (h : indicator U (1 : α → M) = indicator V 1) : U = V := by
   ext; simp_rw [← indicator_eq_one_iff_mem M, h]
 #align set.indicator_one_inj Set.indicator_one_inj
+-/
 
 end MulZeroOneClass
 
@@ -734,6 +876,7 @@ section
 
 variable [LE M]
 
+#print Set.mulIndicator_apply_le' /-
 @[to_additive]
 theorem mulIndicator_apply_le' (hfg : a ∈ s → f a ≤ y) (hg : a ∉ s → 1 ≤ y) :
     mulIndicator s f a ≤ y := by
@@ -742,55 +885,70 @@ theorem mulIndicator_apply_le' (hfg : a ∈ s → f a ≤ y) (hg : a ∉ s → 1
   · simpa [ha] using hg ha
 #align set.mul_indicator_apply_le' Set.mulIndicator_apply_le'
 #align set.indicator_apply_le' Set.indicator_apply_le'
+-/
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (a «expr ∉ » s) -/
+#print Set.mulIndicator_le' /-
 @[to_additive]
 theorem mulIndicator_le' (hfg : ∀ a ∈ s, f a ≤ g a) (hg : ∀ (a) (_ : a ∉ s), 1 ≤ g a) :
     mulIndicator s f ≤ g := fun a => mulIndicator_apply_le' (hfg _) (hg _)
 #align set.mul_indicator_le' Set.mulIndicator_le'
 #align set.indicator_le' Set.indicator_le'
+-/
 
+#print Set.le_mulIndicator_apply /-
 @[to_additive]
 theorem le_mulIndicator_apply {y} (hfg : a ∈ s → y ≤ g a) (hf : a ∉ s → y ≤ 1) :
     y ≤ mulIndicator s g a :=
   @mulIndicator_apply_le' α Mᵒᵈ ‹_› _ _ _ _ _ hfg hf
 #align set.le_mul_indicator_apply Set.le_mulIndicator_apply
 #align set.le_indicator_apply Set.le_indicator_apply
+-/
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (a «expr ∉ » s) -/
+#print Set.le_mulIndicator /-
 @[to_additive]
 theorem le_mulIndicator (hfg : ∀ a ∈ s, f a ≤ g a) (hf : ∀ (a) (_ : a ∉ s), f a ≤ 1) :
     f ≤ mulIndicator s g := fun a => le_mulIndicator_apply (hfg _) (hf _)
 #align set.le_mul_indicator Set.le_mulIndicator
 #align set.le_indicator Set.le_indicator
+-/
 
 end
 
 variable [Preorder M]
 
+#print Set.one_le_mulIndicator_apply /-
 @[to_additive indicator_apply_nonneg]
 theorem one_le_mulIndicator_apply (h : a ∈ s → 1 ≤ f a) : 1 ≤ mulIndicator s f a :=
   le_mulIndicator_apply h fun _ => le_rfl
 #align set.one_le_mul_indicator_apply Set.one_le_mulIndicator_apply
 #align set.indicator_apply_nonneg Set.indicator_apply_nonneg
+-/
 
+#print Set.one_le_mulIndicator /-
 @[to_additive indicator_nonneg]
 theorem one_le_mulIndicator (h : ∀ a ∈ s, 1 ≤ f a) (a : α) : 1 ≤ mulIndicator s f a :=
   one_le_mulIndicator_apply (h a)
 #align set.one_le_mul_indicator Set.one_le_mulIndicator
 #align set.indicator_nonneg Set.indicator_nonneg
+-/
 
+#print Set.mulIndicator_apply_le_one /-
 @[to_additive]
 theorem mulIndicator_apply_le_one (h : a ∈ s → f a ≤ 1) : mulIndicator s f a ≤ 1 :=
   mulIndicator_apply_le' h fun _ => le_rfl
 #align set.mul_indicator_apply_le_one Set.mulIndicator_apply_le_one
 #align set.indicator_apply_nonpos Set.indicator_apply_nonpos
+-/
 
+#print Set.mulIndicator_le_one /-
 @[to_additive]
 theorem mulIndicator_le_one (h : ∀ a ∈ s, f a ≤ 1) (a : α) : mulIndicator s f a ≤ 1 :=
   mulIndicator_apply_le_one (h a)
 #align set.mul_indicator_le_one Set.mulIndicator_le_one
 #align set.indicator_nonpos Set.indicator_nonpos
+-/
 
 #print Set.mulIndicator_le_mulIndicator /-
 @[to_additive]
@@ -802,6 +960,7 @@ theorem mulIndicator_le_mulIndicator (h : f a ≤ g a) : mulIndicator s f a ≤
 
 attribute [mono] mul_indicator_le_mul_indicator indicator_le_indicator
 
+#print Set.mulIndicator_le_mulIndicator_of_subset /-
 @[to_additive]
 theorem mulIndicator_le_mulIndicator_of_subset (h : s ⊆ t) (hf : ∀ a, 1 ≤ f a) (a : α) :
     mulIndicator s f a ≤ mulIndicator t f a :=
@@ -810,14 +969,18 @@ theorem mulIndicator_le_mulIndicator_of_subset (h : s ⊆ t) (hf : ∀ a, 1 ≤
     one_le_mulIndicator_apply fun _ => hf _
 #align set.mul_indicator_le_mul_indicator_of_subset Set.mulIndicator_le_mulIndicator_of_subset
 #align set.indicator_le_indicator_of_subset Set.indicator_le_indicator_of_subset
+-/
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (x «expr ∉ » s) -/
+#print Set.mulIndicator_le_self' /-
 @[to_additive]
 theorem mulIndicator_le_self' (hf : ∀ (x) (_ : x ∉ s), 1 ≤ f x) : mulIndicator s f ≤ f :=
   mulIndicator_le' (fun _ _ => le_rfl) hf
 #align set.mul_indicator_le_self' Set.mulIndicator_le_self'
 #align set.indicator_le_self' Set.indicator_le_self'
+-/
 
+#print Set.mulIndicator_iUnion_apply /-
 @[to_additive]
 theorem mulIndicator_iUnion_apply {ι M} [CompleteLattice M] [One M] (h1 : (⊥ : M) = 1)
     (s : ι → Set α) (f : α → M) (x : α) :
@@ -834,6 +997,7 @@ theorem mulIndicator_iUnion_apply {ι M} [CompleteLattice M] [One M] (h1 : (⊥
     simp [hx, ← h1]
 #align set.mul_indicator_Union_apply Set.mulIndicator_iUnion_apply
 #align set.indicator_Union_apply Set.indicator_iUnion_apply
+-/
 
 end Order
 
@@ -841,25 +1005,31 @@ section CanonicallyOrderedMonoid
 
 variable [CanonicallyOrderedMonoid M]
 
+#print Set.mulIndicator_le_self /-
 @[to_additive]
 theorem mulIndicator_le_self (s : Set α) (f : α → M) : mulIndicator s f ≤ f :=
   mulIndicator_le_self' fun _ _ => one_le _
 #align set.mul_indicator_le_self Set.mulIndicator_le_self
 #align set.indicator_le_self Set.indicator_le_self
+-/
 
+#print Set.mulIndicator_apply_le /-
 @[to_additive]
 theorem mulIndicator_apply_le {a : α} {s : Set α} {f g : α → M} (hfg : a ∈ s → f a ≤ g a) :
     mulIndicator s f a ≤ g a :=
   mulIndicator_apply_le' hfg fun _ => one_le _
 #align set.mul_indicator_apply_le Set.mulIndicator_apply_le
 #align set.indicator_apply_le Set.indicator_apply_le
+-/
 
+#print Set.mulIndicator_le /-
 @[to_additive]
 theorem mulIndicator_le {s : Set α} {f g : α → M} (hfg : ∀ a ∈ s, f a ≤ g a) :
     mulIndicator s f ≤ g :=
   mulIndicator_le' hfg fun _ _ => one_le _
 #align set.mul_indicator_le Set.mulIndicator_le
 #align set.indicator_le Set.indicator_le
+-/
 
 end CanonicallyOrderedMonoid
 
@@ -887,10 +1057,12 @@ theorem indicator_nonpos_le_indicator {β} [LinearOrder β] [Zero β] (s : Set 
 
 end Set
 
+#print MonoidHom.map_mulIndicator /-
 @[to_additive]
 theorem MonoidHom.map_mulIndicator {M N : Type _} [MulOneClass M] [MulOneClass N] (f : M →* N)
     (s : Set α) (g : α → M) (x : α) : f (s.mulIndicator g x) = s.mulIndicator (f ∘ g) x :=
   congr_fun (Set.mulIndicator_comp_of_one f.map_one).symm x
 #align monoid_hom.map_mul_indicator MonoidHom.map_mulIndicator
 #align add_monoid_hom.map_indicator AddMonoidHom.map_indicator
+-/
 
Diff
@@ -585,7 +585,7 @@ without changing the value of the sum. -/
 @[to_additive]
 theorem prod_mulIndicator_subset_of_eq_one [One N] (f : α → N) (g : α → N → M) {s t : Finset α}
     (h : s ⊆ t) (hg : ∀ a, g a 1 = 1) :
-    (∏ i in s, g i (f i)) = ∏ i in t, g i (mulIndicator (↑s) f i) :=
+    ∏ i in s, g i (f i) = ∏ i in t, g i (mulIndicator (↑s) f i) :=
   by
   rw [← Finset.prod_subset h _]
   · apply Finset.prod_congr rfl
@@ -613,7 +613,7 @@ taking the original function over the original `finset`. -/
 @[to_additive
       "Summing an indicator function over a possibly larger `finset` is the same as summing\nthe original function over the original `finset`."]
 theorem prod_mulIndicator_subset (f : α → M) {s t : Finset α} (h : s ⊆ t) :
-    (∏ i in s, f i) = ∏ i in t, mulIndicator (↑s) f i :=
+    ∏ i in s, f i = ∏ i in t, mulIndicator (↑s) f i :=
   prod_mulIndicator_subset_of_eq_one _ (fun a b => b) h fun _ => rfl
 #align set.prod_mul_indicator_subset Set.prod_mulIndicator_subset
 #align set.sum_indicator_subset Set.sum_indicator_subset
@@ -621,7 +621,7 @@ theorem prod_mulIndicator_subset (f : α → M) {s t : Finset α} (h : s ⊆ t)
 @[to_additive]
 theorem Finset.prod_mulIndicator_eq_prod_filter (s : Finset ι) (f : ι → α → M) (t : ι → Set α)
     (g : ι → α) [DecidablePred fun i => g i ∈ t i] :
-    (∏ i in s, mulIndicator (t i) (f i) (g i)) = ∏ i in s.filterₓ fun i => g i ∈ t i, f i (g i) :=
+    ∏ i in s, mulIndicator (t i) (f i) (g i) = ∏ i in s.filterₓ fun i => g i ∈ t i, f i (g i) :=
   by
   refine' (Finset.prod_filter_mul_prod_filter_not s (fun i => g i ∈ t i) _).symm.trans _
   refine' Eq.trans _ (mul_one _)
Diff
@@ -743,7 +743,7 @@ theorem mulIndicator_apply_le' (hfg : a ∈ s → f a ≤ y) (hg : a ∉ s → 1
 #align set.mul_indicator_apply_le' Set.mulIndicator_apply_le'
 #align set.indicator_apply_le' Set.indicator_apply_le'
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (a «expr ∉ » s) -/
 @[to_additive]
 theorem mulIndicator_le' (hfg : ∀ a ∈ s, f a ≤ g a) (hg : ∀ (a) (_ : a ∉ s), 1 ≤ g a) :
     mulIndicator s f ≤ g := fun a => mulIndicator_apply_le' (hfg _) (hg _)
@@ -757,7 +757,7 @@ theorem le_mulIndicator_apply {y} (hfg : a ∈ s → y ≤ g a) (hf : a ∉ s 
 #align set.le_mul_indicator_apply Set.le_mulIndicator_apply
 #align set.le_indicator_apply Set.le_indicator_apply
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (a «expr ∉ » s) -/
 @[to_additive]
 theorem le_mulIndicator (hfg : ∀ a ∈ s, f a ≤ g a) (hf : ∀ (a) (_ : a ∉ s), f a ≤ 1) :
     f ≤ mulIndicator s g := fun a => le_mulIndicator_apply (hfg _) (hf _)
@@ -811,7 +811,7 @@ theorem mulIndicator_le_mulIndicator_of_subset (h : s ⊆ t) (hf : ∀ a, 1 ≤
 #align set.mul_indicator_le_mul_indicator_of_subset Set.mulIndicator_le_mulIndicator_of_subset
 #align set.indicator_le_indicator_of_subset Set.indicator_le_indicator_of_subset
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (x «expr ∉ » s) -/
 @[to_additive]
 theorem mulIndicator_le_self' (hf : ∀ (x) (_ : x ∉ s), 1 ≤ f x) : mulIndicator s f ≤ f :=
   mulIndicator_le' (fun _ _ => le_rfl) hf
Diff
@@ -309,8 +309,8 @@ theorem mulIndicator_preimage (s : Set α) (f : α → M) (B : Set M) :
 theorem mulIndicator_one_preimage (s : Set M) :
     t.mulIndicator 1 ⁻¹' s ∈ ({Set.univ, ∅} : Set (Set α)) := by
   classical
-    rw [mul_indicator_one', preimage_one]
-    split_ifs <;> simp
+  rw [mul_indicator_one', preimage_one]
+  split_ifs <;> simp
 #align set.mul_indicator_one_preimage Set.mulIndicator_one_preimage
 #align set.indicator_zero_preimage Set.indicator_zero_preimage
 -/
@@ -329,8 +329,8 @@ theorem mulIndicator_const_preimage_eq_union (U : Set α) (s : Set M) (a : M) [D
 theorem mulIndicator_const_preimage (U : Set α) (s : Set M) (a : M) :
     (U.mulIndicator fun x => a) ⁻¹' s ∈ ({Set.univ, U, Uᶜ, ∅} : Set (Set α)) := by
   classical
-    rw [mul_indicator_const_preimage_eq_union]
-    split_ifs <;> simp
+  rw [mul_indicator_const_preimage_eq_union]
+  split_ifs <;> simp
 #align set.mul_indicator_const_preimage Set.mulIndicator_const_preimage
 #align set.indicator_const_preimage Set.indicator_const_preimage
 
@@ -645,19 +645,17 @@ theorem mulIndicator_finset_biUnion {ι} (I : Finset ι) (s : ι → Set α) {f
       mulIndicator (⋃ i ∈ I, s i) f = fun a => ∏ i in I, mulIndicator (s i) f a :=
   by
   classical
-    refine' Finset.induction_on I _ _
-    · intro h; funext; simp
-    intro a I haI ih hI
-    funext
-    rw [Finset.prod_insert haI, Finset.set_biUnion_insert, mul_indicator_union_of_not_mem_inter,
-      ih _]
-    · intro i hi j hj hij
-      exact hI i (Finset.mem_insert_of_mem hi) j (Finset.mem_insert_of_mem hj) hij
-    simp only [not_exists, exists_prop, mem_Union, mem_inter_iff, not_and]
-    intro hx a' ha'
-    refine'
-      disjoint_left.1 (hI a (Finset.mem_insert_self _ _) a' (Finset.mem_insert_of_mem ha') _) hx
-    exact (ne_of_mem_of_not_mem ha' haI).symm
+  refine' Finset.induction_on I _ _
+  · intro h; funext; simp
+  intro a I haI ih hI
+  funext
+  rw [Finset.prod_insert haI, Finset.set_biUnion_insert, mul_indicator_union_of_not_mem_inter, ih _]
+  · intro i hi j hj hij
+    exact hI i (Finset.mem_insert_of_mem hi) j (Finset.mem_insert_of_mem hj) hij
+  simp only [not_exists, exists_prop, mem_Union, mem_inter_iff, not_and]
+  intro hx a' ha'
+  refine' disjoint_left.1 (hI a (Finset.mem_insert_self _ _) a' (Finset.mem_insert_of_mem ha') _) hx
+  exact (ne_of_mem_of_not_mem ha' haI).symm
 #align set.mul_indicator_finset_bUnion Set.mulIndicator_finset_biUnion
 #align set.indicator_finset_bUnion Set.indicator_finset_biUnion
 
@@ -867,22 +865,22 @@ end CanonicallyOrderedMonoid
 
 #print Set.indicator_le_indicator_nonneg /-
 theorem indicator_le_indicator_nonneg {β} [LinearOrder β] [Zero β] (s : Set α) (f : α → β) :
-    s.indicator f ≤ { x | 0 ≤ f x }.indicator f :=
+    s.indicator f ≤ {x | 0 ≤ f x}.indicator f :=
   by
   intro x
   classical
-    simp_rw [indicator_apply]
-    split_ifs
-    · exact le_rfl
-    · exact (not_le.mp h_1).le
-    · exact h_1
-    · exact le_rfl
+  simp_rw [indicator_apply]
+  split_ifs
+  · exact le_rfl
+  · exact (not_le.mp h_1).le
+  · exact h_1
+  · exact le_rfl
 #align set.indicator_le_indicator_nonneg Set.indicator_le_indicator_nonneg
 -/
 
 #print Set.indicator_nonpos_le_indicator /-
 theorem indicator_nonpos_le_indicator {β} [LinearOrder β] [Zero β] (s : Set α) (f : α → β) :
-    { x | f x ≤ 0 }.indicator f ≤ s.indicator f :=
+    {x | f x ≤ 0}.indicator f ≤ s.indicator f :=
   @indicator_le_indicator_nonneg α βᵒᵈ _ _ s f
 #align set.indicator_nonpos_le_indicator Set.indicator_nonpos_le_indicator
 -/
Diff
@@ -122,7 +122,7 @@ theorem mulIndicator_eq_self : s.mulIndicator f = f ↔ mulSupport f ⊆ s := by
 
 @[to_additive]
 theorem mulIndicator_eq_self_of_superset (h1 : s.mulIndicator f = f) (h2 : s ⊆ t) :
-    t.mulIndicator f = f := by rw [mul_indicator_eq_self] at h1⊢; exact subset.trans h1 h2
+    t.mulIndicator f = f := by rw [mul_indicator_eq_self] at h1 ⊢; exact subset.trans h1 h2
 #align set.mul_indicator_eq_self_of_superset Set.mulIndicator_eq_self_of_superset
 #align set.indicator_eq_self_of_superset Set.indicator_eq_self_of_superset
 
@@ -358,7 +358,7 @@ theorem mem_range_mulIndicator {r : M} {s : Set α} {f : α → M} :
 @[to_additive]
 theorem mulIndicator_rel_mulIndicator {r : M → M → Prop} (h1 : r 1 1) (ha : a ∈ s → r (f a) (g a)) :
     r (mulIndicator s f a) (mulIndicator s g a) := by simp only [mul_indicator];
-  split_ifs with has has; exacts[ha has, h1]
+  split_ifs with has has; exacts [ha has, h1]
 #align set.mul_indicator_rel_mul_indicator Set.mulIndicator_rel_mulIndicator
 #align set.indicator_rel_indicator Set.indicator_rel_indicator
 -/
@@ -494,7 +494,7 @@ variable {A : Type _} [AddMonoid A] [Monoid M] [DistribMulAction M A]
 
 theorem indicator_smul_apply (s : Set α) (r : α → M) (f : α → A) (x : α) :
     indicator s (fun x => r x • f x) x = r x • indicator s f x := by dsimp only [indicator];
-  split_ifs; exacts[rfl, (smul_zero (r x)).symm]
+  split_ifs; exacts [rfl, (smul_zero (r x)).symm]
 #align set.indicator_smul_apply Set.indicator_smul_apply
 
 theorem indicator_smul (s : Set α) (r : α → M) (f : α → A) :
@@ -827,12 +827,12 @@ theorem mulIndicator_iUnion_apply {ι M} [CompleteLattice M] [One M] (h1 : (⊥
   by
   by_cases hx : x ∈ ⋃ i, s i
   · rw [mul_indicator_of_mem hx]
-    rw [mem_Union] at hx
+    rw [mem_Union] at hx 
     refine' le_antisymm _ (iSup_le fun i => mul_indicator_le_self' (fun x hx => h1 ▸ bot_le) x)
     rcases hx with ⟨i, hi⟩
     exact le_iSup_of_le i (ge_of_eq <| mul_indicator_of_mem hi _)
   · rw [mul_indicator_of_not_mem hx]
-    simp only [mem_Union, not_exists] at hx
+    simp only [mem_Union, not_exists] at hx 
     simp [hx, ← h1]
 #align set.mul_indicator_Union_apply Set.mulIndicator_iUnion_apply
 #align set.indicator_Union_apply Set.indicator_iUnion_apply
Diff
@@ -37,7 +37,7 @@ indicator, characteristic
 -/
 
 
-open BigOperators
+open scoped BigOperators
 
 open Function
 
@@ -794,11 +794,13 @@ theorem mulIndicator_le_one (h : ∀ a ∈ s, f a ≤ 1) (a : α) : mulIndicator
 #align set.mul_indicator_le_one Set.mulIndicator_le_one
 #align set.indicator_nonpos Set.indicator_nonpos
 
+#print Set.mulIndicator_le_mulIndicator /-
 @[to_additive]
 theorem mulIndicator_le_mulIndicator (h : f a ≤ g a) : mulIndicator s f a ≤ mulIndicator s g a :=
   mulIndicator_rel_mulIndicator le_rfl fun _ => h
 #align set.mul_indicator_le_mul_indicator Set.mulIndicator_le_mulIndicator
 #align set.indicator_le_indicator Set.indicator_le_indicator
+-/
 
 attribute [mono] mul_indicator_le_mul_indicator indicator_le_indicator
 
@@ -863,6 +865,7 @@ theorem mulIndicator_le {s : Set α} {f g : α → M} (hfg : ∀ a ∈ s, f a 
 
 end CanonicallyOrderedMonoid
 
+#print Set.indicator_le_indicator_nonneg /-
 theorem indicator_le_indicator_nonneg {β} [LinearOrder β] [Zero β] (s : Set α) (f : α → β) :
     s.indicator f ≤ { x | 0 ≤ f x }.indicator f :=
   by
@@ -875,11 +878,14 @@ theorem indicator_le_indicator_nonneg {β} [LinearOrder β] [Zero β] (s : Set 
     · exact h_1
     · exact le_rfl
 #align set.indicator_le_indicator_nonneg Set.indicator_le_indicator_nonneg
+-/
 
+#print Set.indicator_nonpos_le_indicator /-
 theorem indicator_nonpos_le_indicator {β} [LinearOrder β] [Zero β] (s : Set α) (f : α → β) :
     { x | f x ≤ 0 }.indicator f ≤ s.indicator f :=
   @indicator_le_indicator_nonneg α βᵒᵈ _ _ s f
 #align set.indicator_nonpos_le_indicator Set.indicator_nonpos_le_indicator
+-/
 
 end Set
 
Diff
@@ -69,36 +69,18 @@ noncomputable def mulIndicator (s : Set α) (f : α → M) : α → M
 #align set.indicator Set.indicator
 -/
 
-/- warning: set.piecewise_eq_mul_indicator -> Set.piecewise_eq_mulIndicator is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} [_inst_3 : DecidablePred.{succ u1} α (fun (_x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) _x s)], Eq.{max (succ u1) (succ u2)} (α -> M) (Set.piecewise.{u1, succ u2} α (fun (ᾰ : α) => M) s f (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (i : α) => M) (fun (i : α) => _inst_1))))) (fun (j : α) => _inst_3 j)) (Set.mulIndicator.{u1, u2} α M _inst_1 s f)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M} [_inst_3 : DecidablePred.{succ u2} α (fun (_x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) _x s)], Eq.{max (succ u2) (succ u1)} (α -> M) (Set.piecewise.{u2, succ u1} α (fun (ᾰ : α) => M) s f (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (i : α) => M) (fun (i : α) => _inst_1)))) (fun (j : α) => _inst_3 j)) (Set.mulIndicator.{u2, u1} α M _inst_1 s f)
-Case conversion may be inaccurate. Consider using '#align set.piecewise_eq_mul_indicator Set.piecewise_eq_mulIndicatorₓ'. -/
 @[simp, to_additive]
 theorem piecewise_eq_mulIndicator [DecidablePred (· ∈ s)] : s.piecewise f 1 = s.mulIndicator f :=
   funext fun x => @if_congr _ _ _ _ (id _) _ _ _ _ Iff.rfl rfl rfl
 #align set.piecewise_eq_mul_indicator Set.piecewise_eq_mulIndicator
 #align set.piecewise_eq_indicator Set.piecewise_eq_indicator
 
-/- warning: set.mul_indicator_apply -> Set.mulIndicator_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] (s : Set.{u1} α) (f : α -> M) (a : α) [_inst_3 : Decidable (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s)], Eq.{succ u2} M (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (ite.{succ u2} M (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) _inst_3 (f a) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] (s : Set.{u2} α) (f : α -> M) (a : α) [_inst_3 : Decidable (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s)], Eq.{succ u1} M (Set.mulIndicator.{u2, u1} α M _inst_1 s f a) (ite.{succ u1} M (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) _inst_3 (f a) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_apply Set.mulIndicator_applyₓ'. -/
 @[to_additive]
 theorem mulIndicator_apply (s : Set α) (f : α → M) (a : α) [Decidable (a ∈ s)] :
     mulIndicator s f a = if a ∈ s then f a else 1 := by convert rfl
 #align set.mul_indicator_apply Set.mulIndicator_apply
 #align set.indicator_apply Set.indicator_apply
 
-/- warning: set.mul_indicator_of_mem -> Set.mulIndicator_of_mem is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {a : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (forall (f : α -> M), Eq.{succ u2} M (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (f a))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {a : α}, (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (forall (f : α -> M), Eq.{succ u1} M (Set.mulIndicator.{u2, u1} α M _inst_1 s f a) (f a))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_of_mem Set.mulIndicator_of_memₓ'. -/
 @[simp, to_additive]
 theorem mulIndicator_of_mem (h : a ∈ s) (f : α → M) : mulIndicator s f a = f a :=
   letI := Classical.dec (a ∈ s)
@@ -106,12 +88,6 @@ theorem mulIndicator_of_mem (h : a ∈ s) (f : α → M) : mulIndicator s f a =
 #align set.mul_indicator_of_mem Set.mulIndicator_of_mem
 #align set.indicator_of_mem Set.indicator_of_mem
 
-/- warning: set.mul_indicator_of_not_mem -> Set.mulIndicator_of_not_mem is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {a : α}, (Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s)) -> (forall (f : α -> M), Eq.{succ u2} M (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {a : α}, (Not (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s)) -> (forall (f : α -> M), Eq.{succ u1} M (Set.mulIndicator.{u2, u1} α M _inst_1 s f a) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_of_not_mem Set.mulIndicator_of_not_memₓ'. -/
 @[simp, to_additive]
 theorem mulIndicator_of_not_mem (h : a ∉ s) (f : α → M) : mulIndicator s f a = 1 :=
   letI := Classical.dec (a ∈ s)
@@ -119,12 +95,6 @@ theorem mulIndicator_of_not_mem (h : a ∉ s) (f : α → M) : mulIndicator s f
 #align set.mul_indicator_of_not_mem Set.mulIndicator_of_not_mem
 #align set.indicator_of_not_mem Set.indicator_of_not_mem
 
-/- warning: set.mul_indicator_eq_one_or_self -> Set.mulIndicator_eq_one_or_self is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] (s : Set.{u1} α) (f : α -> M) (a : α), Or (Eq.{succ u2} M (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1)))) (Eq.{succ u2} M (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (f a))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] (s : Set.{u2} α) (f : α -> M) (a : α), Or (Eq.{succ u1} M (Set.mulIndicator.{u2, u1} α M _inst_1 s f a) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1))) (Eq.{succ u1} M (Set.mulIndicator.{u2, u1} α M _inst_1 s f a) (f a))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_eq_one_or_self Set.mulIndicator_eq_one_or_selfₓ'. -/
 @[to_additive]
 theorem mulIndicator_eq_one_or_self (s : Set α) (f : α → M) (a : α) :
     mulIndicator s f a = 1 ∨ mulIndicator s f a = f a :=
@@ -144,24 +114,12 @@ theorem mulIndicator_apply_eq_self : s.mulIndicator f a = f a ↔ a ∉ s → f
 #align set.indicator_apply_eq_self Set.indicator_apply_eq_self
 -/
 
-/- warning: set.mul_indicator_eq_self -> Set.mulIndicator_eq_self is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M}, Iff (Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M _inst_1 s f) f) (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Function.mulSupport.{u1, u2} α M _inst_1 f) s)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M}, Iff (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M _inst_1 s f) f) (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Function.mulSupport.{u2, u1} α M _inst_1 f) s)
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_eq_self Set.mulIndicator_eq_selfₓ'. -/
 @[simp, to_additive]
 theorem mulIndicator_eq_self : s.mulIndicator f = f ↔ mulSupport f ⊆ s := by
   simp only [funext_iff, subset_def, mem_mul_support, mul_indicator_apply_eq_self, not_imp_comm]
 #align set.mul_indicator_eq_self Set.mulIndicator_eq_self
 #align set.indicator_eq_self Set.indicator_eq_self
 
-/- warning: set.mul_indicator_eq_self_of_superset -> Set.mulIndicator_eq_self_of_superset is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {t : Set.{u1} α} {f : α -> M}, (Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M _inst_1 s f) f) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s t) -> (Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M _inst_1 t f) f)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {t : Set.{u2} α} {f : α -> M}, (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M _inst_1 s f) f) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s t) -> (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M _inst_1 t f) f)
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_eq_self_of_superset Set.mulIndicator_eq_self_of_supersetₓ'. -/
 @[to_additive]
 theorem mulIndicator_eq_self_of_superset (h1 : s.mulIndicator f = f) (h2 : s ⊆ t) :
     t.mulIndicator f = f := by rw [mul_indicator_eq_self] at h1⊢; exact subset.trans h1 h2
@@ -177,12 +135,6 @@ theorem mulIndicator_apply_eq_one : mulIndicator s f a = 1 ↔ a ∈ s → f a =
 #align set.indicator_apply_eq_zero Set.indicator_apply_eq_zero
 -/
 
-/- warning: set.mul_indicator_eq_one -> Set.mulIndicator_eq_one is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M}, Iff (Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M _inst_1 s f) (fun (x : α) => OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1)))) (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (Function.mulSupport.{u1, u2} α M _inst_1 f) s)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M}, Iff (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M _inst_1 s f) (fun (x : α) => OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1))) (Disjoint.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (BoundedOrder.toOrderBot.{u2} (Set.{u2} α) (Preorder.toLE.{u2} (Set.{u2} α) (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))))) (CompleteLattice.toBoundedOrder.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (Function.mulSupport.{u2, u1} α M _inst_1 f) s)
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_eq_one Set.mulIndicator_eq_oneₓ'. -/
 @[simp, to_additive]
 theorem mulIndicator_eq_one : (mulIndicator s f = fun x => 1) ↔ Disjoint (mulSupport f) s := by
   simp only [funext_iff, mul_indicator_apply_eq_one, Set.disjoint_left, mem_mul_support,
@@ -190,36 +142,18 @@ theorem mulIndicator_eq_one : (mulIndicator s f = fun x => 1) ↔ Disjoint (mulS
 #align set.mul_indicator_eq_one Set.mulIndicator_eq_one
 #align set.indicator_eq_zero Set.indicator_eq_zero
 
-/- warning: set.mul_indicator_eq_one' -> Set.mulIndicator_eq_one' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M}, Iff (Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M _inst_1 s f) (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1)))))) (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (Function.mulSupport.{u1, u2} α M _inst_1 f) s)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M}, Iff (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M _inst_1 s f) (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.159 : α) => M) (fun (i : α) => _inst_1))))) (Disjoint.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (BoundedOrder.toOrderBot.{u2} (Set.{u2} α) (Preorder.toLE.{u2} (Set.{u2} α) (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))))) (CompleteLattice.toBoundedOrder.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (Function.mulSupport.{u2, u1} α M _inst_1 f) s)
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_eq_one' Set.mulIndicator_eq_one'ₓ'. -/
 @[simp, to_additive]
 theorem mulIndicator_eq_one' : mulIndicator s f = 1 ↔ Disjoint (mulSupport f) s :=
   mulIndicator_eq_one
 #align set.mul_indicator_eq_one' Set.mulIndicator_eq_one'
 #align set.indicator_eq_zero' Set.indicator_eq_zero'
 
-/- warning: set.mul_indicator_apply_ne_one -> Set.mulIndicator_apply_ne_one is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} {a : α}, Iff (Ne.{succ u2} M (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1)))) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (Function.mulSupport.{u1, u2} α M _inst_1 f)))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} {a : α}, Iff (Ne.{succ u2} M (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (OfNat.ofNat.{u2} M 1 (One.toOfNat1.{u2} M _inst_1))) (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) a (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s (Function.mulSupport.{u1, u2} α M _inst_1 f)))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_apply_ne_one Set.mulIndicator_apply_ne_oneₓ'. -/
 @[to_additive]
 theorem mulIndicator_apply_ne_one {a : α} : s.mulIndicator f a ≠ 1 ↔ a ∈ s ∩ mulSupport f := by
   simp only [Ne.def, mul_indicator_apply_eq_one, not_imp, mem_inter_iff, mem_mul_support]
 #align set.mul_indicator_apply_ne_one Set.mulIndicator_apply_ne_one
 #align set.indicator_apply_ne_zero Set.indicator_apply_ne_zero
 
-/- warning: set.mul_support_mul_indicator -> Set.mulSupport_mulIndicator is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M}, Eq.{succ u1} (Set.{u1} α) (Function.mulSupport.{u1, u2} α M _inst_1 (Set.mulIndicator.{u1, u2} α M _inst_1 s f)) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (Function.mulSupport.{u1, u2} α M _inst_1 f))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M}, Eq.{succ u2} (Set.{u2} α) (Function.mulSupport.{u2, u1} α M _inst_1 (Set.mulIndicator.{u2, u1} α M _inst_1 s f)) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) s (Function.mulSupport.{u2, u1} α M _inst_1 f))
-Case conversion may be inaccurate. Consider using '#align set.mul_support_mul_indicator Set.mulSupport_mulIndicatorₓ'. -/
 @[simp, to_additive]
 theorem mulSupport_mulIndicator :
     Function.mulSupport (s.mulIndicator f) = s ∩ Function.mulSupport f :=
@@ -238,35 +172,17 @@ theorem mem_of_mulIndicator_ne_one (h : mulIndicator s f a ≠ 1) : a ∈ s :=
 #align set.mem_of_indicator_ne_zero Set.mem_of_indicator_ne_zero
 -/
 
-/- warning: set.eq_on_mul_indicator -> Set.eqOn_mulIndicator is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M}, Set.EqOn.{u1, u2} α M (Set.mulIndicator.{u1, u2} α M _inst_1 s f) f s
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M}, Set.EqOn.{u2, u1} α M (Set.mulIndicator.{u2, u1} α M _inst_1 s f) f s
-Case conversion may be inaccurate. Consider using '#align set.eq_on_mul_indicator Set.eqOn_mulIndicatorₓ'. -/
 @[to_additive]
 theorem eqOn_mulIndicator : EqOn (mulIndicator s f) f s := fun x hx => mulIndicator_of_mem hx f
 #align set.eq_on_mul_indicator Set.eqOn_mulIndicator
 #align set.eq_on_indicator Set.eqOn_indicator
 
-/- warning: set.mul_support_mul_indicator_subset -> Set.mulSupport_mulIndicator_subset is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M}, HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) (Function.mulSupport.{u1, u2} α M _inst_1 (Set.mulIndicator.{u1, u2} α M _inst_1 s f)) s
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M}, HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Function.mulSupport.{u2, u1} α M _inst_1 (Set.mulIndicator.{u2, u1} α M _inst_1 s f)) s
-Case conversion may be inaccurate. Consider using '#align set.mul_support_mul_indicator_subset Set.mulSupport_mulIndicator_subsetₓ'. -/
 @[to_additive]
 theorem mulSupport_mulIndicator_subset : mulSupport (s.mulIndicator f) ⊆ s := fun x hx =>
   hx.imp_symm fun h => mulIndicator_of_not_mem h f
 #align set.mul_support_mul_indicator_subset Set.mulSupport_mulIndicator_subset
 #align set.support_indicator_subset Set.support_indicator_subset
 
-/- warning: set.mul_indicator_mul_support -> Set.mulIndicator_mulSupport is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {f : α -> M}, Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M _inst_1 (Function.mulSupport.{u1, u2} α M _inst_1 f) f) f
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {f : α -> M}, Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M _inst_1 (Function.mulSupport.{u2, u1} α M _inst_1 f) f) f
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_mul_support Set.mulIndicator_mulSupportₓ'. -/
 @[simp, to_additive]
 theorem mulIndicator_mulSupport : mulIndicator (mulSupport f) f = f :=
   mulIndicator_eq_self.2 Subset.rfl
@@ -283,48 +199,24 @@ theorem mulIndicator_range_comp {ι : Sort _} (f : ι → α) (g : α → M) :
 #align set.indicator_range_comp Set.indicator_range_comp
 -/
 
-/- warning: set.mul_indicator_congr -> Set.mulIndicator_congr is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} {g : α -> M}, (Set.EqOn.{u1, u2} α M f g s) -> (Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M _inst_1 s f) (Set.mulIndicator.{u1, u2} α M _inst_1 s g))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M} {g : α -> M}, (Set.EqOn.{u2, u1} α M f g s) -> (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M _inst_1 s f) (Set.mulIndicator.{u2, u1} α M _inst_1 s g))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_congr Set.mulIndicator_congrₓ'. -/
 @[to_additive]
 theorem mulIndicator_congr (h : EqOn f g s) : mulIndicator s f = mulIndicator s g :=
   funext fun x => by simp only [mul_indicator]; split_ifs; · exact h h_1; rfl
 #align set.mul_indicator_congr Set.mulIndicator_congr
 #align set.indicator_congr Set.indicator_congr
 
-/- warning: set.mul_indicator_univ -> Set.mulIndicator_univ is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] (f : α -> M), Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M _inst_1 (Set.univ.{u1} α) f) f
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] (f : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M _inst_1 (Set.univ.{u2} α) f) f
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_univ Set.mulIndicator_univₓ'. -/
 @[simp, to_additive]
 theorem mulIndicator_univ (f : α → M) : mulIndicator (univ : Set α) f = f :=
   mulIndicator_eq_self.2 <| subset_univ _
 #align set.mul_indicator_univ Set.mulIndicator_univ
 #align set.indicator_univ Set.indicator_univ
 
-/- warning: set.mul_indicator_empty -> Set.mulIndicator_empty is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] (f : α -> M), Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M _inst_1 (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α)) f) (fun (a : α) => OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] (f : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M _inst_1 (EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α)) f) (fun (a : α) => OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_empty Set.mulIndicator_emptyₓ'. -/
 @[simp, to_additive]
 theorem mulIndicator_empty (f : α → M) : mulIndicator (∅ : Set α) f = fun a => 1 :=
   mulIndicator_eq_one.2 <| disjoint_empty _
 #align set.mul_indicator_empty Set.mulIndicator_empty
 #align set.indicator_empty Set.indicator_empty
 
-/- warning: set.mul_indicator_empty' -> Set.mulIndicator_empty' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] (f : α -> M), Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M _inst_1 (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α)) f) (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1)))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] (f : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M _inst_1 (EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α)) f) (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.159 : α) => M) (fun (i : α) => _inst_1))))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_empty' Set.mulIndicator_empty'ₓ'. -/
 @[to_additive]
 theorem mulIndicator_empty' (f : α → M) : mulIndicator (∅ : Set α) f = 1 :=
   mulIndicator_empty f
@@ -333,24 +225,12 @@ theorem mulIndicator_empty' (f : α → M) : mulIndicator (∅ : Set α) f = 1 :
 
 variable (M)
 
-/- warning: set.mul_indicator_one -> Set.mulIndicator_one is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} (M : Type.{u2}) [_inst_1 : One.{u2} M] (s : Set.{u1} α), Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M _inst_1 s (fun (x : α) => OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1)))) (fun (x : α) => OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1)))
-but is expected to have type
-  forall {α : Type.{u2}} (M : Type.{u1}) [_inst_1 : One.{u1} M] (s : Set.{u2} α), Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M _inst_1 s (fun (x : α) => OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1))) (fun (x : α) => OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_one Set.mulIndicator_oneₓ'. -/
 @[simp, to_additive]
 theorem mulIndicator_one (s : Set α) : (mulIndicator s fun x => (1 : M)) = fun x => (1 : M) :=
   mulIndicator_eq_one.2 <| by simp only [mul_support_one, empty_disjoint]
 #align set.mul_indicator_one Set.mulIndicator_one
 #align set.indicator_zero Set.indicator_zero
 
-/- warning: set.mul_indicator_one' -> Set.mulIndicator_one' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} (M : Type.{u2}) [_inst_1 : One.{u2} M] {s : Set.{u1} α}, Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M _inst_1 s (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1)))))) (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1)))))
-but is expected to have type
-  forall {α : Type.{u2}} (M : Type.{u1}) [_inst_1 : One.{u1} M] {s : Set.{u2} α}, Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M _inst_1 s (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.1615 : α) => M) (fun (i : α) => _inst_1))))) (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.1615 : α) => M) (fun (i : α) => _inst_1))))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_one' Set.mulIndicator_one'ₓ'. -/
 @[simp, to_additive]
 theorem mulIndicator_one' {s : Set α} : s.mulIndicator (1 : α → M) = 1 :=
   mulIndicator_one M s
@@ -359,12 +239,6 @@ theorem mulIndicator_one' {s : Set α} : s.mulIndicator (1 : α → M) = 1 :=
 
 variable {M}
 
-/- warning: set.mul_indicator_mul_indicator -> Set.mulIndicator_mulIndicator is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] (s : Set.{u1} α) (t : Set.{u1} α) (f : α -> M), Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M _inst_1 s (Set.mulIndicator.{u1, u2} α M _inst_1 t f)) (Set.mulIndicator.{u1, u2} α M _inst_1 (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t) f)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] (s : Set.{u2} α) (t : Set.{u2} α) (f : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M _inst_1 s (Set.mulIndicator.{u2, u1} α M _inst_1 t f)) (Set.mulIndicator.{u2, u1} α M _inst_1 (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) s t) f)
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_mul_indicator Set.mulIndicator_mulIndicatorₓ'. -/
 @[to_additive]
 theorem mulIndicator_mulIndicator (s t : Set α) (f : α → M) :
     mulIndicator s (mulIndicator t f) = mulIndicator (s ∩ t) f :=
@@ -373,12 +247,6 @@ theorem mulIndicator_mulIndicator (s t : Set α) (f : α → M) :
 #align set.mul_indicator_mul_indicator Set.mulIndicator_mulIndicator
 #align set.indicator_indicator Set.indicator_indicator
 
-/- warning: set.mul_indicator_inter_mul_support -> Set.mulIndicator_inter_mulSupport is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] (s : Set.{u1} α) (f : α -> M), Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M _inst_1 (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s (Function.mulSupport.{u1, u2} α M _inst_1 f)) f) (Set.mulIndicator.{u1, u2} α M _inst_1 s f)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] (s : Set.{u2} α) (f : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M _inst_1 (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) s (Function.mulSupport.{u2, u1} α M _inst_1 f)) f) (Set.mulIndicator.{u2, u1} α M _inst_1 s f)
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_inter_mul_support Set.mulIndicator_inter_mulSupportₓ'. -/
 @[simp, to_additive]
 theorem mulIndicator_inter_mulSupport (s : Set α) (f : α → M) :
     mulIndicator (s ∩ mulSupport f) f = mulIndicator s f := by
@@ -386,12 +254,6 @@ theorem mulIndicator_inter_mulSupport (s : Set α) (f : α → M) :
 #align set.mul_indicator_inter_mul_support Set.mulIndicator_inter_mulSupport
 #align set.indicator_inter_support Set.indicator_inter_support
 
-/- warning: set.comp_mul_indicator -> Set.comp_mulIndicator is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : One.{u3} M] (h : M -> β) (f : α -> M) {s : Set.{u1} α} {x : α} [_inst_3 : DecidablePred.{succ u1} α (fun (_x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) _x s)], Eq.{succ u2} β (h (Set.mulIndicator.{u1, u3} α M _inst_1 s f x)) (Set.piecewise.{u1, succ u2} α (fun (ᾰ : α) => β) s (Function.comp.{succ u1, succ u3, succ u2} α M β h f) (Function.const.{succ u2, succ u1} β α (h (OfNat.ofNat.{u3} M 1 (OfNat.mk.{u3} M 1 (One.one.{u3} M _inst_1))))) (fun (j : α) => _inst_3 j) x)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] (h : M -> β) (f : α -> M) {s : Set.{u3} α} {x : α} [_inst_3 : DecidablePred.{succ u3} α (fun (_x : α) => Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) _x s)], Eq.{succ u2} β (h (Set.mulIndicator.{u3, u1} α M _inst_1 s f x)) (Set.piecewise.{u3, succ u2} α (fun (ᾰ : α) => β) s (Function.comp.{succ u3, succ u1, succ u2} α M β h f) (Function.const.{succ u2, succ u3} β α (h (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)))) (fun (j : α) => _inst_3 j) x)
-Case conversion may be inaccurate. Consider using '#align set.comp_mul_indicator Set.comp_mulIndicatorₓ'. -/
 @[to_additive]
 theorem comp_mulIndicator (h : M → β) (f : α → M) {s : Set α} {x : α} [DecidablePred (· ∈ s)] :
     h (s.mulIndicator f x) = s.piecewise (h ∘ f) (const α (h 1)) x := by
@@ -399,12 +261,6 @@ theorem comp_mulIndicator (h : M → β) (f : α → M) {s : Set α} {x : α} [D
 #align set.comp_mul_indicator Set.comp_mulIndicator
 #align set.comp_indicator Set.comp_indicator
 
-/- warning: set.mul_indicator_comp_right -> Set.mulIndicator_comp_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : One.{u3} M] {s : Set.{u1} α} (f : β -> α) {g : α -> M} {x : β}, Eq.{succ u3} M (Set.mulIndicator.{u2, u3} β M _inst_1 (Set.preimage.{u2, u1} β α f s) (Function.comp.{succ u2, succ u1, succ u3} β α M g f) x) (Set.mulIndicator.{u1, u3} α M _inst_1 s g (f x))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u3} α} (f : β -> α) {g : α -> M} {x : β}, Eq.{succ u2} M (Set.mulIndicator.{u1, u2} β M _inst_1 (Set.preimage.{u1, u3} β α f s) (Function.comp.{succ u1, succ u3, succ u2} β α M g f) x) (Set.mulIndicator.{u3, u2} α M _inst_1 s g (f x))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_comp_right Set.mulIndicator_comp_rightₓ'. -/
 @[to_additive]
 theorem mulIndicator_comp_right {s : Set α} (f : β → α) {g : α → M} {x : β} :
     mulIndicator (f ⁻¹' s) (g ∘ f) x = mulIndicator s g (f x) := by simp only [mul_indicator];
@@ -412,12 +268,6 @@ theorem mulIndicator_comp_right {s : Set α} (f : β → α) {g : α → M} {x :
 #align set.mul_indicator_comp_right Set.mulIndicator_comp_right
 #align set.indicator_comp_right Set.indicator_comp_right
 
-/- warning: set.mul_indicator_image -> Set.mulIndicator_image is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : One.{u3} M] {s : Set.{u1} α} {f : β -> M} {g : α -> β}, (Function.Injective.{succ u1, succ u2} α β g) -> (forall {x : α}, Eq.{succ u3} M (Set.mulIndicator.{u2, u3} β M _inst_1 (Set.image.{u1, u2} α β g s) f (g x)) (Set.mulIndicator.{u1, u3} α M _inst_1 s (Function.comp.{succ u1, succ u2, succ u3} α β M f g) x))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u3} α} {f : β -> M} {g : α -> β}, (Function.Injective.{succ u3, succ u2} α β g) -> (forall {x : α}, Eq.{succ u1} M (Set.mulIndicator.{u2, u1} β M _inst_1 (Set.image.{u3, u2} α β g s) f (g x)) (Set.mulIndicator.{u3, u1} α M _inst_1 s (Function.comp.{succ u3, succ u2, succ u1} α β M f g) x))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_image Set.mulIndicator_imageₓ'. -/
 @[to_additive]
 theorem mulIndicator_image {s : Set α} {f : β → M} {g : α → β} (hg : Injective g) {x : α} :
     mulIndicator (g '' s) f (g x) = mulIndicator s (f ∘ g) x := by
@@ -446,12 +296,6 @@ theorem comp_mulIndicator_const (c : M) (f : M → N) (hf : f 1 = 1) :
 #align set.comp_indicator_const Set.comp_indicator_const
 -/
 
-/- warning: set.mul_indicator_preimage -> Set.mulIndicator_preimage is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] (s : Set.{u1} α) (f : α -> M) (B : Set.{u2} M), Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α M (Set.mulIndicator.{u1, u2} α M _inst_1 s f) B) (Set.ite.{u1} α s (Set.preimage.{u1, u2} α M f B) (Set.preimage.{u1, u2} α M (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1))))) B))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] (s : Set.{u2} α) (f : α -> M) (B : Set.{u1} M), Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u1} α M (Set.mulIndicator.{u2, u1} α M _inst_1 s f) B) (Set.ite.{u2} α s (Set.preimage.{u2, u1} α M f B) (Set.preimage.{u2, u1} α M (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Data.Set.Image._hyg.26 : α) => M) (fun (i : α) => _inst_1)))) B))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_preimage Set.mulIndicator_preimageₓ'. -/
 @[to_additive]
 theorem mulIndicator_preimage (s : Set α) (f : α → M) (B : Set M) :
     mulIndicator s f ⁻¹' B = s.ite (f ⁻¹' B) (1 ⁻¹' B) :=
@@ -471,12 +315,6 @@ theorem mulIndicator_one_preimage (s : Set M) :
 #align set.indicator_zero_preimage Set.indicator_zero_preimage
 -/
 
-/- warning: set.mul_indicator_const_preimage_eq_union -> Set.mulIndicator_const_preimage_eq_union is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] (U : Set.{u1} α) (s : Set.{u2} M) (a : M) [_inst_3 : Decidable (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) a s)] [_inst_4 : Decidable (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) s)], Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α M (Set.mulIndicator.{u1, u2} α M _inst_1 U (fun (x : α) => a)) s) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) (ite.{succ u1} (Set.{u1} α) (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) a s) _inst_3 U (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) (ite.{succ u1} (Set.{u1} α) (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) s) _inst_4 (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) U) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] (U : Set.{u2} α) (s : Set.{u1} M) (a : M) [_inst_3 : Decidable (Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) a s)] [_inst_4 : Decidable (Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)) s)], Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u1} α M (Set.mulIndicator.{u2, u1} α M _inst_1 U (fun (x : α) => a)) s) (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) (ite.{succ u2} (Set.{u2} α) (Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) a s) _inst_3 U (EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α))) (ite.{succ u2} (Set.{u2} α) (Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)) s) _inst_4 (HasCompl.compl.{u2} (Set.{u2} α) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} α) (Set.instBooleanAlgebraSet.{u2} α)) U) (EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α))))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_const_preimage_eq_union Set.mulIndicator_const_preimage_eq_unionₓ'. -/
 @[to_additive]
 theorem mulIndicator_const_preimage_eq_union (U : Set α) (s : Set M) (a : M) [Decidable (a ∈ s)]
     [Decidable ((1 : M) ∈ s)] :
@@ -487,12 +325,6 @@ theorem mulIndicator_const_preimage_eq_union (U : Set α) (s : Set M) (a : M) [D
 #align set.mul_indicator_const_preimage_eq_union Set.mulIndicator_const_preimage_eq_union
 #align set.indicator_const_preimage_eq_union Set.indicator_const_preimage_eq_union
 
-/- warning: set.mul_indicator_const_preimage -> Set.mulIndicator_const_preimage is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] (U : Set.{u1} α) (s : Set.{u2} M) (a : M), Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) (Set.preimage.{u1, u2} α M (Set.mulIndicator.{u1, u2} α M _inst_1 U (fun (x : α) => a)) s) (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasInsert.{u1} (Set.{u1} α)) (Set.univ.{u1} α) (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasInsert.{u1} (Set.{u1} α)) U (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasInsert.{u1} (Set.{u1} α)) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) U) (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] (U : Set.{u2} α) (s : Set.{u1} M) (a : M), Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) (Set.preimage.{u2, u1} α M (Set.mulIndicator.{u2, u1} α M _inst_1 U (fun (x : α) => a)) s) (Insert.insert.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instInsertSet.{u2} (Set.{u2} α)) (Set.univ.{u2} α) (Insert.insert.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instInsertSet.{u2} (Set.{u2} α)) U (Insert.insert.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instInsertSet.{u2} (Set.{u2} α)) (HasCompl.compl.{u2} (Set.{u2} α) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} α) (Set.instBooleanAlgebraSet.{u2} α)) U) (Singleton.singleton.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instSingletonSet.{u2} (Set.{u2} α)) (EmptyCollection.emptyCollection.{u2} (Set.{u2} α) (Set.instEmptyCollectionSet.{u2} α))))))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_const_preimage Set.mulIndicator_const_preimageₓ'. -/
 @[to_additive]
 theorem mulIndicator_const_preimage (U : Set α) (s : Set M) (a : M) :
     (U.mulIndicator fun x => a) ⁻¹' s ∈ ({Set.univ, U, Uᶜ, ∅} : Set (Set α)) := by
@@ -502,23 +334,11 @@ theorem mulIndicator_const_preimage (U : Set α) (s : Set M) (a : M) :
 #align set.mul_indicator_const_preimage Set.mulIndicator_const_preimage
 #align set.indicator_const_preimage Set.indicator_const_preimage
 
-/- warning: set.indicator_one_preimage -> Set.indicator_one_preimage is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] [_inst_3 : Zero.{u2} M] (U : Set.{u1} α) (s : Set.{u2} M), Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) (Set.preimage.{u1, u2} α M (Set.indicator.{u1, u2} α M _inst_3 U (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1)))))) s) (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasInsert.{u1} (Set.{u1} α)) (Set.univ.{u1} α) (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasInsert.{u1} (Set.{u1} α)) U (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasInsert.{u1} (Set.{u1} α)) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) U) (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))))))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] [_inst_3 : Zero.{u2} M] (U : Set.{u1} α) (s : Set.{u2} M), Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) (Set.preimage.{u1, u2} α M (Set.indicator.{u1, u2} α M _inst_3 U (OfNat.ofNat.{max u1 u2} (α -> M) 1 (One.toOfNat1.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => _inst_1))))) s) (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instInsertSet.{u1} (Set.{u1} α)) (Set.univ.{u1} α) (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instInsertSet.{u1} (Set.{u1} α)) U (Insert.insert.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instInsertSet.{u1} (Set.{u1} α)) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) U) (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instSingletonSet.{u1} (Set.{u1} α)) (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.instEmptyCollectionSet.{u1} α))))))
-Case conversion may be inaccurate. Consider using '#align set.indicator_one_preimage Set.indicator_one_preimageₓ'. -/
 theorem indicator_one_preimage [Zero M] (U : Set α) (s : Set M) :
     U.indicator 1 ⁻¹' s ∈ ({Set.univ, U, Uᶜ, ∅} : Set (Set α)) :=
   indicator_const_preimage _ _ 1
 #align set.indicator_one_preimage Set.indicator_one_preimage
 
-/- warning: set.mul_indicator_preimage_of_not_mem -> Set.mulIndicator_preimage_of_not_mem is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] (s : Set.{u1} α) (f : α -> M) {t : Set.{u2} M}, (Not (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) t)) -> (Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α M (Set.mulIndicator.{u1, u2} α M _inst_1 s f) t) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Set.preimage.{u1, u2} α M f t) s))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] (s : Set.{u2} α) (f : α -> M) {t : Set.{u1} M}, (Not (Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)) t)) -> (Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u1} α M (Set.mulIndicator.{u2, u1} α M _inst_1 s f) t) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) (Set.preimage.{u2, u1} α M f t) s))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_preimage_of_not_mem Set.mulIndicator_preimage_of_not_memₓ'. -/
 @[to_additive]
 theorem mulIndicator_preimage_of_not_mem (s : Set α) (f : α → M) {t : Set M} (ht : (1 : M) ∉ t) :
     mulIndicator s f ⁻¹' t = f ⁻¹' t ∩ s := by
@@ -526,12 +346,6 @@ theorem mulIndicator_preimage_of_not_mem (s : Set α) (f : α → M) {t : Set M}
 #align set.mul_indicator_preimage_of_not_mem Set.mulIndicator_preimage_of_not_mem
 #align set.indicator_preimage_of_not_mem Set.indicator_preimage_of_not_mem
 
-/- warning: set.mem_range_mul_indicator -> Set.mem_range_mulIndicator is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {r : M} {s : Set.{u1} α} {f : α -> M}, Iff (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) r (Set.range.{u2, succ u1} M α (Set.mulIndicator.{u1, u2} α M _inst_1 s f))) (Or (And (Eq.{succ u2} M r (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1)))) (Ne.{succ u1} (Set.{u1} α) s (Set.univ.{u1} α))) (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) r (Set.image.{u1, u2} α M f s)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {r : M} {s : Set.{u2} α} {f : α -> M}, Iff (Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) r (Set.range.{u1, succ u2} M α (Set.mulIndicator.{u2, u1} α M _inst_1 s f))) (Or (And (Eq.{succ u1} M r (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1))) (Ne.{succ u2} (Set.{u2} α) s (Set.univ.{u2} α))) (Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) r (Set.image.{u2, u1} α M f s)))
-Case conversion may be inaccurate. Consider using '#align set.mem_range_mul_indicator Set.mem_range_mulIndicatorₓ'. -/
 @[to_additive]
 theorem mem_range_mulIndicator {r : M} {s : Set α} {f : α → M} :
     r ∈ range (mulIndicator s f) ↔ r = 1 ∧ s ≠ univ ∨ r ∈ f '' s := by
@@ -555,12 +369,6 @@ section Monoid
 
 variable [MulOneClass M] {s t : Set α} {f g : α → M} {a : α}
 
-/- warning: set.mul_indicator_union_mul_inter_apply -> Set.mulIndicator_union_mul_inter_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulOneClass.{u2} M] (f : α -> M) (s : Set.{u1} α) (t : Set.{u1} α) (a : α), Eq.{succ u2} M (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toHasMul.{u2} M _inst_1)) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t) f a) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t) f a)) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toHasMul.{u2} M _inst_1)) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) s f a) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) t f a))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulOneClass.{u1} M] (f : α -> M) (s : Set.{u2} α) (t : Set.{u2} α) (a : α), Eq.{succ u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M _inst_1)) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) s t) f a) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) s t) f a)) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M _inst_1)) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) s f a) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) t f a))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_union_mul_inter_apply Set.mulIndicator_union_mul_inter_applyₓ'. -/
 @[to_additive]
 theorem mulIndicator_union_mul_inter_apply (f : α → M) (s t : Set α) (a : α) :
     mulIndicator (s ∪ t) f a * mulIndicator (s ∩ t) f a = mulIndicator s f a * mulIndicator t f a :=
@@ -568,12 +376,6 @@ theorem mulIndicator_union_mul_inter_apply (f : α → M) (s t : Set α) (a : α
 #align set.mul_indicator_union_mul_inter_apply Set.mulIndicator_union_mul_inter_apply
 #align set.indicator_union_add_inter_apply Set.indicator_union_add_inter_apply
 
-/- warning: set.mul_indicator_union_mul_inter -> Set.mulIndicator_union_mul_inter is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulOneClass.{u2} M] (f : α -> M) (s : Set.{u1} α) (t : Set.{u1} α), Eq.{succ (max u1 u2)} (α -> M) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (α -> M) (α -> M) (α -> M) (instHMul.{max u1 u2} (α -> M) (Pi.instMul.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasMul.{u2} M _inst_1))) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t) f) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t) f)) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (α -> M) (α -> M) (α -> M) (instHMul.{max u1 u2} (α -> M) (Pi.instMul.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasMul.{u2} M _inst_1))) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) s f) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) t f))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulOneClass.{u1} M] (f : α -> M) (s : Set.{u2} α) (t : Set.{u2} α), Eq.{max (succ u2) (succ u1)} (α -> M) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> M) (α -> M) (α -> M) (instHMul.{max u2 u1} (α -> M) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toMul.{u1} M _inst_1))) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) s t) f) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) s t) f)) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> M) (α -> M) (α -> M) (instHMul.{max u2 u1} (α -> M) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toMul.{u1} M _inst_1))) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) s f) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) t f))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_union_mul_inter Set.mulIndicator_union_mul_interₓ'. -/
 @[to_additive]
 theorem mulIndicator_union_mul_inter (f : α → M) (s t : Set α) :
     mulIndicator (s ∪ t) f * mulIndicator (s ∩ t) f = mulIndicator s f * mulIndicator t f :=
@@ -581,12 +383,6 @@ theorem mulIndicator_union_mul_inter (f : α → M) (s t : Set α) :
 #align set.mul_indicator_union_mul_inter Set.mulIndicator_union_mul_inter
 #align set.indicator_union_add_inter Set.indicator_union_add_inter
 
-/- warning: set.mul_indicator_union_of_not_mem_inter -> Set.mulIndicator_union_of_not_mem_inter is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulOneClass.{u2} M] {s : Set.{u1} α} {t : Set.{u1} α} {a : α}, (Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t))) -> (forall (f : α -> M), Eq.{succ u2} M (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t) f a) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toHasMul.{u2} M _inst_1)) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) s f a) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) t f a)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulOneClass.{u1} M] {s : Set.{u2} α} {t : Set.{u2} α} {a : α}, (Not (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) s t))) -> (forall (f : α -> M), Eq.{succ u1} M (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) s t) f a) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M _inst_1)) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) s f a) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) t f a)))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_union_of_not_mem_inter Set.mulIndicator_union_of_not_mem_interₓ'. -/
 @[to_additive]
 theorem mulIndicator_union_of_not_mem_inter (h : a ∉ s ∩ t) (f : α → M) :
     mulIndicator (s ∪ t) f a = mulIndicator s f a * mulIndicator t f a := by
@@ -594,12 +390,6 @@ theorem mulIndicator_union_of_not_mem_inter (h : a ∉ s ∩ t) (f : α → M) :
 #align set.mul_indicator_union_of_not_mem_inter Set.mulIndicator_union_of_not_mem_inter
 #align set.indicator_union_of_not_mem_inter Set.indicator_union_of_not_mem_inter
 
-/- warning: set.mul_indicator_union_of_disjoint -> Set.mulIndicator_union_of_disjoint is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulOneClass.{u2} M] {s : Set.{u1} α} {t : Set.{u1} α}, (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) s t) -> (forall (f : α -> M), Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s t) f) (fun (a : α) => HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toHasMul.{u2} M _inst_1)) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) s f a) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) t f a)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulOneClass.{u1} M] {s : Set.{u2} α} {t : Set.{u2} α}, (Disjoint.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (BoundedOrder.toOrderBot.{u2} (Set.{u2} α) (Preorder.toLE.{u2} (Set.{u2} α) (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))))) (CompleteLattice.toBoundedOrder.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) s t) -> (forall (f : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) (Union.union.{u2} (Set.{u2} α) (Set.instUnionSet.{u2} α) s t) f) (fun (a : α) => HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M _inst_1)) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) s f a) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) t f a)))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_union_of_disjoint Set.mulIndicator_union_of_disjointₓ'. -/
 @[to_additive]
 theorem mulIndicator_union_of_disjoint (h : Disjoint s t) (f : α → M) :
     mulIndicator (s ∪ t) f = fun a => mulIndicator s f a * mulIndicator t f a :=
@@ -607,12 +397,6 @@ theorem mulIndicator_union_of_disjoint (h : Disjoint s t) (f : α → M) :
 #align set.mul_indicator_union_of_disjoint Set.mulIndicator_union_of_disjoint
 #align set.indicator_union_of_disjoint Set.indicator_union_of_disjoint
 
-/- warning: set.mul_indicator_mul -> Set.mulIndicator_mul is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulOneClass.{u2} M] (s : Set.{u1} α) (f : α -> M) (g : α -> M), Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) s (fun (a : α) => HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toHasMul.{u2} M _inst_1)) (f a) (g a))) (fun (a : α) => HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toHasMul.{u2} M _inst_1)) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) s f a) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) s g a))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulOneClass.{u1} M] (s : Set.{u2} α) (f : α -> M) (g : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) s (fun (a : α) => HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M _inst_1)) (f a) (g a))) (fun (a : α) => HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M _inst_1)) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) s f a) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) s g a))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_mul Set.mulIndicator_mulₓ'. -/
 @[to_additive]
 theorem mulIndicator_mul (s : Set α) (f g : α → M) :
     (mulIndicator s fun a => f a * g a) = fun a => mulIndicator s f a * mulIndicator s g a := by
@@ -620,12 +404,6 @@ theorem mulIndicator_mul (s : Set α) (f g : α → M) :
 #align set.mul_indicator_mul Set.mulIndicator_mul
 #align set.indicator_add Set.indicator_add
 
-/- warning: set.mul_indicator_mul' -> Set.mulIndicator_mul' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulOneClass.{u2} M] (s : Set.{u1} α) (f : α -> M) (g : α -> M), Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) s (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (α -> M) (α -> M) (α -> M) (instHMul.{max u1 u2} (α -> M) (Pi.instMul.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasMul.{u2} M _inst_1))) f g)) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (α -> M) (α -> M) (α -> M) (instHMul.{max u1 u2} (α -> M) (Pi.instMul.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasMul.{u2} M _inst_1))) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) s f) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) s g))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulOneClass.{u1} M] (s : Set.{u2} α) (f : α -> M) (g : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) s (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> M) (α -> M) (α -> M) (instHMul.{max u2 u1} (α -> M) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toMul.{u1} M _inst_1))) f g)) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> M) (α -> M) (α -> M) (instHMul.{max u2 u1} (α -> M) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toMul.{u1} M _inst_1))) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) s f) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) s g))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_mul' Set.mulIndicator_mul'ₓ'. -/
 @[to_additive]
 theorem mulIndicator_mul' (s : Set α) (f g : α → M) :
     mulIndicator s (f * g) = mulIndicator s f * mulIndicator s g :=
@@ -633,12 +411,6 @@ theorem mulIndicator_mul' (s : Set α) (f g : α → M) :
 #align set.mul_indicator_mul' Set.mulIndicator_mul'
 #align set.indicator_add' Set.indicator_add'
 
-/- warning: set.mul_indicator_compl_mul_self_apply -> Set.mulIndicator_compl_mul_self_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulOneClass.{u2} M] (s : Set.{u1} α) (f : α -> M) (a : α), Eq.{succ u2} M (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toHasMul.{u2} M _inst_1)) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) s) f a) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) s f a)) (f a)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulOneClass.{u1} M] (s : Set.{u2} α) (f : α -> M) (a : α), Eq.{succ u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M _inst_1)) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) (HasCompl.compl.{u2} (Set.{u2} α) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} α) (Set.instBooleanAlgebraSet.{u2} α)) s) f a) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) s f a)) (f a)
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_compl_mul_self_apply Set.mulIndicator_compl_mul_self_applyₓ'. -/
 @[simp, to_additive]
 theorem mulIndicator_compl_mul_self_apply (s : Set α) (f : α → M) (a : α) :
     mulIndicator (sᶜ) f a * mulIndicator s f a = f a :=
@@ -646,12 +418,6 @@ theorem mulIndicator_compl_mul_self_apply (s : Set α) (f : α → M) (a : α) :
 #align set.mul_indicator_compl_mul_self_apply Set.mulIndicator_compl_mul_self_apply
 #align set.indicator_compl_add_self_apply Set.indicator_compl_add_self_apply
 
-/- warning: set.mul_indicator_compl_mul_self -> Set.mulIndicator_compl_mul_self is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulOneClass.{u2} M] (s : Set.{u1} α) (f : α -> M), Eq.{succ (max u1 u2)} (α -> M) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (α -> M) (α -> M) (α -> M) (instHMul.{max u1 u2} (α -> M) (Pi.instMul.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasMul.{u2} M _inst_1))) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) s) f) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) s f)) f
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulOneClass.{u1} M] (s : Set.{u2} α) (f : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> M) (α -> M) (α -> M) (instHMul.{max u2 u1} (α -> M) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toMul.{u1} M _inst_1))) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) (HasCompl.compl.{u2} (Set.{u2} α) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} α) (Set.instBooleanAlgebraSet.{u2} α)) s) f) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) s f)) f
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_compl_mul_self Set.mulIndicator_compl_mul_selfₓ'. -/
 @[simp, to_additive]
 theorem mulIndicator_compl_mul_self (s : Set α) (f : α → M) :
     mulIndicator (sᶜ) f * mulIndicator s f = f :=
@@ -659,12 +425,6 @@ theorem mulIndicator_compl_mul_self (s : Set α) (f : α → M) :
 #align set.mul_indicator_compl_mul_self Set.mulIndicator_compl_mul_self
 #align set.indicator_compl_add_self Set.indicator_compl_add_self
 
-/- warning: set.mul_indicator_self_mul_compl_apply -> Set.mulIndicator_self_mul_compl_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulOneClass.{u2} M] (s : Set.{u1} α) (f : α -> M) (a : α), Eq.{succ u2} M (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toHasMul.{u2} M _inst_1)) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) s f a) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) s) f a)) (f a)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulOneClass.{u1} M] (s : Set.{u2} α) (f : α -> M) (a : α), Eq.{succ u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M _inst_1)) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) s f a) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) (HasCompl.compl.{u2} (Set.{u2} α) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} α) (Set.instBooleanAlgebraSet.{u2} α)) s) f a)) (f a)
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_self_mul_compl_apply Set.mulIndicator_self_mul_compl_applyₓ'. -/
 @[simp, to_additive]
 theorem mulIndicator_self_mul_compl_apply (s : Set α) (f : α → M) (a : α) :
     mulIndicator s f a * mulIndicator (sᶜ) f a = f a :=
@@ -672,12 +432,6 @@ theorem mulIndicator_self_mul_compl_apply (s : Set α) (f : α → M) (a : α) :
 #align set.mul_indicator_self_mul_compl_apply Set.mulIndicator_self_mul_compl_apply
 #align set.indicator_self_add_compl_apply Set.indicator_self_add_compl_apply
 
-/- warning: set.mul_indicator_self_mul_compl -> Set.mulIndicator_self_mul_compl is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulOneClass.{u2} M] (s : Set.{u1} α) (f : α -> M), Eq.{succ (max u1 u2)} (α -> M) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (α -> M) (α -> M) (α -> M) (instHMul.{max u1 u2} (α -> M) (Pi.instMul.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasMul.{u2} M _inst_1))) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) s f) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) s) f)) f
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulOneClass.{u1} M] (s : Set.{u2} α) (f : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> M) (α -> M) (α -> M) (instHMul.{max u2 u1} (α -> M) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toMul.{u1} M _inst_1))) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) s f) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) (HasCompl.compl.{u2} (Set.{u2} α) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} α) (Set.instBooleanAlgebraSet.{u2} α)) s) f)) f
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_self_mul_compl Set.mulIndicator_self_mul_complₓ'. -/
 @[simp, to_additive]
 theorem mulIndicator_self_mul_compl (s : Set α) (f : α → M) :
     mulIndicator s f * mulIndicator (sᶜ) f = f :=
@@ -685,12 +439,6 @@ theorem mulIndicator_self_mul_compl (s : Set α) (f : α → M) :
 #align set.mul_indicator_self_mul_compl Set.mulIndicator_self_mul_compl
 #align set.indicator_self_add_compl Set.indicator_self_add_compl
 
-/- warning: set.mul_indicator_mul_eq_left -> Set.mulIndicator_mul_eq_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulOneClass.{u2} M] {f : α -> M} {g : α -> M}, (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (Function.mulSupport.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) f) (Function.mulSupport.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) g)) -> (Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) (Function.mulSupport.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) f) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (α -> M) (α -> M) (α -> M) (instHMul.{max u1 u2} (α -> M) (Pi.instMul.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasMul.{u2} M _inst_1))) f g)) f)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulOneClass.{u1} M] {f : α -> M} {g : α -> M}, (Disjoint.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (BoundedOrder.toOrderBot.{u2} (Set.{u2} α) (Preorder.toLE.{u2} (Set.{u2} α) (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))))) (CompleteLattice.toBoundedOrder.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (Function.mulSupport.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) f) (Function.mulSupport.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) g)) -> (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) (Function.mulSupport.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) f) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> M) (α -> M) (α -> M) (instHMul.{max u2 u1} (α -> M) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toMul.{u1} M _inst_1))) f g)) f)
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_mul_eq_left Set.mulIndicator_mul_eq_leftₓ'. -/
 @[to_additive]
 theorem mulIndicator_mul_eq_left {f g : α → M} (h : Disjoint (mulSupport f) (mulSupport g)) :
     (mulSupport f).mulIndicator (f * g) = f :=
@@ -701,12 +449,6 @@ theorem mulIndicator_mul_eq_left {f g : α → M} (h : Disjoint (mulSupport f) (
 #align set.mul_indicator_mul_eq_left Set.mulIndicator_mul_eq_left
 #align set.indicator_add_eq_left Set.indicator_add_eq_left
 
-/- warning: set.mul_indicator_mul_eq_right -> Set.mulIndicator_mul_eq_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulOneClass.{u2} M] {f : α -> M} {g : α -> M}, (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (Function.mulSupport.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) f) (Function.mulSupport.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) g)) -> (Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) (Function.mulSupport.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) g) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (α -> M) (α -> M) (α -> M) (instHMul.{max u1 u2} (α -> M) (Pi.instMul.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasMul.{u2} M _inst_1))) f g)) g)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulOneClass.{u1} M] {f : α -> M} {g : α -> M}, (Disjoint.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (BoundedOrder.toOrderBot.{u2} (Set.{u2} α) (Preorder.toLE.{u2} (Set.{u2} α) (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))))) (CompleteLattice.toBoundedOrder.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (Function.mulSupport.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) f) (Function.mulSupport.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) g)) -> (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) (Function.mulSupport.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) g) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> M) (α -> M) (α -> M) (instHMul.{max u2 u1} (α -> M) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toMul.{u1} M _inst_1))) f g)) g)
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_mul_eq_right Set.mulIndicator_mul_eq_rightₓ'. -/
 @[to_additive]
 theorem mulIndicator_mul_eq_right {f g : α → M} (h : Disjoint (mulSupport f) (mulSupport g)) :
     (mulSupport g).mulIndicator (f * g) = g :=
@@ -717,12 +459,6 @@ theorem mulIndicator_mul_eq_right {f g : α → M} (h : Disjoint (mulSupport f)
 #align set.mul_indicator_mul_eq_right Set.mulIndicator_mul_eq_right
 #align set.indicator_add_eq_right Set.indicator_add_eq_right
 
-/- warning: set.mul_indicator_mul_compl_eq_piecewise -> Set.mulIndicator_mul_compl_eq_piecewise is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulOneClass.{u2} M] {s : Set.{u1} α} [_inst_2 : DecidablePred.{succ u1} α (fun (_x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) _x s)] (f : α -> M) (g : α -> M), Eq.{succ (max u1 u2)} (α -> M) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (α -> M) (α -> M) (α -> M) (instHMul.{max u1 u2} (α -> M) (Pi.instMul.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasMul.{u2} M _inst_1))) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) s f) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) s) g)) (Set.piecewise.{u1, succ u2} α (fun (ᾰ : α) => M) s f g (fun (j : α) => _inst_2 j))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulOneClass.{u1} M] {s : Set.{u2} α} [_inst_2 : DecidablePred.{succ u2} α (fun (_x : α) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) _x s)] (f : α -> M) (g : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> M) (α -> M) (α -> M) (instHMul.{max u2 u1} (α -> M) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toMul.{u1} M _inst_1))) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) s f) (Set.mulIndicator.{u2, u1} α M (MulOneClass.toOne.{u1} M _inst_1) (HasCompl.compl.{u2} (Set.{u2} α) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} α) (Set.instBooleanAlgebraSet.{u2} α)) s) g)) (Set.piecewise.{u2, succ u1} α (fun (ᾰ : α) => M) s f g (fun (j : α) => _inst_2 j))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_mul_compl_eq_piecewise Set.mulIndicator_mul_compl_eq_piecewiseₓ'. -/
 @[to_additive]
 theorem mulIndicator_mul_compl_eq_piecewise [DecidablePred (· ∈ s)] (f g : α → M) :
     s.mulIndicator f * sᶜ.mulIndicator g = s.piecewise f g :=
@@ -756,45 +492,21 @@ section DistribMulAction
 
 variable {A : Type _} [AddMonoid A] [Monoid M] [DistribMulAction M A]
 
-/- warning: set.indicator_smul_apply -> Set.indicator_smul_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {A : Type.{u3}} [_inst_1 : AddMonoid.{u3} A] [_inst_2 : Monoid.{u2} M] [_inst_3 : DistribMulAction.{u2, u3} M A _inst_2 _inst_1] (s : Set.{u1} α) (r : α -> M) (f : α -> A) (x : α), Eq.{succ u3} A (Set.indicator.{u1, u3} α A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A _inst_1)) s (fun (x : α) => SMul.smul.{u2, u3} M A (SMulZeroClass.toHasSmul.{u2, u3} M A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A _inst_1)) (DistribSMul.toSmulZeroClass.{u2, u3} M A (AddMonoid.toAddZeroClass.{u3} A _inst_1) (DistribMulAction.toDistribSMul.{u2, u3} M A _inst_2 _inst_1 _inst_3))) (r x) (f x)) x) (SMul.smul.{u2, u3} M A (SMulZeroClass.toHasSmul.{u2, u3} M A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A _inst_1)) (DistribSMul.toSmulZeroClass.{u2, u3} M A (AddMonoid.toAddZeroClass.{u3} A _inst_1) (DistribMulAction.toDistribSMul.{u2, u3} M A _inst_2 _inst_1 _inst_3))) (r x) (Set.indicator.{u1, u3} α A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A _inst_1)) s f x))
-but is expected to have type
-  forall {α : Type.{u3}} {M : Type.{u1}} {A : Type.{u2}} [_inst_1 : AddMonoid.{u2} A] [_inst_2 : Monoid.{u1} M] [_inst_3 : DistribMulAction.{u1, u2} M A _inst_2 _inst_1] (s : Set.{u3} α) (r : α -> M) (f : α -> A) (x : α), Eq.{succ u2} A (Set.indicator.{u3, u2} α A (AddMonoid.toZero.{u2} A _inst_1) s (fun (x : α) => HSMul.hSMul.{u1, u2, u2} M A A (instHSMul.{u1, u2} M A (SMulZeroClass.toSMul.{u1, u2} M A (AddMonoid.toZero.{u2} A _inst_1) (DistribSMul.toSMulZeroClass.{u1, u2} M A (AddMonoid.toAddZeroClass.{u2} A _inst_1) (DistribMulAction.toDistribSMul.{u1, u2} M A _inst_2 _inst_1 _inst_3)))) (r x) (f x)) x) (HSMul.hSMul.{u1, u2, u2} M A A (instHSMul.{u1, u2} M A (SMulZeroClass.toSMul.{u1, u2} M A (AddMonoid.toZero.{u2} A _inst_1) (DistribSMul.toSMulZeroClass.{u1, u2} M A (AddMonoid.toAddZeroClass.{u2} A _inst_1) (DistribMulAction.toDistribSMul.{u1, u2} M A _inst_2 _inst_1 _inst_3)))) (r x) (Set.indicator.{u3, u2} α A (AddMonoid.toZero.{u2} A _inst_1) s f x))
-Case conversion may be inaccurate. Consider using '#align set.indicator_smul_apply Set.indicator_smul_applyₓ'. -/
 theorem indicator_smul_apply (s : Set α) (r : α → M) (f : α → A) (x : α) :
     indicator s (fun x => r x • f x) x = r x • indicator s f x := by dsimp only [indicator];
   split_ifs; exacts[rfl, (smul_zero (r x)).symm]
 #align set.indicator_smul_apply Set.indicator_smul_apply
 
-/- warning: set.indicator_smul -> Set.indicator_smul is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {A : Type.{u3}} [_inst_1 : AddMonoid.{u3} A] [_inst_2 : Monoid.{u2} M] [_inst_3 : DistribMulAction.{u2, u3} M A _inst_2 _inst_1] (s : Set.{u1} α) (r : α -> M) (f : α -> A), Eq.{max (succ u1) (succ u3)} (α -> A) (Set.indicator.{u1, u3} α A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A _inst_1)) s (fun (x : α) => SMul.smul.{u2, u3} M A (SMulZeroClass.toHasSmul.{u2, u3} M A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A _inst_1)) (DistribSMul.toSmulZeroClass.{u2, u3} M A (AddMonoid.toAddZeroClass.{u3} A _inst_1) (DistribMulAction.toDistribSMul.{u2, u3} M A _inst_2 _inst_1 _inst_3))) (r x) (f x))) (fun (x : α) => SMul.smul.{u2, u3} M A (SMulZeroClass.toHasSmul.{u2, u3} M A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A _inst_1)) (DistribSMul.toSmulZeroClass.{u2, u3} M A (AddMonoid.toAddZeroClass.{u3} A _inst_1) (DistribMulAction.toDistribSMul.{u2, u3} M A _inst_2 _inst_1 _inst_3))) (r x) (Set.indicator.{u1, u3} α A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A _inst_1)) s f x))
-but is expected to have type
-  forall {α : Type.{u3}} {M : Type.{u1}} {A : Type.{u2}} [_inst_1 : AddMonoid.{u2} A] [_inst_2 : Monoid.{u1} M] [_inst_3 : DistribMulAction.{u1, u2} M A _inst_2 _inst_1] (s : Set.{u3} α) (r : α -> M) (f : α -> A), Eq.{max (succ u3) (succ u2)} (α -> A) (Set.indicator.{u3, u2} α A (AddMonoid.toZero.{u2} A _inst_1) s (fun (x : α) => HSMul.hSMul.{u1, u2, u2} M A A (instHSMul.{u1, u2} M A (SMulZeroClass.toSMul.{u1, u2} M A (AddMonoid.toZero.{u2} A _inst_1) (DistribSMul.toSMulZeroClass.{u1, u2} M A (AddMonoid.toAddZeroClass.{u2} A _inst_1) (DistribMulAction.toDistribSMul.{u1, u2} M A _inst_2 _inst_1 _inst_3)))) (r x) (f x))) (fun (x : α) => HSMul.hSMul.{u1, u2, u2} M A A (instHSMul.{u1, u2} M A (SMulZeroClass.toSMul.{u1, u2} M A (AddMonoid.toZero.{u2} A _inst_1) (DistribSMul.toSMulZeroClass.{u1, u2} M A (AddMonoid.toAddZeroClass.{u2} A _inst_1) (DistribMulAction.toDistribSMul.{u1, u2} M A _inst_2 _inst_1 _inst_3)))) (r x) (Set.indicator.{u3, u2} α A (AddMonoid.toZero.{u2} A _inst_1) s f x))
-Case conversion may be inaccurate. Consider using '#align set.indicator_smul Set.indicator_smulₓ'. -/
 theorem indicator_smul (s : Set α) (r : α → M) (f : α → A) :
     (indicator s fun x : α => r x • f x) = fun x : α => r x • indicator s f x :=
   funext <| indicator_smul_apply s r f
 #align set.indicator_smul Set.indicator_smul
 
-/- warning: set.indicator_const_smul_apply -> Set.indicator_const_smul_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {A : Type.{u3}} [_inst_1 : AddMonoid.{u3} A] [_inst_2 : Monoid.{u2} M] [_inst_3 : DistribMulAction.{u2, u3} M A _inst_2 _inst_1] (s : Set.{u1} α) (r : M) (f : α -> A) (x : α), Eq.{succ u3} A (Set.indicator.{u1, u3} α A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A _inst_1)) s (fun (x : α) => SMul.smul.{u2, u3} M A (SMulZeroClass.toHasSmul.{u2, u3} M A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A _inst_1)) (DistribSMul.toSmulZeroClass.{u2, u3} M A (AddMonoid.toAddZeroClass.{u3} A _inst_1) (DistribMulAction.toDistribSMul.{u2, u3} M A _inst_2 _inst_1 _inst_3))) r (f x)) x) (SMul.smul.{u2, u3} M A (SMulZeroClass.toHasSmul.{u2, u3} M A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A _inst_1)) (DistribSMul.toSmulZeroClass.{u2, u3} M A (AddMonoid.toAddZeroClass.{u3} A _inst_1) (DistribMulAction.toDistribSMul.{u2, u3} M A _inst_2 _inst_1 _inst_3))) r (Set.indicator.{u1, u3} α A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A _inst_1)) s f x))
-but is expected to have type
-  forall {α : Type.{u3}} {M : Type.{u1}} {A : Type.{u2}} [_inst_1 : AddMonoid.{u2} A] [_inst_2 : Monoid.{u1} M] [_inst_3 : DistribMulAction.{u1, u2} M A _inst_2 _inst_1] (s : Set.{u3} α) (r : M) (f : α -> A) (x : α), Eq.{succ u2} A (Set.indicator.{u3, u2} α A (AddMonoid.toZero.{u2} A _inst_1) s (fun (x : α) => HSMul.hSMul.{u1, u2, u2} M A A (instHSMul.{u1, u2} M A (SMulZeroClass.toSMul.{u1, u2} M A (AddMonoid.toZero.{u2} A _inst_1) (DistribSMul.toSMulZeroClass.{u1, u2} M A (AddMonoid.toAddZeroClass.{u2} A _inst_1) (DistribMulAction.toDistribSMul.{u1, u2} M A _inst_2 _inst_1 _inst_3)))) r (f x)) x) (HSMul.hSMul.{u1, u2, u2} M A A (instHSMul.{u1, u2} M A (SMulZeroClass.toSMul.{u1, u2} M A (AddMonoid.toZero.{u2} A _inst_1) (DistribSMul.toSMulZeroClass.{u1, u2} M A (AddMonoid.toAddZeroClass.{u2} A _inst_1) (DistribMulAction.toDistribSMul.{u1, u2} M A _inst_2 _inst_1 _inst_3)))) r (Set.indicator.{u3, u2} α A (AddMonoid.toZero.{u2} A _inst_1) s f x))
-Case conversion may be inaccurate. Consider using '#align set.indicator_const_smul_apply Set.indicator_const_smul_applyₓ'. -/
 theorem indicator_const_smul_apply (s : Set α) (r : M) (f : α → A) (x : α) :
     indicator s (fun x => r • f x) x = r • indicator s f x :=
   indicator_smul_apply s (fun x => r) f x
 #align set.indicator_const_smul_apply Set.indicator_const_smul_apply
 
-/- warning: set.indicator_const_smul -> Set.indicator_const_smul is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {A : Type.{u3}} [_inst_1 : AddMonoid.{u3} A] [_inst_2 : Monoid.{u2} M] [_inst_3 : DistribMulAction.{u2, u3} M A _inst_2 _inst_1] (s : Set.{u1} α) (r : M) (f : α -> A), Eq.{max (succ u1) (succ u3)} (α -> A) (Set.indicator.{u1, u3} α A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A _inst_1)) s (fun (x : α) => SMul.smul.{u2, u3} M A (SMulZeroClass.toHasSmul.{u2, u3} M A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A _inst_1)) (DistribSMul.toSmulZeroClass.{u2, u3} M A (AddMonoid.toAddZeroClass.{u3} A _inst_1) (DistribMulAction.toDistribSMul.{u2, u3} M A _inst_2 _inst_1 _inst_3))) r (f x))) (fun (x : α) => SMul.smul.{u2, u3} M A (SMulZeroClass.toHasSmul.{u2, u3} M A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A _inst_1)) (DistribSMul.toSmulZeroClass.{u2, u3} M A (AddMonoid.toAddZeroClass.{u3} A _inst_1) (DistribMulAction.toDistribSMul.{u2, u3} M A _inst_2 _inst_1 _inst_3))) r (Set.indicator.{u1, u3} α A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A _inst_1)) s f x))
-but is expected to have type
-  forall {α : Type.{u3}} {M : Type.{u1}} {A : Type.{u2}} [_inst_1 : AddMonoid.{u2} A] [_inst_2 : Monoid.{u1} M] [_inst_3 : DistribMulAction.{u1, u2} M A _inst_2 _inst_1] (s : Set.{u3} α) (r : M) (f : α -> A), Eq.{max (succ u3) (succ u2)} (α -> A) (Set.indicator.{u3, u2} α A (AddMonoid.toZero.{u2} A _inst_1) s (fun (x : α) => HSMul.hSMul.{u1, u2, u2} M A A (instHSMul.{u1, u2} M A (SMulZeroClass.toSMul.{u1, u2} M A (AddMonoid.toZero.{u2} A _inst_1) (DistribSMul.toSMulZeroClass.{u1, u2} M A (AddMonoid.toAddZeroClass.{u2} A _inst_1) (DistribMulAction.toDistribSMul.{u1, u2} M A _inst_2 _inst_1 _inst_3)))) r (f x))) (fun (x : α) => HSMul.hSMul.{u1, u2, u2} M A A (instHSMul.{u1, u2} M A (SMulZeroClass.toSMul.{u1, u2} M A (AddMonoid.toZero.{u2} A _inst_1) (DistribSMul.toSMulZeroClass.{u1, u2} M A (AddMonoid.toAddZeroClass.{u2} A _inst_1) (DistribMulAction.toDistribSMul.{u1, u2} M A _inst_2 _inst_1 _inst_3)))) r (Set.indicator.{u3, u2} α A (AddMonoid.toZero.{u2} A _inst_1) s f x))
-Case conversion may be inaccurate. Consider using '#align set.indicator_const_smul Set.indicator_const_smulₓ'. -/
 theorem indicator_const_smul (s : Set α) (r : M) (f : α → A) :
     (indicator s fun x : α => r • f x) = fun x : α => r • indicator s f x :=
   funext <| indicator_const_smul_apply s r f
@@ -806,24 +518,12 @@ section Group
 
 variable {G : Type _} [Group G] {s t : Set α} {f g : α → G} {a : α}
 
-/- warning: set.mul_indicator_inv' -> Set.mulIndicator_inv' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : Group.{u2} G] (s : Set.{u1} α) (f : α -> G), Eq.{max (succ u1) (succ u2)} (α -> G) (Set.mulIndicator.{u1, u2} α G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) s (Inv.inv.{max u1 u2} (α -> G) (Pi.instInv.{u1, u2} α (fun (ᾰ : α) => G) (fun (i : α) => DivInvMonoid.toHasInv.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) f)) (Inv.inv.{max u1 u2} (α -> G) (Pi.instInv.{u1, u2} α (fun (ᾰ : α) => G) (fun (i : α) => DivInvMonoid.toHasInv.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Set.mulIndicator.{u1, u2} α G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) s f))
-but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u2} α) (f : α -> G), Eq.{max (succ u2) (succ u1)} (α -> G) (Set.mulIndicator.{u2, u1} α G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) s (Inv.inv.{max u2 u1} (α -> G) (Pi.instInv.{u2, u1} α (fun (ᾰ : α) => G) (fun (i : α) => InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))) f)) (Inv.inv.{max u1 u2} (α -> G) (Pi.instInv.{u2, u1} α (fun (ᾰ : α) => G) (fun (i : α) => InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))) (Set.mulIndicator.{u2, u1} α G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) s f))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_inv' Set.mulIndicator_inv'ₓ'. -/
 @[to_additive]
 theorem mulIndicator_inv' (s : Set α) (f : α → G) : mulIndicator s f⁻¹ = (mulIndicator s f)⁻¹ :=
   (mulIndicatorHom G s).map_inv f
 #align set.mul_indicator_inv' Set.mulIndicator_inv'
 #align set.indicator_neg' Set.indicator_neg'
 
-/- warning: set.mul_indicator_inv -> Set.mulIndicator_inv is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : Group.{u2} G] (s : Set.{u1} α) (f : α -> G), Eq.{max (succ u1) (succ u2)} (α -> G) (Set.mulIndicator.{u1, u2} α G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) s (fun (a : α) => Inv.inv.{u2} G (DivInvMonoid.toHasInv.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)) (f a))) (fun (a : α) => Inv.inv.{u2} G (DivInvMonoid.toHasInv.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)) (Set.mulIndicator.{u1, u2} α G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) s f a))
-but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u2} α) (f : α -> G), Eq.{max (succ u2) (succ u1)} (α -> G) (Set.mulIndicator.{u2, u1} α G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) s (fun (a : α) => Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) (f a))) (fun (a : α) => Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) (Set.mulIndicator.{u2, u1} α G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) s f a))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_inv Set.mulIndicator_invₓ'. -/
 @[to_additive]
 theorem mulIndicator_inv (s : Set α) (f : α → G) :
     (mulIndicator s fun a => (f a)⁻¹) = fun a => (mulIndicator s f a)⁻¹ :=
@@ -831,12 +531,6 @@ theorem mulIndicator_inv (s : Set α) (f : α → G) :
 #align set.mul_indicator_inv Set.mulIndicator_inv
 #align set.indicator_neg Set.indicator_neg
 
-/- warning: set.mul_indicator_div -> Set.mulIndicator_div is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : Group.{u2} G] (s : Set.{u1} α) (f : α -> G) (g : α -> G), Eq.{max (succ u1) (succ u2)} (α -> G) (Set.mulIndicator.{u1, u2} α G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) s (fun (a : α) => HDiv.hDiv.{u2, u2, u2} G G G (instHDiv.{u2} G (DivInvMonoid.toHasDiv.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (f a) (g a))) (fun (a : α) => HDiv.hDiv.{u2, u2, u2} G G G (instHDiv.{u2} G (DivInvMonoid.toHasDiv.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Set.mulIndicator.{u1, u2} α G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) s f a) (Set.mulIndicator.{u1, u2} α G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) s g a))
-but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u2} α) (f : α -> G) (g : α -> G), Eq.{max (succ u2) (succ u1)} (α -> G) (Set.mulIndicator.{u2, u1} α G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) s (fun (a : α) => HDiv.hDiv.{u1, u1, u1} G G G (instHDiv.{u1} G (DivInvMonoid.toDiv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (f a) (g a))) (fun (a : α) => HDiv.hDiv.{u1, u1, u1} G G G (instHDiv.{u1} G (DivInvMonoid.toDiv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Set.mulIndicator.{u2, u1} α G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) s f a) (Set.mulIndicator.{u2, u1} α G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) s g a))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_div Set.mulIndicator_divₓ'. -/
 @[to_additive]
 theorem mulIndicator_div (s : Set α) (f g : α → G) :
     (mulIndicator s fun a => f a / g a) = fun a => mulIndicator s f a / mulIndicator s g a :=
@@ -844,12 +538,6 @@ theorem mulIndicator_div (s : Set α) (f g : α → G) :
 #align set.mul_indicator_div Set.mulIndicator_div
 #align set.indicator_sub Set.indicator_sub
 
-/- warning: set.mul_indicator_div' -> Set.mulIndicator_div' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : Group.{u2} G] (s : Set.{u1} α) (f : α -> G) (g : α -> G), Eq.{max (succ u1) (succ u2)} (α -> G) (Set.mulIndicator.{u1, u2} α G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) s (HDiv.hDiv.{max u1 u2, max u1 u2, max u1 u2} (α -> G) (α -> G) (α -> G) (instHDiv.{max u1 u2} (α -> G) (Pi.instDiv.{u1, u2} α (fun (ᾰ : α) => G) (fun (i : α) => DivInvMonoid.toHasDiv.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) f g)) (HDiv.hDiv.{max u1 u2, max u1 u2, max u1 u2} (α -> G) (α -> G) (α -> G) (instHDiv.{max u1 u2} (α -> G) (Pi.instDiv.{u1, u2} α (fun (ᾰ : α) => G) (fun (i : α) => DivInvMonoid.toHasDiv.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Set.mulIndicator.{u1, u2} α G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) s f) (Set.mulIndicator.{u1, u2} α G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) s g))
-but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u2} α) (f : α -> G) (g : α -> G), Eq.{max (succ u2) (succ u1)} (α -> G) (Set.mulIndicator.{u2, u1} α G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) s (HDiv.hDiv.{max u2 u1, max u2 u1, max u2 u1} (α -> G) (α -> G) (α -> G) (instHDiv.{max u2 u1} (α -> G) (Pi.instDiv.{u2, u1} α (fun (ᾰ : α) => G) (fun (i : α) => DivInvMonoid.toDiv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) f g)) (HDiv.hDiv.{max u2 u1, max u2 u1, max u2 u1} (α -> G) (α -> G) (α -> G) (instHDiv.{max u2 u1} (α -> G) (Pi.instDiv.{u2, u1} α (fun (ᾰ : α) => G) (fun (i : α) => DivInvMonoid.toDiv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Set.mulIndicator.{u2, u1} α G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) s f) (Set.mulIndicator.{u2, u1} α G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) s g))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_div' Set.mulIndicator_div'ₓ'. -/
 @[to_additive]
 theorem mulIndicator_div' (s : Set α) (f g : α → G) :
     mulIndicator s (f / g) = mulIndicator s f / mulIndicator s g :=
@@ -857,12 +545,6 @@ theorem mulIndicator_div' (s : Set α) (f g : α → G) :
 #align set.mul_indicator_div' Set.mulIndicator_div'
 #align set.indicator_sub' Set.indicator_sub'
 
-/- warning: set.mul_indicator_compl -> Set.mulIndicator_compl is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : Group.{u2} G] (s : Set.{u1} α) (f : α -> G), Eq.{max (succ u1) (succ u2)} (α -> G) (Set.mulIndicator.{u1, u2} α G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) s) f) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (α -> G) (α -> G) (α -> G) (instHMul.{max u1 u2} (α -> G) (Pi.instMul.{u1, u2} α (fun (ᾰ : α) => G) (fun (i : α) => MulOneClass.toHasMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) f (Inv.inv.{max u1 u2} (α -> G) (Pi.instInv.{u1, u2} α (fun (ᾰ : α) => G) (fun (i : α) => DivInvMonoid.toHasInv.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Set.mulIndicator.{u1, u2} α G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) s f)))
-but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u2} α) (f : α -> G), Eq.{max (succ u2) (succ u1)} (α -> G) (Set.mulIndicator.{u2, u1} α G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) (HasCompl.compl.{u2} (Set.{u2} α) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} α) (Set.instBooleanAlgebraSet.{u2} α)) s) f) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> G) (α -> G) (α -> G) (instHMul.{max u2 u1} (α -> G) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => G) (fun (i : α) => MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) f (Inv.inv.{max u1 u2} (α -> G) (Pi.instInv.{u2, u1} α (fun (ᾰ : α) => G) (fun (i : α) => InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))) (Set.mulIndicator.{u2, u1} α G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) s f)))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_compl Set.mulIndicator_complₓ'. -/
 @[to_additive indicator_compl']
 theorem mulIndicator_compl (s : Set α) (f : α → G) :
     mulIndicator (sᶜ) f = f * (mulIndicator s f)⁻¹ :=
@@ -870,22 +552,10 @@ theorem mulIndicator_compl (s : Set α) (f : α → G) :
 #align set.mul_indicator_compl Set.mulIndicator_compl
 #align set.indicator_compl' Set.indicator_compl'
 
-/- warning: set.indicator_compl -> Set.indicator_compl is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_2 : AddGroup.{u2} G] (s : Set.{u1} α) (f : α -> G), Eq.{max (succ u1) (succ u2)} (α -> G) (Set.indicator.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2)))) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) s) f) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (α -> G) (α -> G) (α -> G) (instHSub.{max u1 u2} (α -> G) (Pi.instSub.{u1, u2} α (fun (ᾰ : α) => G) (fun (i : α) => SubNegMonoid.toHasSub.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2)))) f (Set.indicator.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2)))) s f))
-but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_2 : AddGroup.{u2} G] (s : Set.{u1} α) (f : α -> G), Eq.{max (succ u1) (succ u2)} (α -> G) (Set.indicator.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_2)))) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) s) f) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (α -> G) (α -> G) (α -> G) (instHSub.{max u1 u2} (α -> G) (Pi.instSub.{u1, u2} α (fun (ᾰ : α) => G) (fun (i : α) => SubNegMonoid.toSub.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2)))) f (Set.indicator.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_2)))) s f))
-Case conversion may be inaccurate. Consider using '#align set.indicator_compl Set.indicator_complₓ'. -/
 theorem indicator_compl {G} [AddGroup G] (s : Set α) (f : α → G) :
     indicator (sᶜ) f = f - indicator s f := by rw [sub_eq_add_neg, indicator_compl']
 #align set.indicator_compl Set.indicator_compl
 
-/- warning: set.mul_indicator_diff -> Set.mulIndicator_diff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : Group.{u2} G] {s : Set.{u1} α} {t : Set.{u1} α}, (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s t) -> (forall (f : α -> G), Eq.{max (succ u1) (succ u2)} (α -> G) (Set.mulIndicator.{u1, u2} α G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (SDiff.sdiff.{u1} (Set.{u1} α) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) t s) f) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (α -> G) (α -> G) (α -> G) (instHMul.{max u1 u2} (α -> G) (Pi.instMul.{u1, u2} α (fun (ᾰ : α) => G) (fun (i : α) => MulOneClass.toHasMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (Set.mulIndicator.{u1, u2} α G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) t f) (Inv.inv.{max u1 u2} (α -> G) (Pi.instInv.{u1, u2} α (fun (ᾰ : α) => G) (fun (i : α) => DivInvMonoid.toHasInv.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Set.mulIndicator.{u1, u2} α G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) s f))))
-but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u2} α} {t : Set.{u2} α}, (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s t) -> (forall (f : α -> G), Eq.{max (succ u2) (succ u1)} (α -> G) (Set.mulIndicator.{u2, u1} α G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) (SDiff.sdiff.{u2} (Set.{u2} α) (Set.instSDiffSet.{u2} α) t s) f) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> G) (α -> G) (α -> G) (instHMul.{max u2 u1} (α -> G) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => G) (fun (i : α) => MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Set.mulIndicator.{u2, u1} α G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) t f) (Inv.inv.{max u1 u2} (α -> G) (Pi.instInv.{u2, u1} α (fun (ᾰ : α) => G) (fun (i : α) => InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))) (Set.mulIndicator.{u2, u1} α G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) s f))))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_diff Set.mulIndicator_diffₓ'. -/
 @[to_additive indicator_diff']
 theorem mulIndicator_diff (h : s ⊆ t) (f : α → G) :
     mulIndicator (t \ s) f = mulIndicator t f * (mulIndicator s f)⁻¹ :=
@@ -897,12 +567,6 @@ theorem mulIndicator_diff (h : s ⊆ t) (f : α → G) :
 #align set.mul_indicator_diff Set.mulIndicator_diff
 #align set.indicator_diff' Set.indicator_diff'
 
-/- warning: set.indicator_diff -> Set.indicator_diff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_2 : AddGroup.{u2} G] {s : Set.{u1} α} {t : Set.{u1} α}, (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s t) -> (forall (f : α -> G), Eq.{max (succ u1) (succ u2)} (α -> G) (Set.indicator.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2)))) (SDiff.sdiff.{u1} (Set.{u1} α) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) t s) f) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (α -> G) (α -> G) (α -> G) (instHSub.{max u1 u2} (α -> G) (Pi.instSub.{u1, u2} α (fun (ᾰ : α) => G) (fun (i : α) => SubNegMonoid.toHasSub.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2)))) (Set.indicator.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2)))) t f) (Set.indicator.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2)))) s f)))
-but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_2 : AddGroup.{u2} G] {s : Set.{u1} α} {t : Set.{u1} α}, (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s t) -> (forall (f : α -> G), Eq.{max (succ u1) (succ u2)} (α -> G) (Set.indicator.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_2)))) (SDiff.sdiff.{u1} (Set.{u1} α) (Set.instSDiffSet.{u1} α) t s) f) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (α -> G) (α -> G) (α -> G) (instHSub.{max u1 u2} (α -> G) (Pi.instSub.{u1, u2} α (fun (ᾰ : α) => G) (fun (i : α) => SubNegMonoid.toSub.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2)))) (Set.indicator.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_2)))) t f) (Set.indicator.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_2)))) s f)))
-Case conversion may be inaccurate. Consider using '#align set.indicator_diff Set.indicator_diffₓ'. -/
 theorem indicator_diff {G : Type _} [AddGroup G] {s t : Set α} (h : s ⊆ t) (f : α → G) :
     indicator (t \ s) f = indicator t f - indicator s f := by rw [indicator_diff' h, sub_eq_add_neg]
 #align set.indicator_diff Set.indicator_diff
@@ -913,12 +577,6 @@ section CommMonoid
 
 variable [CommMonoid M]
 
-/- warning: set.prod_mul_indicator_subset_of_eq_one -> Set.prod_mulIndicator_subset_of_eq_one is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : CommMonoid.{u2} M] [_inst_2 : One.{u3} N] (f : α -> N) (g : α -> N -> M) {s : Finset.{u1} α} {t : Finset.{u1} α}, (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) s t) -> (forall (a : α), Eq.{succ u2} M (g a (OfNat.ofNat.{u3} N 1 (OfNat.mk.{u3} N 1 (One.one.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))))) -> (Eq.{succ u2} M (Finset.prod.{u2, u1} M α _inst_1 s (fun (i : α) => g i (f i))) (Finset.prod.{u2, u1} M α _inst_1 t (fun (i : α) => g i (Set.mulIndicator.{u1, u3} α N _inst_2 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} α) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (Finset.Set.hasCoeT.{u1} α))) s) f i))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} {N : Type.{u3}} [_inst_1 : CommMonoid.{u1} M] [_inst_2 : One.{u3} N] (f : α -> N) (g : α -> N -> M) {s : Finset.{u2} α} {t : Finset.{u2} α}, (HasSubset.Subset.{u2} (Finset.{u2} α) (Finset.instHasSubsetFinset.{u2} α) s t) -> (forall (a : α), Eq.{succ u1} M (g a (OfNat.ofNat.{u3} N 1 (One.toOfNat1.{u3} N _inst_2))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))))) -> (Eq.{succ u1} M (Finset.prod.{u1, u2} M α _inst_1 s (fun (i : α) => g i (f i))) (Finset.prod.{u1, u2} M α _inst_1 t (fun (i : α) => g i (Set.mulIndicator.{u2, u3} α N _inst_2 (Finset.toSet.{u2} α s) f i))))
-Case conversion may be inaccurate. Consider using '#align set.prod_mul_indicator_subset_of_eq_one Set.prod_mulIndicator_subset_of_eq_oneₓ'. -/
 /-- Consider a product of `g i (f i)` over a `finset`.  Suppose `g` is a
 function such as `pow`, which maps a second argument of `1` to
 `1`. Then if `f` is replaced by the corresponding multiplicative indicator
@@ -950,12 +608,6 @@ function, the `finset` may be replaced by a possibly larger `finset`
 without changing the value of the sum. -/
 add_decl_doc Set.sum_indicator_subset_of_eq_zero
 
-/- warning: set.prod_mul_indicator_subset -> Set.prod_mulIndicator_subset is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] (f : α -> M) {s : Finset.{u1} α} {t : Finset.{u1} α}, (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) s t) -> (Eq.{succ u2} M (Finset.prod.{u2, u1} M α _inst_1 s (fun (i : α) => f i)) (Finset.prod.{u2, u1} M α _inst_1 t (fun (i : α) => Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} α) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (Finset.Set.hasCoeT.{u1} α))) s) f i)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] (f : α -> M) {s : Finset.{u2} α} {t : Finset.{u2} α}, (HasSubset.Subset.{u2} (Finset.{u2} α) (Finset.instHasSubsetFinset.{u2} α) s t) -> (Eq.{succ u1} M (Finset.prod.{u1, u2} M α _inst_1 s (fun (i : α) => f i)) (Finset.prod.{u1, u2} M α _inst_1 t (fun (i : α) => Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Finset.toSet.{u2} α s) f i)))
-Case conversion may be inaccurate. Consider using '#align set.prod_mul_indicator_subset Set.prod_mulIndicator_subsetₓ'. -/
 /-- Taking the product of an indicator function over a possibly larger `finset` is the same as
 taking the original function over the original `finset`. -/
 @[to_additive
@@ -966,12 +618,6 @@ theorem prod_mulIndicator_subset (f : α → M) {s t : Finset α} (h : s ⊆ t)
 #align set.prod_mul_indicator_subset Set.prod_mulIndicator_subset
 #align set.sum_indicator_subset Set.sum_indicator_subset
 
-/- warning: finset.prod_mul_indicator_eq_prod_filter -> Finset.prod_mulIndicator_eq_prod_filter is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {ι : Type.{u2}} {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] (s : Finset.{u2} ι) (f : ι -> α -> M) (t : ι -> (Set.{u1} α)) (g : ι -> α) [_inst_2 : DecidablePred.{succ u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) (g i) (t i))], Eq.{succ u3} M (Finset.prod.{u3, u2} M ι _inst_1 s (fun (i : ι) => Set.mulIndicator.{u1, u3} α M (MulOneClass.toHasOne.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (t i) (f i) (g i))) (Finset.prod.{u3, u2} M ι _inst_1 (Finset.filter.{u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) (g i) (t i)) (fun (a : ι) => _inst_2 a) s) (fun (i : ι) => f i (g i)))
-but is expected to have type
-  forall {α : Type.{u2}} {ι : Type.{u3}} {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] (s : Finset.{u3} ι) (f : ι -> α -> M) (t : ι -> (Set.{u2} α)) (g : ι -> α) [_inst_2 : DecidablePred.{succ u3} ι (fun (i : ι) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) (g i) (t i))], Eq.{succ u1} M (Finset.prod.{u1, u3} M ι _inst_1 s (fun (i : ι) => Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (t i) (f i) (g i))) (Finset.prod.{u1, u3} M ι _inst_1 (Finset.filter.{u3} ι (fun (i : ι) => Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) (g i) (t i)) (fun (a : ι) => _inst_2 a) s) (fun (i : ι) => f i (g i)))
-Case conversion may be inaccurate. Consider using '#align finset.prod_mul_indicator_eq_prod_filter Finset.prod_mulIndicator_eq_prod_filterₓ'. -/
 @[to_additive]
 theorem Finset.prod_mulIndicator_eq_prod_filter (s : Finset ι) (f : ι → α → M) (t : ι → Set α)
     (g : ι → α) [DecidablePred fun i => g i ∈ t i] :
@@ -986,12 +632,6 @@ theorem Finset.prod_mulIndicator_eq_prod_filter (s : Finset ι) (f : ι → α 
 #align finset.prod_mul_indicator_eq_prod_filter Finset.prod_mulIndicator_eq_prod_filter
 #align finset.sum_indicator_eq_sum_filter Finset.sum_indicator_eq_sum_filter
 
-/- warning: set.mul_indicator_finset_prod -> Set.mulIndicator_finset_prod is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {ι : Type.{u2}} {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] (I : Finset.{u2} ι) (s : Set.{u1} α) (f : ι -> α -> M), Eq.{max (succ u1) (succ u3)} (α -> M) (Set.mulIndicator.{u1, u3} α M (MulOneClass.toHasOne.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) s (Finset.prod.{max u1 u3, u2} (α -> M) ι (Pi.commMonoid.{u1, u3} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1)) I (fun (i : ι) => f i))) (Finset.prod.{max u1 u3, u2} (α -> M) ι (Pi.commMonoid.{u1, u3} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1)) I (fun (i : ι) => Set.mulIndicator.{u1, u3} α M (MulOneClass.toHasOne.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) s (f i)))
-but is expected to have type
-  forall {α : Type.{u2}} {ι : Type.{u3}} {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] (I : Finset.{u3} ι) (s : Set.{u2} α) (f : ι -> α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) s (Finset.prod.{max u2 u1, u3} (α -> M) ι (Pi.commMonoid.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1)) I (fun (i : ι) => f i))) (Finset.prod.{max u1 u2, u3} (α -> M) ι (Pi.commMonoid.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1)) I (fun (i : ι) => Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) s (f i)))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_finset_prod Set.mulIndicator_finset_prodₓ'. -/
 @[to_additive]
 theorem mulIndicator_finset_prod (I : Finset ι) (s : Set α) (f : ι → α → M) :
     mulIndicator s (∏ i in I, f i) = ∏ i in I, mulIndicator s (f i) :=
@@ -999,12 +639,6 @@ theorem mulIndicator_finset_prod (I : Finset ι) (s : Set α) (f : ι → α →
 #align set.mul_indicator_finset_prod Set.mulIndicator_finset_prod
 #align set.indicator_finset_sum Set.indicator_finset_sum
 
-/- warning: set.mul_indicator_finset_bUnion -> Set.mulIndicator_finset_biUnion is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {ι : Type.{u3}} (I : Finset.{u3} ι) (s : ι -> (Set.{u1} α)) {f : α -> M}, (forall (i : ι), (Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) i I) -> (forall (j : ι), (Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) j I) -> (Ne.{succ u3} ι i j) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (s i) (s j)))) -> (Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Set.iUnion.{u1, succ u3} α ι (fun (i : ι) => Set.iUnion.{u1, 0} α (Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) i I) (fun (H : Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) i I) => s i))) f) (fun (a : α) => Finset.prod.{u2, u3} M ι _inst_1 I (fun (i : ι) => Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (s i) f a)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {ι : Type.{u3}} (I : Finset.{u3} ι) (s : ι -> (Set.{u2} α)) {f : α -> M}, (forall (i : ι), (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i I) -> (forall (j : ι), (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) j I) -> (Ne.{succ u3} ι i j) -> (Disjoint.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (BoundedOrder.toOrderBot.{u2} (Set.{u2} α) (Preorder.toLE.{u2} (Set.{u2} α) (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))))) (CompleteLattice.toBoundedOrder.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (s i) (s j)))) -> (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Set.iUnion.{u2, succ u3} α ι (fun (i : ι) => Set.iUnion.{u2, 0} α (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i I) (fun (H : Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i I) => s i))) f) (fun (a : α) => Finset.prod.{u1, u3} M ι _inst_1 I (fun (i : ι) => Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (s i) f a)))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_finset_bUnion Set.mulIndicator_finset_biUnionₓ'. -/
 @[to_additive]
 theorem mulIndicator_finset_biUnion {ι} (I : Finset ι) (s : ι → Set α) {f : α → M} :
     (∀ i ∈ I, ∀ j ∈ I, i ≠ j → Disjoint (s i) (s j)) →
@@ -1027,12 +661,6 @@ theorem mulIndicator_finset_biUnion {ι} (I : Finset ι) (s : ι → Set α) {f
 #align set.mul_indicator_finset_bUnion Set.mulIndicator_finset_biUnion
 #align set.indicator_finset_bUnion Set.indicator_finset_biUnion
 
-/- warning: set.mul_indicator_finset_bUnion_apply -> Set.mulIndicator_finset_biUnion_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {ι : Type.{u3}} (I : Finset.{u3} ι) (s : ι -> (Set.{u1} α)) {f : α -> M}, (forall (i : ι), (Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) i I) -> (forall (j : ι), (Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) j I) -> (Ne.{succ u3} ι i j) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (s i) (s j)))) -> (forall (x : α), Eq.{succ u2} M (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Set.iUnion.{u1, succ u3} α ι (fun (i : ι) => Set.iUnion.{u1, 0} α (Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) i I) (fun (H : Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) i I) => s i))) f x) (Finset.prod.{u2, u3} M ι _inst_1 I (fun (i : ι) => Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (s i) f x)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {ι : Type.{u3}} (I : Finset.{u3} ι) (s : ι -> (Set.{u2} α)) {f : α -> M}, (forall (i : ι), (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i I) -> (forall (j : ι), (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) j I) -> (Ne.{succ u3} ι i j) -> (Disjoint.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (BoundedOrder.toOrderBot.{u2} (Set.{u2} α) (Preorder.toLE.{u2} (Set.{u2} α) (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))))) (CompleteLattice.toBoundedOrder.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (s i) (s j)))) -> (forall (x : α), Eq.{succ u1} M (Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Set.iUnion.{u2, succ u3} α ι (fun (i : ι) => Set.iUnion.{u2, 0} α (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i I) (fun (H : Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i I) => s i))) f x) (Finset.prod.{u1, u3} M ι _inst_1 I (fun (i : ι) => Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (s i) f x)))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_finset_bUnion_apply Set.mulIndicator_finset_biUnion_applyₓ'. -/
 @[to_additive]
 theorem mulIndicator_finset_biUnion_apply {ι} (I : Finset ι) (s : ι → Set α) {f : α → M}
     (h : ∀ i ∈ I, ∀ j ∈ I, i ≠ j → Disjoint (s i) (s j)) (x : α) :
@@ -1047,45 +675,21 @@ section MulZeroClass
 
 variable [MulZeroClass M] {s t : Set α} {f g : α → M} {a : α}
 
-/- warning: set.indicator_mul -> Set.indicator_mul is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulZeroClass.{u2} M] (s : Set.{u1} α) (f : α -> M) (g : α -> M), Eq.{max (succ u1) (succ u2)} (α -> M) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M _inst_1) s (fun (a : α) => HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulZeroClass.toHasMul.{u2} M _inst_1)) (f a) (g a))) (fun (a : α) => HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulZeroClass.toHasMul.{u2} M _inst_1)) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M _inst_1) s f a) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M _inst_1) s g a))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroClass.{u1} M] (s : Set.{u2} α) (f : α -> M) (g : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) s (fun (a : α) => HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M _inst_1)) (f a) (g a))) (fun (a : α) => HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M _inst_1)) (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) s f a) (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) s g a))
-Case conversion may be inaccurate. Consider using '#align set.indicator_mul Set.indicator_mulₓ'. -/
 theorem indicator_mul (s : Set α) (f g : α → M) :
     (indicator s fun a => f a * g a) = fun a => indicator s f a * indicator s g a := by funext;
   simp only [indicator]; split_ifs; · rfl; rw [MulZeroClass.mul_zero]
 #align set.indicator_mul Set.indicator_mul
 
-/- warning: set.indicator_mul_left -> Set.indicator_mul_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulZeroClass.{u2} M] {a : α} (s : Set.{u1} α) (f : α -> M) (g : α -> M), Eq.{succ u2} M (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M _inst_1) s (fun (a : α) => HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulZeroClass.toHasMul.{u2} M _inst_1)) (f a) (g a)) a) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulZeroClass.toHasMul.{u2} M _inst_1)) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M _inst_1) s f a) (g a))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroClass.{u1} M] {a : α} (s : Set.{u2} α) (f : α -> M) (g : α -> M), Eq.{succ u1} M (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) s (fun (a : α) => HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M _inst_1)) (f a) (g a)) a) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M _inst_1)) (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) s f a) (g a))
-Case conversion may be inaccurate. Consider using '#align set.indicator_mul_left Set.indicator_mul_leftₓ'. -/
 theorem indicator_mul_left (s : Set α) (f g : α → M) :
     indicator s (fun a => f a * g a) a = indicator s f a * g a := by simp only [indicator];
   split_ifs; · rfl; rw [MulZeroClass.zero_mul]
 #align set.indicator_mul_left Set.indicator_mul_left
 
-/- warning: set.indicator_mul_right -> Set.indicator_mul_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulZeroClass.{u2} M] {a : α} (s : Set.{u1} α) (f : α -> M) (g : α -> M), Eq.{succ u2} M (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M _inst_1) s (fun (a : α) => HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulZeroClass.toHasMul.{u2} M _inst_1)) (f a) (g a)) a) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulZeroClass.toHasMul.{u2} M _inst_1)) (f a) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M _inst_1) s g a))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroClass.{u1} M] {a : α} (s : Set.{u2} α) (f : α -> M) (g : α -> M), Eq.{succ u1} M (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) s (fun (a : α) => HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M _inst_1)) (f a) (g a)) a) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M _inst_1)) (f a) (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) s g a))
-Case conversion may be inaccurate. Consider using '#align set.indicator_mul_right Set.indicator_mul_rightₓ'. -/
 theorem indicator_mul_right (s : Set α) (f g : α → M) :
     indicator s (fun a => f a * g a) a = f a * indicator s g a := by simp only [indicator];
   split_ifs; · rfl; rw [MulZeroClass.mul_zero]
 #align set.indicator_mul_right Set.indicator_mul_right
 
-/- warning: set.inter_indicator_mul -> Set.inter_indicator_mul is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulZeroClass.{u2} M] {t1 : Set.{u1} α} {t2 : Set.{u1} α} (f : α -> M) (g : α -> M) (x : α), Eq.{succ u2} M (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M _inst_1) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) t1 t2) (fun (x : α) => HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulZeroClass.toHasMul.{u2} M _inst_1)) (f x) (g x)) x) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulZeroClass.toHasMul.{u2} M _inst_1)) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M _inst_1) t1 f x) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M _inst_1) t2 g x))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroClass.{u1} M] {t1 : Set.{u2} α} {t2 : Set.{u2} α} (f : α -> M) (g : α -> M) (x : α), Eq.{succ u1} M (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) t1 t2) (fun (x : α) => HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M _inst_1)) (f x) (g x)) x) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M _inst_1)) (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) t1 f x) (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) t2 g x))
-Case conversion may be inaccurate. Consider using '#align set.inter_indicator_mul Set.inter_indicator_mulₓ'. -/
 theorem inter_indicator_mul {t1 t2 : Set α} (f g : α → M) (x : α) :
     (t1 ∩ t2).indicator (fun x => f x * g x) x = t1.indicator f x * t2.indicator g x := by
   rw [← Set.indicator_indicator]; simp [indicator]
@@ -1097,23 +701,11 @@ section MulZeroOneClass
 
 variable [MulZeroOneClass M]
 
-/- warning: set.inter_indicator_one -> Set.inter_indicator_one is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulZeroOneClass.{u2} M] {s : Set.{u1} α} {t : Set.{u1} α}, Eq.{max (succ u1) (succ u2)} (α -> M) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t) (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (α -> M) (α -> M) (α -> M) (instHMul.{max u1 u2} (α -> M) (Pi.instMul.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulZeroClass.toHasMul.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)))) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) s (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) t (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroOneClass.{u1} M] {s : Set.{u2} α} {t : Set.{u2} α}, Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) s t) (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7408 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> M) (α -> M) (α -> M) (instHMul.{max u2 u1} (α -> M) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => MulZeroClass.toMul.{u1} M (MulZeroOneClass.toMulZeroClass.{u1} M _inst_1)))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) s (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7408 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) t (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7408 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))))
-Case conversion may be inaccurate. Consider using '#align set.inter_indicator_one Set.inter_indicator_oneₓ'. -/
 theorem inter_indicator_one {s t : Set α} :
     (s ∩ t).indicator (1 : _ → M) = s.indicator 1 * t.indicator 1 :=
   funext fun _ => by simpa only [← inter_indicator_mul, Pi.mul_apply, Pi.one_apply, one_mul]
 #align set.inter_indicator_one Set.inter_indicator_one
 
-/- warning: set.indicator_prod_one -> Set.indicator_prod_one is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : MulZeroOneClass.{u3} M] {s : Set.{u1} α} {t : Set.{u2} β} {x : α} {y : β}, Eq.{succ u3} M (Set.indicator.{max u1 u2, u3} (Prod.{u1, u2} α β) M (MulZeroClass.toHasZero.{u3} M (MulZeroOneClass.toMulZeroClass.{u3} M _inst_1)) (Set.prod.{u1, u2} α β s t) (OfNat.ofNat.{max (max u1 u2) u3} ((Prod.{u1, u2} α β) -> M) 1 (OfNat.mk.{max (max u1 u2) u3} ((Prod.{u1, u2} α β) -> M) 1 (One.one.{max (max u1 u2) u3} ((Prod.{u1, u2} α β) -> M) (Pi.instOne.{max u1 u2, u3} (Prod.{u1, u2} α β) (fun (ᾰ : Prod.{u1, u2} α β) => M) (fun (i : Prod.{u1, u2} α β) => MulOneClass.toHasOne.{u3} M (MulZeroOneClass.toMulOneClass.{u3} M _inst_1)))))) (Prod.mk.{u1, u2} α β x y)) (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulZeroClass.toHasMul.{u3} M (MulZeroOneClass.toMulZeroClass.{u3} M _inst_1))) (Set.indicator.{u1, u3} α M (MulZeroClass.toHasZero.{u3} M (MulZeroOneClass.toMulZeroClass.{u3} M _inst_1)) s (OfNat.ofNat.{max u1 u3} (α -> M) 1 (OfNat.mk.{max u1 u3} (α -> M) 1 (One.one.{max u1 u3} (α -> M) (Pi.instOne.{u1, u3} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u3} M (MulZeroOneClass.toMulOneClass.{u3} M _inst_1)))))) x) (Set.indicator.{u2, u3} β M (MulZeroClass.toHasZero.{u3} M (MulZeroOneClass.toMulZeroClass.{u3} M _inst_1)) t (OfNat.ofNat.{max u2 u3} (β -> M) 1 (OfNat.mk.{max u2 u3} (β -> M) 1 (One.one.{max u2 u3} (β -> M) (Pi.instOne.{u2, u3} β (fun (ᾰ : β) => M) (fun (i : β) => MulOneClass.toHasOne.{u3} M (MulZeroOneClass.toMulOneClass.{u3} M _inst_1)))))) y))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroOneClass.{u1} M] {s : Set.{u3} α} {t : Set.{u2} β} {x : α} {y : β}, Eq.{succ u1} M (Set.indicator.{max u3 u2, u1} (Prod.{u3, u2} α β) M (MulZeroOneClass.toZero.{u1} M _inst_1) (Set.prod.{u3, u2} α β s t) (OfNat.ofNat.{max (max u3 u2) u1} ((Prod.{u3, u2} α β) -> M) 1 (One.toOfNat1.{max (max u3 u2) u1} ((Prod.{u3, u2} α β) -> M) (Pi.instOne.{max u3 u2, u1} (Prod.{u3, u2} α β) (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7467 : Prod.{u3, u2} α β) => M) (fun (i : Prod.{u3, u2} α β) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) (Prod.mk.{u3, u2} α β x y)) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M (MulZeroOneClass.toMulZeroClass.{u1} M _inst_1))) (Set.indicator.{u3, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) s (OfNat.ofNat.{max u3 u1} (α -> M) 1 (One.toOfNat1.{max u3 u1} (α -> M) (Pi.instOne.{u3, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) x) (Set.indicator.{u2, u1} β M (MulZeroOneClass.toZero.{u1} M _inst_1) t (OfNat.ofNat.{max u2 u1} (β -> M) 1 (One.toOfNat1.{max u2 u1} (β -> M) (Pi.instOne.{u2, u1} β (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : β) => M) (fun (i : β) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) y))
-Case conversion may be inaccurate. Consider using '#align set.indicator_prod_one Set.indicator_prod_oneₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 theorem indicator_prod_one {s : Set α} {t : Set β} {x : α} {y : β} :
     (s ×ˢ t).indicator (1 : _ → M) (x, y) = s.indicator 1 x * t.indicator 1 y := by
@@ -1122,32 +714,14 @@ theorem indicator_prod_one {s : Set α} {t : Set β} {x : α} {y : β} :
 
 variable (M) [Nontrivial M]
 
-/- warning: set.indicator_eq_zero_iff_not_mem -> Set.indicator_eq_zero_iff_not_mem is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} (M : Type.{u2}) [_inst_1 : MulZeroOneClass.{u2} M] [_inst_2 : Nontrivial.{u2} M] {U : Set.{u1} α} {x : α}, Iff (Eq.{succ u2} M (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) U (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1)))))) x) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)))))) (Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x U))
-but is expected to have type
-  forall {α : Type.{u2}} (M : Type.{u1}) [_inst_1 : MulZeroOneClass.{u1} M] [_inst_2 : Nontrivial.{u1} M] {U : Set.{u2} α} {x : α}, Iff (Eq.{succ u1} M (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) U (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) x) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M (MulZeroOneClass.toZero.{u1} M _inst_1)))) (Not (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x U))
-Case conversion may be inaccurate. Consider using '#align set.indicator_eq_zero_iff_not_mem Set.indicator_eq_zero_iff_not_memₓ'. -/
 theorem indicator_eq_zero_iff_not_mem {U : Set α} {x : α} : indicator U 1 x = (0 : M) ↔ x ∉ U := by
   classical simp [indicator_apply, imp_false]
 #align set.indicator_eq_zero_iff_not_mem Set.indicator_eq_zero_iff_not_mem
 
-/- warning: set.indicator_eq_one_iff_mem -> Set.indicator_eq_one_iff_mem is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} (M : Type.{u2}) [_inst_1 : MulZeroOneClass.{u2} M] [_inst_2 : Nontrivial.{u2} M] {U : Set.{u1} α} {x : α}, Iff (Eq.{succ u2} M (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) U (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1)))))) x) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M (MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1)))))) (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x U)
-but is expected to have type
-  forall {α : Type.{u2}} (M : Type.{u1}) [_inst_1 : MulZeroOneClass.{u1} M] [_inst_2 : Nontrivial.{u1} M] {U : Set.{u2} α} {x : α}, Iff (Eq.{succ u1} M (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) U (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) x) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x U)
-Case conversion may be inaccurate. Consider using '#align set.indicator_eq_one_iff_mem Set.indicator_eq_one_iff_memₓ'. -/
 theorem indicator_eq_one_iff_mem {U : Set α} {x : α} : indicator U 1 x = (1 : M) ↔ x ∈ U := by
   classical simp [indicator_apply, imp_false]
 #align set.indicator_eq_one_iff_mem Set.indicator_eq_one_iff_mem
 
-/- warning: set.indicator_one_inj -> Set.indicator_one_inj is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} (M : Type.{u2}) [_inst_1 : MulZeroOneClass.{u2} M] [_inst_2 : Nontrivial.{u2} M] {U : Set.{u1} α} {V : Set.{u1} α}, (Eq.{max (succ u1) (succ u2)} (α -> M) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) U (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) V (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1)))))))) -> (Eq.{succ u1} (Set.{u1} α) U V)
-but is expected to have type
-  forall {α : Type.{u2}} (M : Type.{u1}) [_inst_1 : MulZeroOneClass.{u1} M] [_inst_2 : Nontrivial.{u1} M] {U : Set.{u2} α} {V : Set.{u2} α}, (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) U (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7782 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) V (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7782 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))))) -> (Eq.{succ u2} (Set.{u2} α) U V)
-Case conversion may be inaccurate. Consider using '#align set.indicator_one_inj Set.indicator_one_injₓ'. -/
 theorem indicator_one_inj {U V : Set α} (h : indicator U (1 : α → M) = indicator V 1) : U = V := by
   ext; simp_rw [← indicator_eq_one_iff_mem M, h]
 #align set.indicator_one_inj Set.indicator_one_inj
@@ -1162,12 +736,6 @@ section
 
 variable [LE M]
 
-/- warning: set.mul_indicator_apply_le' -> Set.mulIndicator_apply_le' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} {a : α} {y : M} [_inst_2 : LE.{u2} M], ((Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M _inst_2 (f a) y)) -> ((Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s)) -> (LE.le.{u2} M _inst_2 (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) y)) -> (LE.le.{u2} M _inst_2 (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) y)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M} {a : α} {y : M} [_inst_2 : LE.{u1} M], ((Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (LE.le.{u1} M _inst_2 (f a) y)) -> ((Not (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s)) -> (LE.le.{u1} M _inst_2 (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)) y)) -> (LE.le.{u1} M _inst_2 (Set.mulIndicator.{u2, u1} α M _inst_1 s f a) y)
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_apply_le' Set.mulIndicator_apply_le'ₓ'. -/
 @[to_additive]
 theorem mulIndicator_apply_le' (hfg : a ∈ s → f a ≤ y) (hg : a ∉ s → 1 ≤ y) :
     mulIndicator s f a ≤ y := by
@@ -1177,12 +745,6 @@ theorem mulIndicator_apply_le' (hfg : a ∈ s → f a ≤ y) (hg : a ∉ s → 1
 #align set.mul_indicator_apply_le' Set.mulIndicator_apply_le'
 #align set.indicator_apply_le' Set.indicator_apply_le'
 
-/- warning: set.mul_indicator_le' -> Set.mulIndicator_le' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} {g : α -> M} [_inst_2 : LE.{u2} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M _inst_2 (f a) (g a))) -> (forall (a : α), (Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s)) -> (LE.le.{u2} M _inst_2 (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) (g a))) -> (LE.le.{max u1 u2} (α -> M) (Pi.hasLe.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_2)) (Set.mulIndicator.{u1, u2} α M _inst_1 s f) g)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M} {g : α -> M} [_inst_2 : LE.{u1} M], (forall (a : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (LE.le.{u1} M _inst_2 (f a) (g a))) -> (forall (a : α), (Not (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s)) -> (LE.le.{u1} M _inst_2 (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)) (g a))) -> (LE.le.{max u2 u1} (α -> M) (Pi.hasLe.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_2)) (Set.mulIndicator.{u2, u1} α M _inst_1 s f) g)
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_le' Set.mulIndicator_le'ₓ'. -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ∉ » s) -/
 @[to_additive]
 theorem mulIndicator_le' (hfg : ∀ a ∈ s, f a ≤ g a) (hg : ∀ (a) (_ : a ∉ s), 1 ≤ g a) :
@@ -1190,12 +752,6 @@ theorem mulIndicator_le' (hfg : ∀ a ∈ s, f a ≤ g a) (hg : ∀ (a) (_ : a 
 #align set.mul_indicator_le' Set.mulIndicator_le'
 #align set.indicator_le' Set.indicator_le'
 
-/- warning: set.le_mul_indicator_apply -> Set.le_mulIndicator_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {g : α -> M} {a : α} [_inst_2 : LE.{u2} M] {y : M}, ((Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M _inst_2 y (g a))) -> ((Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s)) -> (LE.le.{u2} M _inst_2 y (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))))) -> (LE.le.{u2} M _inst_2 y (Set.mulIndicator.{u1, u2} α M _inst_1 s g a))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {g : α -> M} {a : α} [_inst_2 : LE.{u1} M] {y : M}, ((Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (LE.le.{u1} M _inst_2 y (g a))) -> ((Not (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s)) -> (LE.le.{u1} M _inst_2 y (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)))) -> (LE.le.{u1} M _inst_2 y (Set.mulIndicator.{u2, u1} α M _inst_1 s g a))
-Case conversion may be inaccurate. Consider using '#align set.le_mul_indicator_apply Set.le_mulIndicator_applyₓ'. -/
 @[to_additive]
 theorem le_mulIndicator_apply {y} (hfg : a ∈ s → y ≤ g a) (hf : a ∉ s → y ≤ 1) :
     y ≤ mulIndicator s g a :=
@@ -1203,12 +759,6 @@ theorem le_mulIndicator_apply {y} (hfg : a ∈ s → y ≤ g a) (hf : a ∉ s 
 #align set.le_mul_indicator_apply Set.le_mulIndicator_apply
 #align set.le_indicator_apply Set.le_indicator_apply
 
-/- warning: set.le_mul_indicator -> Set.le_mulIndicator is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} {g : α -> M} [_inst_2 : LE.{u2} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M _inst_2 (f a) (g a))) -> (forall (a : α), (Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s)) -> (LE.le.{u2} M _inst_2 (f a) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))))) -> (LE.le.{max u1 u2} (α -> M) (Pi.hasLe.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_2)) f (Set.mulIndicator.{u1, u2} α M _inst_1 s g))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M} {g : α -> M} [_inst_2 : LE.{u1} M], (forall (a : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (LE.le.{u1} M _inst_2 (f a) (g a))) -> (forall (a : α), (Not (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s)) -> (LE.le.{u1} M _inst_2 (f a) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)))) -> (LE.le.{max u2 u1} (α -> M) (Pi.hasLe.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_2)) f (Set.mulIndicator.{u2, u1} α M _inst_1 s g))
-Case conversion may be inaccurate. Consider using '#align set.le_mul_indicator Set.le_mulIndicatorₓ'. -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ∉ » s) -/
 @[to_additive]
 theorem le_mulIndicator (hfg : ∀ a ∈ s, f a ≤ g a) (hf : ∀ (a) (_ : a ∉ s), f a ≤ 1) :
@@ -1220,60 +770,30 @@ end
 
 variable [Preorder M]
 
-/- warning: set.one_le_mul_indicator_apply -> Set.one_le_mulIndicator_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} {a : α} [_inst_2 : Preorder.{u2} M], ((Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) (f a))) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) (Set.mulIndicator.{u1, u2} α M _inst_1 s f a))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M} {a : α} [_inst_2 : Preorder.{u1} M], ((Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)) (f a))) -> (LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)) (Set.mulIndicator.{u2, u1} α M _inst_1 s f a))
-Case conversion may be inaccurate. Consider using '#align set.one_le_mul_indicator_apply Set.one_le_mulIndicator_applyₓ'. -/
 @[to_additive indicator_apply_nonneg]
 theorem one_le_mulIndicator_apply (h : a ∈ s → 1 ≤ f a) : 1 ≤ mulIndicator s f a :=
   le_mulIndicator_apply h fun _ => le_rfl
 #align set.one_le_mul_indicator_apply Set.one_le_mulIndicator_apply
 #align set.indicator_apply_nonneg Set.indicator_apply_nonneg
 
-/- warning: set.one_le_mul_indicator -> Set.one_le_mulIndicator is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} [_inst_2 : Preorder.{u2} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) (f a))) -> (forall (a : α), LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) (Set.mulIndicator.{u1, u2} α M _inst_1 s f a))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M} [_inst_2 : Preorder.{u1} M], (forall (a : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)) (f a))) -> (forall (a : α), LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)) (Set.mulIndicator.{u2, u1} α M _inst_1 s f a))
-Case conversion may be inaccurate. Consider using '#align set.one_le_mul_indicator Set.one_le_mulIndicatorₓ'. -/
 @[to_additive indicator_nonneg]
 theorem one_le_mulIndicator (h : ∀ a ∈ s, 1 ≤ f a) (a : α) : 1 ≤ mulIndicator s f a :=
   one_le_mulIndicator_apply (h a)
 #align set.one_le_mul_indicator Set.one_le_mulIndicator
 #align set.indicator_nonneg Set.indicator_nonneg
 
-/- warning: set.mul_indicator_apply_le_one -> Set.mulIndicator_apply_le_one is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} {a : α} [_inst_2 : Preorder.{u2} M], ((Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (f a) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))))) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M} {a : α} [_inst_2 : Preorder.{u1} M], ((Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (f a) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)))) -> (LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (Set.mulIndicator.{u2, u1} α M _inst_1 s f a) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_apply_le_one Set.mulIndicator_apply_le_oneₓ'. -/
 @[to_additive]
 theorem mulIndicator_apply_le_one (h : a ∈ s → f a ≤ 1) : mulIndicator s f a ≤ 1 :=
   mulIndicator_apply_le' h fun _ => le_rfl
 #align set.mul_indicator_apply_le_one Set.mulIndicator_apply_le_one
 #align set.indicator_apply_nonpos Set.indicator_apply_nonpos
 
-/- warning: set.mul_indicator_le_one -> Set.mulIndicator_le_one is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} [_inst_2 : Preorder.{u2} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (f a) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))))) -> (forall (a : α), LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M} [_inst_2 : Preorder.{u1} M], (forall (a : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (f a) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)))) -> (forall (a : α), LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (Set.mulIndicator.{u2, u1} α M _inst_1 s f a) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_le_one Set.mulIndicator_le_oneₓ'. -/
 @[to_additive]
 theorem mulIndicator_le_one (h : ∀ a ∈ s, f a ≤ 1) (a : α) : mulIndicator s f a ≤ 1 :=
   mulIndicator_apply_le_one (h a)
 #align set.mul_indicator_le_one Set.mulIndicator_le_one
 #align set.indicator_nonpos Set.indicator_nonpos
 
-/- warning: set.mul_indicator_le_mul_indicator -> Set.mulIndicator_le_mulIndicator is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} {g : α -> M} {a : α} [_inst_2 : Preorder.{u2} M], (LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (f a) (g a)) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (Set.mulIndicator.{u1, u2} α M _inst_1 s g a))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} {g : α -> M} {a : α} [_inst_2 : Preorder.{u2} M], (LE.le.{u2} M (Preorder.toLE.{u2} M _inst_2) (f a) (g a)) -> (LE.le.{u2} M (Preorder.toLE.{u2} M _inst_2) (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (Set.mulIndicator.{u1, u2} α M _inst_1 s g a))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_le_mul_indicator Set.mulIndicator_le_mulIndicatorₓ'. -/
 @[to_additive]
 theorem mulIndicator_le_mulIndicator (h : f a ≤ g a) : mulIndicator s f a ≤ mulIndicator s g a :=
   mulIndicator_rel_mulIndicator le_rfl fun _ => h
@@ -1282,12 +802,6 @@ theorem mulIndicator_le_mulIndicator (h : f a ≤ g a) : mulIndicator s f a ≤
 
 attribute [mono] mul_indicator_le_mul_indicator indicator_le_indicator
 
-/- warning: set.mul_indicator_le_mul_indicator_of_subset -> Set.mulIndicator_le_mulIndicator_of_subset is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {t : Set.{u1} α} {f : α -> M} [_inst_2 : Preorder.{u2} M], (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s t) -> (forall (a : α), LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) (f a)) -> (forall (a : α), LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (Set.mulIndicator.{u1, u2} α M _inst_1 t f a))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {t : Set.{u2} α} {f : α -> M} [_inst_2 : Preorder.{u1} M], (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s t) -> (forall (a : α), LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)) (f a)) -> (forall (a : α), LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (Set.mulIndicator.{u2, u1} α M _inst_1 s f a) (Set.mulIndicator.{u2, u1} α M _inst_1 t f a))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_le_mul_indicator_of_subset Set.mulIndicator_le_mulIndicator_of_subsetₓ'. -/
 @[to_additive]
 theorem mulIndicator_le_mulIndicator_of_subset (h : s ⊆ t) (hf : ∀ a, 1 ≤ f a) (a : α) :
     mulIndicator s f a ≤ mulIndicator t f a :=
@@ -1297,12 +811,6 @@ theorem mulIndicator_le_mulIndicator_of_subset (h : s ⊆ t) (hf : ∀ a, 1 ≤
 #align set.mul_indicator_le_mul_indicator_of_subset Set.mulIndicator_le_mulIndicator_of_subset
 #align set.indicator_le_indicator_of_subset Set.indicator_le_indicator_of_subset
 
-/- warning: set.mul_indicator_le_self' -> Set.mulIndicator_le_self' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} [_inst_2 : Preorder.{u2} M], (forall (x : α), (Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s)) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) (f x))) -> (LE.le.{max u1 u2} (α -> M) (Pi.hasLe.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => Preorder.toHasLe.{u2} M _inst_2)) (Set.mulIndicator.{u1, u2} α M _inst_1 s f) f)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M} [_inst_2 : Preorder.{u1} M], (forall (x : α), (Not (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s)) -> (LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)) (f x))) -> (LE.le.{max u2 u1} (α -> M) (Pi.hasLe.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => Preorder.toLE.{u1} M _inst_2)) (Set.mulIndicator.{u2, u1} α M _inst_1 s f) f)
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_le_self' Set.mulIndicator_le_self'ₓ'. -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x «expr ∉ » s) -/
 @[to_additive]
 theorem mulIndicator_le_self' (hf : ∀ (x) (_ : x ∉ s), 1 ≤ f x) : mulIndicator s f ≤ f :=
@@ -1310,12 +818,6 @@ theorem mulIndicator_le_self' (hf : ∀ (x) (_ : x ∉ s), 1 ≤ f x) : mulIndic
 #align set.mul_indicator_le_self' Set.mulIndicator_le_self'
 #align set.indicator_le_self' Set.indicator_le_self'
 
-/- warning: set.mul_indicator_Union_apply -> Set.mulIndicator_iUnion_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {ι : Sort.{u2}} {M : Type.{u3}} [_inst_3 : CompleteLattice.{u3} M] [_inst_4 : One.{u3} M], (Eq.{succ u3} M (Bot.bot.{u3} M (CompleteLattice.toHasBot.{u3} M _inst_3)) (OfNat.ofNat.{u3} M 1 (OfNat.mk.{u3} M 1 (One.one.{u3} M _inst_4)))) -> (forall (s : ι -> (Set.{u1} α)) (f : α -> M) (x : α), Eq.{succ u3} M (Set.mulIndicator.{u1, u3} α M _inst_4 (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) f x) (iSup.{u3, u2} M (ConditionallyCompleteLattice.toHasSup.{u3} M (CompleteLattice.toConditionallyCompleteLattice.{u3} M _inst_3)) ι (fun (i : ι) => Set.mulIndicator.{u1, u3} α M _inst_4 (s i) f x)))
-but is expected to have type
-  forall {α : Type.{u1}} {ι : Sort.{u3}} {M : Type.{u2}} [_inst_3 : CompleteLattice.{u2} M] [_inst_4 : One.{u2} M], (Eq.{succ u2} M (Bot.bot.{u2} M (CompleteLattice.toBot.{u2} M _inst_3)) (OfNat.ofNat.{u2} M 1 (One.toOfNat1.{u2} M _inst_4))) -> (forall (s : ι -> (Set.{u1} α)) (f : α -> M) (x : α), Eq.{succ u2} M (Set.mulIndicator.{u1, u2} α M _inst_4 (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i)) f x) (iSup.{u2, u3} M (ConditionallyCompleteLattice.toSupSet.{u2} M (CompleteLattice.toConditionallyCompleteLattice.{u2} M _inst_3)) ι (fun (i : ι) => Set.mulIndicator.{u1, u2} α M _inst_4 (s i) f x)))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_Union_apply Set.mulIndicator_iUnion_applyₓ'. -/
 @[to_additive]
 theorem mulIndicator_iUnion_apply {ι M} [CompleteLattice M] [One M] (h1 : (⊥ : M) = 1)
     (s : ι → Set α) (f : α → M) (x : α) :
@@ -1339,24 +841,12 @@ section CanonicallyOrderedMonoid
 
 variable [CanonicallyOrderedMonoid M]
 
-/- warning: set.mul_indicator_le_self -> Set.mulIndicator_le_self is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : CanonicallyOrderedMonoid.{u2} M] (s : Set.{u1} α) (f : α -> M), LE.le.{max u1 u2} (α -> M) (Pi.hasLe.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => Preorder.toHasLe.{u2} M (PartialOrder.toPreorder.{u2} M (OrderedCommMonoid.toPartialOrder.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1))))) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (OrderedCommMonoid.toCommMonoid.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1))))) s f) f
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : CanonicallyOrderedMonoid.{u1} M] (s : Set.{u2} α) (f : α -> M), LE.le.{max u2 u1} (α -> M) (Pi.hasLe.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => Preorder.toLE.{u1} M (PartialOrder.toPreorder.{u1} M (OrderedCommMonoid.toPartialOrder.{u1} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u1} M _inst_1))))) (Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M (OrderedCommMonoid.toCommMonoid.{u1} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u1} M _inst_1)))) s f) f
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_le_self Set.mulIndicator_le_selfₓ'. -/
 @[to_additive]
 theorem mulIndicator_le_self (s : Set α) (f : α → M) : mulIndicator s f ≤ f :=
   mulIndicator_le_self' fun _ _ => one_le _
 #align set.mul_indicator_le_self Set.mulIndicator_le_self
 #align set.indicator_le_self Set.indicator_le_self
 
-/- warning: set.mul_indicator_apply_le -> Set.mulIndicator_apply_le is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : CanonicallyOrderedMonoid.{u2} M] {a : α} {s : Set.{u1} α} {f : α -> M} {g : α -> M}, ((Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M (PartialOrder.toPreorder.{u2} M (OrderedCommMonoid.toPartialOrder.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1)))) (f a) (g a))) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M (PartialOrder.toPreorder.{u2} M (OrderedCommMonoid.toPartialOrder.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1)))) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (OrderedCommMonoid.toCommMonoid.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1))))) s f a) (g a))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : CanonicallyOrderedMonoid.{u1} M] {a : α} {s : Set.{u2} α} {f : α -> M} {g : α -> M}, ((Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (LE.le.{u1} M (Preorder.toLE.{u1} M (PartialOrder.toPreorder.{u1} M (OrderedCommMonoid.toPartialOrder.{u1} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u1} M _inst_1)))) (f a) (g a))) -> (LE.le.{u1} M (Preorder.toLE.{u1} M (PartialOrder.toPreorder.{u1} M (OrderedCommMonoid.toPartialOrder.{u1} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u1} M _inst_1)))) (Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M (OrderedCommMonoid.toCommMonoid.{u1} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u1} M _inst_1)))) s f a) (g a))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_apply_le Set.mulIndicator_apply_leₓ'. -/
 @[to_additive]
 theorem mulIndicator_apply_le {a : α} {s : Set α} {f g : α → M} (hfg : a ∈ s → f a ≤ g a) :
     mulIndicator s f a ≤ g a :=
@@ -1364,12 +854,6 @@ theorem mulIndicator_apply_le {a : α} {s : Set α} {f g : α → M} (hfg : a 
 #align set.mul_indicator_apply_le Set.mulIndicator_apply_le
 #align set.indicator_apply_le Set.indicator_apply_le
 
-/- warning: set.mul_indicator_le -> Set.mulIndicator_le is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : CanonicallyOrderedMonoid.{u2} M] {s : Set.{u1} α} {f : α -> M} {g : α -> M}, (forall (a : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M (PartialOrder.toPreorder.{u2} M (OrderedCommMonoid.toPartialOrder.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1)))) (f a) (g a))) -> (LE.le.{max u1 u2} (α -> M) (Pi.hasLe.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => Preorder.toHasLe.{u2} M (PartialOrder.toPreorder.{u2} M (OrderedCommMonoid.toPartialOrder.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1))))) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (OrderedCommMonoid.toCommMonoid.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1))))) s f) g)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : CanonicallyOrderedMonoid.{u1} M] {s : Set.{u2} α} {f : α -> M} {g : α -> M}, (forall (a : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (LE.le.{u1} M (Preorder.toLE.{u1} M (PartialOrder.toPreorder.{u1} M (OrderedCommMonoid.toPartialOrder.{u1} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u1} M _inst_1)))) (f a) (g a))) -> (LE.le.{max u2 u1} (α -> M) (Pi.hasLe.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => Preorder.toLE.{u1} M (PartialOrder.toPreorder.{u1} M (OrderedCommMonoid.toPartialOrder.{u1} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u1} M _inst_1))))) (Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M (OrderedCommMonoid.toCommMonoid.{u1} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u1} M _inst_1)))) s f) g)
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_le Set.mulIndicator_leₓ'. -/
 @[to_additive]
 theorem mulIndicator_le {s : Set α} {f g : α → M} (hfg : ∀ a ∈ s, f a ≤ g a) :
     mulIndicator s f ≤ g :=
@@ -1379,12 +863,6 @@ theorem mulIndicator_le {s : Set α} {f g : α → M} (hfg : ∀ a ∈ s, f a 
 
 end CanonicallyOrderedMonoid
 
-/- warning: set.indicator_le_indicator_nonneg -> Set.indicator_le_indicator_nonneg is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : LinearOrder.{u2} β] [_inst_2 : Zero.{u2} β] (s : Set.{u1} α) (f : α -> β), LE.le.{max u1 u2} (α -> β) (Pi.hasLe.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_1)))))) (Set.indicator.{u1, u2} α β _inst_2 s f) (Set.indicator.{u1, u2} α β _inst_2 (setOf.{u1} α (fun (x : α) => LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_1))))) (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β _inst_2))) (f x))) f)
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : LinearOrder.{u2} β] [_inst_2 : Zero.{u2} β] (s : Set.{u1} α) (f : α -> β), LE.le.{max u1 u2} (α -> β) (Pi.hasLe.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_1))))))) (Set.indicator.{u1, u2} α β _inst_2 s f) (Set.indicator.{u1, u2} α β _inst_2 (setOf.{u1} α (fun (x : α) => LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_1)))))) (OfNat.ofNat.{u2} β 0 (Zero.toOfNat0.{u2} β _inst_2)) (f x))) f)
-Case conversion may be inaccurate. Consider using '#align set.indicator_le_indicator_nonneg Set.indicator_le_indicator_nonnegₓ'. -/
 theorem indicator_le_indicator_nonneg {β} [LinearOrder β] [Zero β] (s : Set α) (f : α → β) :
     s.indicator f ≤ { x | 0 ≤ f x }.indicator f :=
   by
@@ -1398,12 +876,6 @@ theorem indicator_le_indicator_nonneg {β} [LinearOrder β] [Zero β] (s : Set 
     · exact le_rfl
 #align set.indicator_le_indicator_nonneg Set.indicator_le_indicator_nonneg
 
-/- warning: set.indicator_nonpos_le_indicator -> Set.indicator_nonpos_le_indicator is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : LinearOrder.{u2} β] [_inst_2 : Zero.{u2} β] (s : Set.{u1} α) (f : α -> β), LE.le.{max u1 u2} (α -> β) (Pi.hasLe.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_1)))))) (Set.indicator.{u1, u2} α β _inst_2 (setOf.{u1} α (fun (x : α) => LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_1))))) (f x) (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β _inst_2))))) f) (Set.indicator.{u1, u2} α β _inst_2 s f)
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : LinearOrder.{u2} β] [_inst_2 : Zero.{u2} β] (s : Set.{u1} α) (f : α -> β), LE.le.{max u1 u2} (α -> β) (Pi.hasLe.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_1))))))) (Set.indicator.{u1, u2} α β _inst_2 (setOf.{u1} α (fun (x : α) => LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_1)))))) (f x) (OfNat.ofNat.{u2} β 0 (Zero.toOfNat0.{u2} β _inst_2)))) f) (Set.indicator.{u1, u2} α β _inst_2 s f)
-Case conversion may be inaccurate. Consider using '#align set.indicator_nonpos_le_indicator Set.indicator_nonpos_le_indicatorₓ'. -/
 theorem indicator_nonpos_le_indicator {β} [LinearOrder β] [Zero β] (s : Set α) (f : α → β) :
     { x | f x ≤ 0 }.indicator f ≤ s.indicator f :=
   @indicator_le_indicator_nonneg α βᵒᵈ _ _ s f
@@ -1411,12 +883,6 @@ theorem indicator_nonpos_le_indicator {β} [LinearOrder β] [Zero β] (s : Set 
 
 end Set
 
-/- warning: monoid_hom.map_mul_indicator -> MonoidHom.map_mulIndicator is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : MulOneClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] (f : MonoidHom.{u2, u3} M N _inst_1 _inst_2) (s : Set.{u1} α) (g : α -> M) (x : α), Eq.{succ u3} N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N _inst_1 _inst_2) (fun (_x : MonoidHom.{u2, u3} M N _inst_1 _inst_2) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N _inst_1 _inst_2) f (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) s g x)) (Set.mulIndicator.{u1, u3} α N (MulOneClass.toHasOne.{u3} N _inst_2) s (Function.comp.{succ u1, succ u2, succ u3} α M N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N _inst_1 _inst_2) (fun (_x : MonoidHom.{u2, u3} M N _inst_1 _inst_2) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N _inst_1 _inst_2) f) g) x)
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : MulOneClass.{u3} M] [_inst_2 : MulOneClass.{u2} N] (f : MonoidHom.{u3, u2} M N _inst_1 _inst_2) (s : Set.{u1} α) (g : α -> M) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (Set.mulIndicator.{u1, u3} α M (MulOneClass.toOne.{u3} M _inst_1) s g x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N (MulOneClass.toMul.{u3} M _inst_1) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N _inst_1 _inst_2 (MonoidHom.monoidHomClass.{u3, u2} M N _inst_1 _inst_2))) f (Set.mulIndicator.{u1, u3} α M (MulOneClass.toOne.{u3} M _inst_1) s g x)) (Set.mulIndicator.{u1, u2} α N (MulOneClass.toOne.{u2} N _inst_2) s (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N (MulOneClass.toMul.{u3} M _inst_1) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N _inst_1 _inst_2 (MonoidHom.monoidHomClass.{u3, u2} M N _inst_1 _inst_2))) f) g) x)
-Case conversion may be inaccurate. Consider using '#align monoid_hom.map_mul_indicator MonoidHom.map_mulIndicatorₓ'. -/
 @[to_additive]
 theorem MonoidHom.map_mulIndicator {M N : Type _} [MulOneClass M] [MulOneClass N] (f : M →* N)
     (s : Set α) (g : α → M) (x : α) : f (s.mulIndicator g x) = s.mulIndicator (f ∘ g) x :=
Diff
@@ -164,9 +164,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align set.mul_indicator_eq_self_of_superset Set.mulIndicator_eq_self_of_supersetₓ'. -/
 @[to_additive]
 theorem mulIndicator_eq_self_of_superset (h1 : s.mulIndicator f = f) (h2 : s ⊆ t) :
-    t.mulIndicator f = f := by
-  rw [mul_indicator_eq_self] at h1⊢
-  exact subset.trans h1 h2
+    t.mulIndicator f = f := by rw [mul_indicator_eq_self] at h1⊢; exact subset.trans h1 h2
 #align set.mul_indicator_eq_self_of_superset Set.mulIndicator_eq_self_of_superset
 #align set.indicator_eq_self_of_superset Set.indicator_eq_self_of_superset
 
@@ -293,11 +291,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align set.mul_indicator_congr Set.mulIndicator_congrₓ'. -/
 @[to_additive]
 theorem mulIndicator_congr (h : EqOn f g s) : mulIndicator s f = mulIndicator s g :=
-  funext fun x => by
-    simp only [mul_indicator]
-    split_ifs
-    · exact h h_1
-    rfl
+  funext fun x => by simp only [mul_indicator]; split_ifs; · exact h h_1; rfl
 #align set.mul_indicator_congr Set.mulIndicator_congr
 #align set.indicator_congr Set.indicator_congr
 
@@ -374,9 +368,7 @@ Case conversion may be inaccurate. Consider using '#align set.mul_indicator_mul_
 @[to_additive]
 theorem mulIndicator_mulIndicator (s t : Set α) (f : α → M) :
     mulIndicator s (mulIndicator t f) = mulIndicator (s ∩ t) f :=
-  funext fun x => by
-    simp only [mul_indicator]
-    split_ifs
+  funext fun x => by simp only [mul_indicator]; split_ifs;
     repeat' simp_all (config := { contextual := true })
 #align set.mul_indicator_mul_indicator Set.mulIndicator_mulIndicator
 #align set.indicator_indicator Set.indicator_indicator
@@ -415,9 +407,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align set.mul_indicator_comp_right Set.mulIndicator_comp_rightₓ'. -/
 @[to_additive]
 theorem mulIndicator_comp_right {s : Set α} (f : β → α) {g : α → M} {x : β} :
-    mulIndicator (f ⁻¹' s) (g ∘ f) x = mulIndicator s g (f x) :=
-  by
-  simp only [mul_indicator]
+    mulIndicator (f ⁻¹' s) (g ∘ f) x = mulIndicator s g (f x) := by simp only [mul_indicator];
   split_ifs <;> rfl
 #align set.mul_indicator_comp_right Set.mulIndicator_comp_right
 #align set.indicator_comp_right Set.indicator_comp_right
@@ -553,11 +543,8 @@ theorem mem_range_mulIndicator {r : M} {s : Set α} {f : α → M} :
 #print Set.mulIndicator_rel_mulIndicator /-
 @[to_additive]
 theorem mulIndicator_rel_mulIndicator {r : M → M → Prop} (h1 : r 1 1) (ha : a ∈ s → r (f a) (g a)) :
-    r (mulIndicator s f a) (mulIndicator s g a) :=
-  by
-  simp only [mul_indicator]
-  split_ifs with has has
-  exacts[ha has, h1]
+    r (mulIndicator s f a) (mulIndicator s g a) := by simp only [mul_indicator];
+  split_ifs with has has; exacts[ha has, h1]
 #align set.mul_indicator_rel_mul_indicator Set.mulIndicator_rel_mulIndicator
 #align set.indicator_rel_indicator Set.indicator_rel_indicator
 -/
@@ -628,13 +615,8 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align set.mul_indicator_mul Set.mulIndicator_mulₓ'. -/
 @[to_additive]
 theorem mulIndicator_mul (s : Set α) (f g : α → M) :
-    (mulIndicator s fun a => f a * g a) = fun a => mulIndicator s f a * mulIndicator s g a :=
-  by
-  funext
-  simp only [mul_indicator]
-  split_ifs
-  · rfl
-  rw [mul_one]
+    (mulIndicator s fun a => f a * g a) = fun a => mulIndicator s f a * mulIndicator s g a := by
+  funext; simp only [mul_indicator]; split_ifs; · rfl; rw [mul_one]
 #align set.mul_indicator_mul Set.mulIndicator_mul
 #align set.indicator_add Set.indicator_add
 
@@ -781,11 +763,8 @@ but is expected to have type
   forall {α : Type.{u3}} {M : Type.{u1}} {A : Type.{u2}} [_inst_1 : AddMonoid.{u2} A] [_inst_2 : Monoid.{u1} M] [_inst_3 : DistribMulAction.{u1, u2} M A _inst_2 _inst_1] (s : Set.{u3} α) (r : α -> M) (f : α -> A) (x : α), Eq.{succ u2} A (Set.indicator.{u3, u2} α A (AddMonoid.toZero.{u2} A _inst_1) s (fun (x : α) => HSMul.hSMul.{u1, u2, u2} M A A (instHSMul.{u1, u2} M A (SMulZeroClass.toSMul.{u1, u2} M A (AddMonoid.toZero.{u2} A _inst_1) (DistribSMul.toSMulZeroClass.{u1, u2} M A (AddMonoid.toAddZeroClass.{u2} A _inst_1) (DistribMulAction.toDistribSMul.{u1, u2} M A _inst_2 _inst_1 _inst_3)))) (r x) (f x)) x) (HSMul.hSMul.{u1, u2, u2} M A A (instHSMul.{u1, u2} M A (SMulZeroClass.toSMul.{u1, u2} M A (AddMonoid.toZero.{u2} A _inst_1) (DistribSMul.toSMulZeroClass.{u1, u2} M A (AddMonoid.toAddZeroClass.{u2} A _inst_1) (DistribMulAction.toDistribSMul.{u1, u2} M A _inst_2 _inst_1 _inst_3)))) (r x) (Set.indicator.{u3, u2} α A (AddMonoid.toZero.{u2} A _inst_1) s f x))
 Case conversion may be inaccurate. Consider using '#align set.indicator_smul_apply Set.indicator_smul_applyₓ'. -/
 theorem indicator_smul_apply (s : Set α) (r : α → M) (f : α → A) (x : α) :
-    indicator s (fun x => r x • f x) x = r x • indicator s f x :=
-  by
-  dsimp only [indicator]
-  split_ifs
-  exacts[rfl, (smul_zero (r x)).symm]
+    indicator s (fun x => r x • f x) x = r x • indicator s f x := by dsimp only [indicator];
+  split_ifs; exacts[rfl, (smul_zero (r x)).symm]
 #align set.indicator_smul_apply Set.indicator_smul_apply
 
 /- warning: set.indicator_smul -> Set.indicator_smul is a dubious translation:
@@ -1033,9 +1012,7 @@ theorem mulIndicator_finset_biUnion {ι} (I : Finset ι) (s : ι → Set α) {f
   by
   classical
     refine' Finset.induction_on I _ _
-    · intro h
-      funext
-      simp
+    · intro h; funext; simp
     intro a I haI ih hI
     funext
     rw [Finset.prod_insert haI, Finset.set_biUnion_insert, mul_indicator_union_of_not_mem_inter,
@@ -1077,13 +1054,8 @@ but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroClass.{u1} M] (s : Set.{u2} α) (f : α -> M) (g : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) s (fun (a : α) => HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M _inst_1)) (f a) (g a))) (fun (a : α) => HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M _inst_1)) (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) s f a) (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) s g a))
 Case conversion may be inaccurate. Consider using '#align set.indicator_mul Set.indicator_mulₓ'. -/
 theorem indicator_mul (s : Set α) (f g : α → M) :
-    (indicator s fun a => f a * g a) = fun a => indicator s f a * indicator s g a :=
-  by
-  funext
-  simp only [indicator]
-  split_ifs
-  · rfl
-  rw [MulZeroClass.mul_zero]
+    (indicator s fun a => f a * g a) = fun a => indicator s f a * indicator s g a := by funext;
+  simp only [indicator]; split_ifs; · rfl; rw [MulZeroClass.mul_zero]
 #align set.indicator_mul Set.indicator_mul
 
 /- warning: set.indicator_mul_left -> Set.indicator_mul_left is a dubious translation:
@@ -1093,12 +1065,8 @@ but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroClass.{u1} M] {a : α} (s : Set.{u2} α) (f : α -> M) (g : α -> M), Eq.{succ u1} M (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) s (fun (a : α) => HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M _inst_1)) (f a) (g a)) a) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M _inst_1)) (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) s f a) (g a))
 Case conversion may be inaccurate. Consider using '#align set.indicator_mul_left Set.indicator_mul_leftₓ'. -/
 theorem indicator_mul_left (s : Set α) (f g : α → M) :
-    indicator s (fun a => f a * g a) a = indicator s f a * g a :=
-  by
-  simp only [indicator]
-  split_ifs
-  · rfl
-  rw [MulZeroClass.zero_mul]
+    indicator s (fun a => f a * g a) a = indicator s f a * g a := by simp only [indicator];
+  split_ifs; · rfl; rw [MulZeroClass.zero_mul]
 #align set.indicator_mul_left Set.indicator_mul_left
 
 /- warning: set.indicator_mul_right -> Set.indicator_mul_right is a dubious translation:
@@ -1108,12 +1076,8 @@ but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroClass.{u1} M] {a : α} (s : Set.{u2} α) (f : α -> M) (g : α -> M), Eq.{succ u1} M (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) s (fun (a : α) => HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M _inst_1)) (f a) (g a)) a) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M _inst_1)) (f a) (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) s g a))
 Case conversion may be inaccurate. Consider using '#align set.indicator_mul_right Set.indicator_mul_rightₓ'. -/
 theorem indicator_mul_right (s : Set α) (f g : α → M) :
-    indicator s (fun a => f a * g a) a = f a * indicator s g a :=
-  by
-  simp only [indicator]
-  split_ifs
-  · rfl
-  rw [MulZeroClass.mul_zero]
+    indicator s (fun a => f a * g a) a = f a * indicator s g a := by simp only [indicator];
+  split_ifs; · rfl; rw [MulZeroClass.mul_zero]
 #align set.indicator_mul_right Set.indicator_mul_right
 
 /- warning: set.inter_indicator_mul -> Set.inter_indicator_mul is a dubious translation:
@@ -1123,10 +1087,8 @@ but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroClass.{u1} M] {t1 : Set.{u2} α} {t2 : Set.{u2} α} (f : α -> M) (g : α -> M) (x : α), Eq.{succ u1} M (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) t1 t2) (fun (x : α) => HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M _inst_1)) (f x) (g x)) x) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M _inst_1)) (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) t1 f x) (Set.indicator.{u2, u1} α M (MulZeroClass.toZero.{u1} M _inst_1) t2 g x))
 Case conversion may be inaccurate. Consider using '#align set.inter_indicator_mul Set.inter_indicator_mulₓ'. -/
 theorem inter_indicator_mul {t1 t2 : Set α} (f g : α → M) (x : α) :
-    (t1 ∩ t2).indicator (fun x => f x * g x) x = t1.indicator f x * t2.indicator g x :=
-  by
-  rw [← Set.indicator_indicator]
-  simp [indicator]
+    (t1 ∩ t2).indicator (fun x => f x * g x) x = t1.indicator f x * t2.indicator g x := by
+  rw [← Set.indicator_indicator]; simp [indicator]
 #align set.inter_indicator_mul Set.inter_indicator_mul
 
 end MulZeroClass
@@ -1186,10 +1148,8 @@ lean 3 declaration is
 but is expected to have type
   forall {α : Type.{u2}} (M : Type.{u1}) [_inst_1 : MulZeroOneClass.{u1} M] [_inst_2 : Nontrivial.{u1} M] {U : Set.{u2} α} {V : Set.{u2} α}, (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) U (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7782 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) V (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7782 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))))) -> (Eq.{succ u2} (Set.{u2} α) U V)
 Case conversion may be inaccurate. Consider using '#align set.indicator_one_inj Set.indicator_one_injₓ'. -/
-theorem indicator_one_inj {U V : Set α} (h : indicator U (1 : α → M) = indicator V 1) : U = V :=
-  by
-  ext
-  simp_rw [← indicator_eq_one_iff_mem M, h]
+theorem indicator_one_inj {U V : Set α} (h : indicator U (1 : α → M) = indicator V 1) : U = V := by
+  ext; simp_rw [← indicator_eq_one_iff_mem M, h]
 #align set.indicator_one_inj Set.indicator_one_inj
 
 end MulZeroOneClass
Diff
@@ -1455,7 +1455,7 @@ end Set
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : MulOneClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] (f : MonoidHom.{u2, u3} M N _inst_1 _inst_2) (s : Set.{u1} α) (g : α -> M) (x : α), Eq.{succ u3} N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N _inst_1 _inst_2) (fun (_x : MonoidHom.{u2, u3} M N _inst_1 _inst_2) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N _inst_1 _inst_2) f (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) s g x)) (Set.mulIndicator.{u1, u3} α N (MulOneClass.toHasOne.{u3} N _inst_2) s (Function.comp.{succ u1, succ u2, succ u3} α M N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N _inst_1 _inst_2) (fun (_x : MonoidHom.{u2, u3} M N _inst_1 _inst_2) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N _inst_1 _inst_2) f) g) x)
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : MulOneClass.{u3} M] [_inst_2 : MulOneClass.{u2} N] (f : MonoidHom.{u3, u2} M N _inst_1 _inst_2) (s : Set.{u1} α) (g : α -> M) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (Set.mulIndicator.{u1, u3} α M (MulOneClass.toOne.{u3} M _inst_1) s g x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N (MulOneClass.toMul.{u3} M _inst_1) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N _inst_1 _inst_2 (MonoidHom.monoidHomClass.{u3, u2} M N _inst_1 _inst_2))) f (Set.mulIndicator.{u1, u3} α M (MulOneClass.toOne.{u3} M _inst_1) s g x)) (Set.mulIndicator.{u1, u2} α N (MulOneClass.toOne.{u2} N _inst_2) s (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N (MulOneClass.toMul.{u3} M _inst_1) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N _inst_1 _inst_2 (MonoidHom.monoidHomClass.{u3, u2} M N _inst_1 _inst_2))) f) g) x)
+  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : MulOneClass.{u3} M] [_inst_2 : MulOneClass.{u2} N] (f : MonoidHom.{u3, u2} M N _inst_1 _inst_2) (s : Set.{u1} α) (g : α -> M) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (Set.mulIndicator.{u1, u3} α M (MulOneClass.toOne.{u3} M _inst_1) s g x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N (MulOneClass.toMul.{u3} M _inst_1) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N _inst_1 _inst_2 (MonoidHom.monoidHomClass.{u3, u2} M N _inst_1 _inst_2))) f (Set.mulIndicator.{u1, u3} α M (MulOneClass.toOne.{u3} M _inst_1) s g x)) (Set.mulIndicator.{u1, u2} α N (MulOneClass.toOne.{u2} N _inst_2) s (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N (MulOneClass.toMul.{u3} M _inst_1) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N _inst_1 _inst_2 (MonoidHom.monoidHomClass.{u3, u2} M N _inst_1 _inst_2))) f) g) x)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_mul_indicator MonoidHom.map_mulIndicatorₓ'. -/
 @[to_additive]
 theorem MonoidHom.map_mulIndicator {M N : Type _} [MulOneClass M] [MulOneClass N] (f : M →* N)
Diff
@@ -1262,7 +1262,7 @@ variable [Preorder M]
 
 /- warning: set.one_le_mul_indicator_apply -> Set.one_le_mulIndicator_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} {a : α} [_inst_2 : Preorder.{u2} M], ((Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M (Preorder.toLE.{u2} M _inst_2) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) (f a))) -> (LE.le.{u2} M (Preorder.toLE.{u2} M _inst_2) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) (Set.mulIndicator.{u1, u2} α M _inst_1 s f a))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} {a : α} [_inst_2 : Preorder.{u2} M], ((Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) (f a))) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) (Set.mulIndicator.{u1, u2} α M _inst_1 s f a))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M} {a : α} [_inst_2 : Preorder.{u1} M], ((Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)) (f a))) -> (LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)) (Set.mulIndicator.{u2, u1} α M _inst_1 s f a))
 Case conversion may be inaccurate. Consider using '#align set.one_le_mul_indicator_apply Set.one_le_mulIndicator_applyₓ'. -/
@@ -1274,7 +1274,7 @@ theorem one_le_mulIndicator_apply (h : a ∈ s → 1 ≤ f a) : 1 ≤ mulIndicat
 
 /- warning: set.one_le_mul_indicator -> Set.one_le_mulIndicator is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} [_inst_2 : Preorder.{u2} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M (Preorder.toLE.{u2} M _inst_2) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) (f a))) -> (forall (a : α), LE.le.{u2} M (Preorder.toLE.{u2} M _inst_2) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) (Set.mulIndicator.{u1, u2} α M _inst_1 s f a))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} [_inst_2 : Preorder.{u2} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) (f a))) -> (forall (a : α), LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) (Set.mulIndicator.{u1, u2} α M _inst_1 s f a))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M} [_inst_2 : Preorder.{u1} M], (forall (a : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)) (f a))) -> (forall (a : α), LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)) (Set.mulIndicator.{u2, u1} α M _inst_1 s f a))
 Case conversion may be inaccurate. Consider using '#align set.one_le_mul_indicator Set.one_le_mulIndicatorₓ'. -/
@@ -1286,7 +1286,7 @@ theorem one_le_mulIndicator (h : ∀ a ∈ s, 1 ≤ f a) (a : α) : 1 ≤ mulInd
 
 /- warning: set.mul_indicator_apply_le_one -> Set.mulIndicator_apply_le_one is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} {a : α} [_inst_2 : Preorder.{u2} M], ((Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M (Preorder.toLE.{u2} M _inst_2) (f a) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))))) -> (LE.le.{u2} M (Preorder.toLE.{u2} M _inst_2) (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} {a : α} [_inst_2 : Preorder.{u2} M], ((Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (f a) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))))) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M} {a : α} [_inst_2 : Preorder.{u1} M], ((Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (f a) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)))) -> (LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (Set.mulIndicator.{u2, u1} α M _inst_1 s f a) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)))
 Case conversion may be inaccurate. Consider using '#align set.mul_indicator_apply_le_one Set.mulIndicator_apply_le_oneₓ'. -/
@@ -1298,7 +1298,7 @@ theorem mulIndicator_apply_le_one (h : a ∈ s → f a ≤ 1) : mulIndicator s f
 
 /- warning: set.mul_indicator_le_one -> Set.mulIndicator_le_one is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} [_inst_2 : Preorder.{u2} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M (Preorder.toLE.{u2} M _inst_2) (f a) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))))) -> (forall (a : α), LE.le.{u2} M (Preorder.toLE.{u2} M _inst_2) (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} [_inst_2 : Preorder.{u2} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (f a) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))))) -> (forall (a : α), LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M} [_inst_2 : Preorder.{u1} M], (forall (a : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (f a) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)))) -> (forall (a : α), LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (Set.mulIndicator.{u2, u1} α M _inst_1 s f a) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)))
 Case conversion may be inaccurate. Consider using '#align set.mul_indicator_le_one Set.mulIndicator_le_oneₓ'. -/
@@ -1308,19 +1308,23 @@ theorem mulIndicator_le_one (h : ∀ a ∈ s, f a ≤ 1) (a : α) : mulIndicator
 #align set.mul_indicator_le_one Set.mulIndicator_le_one
 #align set.indicator_nonpos Set.indicator_nonpos
 
-#print Set.mulIndicator_le_mulIndicator /-
+/- warning: set.mul_indicator_le_mul_indicator -> Set.mulIndicator_le_mulIndicator is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} {g : α -> M} {a : α} [_inst_2 : Preorder.{u2} M], (LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (f a) (g a)) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (Set.mulIndicator.{u1, u2} α M _inst_1 s g a))
+but is expected to have type
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} {g : α -> M} {a : α} [_inst_2 : Preorder.{u2} M], (LE.le.{u2} M (Preorder.toLE.{u2} M _inst_2) (f a) (g a)) -> (LE.le.{u2} M (Preorder.toLE.{u2} M _inst_2) (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (Set.mulIndicator.{u1, u2} α M _inst_1 s g a))
+Case conversion may be inaccurate. Consider using '#align set.mul_indicator_le_mul_indicator Set.mulIndicator_le_mulIndicatorₓ'. -/
 @[to_additive]
 theorem mulIndicator_le_mulIndicator (h : f a ≤ g a) : mulIndicator s f a ≤ mulIndicator s g a :=
   mulIndicator_rel_mulIndicator le_rfl fun _ => h
 #align set.mul_indicator_le_mul_indicator Set.mulIndicator_le_mulIndicator
 #align set.indicator_le_indicator Set.indicator_le_indicator
--/
 
 attribute [mono] mul_indicator_le_mul_indicator indicator_le_indicator
 
 /- warning: set.mul_indicator_le_mul_indicator_of_subset -> Set.mulIndicator_le_mulIndicator_of_subset is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {t : Set.{u1} α} {f : α -> M} [_inst_2 : Preorder.{u2} M], (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s t) -> (forall (a : α), LE.le.{u2} M (Preorder.toLE.{u2} M _inst_2) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) (f a)) -> (forall (a : α), LE.le.{u2} M (Preorder.toLE.{u2} M _inst_2) (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (Set.mulIndicator.{u1, u2} α M _inst_1 t f a))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {t : Set.{u1} α} {f : α -> M} [_inst_2 : Preorder.{u2} M], (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s t) -> (forall (a : α), LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) (f a)) -> (forall (a : α), LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (Set.mulIndicator.{u1, u2} α M _inst_1 s f a) (Set.mulIndicator.{u1, u2} α M _inst_1 t f a))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {t : Set.{u2} α} {f : α -> M} [_inst_2 : Preorder.{u1} M], (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) s t) -> (forall (a : α), LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)) (f a)) -> (forall (a : α), LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (Set.mulIndicator.{u2, u1} α M _inst_1 s f a) (Set.mulIndicator.{u2, u1} α M _inst_1 t f a))
 Case conversion may be inaccurate. Consider using '#align set.mul_indicator_le_mul_indicator_of_subset Set.mulIndicator_le_mulIndicator_of_subsetₓ'. -/
@@ -1335,7 +1339,7 @@ theorem mulIndicator_le_mulIndicator_of_subset (h : s ⊆ t) (hf : ∀ a, 1 ≤
 
 /- warning: set.mul_indicator_le_self' -> Set.mulIndicator_le_self' is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} [_inst_2 : Preorder.{u2} M], (forall (x : α), (Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s)) -> (LE.le.{u2} M (Preorder.toLE.{u2} M _inst_2) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) (f x))) -> (LE.le.{max u1 u2} (α -> M) (Pi.hasLe.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => Preorder.toLE.{u2} M _inst_2)) (Set.mulIndicator.{u1, u2} α M _inst_1 s f) f)
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] {s : Set.{u1} α} {f : α -> M} [_inst_2 : Preorder.{u2} M], (forall (x : α), (Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s)) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M _inst_2) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M _inst_1))) (f x))) -> (LE.le.{max u1 u2} (α -> M) (Pi.hasLe.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => Preorder.toHasLe.{u2} M _inst_2)) (Set.mulIndicator.{u1, u2} α M _inst_1 s f) f)
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M} [_inst_2 : Preorder.{u1} M], (forall (x : α), (Not (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s)) -> (LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)) (f x))) -> (LE.le.{max u2 u1} (α -> M) (Pi.hasLe.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => Preorder.toLE.{u1} M _inst_2)) (Set.mulIndicator.{u2, u1} α M _inst_1 s f) f)
 Case conversion may be inaccurate. Consider using '#align set.mul_indicator_le_self' Set.mulIndicator_le_self'ₓ'. -/
@@ -1377,7 +1381,7 @@ variable [CanonicallyOrderedMonoid M]
 
 /- warning: set.mul_indicator_le_self -> Set.mulIndicator_le_self is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : CanonicallyOrderedMonoid.{u2} M] (s : Set.{u1} α) (f : α -> M), LE.le.{max u1 u2} (α -> M) (Pi.hasLe.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => Preorder.toLE.{u2} M (PartialOrder.toPreorder.{u2} M (OrderedCommMonoid.toPartialOrder.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1))))) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (OrderedCommMonoid.toCommMonoid.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1))))) s f) f
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : CanonicallyOrderedMonoid.{u2} M] (s : Set.{u1} α) (f : α -> M), LE.le.{max u1 u2} (α -> M) (Pi.hasLe.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => Preorder.toHasLe.{u2} M (PartialOrder.toPreorder.{u2} M (OrderedCommMonoid.toPartialOrder.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1))))) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (OrderedCommMonoid.toCommMonoid.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1))))) s f) f
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : CanonicallyOrderedMonoid.{u1} M] (s : Set.{u2} α) (f : α -> M), LE.le.{max u2 u1} (α -> M) (Pi.hasLe.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => Preorder.toLE.{u1} M (PartialOrder.toPreorder.{u1} M (OrderedCommMonoid.toPartialOrder.{u1} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u1} M _inst_1))))) (Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M (OrderedCommMonoid.toCommMonoid.{u1} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u1} M _inst_1)))) s f) f
 Case conversion may be inaccurate. Consider using '#align set.mul_indicator_le_self Set.mulIndicator_le_selfₓ'. -/
@@ -1389,7 +1393,7 @@ theorem mulIndicator_le_self (s : Set α) (f : α → M) : mulIndicator s f ≤
 
 /- warning: set.mul_indicator_apply_le -> Set.mulIndicator_apply_le is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : CanonicallyOrderedMonoid.{u2} M] {a : α} {s : Set.{u1} α} {f : α -> M} {g : α -> M}, ((Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M (Preorder.toLE.{u2} M (PartialOrder.toPreorder.{u2} M (OrderedCommMonoid.toPartialOrder.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1)))) (f a) (g a))) -> (LE.le.{u2} M (Preorder.toLE.{u2} M (PartialOrder.toPreorder.{u2} M (OrderedCommMonoid.toPartialOrder.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1)))) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (OrderedCommMonoid.toCommMonoid.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1))))) s f a) (g a))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : CanonicallyOrderedMonoid.{u2} M] {a : α} {s : Set.{u1} α} {f : α -> M} {g : α -> M}, ((Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M (PartialOrder.toPreorder.{u2} M (OrderedCommMonoid.toPartialOrder.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1)))) (f a) (g a))) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M (PartialOrder.toPreorder.{u2} M (OrderedCommMonoid.toPartialOrder.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1)))) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (OrderedCommMonoid.toCommMonoid.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1))))) s f a) (g a))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : CanonicallyOrderedMonoid.{u1} M] {a : α} {s : Set.{u2} α} {f : α -> M} {g : α -> M}, ((Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (LE.le.{u1} M (Preorder.toLE.{u1} M (PartialOrder.toPreorder.{u1} M (OrderedCommMonoid.toPartialOrder.{u1} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u1} M _inst_1)))) (f a) (g a))) -> (LE.le.{u1} M (Preorder.toLE.{u1} M (PartialOrder.toPreorder.{u1} M (OrderedCommMonoid.toPartialOrder.{u1} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u1} M _inst_1)))) (Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M (OrderedCommMonoid.toCommMonoid.{u1} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u1} M _inst_1)))) s f a) (g a))
 Case conversion may be inaccurate. Consider using '#align set.mul_indicator_apply_le Set.mulIndicator_apply_leₓ'. -/
@@ -1402,7 +1406,7 @@ theorem mulIndicator_apply_le {a : α} {s : Set α} {f g : α → M} (hfg : a 
 
 /- warning: set.mul_indicator_le -> Set.mulIndicator_le is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : CanonicallyOrderedMonoid.{u2} M] {s : Set.{u1} α} {f : α -> M} {g : α -> M}, (forall (a : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M (Preorder.toLE.{u2} M (PartialOrder.toPreorder.{u2} M (OrderedCommMonoid.toPartialOrder.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1)))) (f a) (g a))) -> (LE.le.{max u1 u2} (α -> M) (Pi.hasLe.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => Preorder.toLE.{u2} M (PartialOrder.toPreorder.{u2} M (OrderedCommMonoid.toPartialOrder.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1))))) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (OrderedCommMonoid.toCommMonoid.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1))))) s f) g)
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : CanonicallyOrderedMonoid.{u2} M] {s : Set.{u1} α} {f : α -> M} {g : α -> M}, (forall (a : α), (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s) -> (LE.le.{u2} M (Preorder.toHasLe.{u2} M (PartialOrder.toPreorder.{u2} M (OrderedCommMonoid.toPartialOrder.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1)))) (f a) (g a))) -> (LE.le.{max u1 u2} (α -> M) (Pi.hasLe.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => Preorder.toHasLe.{u2} M (PartialOrder.toPreorder.{u2} M (OrderedCommMonoid.toPartialOrder.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1))))) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (OrderedCommMonoid.toCommMonoid.{u2} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u2} M _inst_1))))) s f) g)
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : CanonicallyOrderedMonoid.{u1} M] {s : Set.{u2} α} {f : α -> M} {g : α -> M}, (forall (a : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (LE.le.{u1} M (Preorder.toLE.{u1} M (PartialOrder.toPreorder.{u1} M (OrderedCommMonoid.toPartialOrder.{u1} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u1} M _inst_1)))) (f a) (g a))) -> (LE.le.{max u2 u1} (α -> M) (Pi.hasLe.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => Preorder.toLE.{u1} M (PartialOrder.toPreorder.{u1} M (OrderedCommMonoid.toPartialOrder.{u1} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u1} M _inst_1))))) (Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M (OrderedCommMonoid.toCommMonoid.{u1} M (CanonicallyOrderedMonoid.toOrderedCommMonoid.{u1} M _inst_1)))) s f) g)
 Case conversion may be inaccurate. Consider using '#align set.mul_indicator_le Set.mulIndicator_leₓ'. -/
@@ -1415,7 +1419,12 @@ theorem mulIndicator_le {s : Set α} {f g : α → M} (hfg : ∀ a ∈ s, f a 
 
 end CanonicallyOrderedMonoid
 
-#print Set.indicator_le_indicator_nonneg /-
+/- warning: set.indicator_le_indicator_nonneg -> Set.indicator_le_indicator_nonneg is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : LinearOrder.{u2} β] [_inst_2 : Zero.{u2} β] (s : Set.{u1} α) (f : α -> β), LE.le.{max u1 u2} (α -> β) (Pi.hasLe.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_1)))))) (Set.indicator.{u1, u2} α β _inst_2 s f) (Set.indicator.{u1, u2} α β _inst_2 (setOf.{u1} α (fun (x : α) => LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_1))))) (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β _inst_2))) (f x))) f)
+but is expected to have type
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : LinearOrder.{u2} β] [_inst_2 : Zero.{u2} β] (s : Set.{u1} α) (f : α -> β), LE.le.{max u1 u2} (α -> β) (Pi.hasLe.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_1))))))) (Set.indicator.{u1, u2} α β _inst_2 s f) (Set.indicator.{u1, u2} α β _inst_2 (setOf.{u1} α (fun (x : α) => LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_1)))))) (OfNat.ofNat.{u2} β 0 (Zero.toOfNat0.{u2} β _inst_2)) (f x))) f)
+Case conversion may be inaccurate. Consider using '#align set.indicator_le_indicator_nonneg Set.indicator_le_indicator_nonnegₓ'. -/
 theorem indicator_le_indicator_nonneg {β} [LinearOrder β] [Zero β] (s : Set α) (f : α → β) :
     s.indicator f ≤ { x | 0 ≤ f x }.indicator f :=
   by
@@ -1428,14 +1437,17 @@ theorem indicator_le_indicator_nonneg {β} [LinearOrder β] [Zero β] (s : Set 
     · exact h_1
     · exact le_rfl
 #align set.indicator_le_indicator_nonneg Set.indicator_le_indicator_nonneg
--/
 
-#print Set.indicator_nonpos_le_indicator /-
+/- warning: set.indicator_nonpos_le_indicator -> Set.indicator_nonpos_le_indicator is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : LinearOrder.{u2} β] [_inst_2 : Zero.{u2} β] (s : Set.{u1} α) (f : α -> β), LE.le.{max u1 u2} (α -> β) (Pi.hasLe.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_1)))))) (Set.indicator.{u1, u2} α β _inst_2 (setOf.{u1} α (fun (x : α) => LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_1))))) (f x) (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β _inst_2))))) f) (Set.indicator.{u1, u2} α β _inst_2 s f)
+but is expected to have type
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : LinearOrder.{u2} β] [_inst_2 : Zero.{u2} β] (s : Set.{u1} α) (f : α -> β), LE.le.{max u1 u2} (α -> β) (Pi.hasLe.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_1))))))) (Set.indicator.{u1, u2} α β _inst_2 (setOf.{u1} α (fun (x : α) => LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (DistribLattice.toLattice.{u2} β (instDistribLattice.{u2} β _inst_1)))))) (f x) (OfNat.ofNat.{u2} β 0 (Zero.toOfNat0.{u2} β _inst_2)))) f) (Set.indicator.{u1, u2} α β _inst_2 s f)
+Case conversion may be inaccurate. Consider using '#align set.indicator_nonpos_le_indicator Set.indicator_nonpos_le_indicatorₓ'. -/
 theorem indicator_nonpos_le_indicator {β} [LinearOrder β] [Zero β] (s : Set α) (f : α → β) :
     { x | f x ≤ 0 }.indicator f ≤ s.indicator f :=
   @indicator_le_indicator_nonneg α βᵒᵈ _ _ s f
 #align set.indicator_nonpos_le_indicator Set.indicator_nonpos_le_indicator
--/
 
 end Set
 
Diff
@@ -1020,14 +1020,14 @@ theorem mulIndicator_finset_prod (I : Finset ι) (s : Set α) (f : ι → α →
 #align set.mul_indicator_finset_prod Set.mulIndicator_finset_prod
 #align set.indicator_finset_sum Set.indicator_finset_sum
 
-/- warning: set.mul_indicator_finset_bUnion -> Set.mulIndicator_finset_bunionᵢ is a dubious translation:
+/- warning: set.mul_indicator_finset_bUnion -> Set.mulIndicator_finset_biUnion is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {ι : Type.{u3}} (I : Finset.{u3} ι) (s : ι -> (Set.{u1} α)) {f : α -> M}, (forall (i : ι), (Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) i I) -> (forall (j : ι), (Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) j I) -> (Ne.{succ u3} ι i j) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (s i) (s j)))) -> (Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Set.unionᵢ.{u1, succ u3} α ι (fun (i : ι) => Set.unionᵢ.{u1, 0} α (Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) i I) (fun (H : Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) i I) => s i))) f) (fun (a : α) => Finset.prod.{u2, u3} M ι _inst_1 I (fun (i : ι) => Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (s i) f a)))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {ι : Type.{u3}} (I : Finset.{u3} ι) (s : ι -> (Set.{u1} α)) {f : α -> M}, (forall (i : ι), (Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) i I) -> (forall (j : ι), (Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) j I) -> (Ne.{succ u3} ι i j) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (s i) (s j)))) -> (Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Set.iUnion.{u1, succ u3} α ι (fun (i : ι) => Set.iUnion.{u1, 0} α (Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) i I) (fun (H : Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) i I) => s i))) f) (fun (a : α) => Finset.prod.{u2, u3} M ι _inst_1 I (fun (i : ι) => Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (s i) f a)))
 but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {ι : Type.{u3}} (I : Finset.{u3} ι) (s : ι -> (Set.{u2} α)) {f : α -> M}, (forall (i : ι), (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i I) -> (forall (j : ι), (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) j I) -> (Ne.{succ u3} ι i j) -> (Disjoint.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (BoundedOrder.toOrderBot.{u2} (Set.{u2} α) (Preorder.toLE.{u2} (Set.{u2} α) (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))))) (CompleteLattice.toBoundedOrder.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (s i) (s j)))) -> (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Set.unionᵢ.{u2, succ u3} α ι (fun (i : ι) => Set.unionᵢ.{u2, 0} α (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i I) (fun (H : Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i I) => s i))) f) (fun (a : α) => Finset.prod.{u1, u3} M ι _inst_1 I (fun (i : ι) => Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (s i) f a)))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_finset_bUnion Set.mulIndicator_finset_bunionᵢₓ'. -/
+  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {ι : Type.{u3}} (I : Finset.{u3} ι) (s : ι -> (Set.{u2} α)) {f : α -> M}, (forall (i : ι), (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i I) -> (forall (j : ι), (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) j I) -> (Ne.{succ u3} ι i j) -> (Disjoint.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (BoundedOrder.toOrderBot.{u2} (Set.{u2} α) (Preorder.toLE.{u2} (Set.{u2} α) (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))))) (CompleteLattice.toBoundedOrder.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (s i) (s j)))) -> (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Set.iUnion.{u2, succ u3} α ι (fun (i : ι) => Set.iUnion.{u2, 0} α (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i I) (fun (H : Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i I) => s i))) f) (fun (a : α) => Finset.prod.{u1, u3} M ι _inst_1 I (fun (i : ι) => Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (s i) f a)))
+Case conversion may be inaccurate. Consider using '#align set.mul_indicator_finset_bUnion Set.mulIndicator_finset_biUnionₓ'. -/
 @[to_additive]
-theorem mulIndicator_finset_bunionᵢ {ι} (I : Finset ι) (s : ι → Set α) {f : α → M} :
+theorem mulIndicator_finset_biUnion {ι} (I : Finset ι) (s : ι → Set α) {f : α → M} :
     (∀ i ∈ I, ∀ j ∈ I, i ≠ j → Disjoint (s i) (s j)) →
       mulIndicator (⋃ i ∈ I, s i) f = fun a => ∏ i in I, mulIndicator (s i) f a :=
   by
@@ -1038,7 +1038,7 @@ theorem mulIndicator_finset_bunionᵢ {ι} (I : Finset ι) (s : ι → Set α) {
       simp
     intro a I haI ih hI
     funext
-    rw [Finset.prod_insert haI, Finset.set_bunionᵢ_insert, mul_indicator_union_of_not_mem_inter,
+    rw [Finset.prod_insert haI, Finset.set_biUnion_insert, mul_indicator_union_of_not_mem_inter,
       ih _]
     · intro i hi j hj hij
       exact hI i (Finset.mem_insert_of_mem hi) j (Finset.mem_insert_of_mem hj) hij
@@ -1047,22 +1047,22 @@ theorem mulIndicator_finset_bunionᵢ {ι} (I : Finset ι) (s : ι → Set α) {
     refine'
       disjoint_left.1 (hI a (Finset.mem_insert_self _ _) a' (Finset.mem_insert_of_mem ha') _) hx
     exact (ne_of_mem_of_not_mem ha' haI).symm
-#align set.mul_indicator_finset_bUnion Set.mulIndicator_finset_bunionᵢ
-#align set.indicator_finset_bUnion Set.indicator_finset_bunionᵢ
+#align set.mul_indicator_finset_bUnion Set.mulIndicator_finset_biUnion
+#align set.indicator_finset_bUnion Set.indicator_finset_biUnion
 
-/- warning: set.mul_indicator_finset_bUnion_apply -> Set.mulIndicator_finset_bunionᵢ_apply is a dubious translation:
+/- warning: set.mul_indicator_finset_bUnion_apply -> Set.mulIndicator_finset_biUnion_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {ι : Type.{u3}} (I : Finset.{u3} ι) (s : ι -> (Set.{u1} α)) {f : α -> M}, (forall (i : ι), (Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) i I) -> (forall (j : ι), (Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) j I) -> (Ne.{succ u3} ι i j) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (s i) (s j)))) -> (forall (x : α), Eq.{succ u2} M (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Set.unionᵢ.{u1, succ u3} α ι (fun (i : ι) => Set.unionᵢ.{u1, 0} α (Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) i I) (fun (H : Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) i I) => s i))) f x) (Finset.prod.{u2, u3} M ι _inst_1 I (fun (i : ι) => Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (s i) f x)))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {ι : Type.{u3}} (I : Finset.{u3} ι) (s : ι -> (Set.{u1} α)) {f : α -> M}, (forall (i : ι), (Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) i I) -> (forall (j : ι), (Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) j I) -> (Ne.{succ u3} ι i j) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) (s i) (s j)))) -> (forall (x : α), Eq.{succ u2} M (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Set.iUnion.{u1, succ u3} α ι (fun (i : ι) => Set.iUnion.{u1, 0} α (Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) i I) (fun (H : Membership.Mem.{u3, u3} ι (Finset.{u3} ι) (Finset.hasMem.{u3} ι) i I) => s i))) f x) (Finset.prod.{u2, u3} M ι _inst_1 I (fun (i : ι) => Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (s i) f x)))
 but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {ι : Type.{u3}} (I : Finset.{u3} ι) (s : ι -> (Set.{u2} α)) {f : α -> M}, (forall (i : ι), (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i I) -> (forall (j : ι), (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) j I) -> (Ne.{succ u3} ι i j) -> (Disjoint.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (BoundedOrder.toOrderBot.{u2} (Set.{u2} α) (Preorder.toLE.{u2} (Set.{u2} α) (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))))) (CompleteLattice.toBoundedOrder.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (s i) (s j)))) -> (forall (x : α), Eq.{succ u1} M (Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Set.unionᵢ.{u2, succ u3} α ι (fun (i : ι) => Set.unionᵢ.{u2, 0} α (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i I) (fun (H : Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i I) => s i))) f x) (Finset.prod.{u1, u3} M ι _inst_1 I (fun (i : ι) => Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (s i) f x)))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_finset_bUnion_apply Set.mulIndicator_finset_bunionᵢ_applyₓ'. -/
+  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {ι : Type.{u3}} (I : Finset.{u3} ι) (s : ι -> (Set.{u2} α)) {f : α -> M}, (forall (i : ι), (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i I) -> (forall (j : ι), (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) j I) -> (Ne.{succ u3} ι i j) -> (Disjoint.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (BoundedOrder.toOrderBot.{u2} (Set.{u2} α) (Preorder.toLE.{u2} (Set.{u2} α) (PartialOrder.toPreorder.{u2} (Set.{u2} α) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} α) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))))) (CompleteLattice.toBoundedOrder.{u2} (Set.{u2} α) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} α) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} α) (Set.instCompleteBooleanAlgebraSet.{u2} α)))))) (s i) (s j)))) -> (forall (x : α), Eq.{succ u1} M (Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Set.iUnion.{u2, succ u3} α ι (fun (i : ι) => Set.iUnion.{u2, 0} α (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i I) (fun (H : Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i I) => s i))) f x) (Finset.prod.{u1, u3} M ι _inst_1 I (fun (i : ι) => Set.mulIndicator.{u2, u1} α M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (s i) f x)))
+Case conversion may be inaccurate. Consider using '#align set.mul_indicator_finset_bUnion_apply Set.mulIndicator_finset_biUnion_applyₓ'. -/
 @[to_additive]
-theorem mulIndicator_finset_bunionᵢ_apply {ι} (I : Finset ι) (s : ι → Set α) {f : α → M}
+theorem mulIndicator_finset_biUnion_apply {ι} (I : Finset ι) (s : ι → Set α) {f : α → M}
     (h : ∀ i ∈ I, ∀ j ∈ I, i ≠ j → Disjoint (s i) (s j)) (x : α) :
     mulIndicator (⋃ i ∈ I, s i) f x = ∏ i in I, mulIndicator (s i) f x := by
-  rw [Set.mulIndicator_finset_bunionᵢ I s h]
-#align set.mul_indicator_finset_bUnion_apply Set.mulIndicator_finset_bunionᵢ_apply
-#align set.indicator_finset_bUnion_apply Set.indicator_finset_bunionᵢ_apply
+  rw [Set.mulIndicator_finset_biUnion I s h]
+#align set.mul_indicator_finset_bUnion_apply Set.mulIndicator_finset_biUnion_apply
+#align set.indicator_finset_bUnion_apply Set.indicator_finset_biUnion_apply
 
 end CommMonoid
 
@@ -1346,28 +1346,28 @@ theorem mulIndicator_le_self' (hf : ∀ (x) (_ : x ∉ s), 1 ≤ f x) : mulIndic
 #align set.mul_indicator_le_self' Set.mulIndicator_le_self'
 #align set.indicator_le_self' Set.indicator_le_self'
 
-/- warning: set.mul_indicator_Union_apply -> Set.mulIndicator_unionᵢ_apply is a dubious translation:
+/- warning: set.mul_indicator_Union_apply -> Set.mulIndicator_iUnion_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {ι : Sort.{u2}} {M : Type.{u3}} [_inst_3 : CompleteLattice.{u3} M] [_inst_4 : One.{u3} M], (Eq.{succ u3} M (Bot.bot.{u3} M (CompleteLattice.toHasBot.{u3} M _inst_3)) (OfNat.ofNat.{u3} M 1 (OfNat.mk.{u3} M 1 (One.one.{u3} M _inst_4)))) -> (forall (s : ι -> (Set.{u1} α)) (f : α -> M) (x : α), Eq.{succ u3} M (Set.mulIndicator.{u1, u3} α M _inst_4 (Set.unionᵢ.{u1, u2} α ι (fun (i : ι) => s i)) f x) (supᵢ.{u3, u2} M (ConditionallyCompleteLattice.toHasSup.{u3} M (CompleteLattice.toConditionallyCompleteLattice.{u3} M _inst_3)) ι (fun (i : ι) => Set.mulIndicator.{u1, u3} α M _inst_4 (s i) f x)))
+  forall {α : Type.{u1}} {ι : Sort.{u2}} {M : Type.{u3}} [_inst_3 : CompleteLattice.{u3} M] [_inst_4 : One.{u3} M], (Eq.{succ u3} M (Bot.bot.{u3} M (CompleteLattice.toHasBot.{u3} M _inst_3)) (OfNat.ofNat.{u3} M 1 (OfNat.mk.{u3} M 1 (One.one.{u3} M _inst_4)))) -> (forall (s : ι -> (Set.{u1} α)) (f : α -> M) (x : α), Eq.{succ u3} M (Set.mulIndicator.{u1, u3} α M _inst_4 (Set.iUnion.{u1, u2} α ι (fun (i : ι) => s i)) f x) (iSup.{u3, u2} M (ConditionallyCompleteLattice.toHasSup.{u3} M (CompleteLattice.toConditionallyCompleteLattice.{u3} M _inst_3)) ι (fun (i : ι) => Set.mulIndicator.{u1, u3} α M _inst_4 (s i) f x)))
 but is expected to have type
-  forall {α : Type.{u1}} {ι : Sort.{u3}} {M : Type.{u2}} [_inst_3 : CompleteLattice.{u2} M] [_inst_4 : One.{u2} M], (Eq.{succ u2} M (Bot.bot.{u2} M (CompleteLattice.toBot.{u2} M _inst_3)) (OfNat.ofNat.{u2} M 1 (One.toOfNat1.{u2} M _inst_4))) -> (forall (s : ι -> (Set.{u1} α)) (f : α -> M) (x : α), Eq.{succ u2} M (Set.mulIndicator.{u1, u2} α M _inst_4 (Set.unionᵢ.{u1, u3} α ι (fun (i : ι) => s i)) f x) (supᵢ.{u2, u3} M (ConditionallyCompleteLattice.toSupSet.{u2} M (CompleteLattice.toConditionallyCompleteLattice.{u2} M _inst_3)) ι (fun (i : ι) => Set.mulIndicator.{u1, u2} α M _inst_4 (s i) f x)))
-Case conversion may be inaccurate. Consider using '#align set.mul_indicator_Union_apply Set.mulIndicator_unionᵢ_applyₓ'. -/
+  forall {α : Type.{u1}} {ι : Sort.{u3}} {M : Type.{u2}} [_inst_3 : CompleteLattice.{u2} M] [_inst_4 : One.{u2} M], (Eq.{succ u2} M (Bot.bot.{u2} M (CompleteLattice.toBot.{u2} M _inst_3)) (OfNat.ofNat.{u2} M 1 (One.toOfNat1.{u2} M _inst_4))) -> (forall (s : ι -> (Set.{u1} α)) (f : α -> M) (x : α), Eq.{succ u2} M (Set.mulIndicator.{u1, u2} α M _inst_4 (Set.iUnion.{u1, u3} α ι (fun (i : ι) => s i)) f x) (iSup.{u2, u3} M (ConditionallyCompleteLattice.toSupSet.{u2} M (CompleteLattice.toConditionallyCompleteLattice.{u2} M _inst_3)) ι (fun (i : ι) => Set.mulIndicator.{u1, u2} α M _inst_4 (s i) f x)))
+Case conversion may be inaccurate. Consider using '#align set.mul_indicator_Union_apply Set.mulIndicator_iUnion_applyₓ'. -/
 @[to_additive]
-theorem mulIndicator_unionᵢ_apply {ι M} [CompleteLattice M] [One M] (h1 : (⊥ : M) = 1)
+theorem mulIndicator_iUnion_apply {ι M} [CompleteLattice M] [One M] (h1 : (⊥ : M) = 1)
     (s : ι → Set α) (f : α → M) (x : α) :
     mulIndicator (⋃ i, s i) f x = ⨆ i, mulIndicator (s i) f x :=
   by
   by_cases hx : x ∈ ⋃ i, s i
   · rw [mul_indicator_of_mem hx]
     rw [mem_Union] at hx
-    refine' le_antisymm _ (supᵢ_le fun i => mul_indicator_le_self' (fun x hx => h1 ▸ bot_le) x)
+    refine' le_antisymm _ (iSup_le fun i => mul_indicator_le_self' (fun x hx => h1 ▸ bot_le) x)
     rcases hx with ⟨i, hi⟩
-    exact le_supᵢ_of_le i (ge_of_eq <| mul_indicator_of_mem hi _)
+    exact le_iSup_of_le i (ge_of_eq <| mul_indicator_of_mem hi _)
   · rw [mul_indicator_of_not_mem hx]
     simp only [mem_Union, not_exists] at hx
     simp [hx, ← h1]
-#align set.mul_indicator_Union_apply Set.mulIndicator_unionᵢ_apply
-#align set.indicator_Union_apply Set.indicator_unionᵢ_apply
+#align set.mul_indicator_Union_apply Set.mulIndicator_iUnion_apply
+#align set.indicator_Union_apply Set.indicator_iUnion_apply
 
 end Order
 
Diff
@@ -1139,7 +1139,7 @@ variable [MulZeroOneClass M]
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulZeroOneClass.{u2} M] {s : Set.{u1} α} {t : Set.{u1} α}, Eq.{max (succ u1) (succ u2)} (α -> M) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t) (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (α -> M) (α -> M) (α -> M) (instHMul.{max u1 u2} (α -> M) (Pi.instMul.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulZeroClass.toHasMul.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)))) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) s (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) t (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))))
 but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroOneClass.{u1} M] {s : Set.{u2} α} {t : Set.{u2} α}, Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) s t) (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7410 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> M) (α -> M) (α -> M) (instHMul.{max u2 u1} (α -> M) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => MulZeroClass.toMul.{u1} M (MulZeroOneClass.toMulZeroClass.{u1} M _inst_1)))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) s (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7410 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) t (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7410 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))))
+  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroOneClass.{u1} M] {s : Set.{u2} α} {t : Set.{u2} α}, Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) s t) (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7408 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> M) (α -> M) (α -> M) (instHMul.{max u2 u1} (α -> M) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => MulZeroClass.toMul.{u1} M (MulZeroOneClass.toMulZeroClass.{u1} M _inst_1)))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) s (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7408 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) t (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7408 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))))
 Case conversion may be inaccurate. Consider using '#align set.inter_indicator_one Set.inter_indicator_oneₓ'. -/
 theorem inter_indicator_one {s t : Set α} :
     (s ∩ t).indicator (1 : _ → M) = s.indicator 1 * t.indicator 1 :=
@@ -1150,7 +1150,7 @@ theorem inter_indicator_one {s t : Set α} :
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : MulZeroOneClass.{u3} M] {s : Set.{u1} α} {t : Set.{u2} β} {x : α} {y : β}, Eq.{succ u3} M (Set.indicator.{max u1 u2, u3} (Prod.{u1, u2} α β) M (MulZeroClass.toHasZero.{u3} M (MulZeroOneClass.toMulZeroClass.{u3} M _inst_1)) (Set.prod.{u1, u2} α β s t) (OfNat.ofNat.{max (max u1 u2) u3} ((Prod.{u1, u2} α β) -> M) 1 (OfNat.mk.{max (max u1 u2) u3} ((Prod.{u1, u2} α β) -> M) 1 (One.one.{max (max u1 u2) u3} ((Prod.{u1, u2} α β) -> M) (Pi.instOne.{max u1 u2, u3} (Prod.{u1, u2} α β) (fun (ᾰ : Prod.{u1, u2} α β) => M) (fun (i : Prod.{u1, u2} α β) => MulOneClass.toHasOne.{u3} M (MulZeroOneClass.toMulOneClass.{u3} M _inst_1)))))) (Prod.mk.{u1, u2} α β x y)) (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulZeroClass.toHasMul.{u3} M (MulZeroOneClass.toMulZeroClass.{u3} M _inst_1))) (Set.indicator.{u1, u3} α M (MulZeroClass.toHasZero.{u3} M (MulZeroOneClass.toMulZeroClass.{u3} M _inst_1)) s (OfNat.ofNat.{max u1 u3} (α -> M) 1 (OfNat.mk.{max u1 u3} (α -> M) 1 (One.one.{max u1 u3} (α -> M) (Pi.instOne.{u1, u3} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u3} M (MulZeroOneClass.toMulOneClass.{u3} M _inst_1)))))) x) (Set.indicator.{u2, u3} β M (MulZeroClass.toHasZero.{u3} M (MulZeroOneClass.toMulZeroClass.{u3} M _inst_1)) t (OfNat.ofNat.{max u2 u3} (β -> M) 1 (OfNat.mk.{max u2 u3} (β -> M) 1 (One.one.{max u2 u3} (β -> M) (Pi.instOne.{u2, u3} β (fun (ᾰ : β) => M) (fun (i : β) => MulOneClass.toHasOne.{u3} M (MulZeroOneClass.toMulOneClass.{u3} M _inst_1)))))) y))
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroOneClass.{u1} M] {s : Set.{u3} α} {t : Set.{u2} β} {x : α} {y : β}, Eq.{succ u1} M (Set.indicator.{max u3 u2, u1} (Prod.{u3, u2} α β) M (MulZeroOneClass.toZero.{u1} M _inst_1) (Set.prod.{u3, u2} α β s t) (OfNat.ofNat.{max (max u3 u2) u1} ((Prod.{u3, u2} α β) -> M) 1 (One.toOfNat1.{max (max u3 u2) u1} ((Prod.{u3, u2} α β) -> M) (Pi.instOne.{max u3 u2, u1} (Prod.{u3, u2} α β) (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7469 : Prod.{u3, u2} α β) => M) (fun (i : Prod.{u3, u2} α β) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) (Prod.mk.{u3, u2} α β x y)) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M (MulZeroOneClass.toMulZeroClass.{u1} M _inst_1))) (Set.indicator.{u3, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) s (OfNat.ofNat.{max u3 u1} (α -> M) 1 (One.toOfNat1.{max u3 u1} (α -> M) (Pi.instOne.{u3, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) x) (Set.indicator.{u2, u1} β M (MulZeroOneClass.toZero.{u1} M _inst_1) t (OfNat.ofNat.{max u2 u1} (β -> M) 1 (One.toOfNat1.{max u2 u1} (β -> M) (Pi.instOne.{u2, u1} β (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : β) => M) (fun (i : β) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) y))
+  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroOneClass.{u1} M] {s : Set.{u3} α} {t : Set.{u2} β} {x : α} {y : β}, Eq.{succ u1} M (Set.indicator.{max u3 u2, u1} (Prod.{u3, u2} α β) M (MulZeroOneClass.toZero.{u1} M _inst_1) (Set.prod.{u3, u2} α β s t) (OfNat.ofNat.{max (max u3 u2) u1} ((Prod.{u3, u2} α β) -> M) 1 (One.toOfNat1.{max (max u3 u2) u1} ((Prod.{u3, u2} α β) -> M) (Pi.instOne.{max u3 u2, u1} (Prod.{u3, u2} α β) (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7467 : Prod.{u3, u2} α β) => M) (fun (i : Prod.{u3, u2} α β) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) (Prod.mk.{u3, u2} α β x y)) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M (MulZeroOneClass.toMulZeroClass.{u1} M _inst_1))) (Set.indicator.{u3, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) s (OfNat.ofNat.{max u3 u1} (α -> M) 1 (One.toOfNat1.{max u3 u1} (α -> M) (Pi.instOne.{u3, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) x) (Set.indicator.{u2, u1} β M (MulZeroOneClass.toZero.{u1} M _inst_1) t (OfNat.ofNat.{max u2 u1} (β -> M) 1 (One.toOfNat1.{max u2 u1} (β -> M) (Pi.instOne.{u2, u1} β (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : β) => M) (fun (i : β) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) y))
 Case conversion may be inaccurate. Consider using '#align set.indicator_prod_one Set.indicator_prod_oneₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 theorem indicator_prod_one {s : Set α} {t : Set β} {x : α} {y : β} :
@@ -1184,7 +1184,7 @@ theorem indicator_eq_one_iff_mem {U : Set α} {x : α} : indicator U 1 x = (1 :
 lean 3 declaration is
   forall {α : Type.{u1}} (M : Type.{u2}) [_inst_1 : MulZeroOneClass.{u2} M] [_inst_2 : Nontrivial.{u2} M] {U : Set.{u1} α} {V : Set.{u1} α}, (Eq.{max (succ u1) (succ u2)} (α -> M) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) U (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) V (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1)))))))) -> (Eq.{succ u1} (Set.{u1} α) U V)
 but is expected to have type
-  forall {α : Type.{u2}} (M : Type.{u1}) [_inst_1 : MulZeroOneClass.{u1} M] [_inst_2 : Nontrivial.{u1} M] {U : Set.{u2} α} {V : Set.{u2} α}, (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) U (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7786 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) V (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7786 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))))) -> (Eq.{succ u2} (Set.{u2} α) U V)
+  forall {α : Type.{u2}} (M : Type.{u1}) [_inst_1 : MulZeroOneClass.{u1} M] [_inst_2 : Nontrivial.{u1} M] {U : Set.{u2} α} {V : Set.{u2} α}, (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) U (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7782 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) V (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7782 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))))) -> (Eq.{succ u2} (Set.{u2} α) U V)
 Case conversion may be inaccurate. Consider using '#align set.indicator_one_inj Set.indicator_one_injₓ'. -/
 theorem indicator_one_inj {U V : Set α} (h : indicator U (1 : α → M) = indicator V 1) : U = V :=
   by
Diff
@@ -355,7 +355,7 @@ theorem mulIndicator_one (s : Set α) : (mulIndicator s fun x => (1 : M)) = fun
 lean 3 declaration is
   forall {α : Type.{u1}} (M : Type.{u2}) [_inst_1 : One.{u2} M] {s : Set.{u1} α}, Eq.{max (succ u1) (succ u2)} (α -> M) (Set.mulIndicator.{u1, u2} α M _inst_1 s (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1)))))) (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1)))))
 but is expected to have type
-  forall {α : Type.{u2}} (M : Type.{u1}) [_inst_1 : One.{u1} M] {s : Set.{u2} α}, Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M _inst_1 s (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.1615 : α) => M) (fun (i : α) => _inst_1))))) (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.159 : α) => M) (fun (i : α) => _inst_1))))
+  forall {α : Type.{u2}} (M : Type.{u1}) [_inst_1 : One.{u1} M] {s : Set.{u2} α}, Eq.{max (succ u2) (succ u1)} (α -> M) (Set.mulIndicator.{u2, u1} α M _inst_1 s (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.1615 : α) => M) (fun (i : α) => _inst_1))))) (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.1615 : α) => M) (fun (i : α) => _inst_1))))
 Case conversion may be inaccurate. Consider using '#align set.mul_indicator_one' Set.mulIndicator_one'ₓ'. -/
 @[simp, to_additive]
 theorem mulIndicator_one' {s : Set α} : s.mulIndicator (1 : α → M) = 1 :=
@@ -1139,7 +1139,7 @@ variable [MulZeroOneClass M]
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulZeroOneClass.{u2} M] {s : Set.{u1} α} {t : Set.{u1} α}, Eq.{max (succ u1) (succ u2)} (α -> M) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t) (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (α -> M) (α -> M) (α -> M) (instHMul.{max u1 u2} (α -> M) (Pi.instMul.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulZeroClass.toHasMul.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)))) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) s (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) t (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))))
 but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroOneClass.{u1} M] {s : Set.{u2} α} {t : Set.{u2} α}, Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) s t) (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7410 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> M) (α -> M) (α -> M) (instHMul.{max u2 u1} (α -> M) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => MulZeroClass.toMul.{u1} M (MulZeroOneClass.toMulZeroClass.{u1} M _inst_1)))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) s (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) t (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))))
+  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroOneClass.{u1} M] {s : Set.{u2} α} {t : Set.{u2} α}, Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) s t) (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7410 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> M) (α -> M) (α -> M) (instHMul.{max u2 u1} (α -> M) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => MulZeroClass.toMul.{u1} M (MulZeroOneClass.toMulZeroClass.{u1} M _inst_1)))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) s (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7410 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) t (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7410 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))))
 Case conversion may be inaccurate. Consider using '#align set.inter_indicator_one Set.inter_indicator_oneₓ'. -/
 theorem inter_indicator_one {s t : Set α} :
     (s ∩ t).indicator (1 : _ → M) = s.indicator 1 * t.indicator 1 :=
@@ -1184,7 +1184,7 @@ theorem indicator_eq_one_iff_mem {U : Set α} {x : α} : indicator U 1 x = (1 :
 lean 3 declaration is
   forall {α : Type.{u1}} (M : Type.{u2}) [_inst_1 : MulZeroOneClass.{u2} M] [_inst_2 : Nontrivial.{u2} M] {U : Set.{u1} α} {V : Set.{u1} α}, (Eq.{max (succ u1) (succ u2)} (α -> M) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) U (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) V (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1)))))))) -> (Eq.{succ u1} (Set.{u1} α) U V)
 but is expected to have type
-  forall {α : Type.{u2}} (M : Type.{u1}) [_inst_1 : MulZeroOneClass.{u1} M] [_inst_2 : Nontrivial.{u1} M] {U : Set.{u2} α} {V : Set.{u2} α}, (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) U (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7786 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) V (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))))) -> (Eq.{succ u2} (Set.{u2} α) U V)
+  forall {α : Type.{u2}} (M : Type.{u1}) [_inst_1 : MulZeroOneClass.{u1} M] [_inst_2 : Nontrivial.{u1} M] {U : Set.{u2} α} {V : Set.{u2} α}, (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) U (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7786 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) V (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7786 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))))) -> (Eq.{succ u2} (Set.{u2} α) U V)
 Case conversion may be inaccurate. Consider using '#align set.indicator_one_inj Set.indicator_one_injₓ'. -/
 theorem indicator_one_inj {U V : Set α} (h : indicator U (1 : α → M) = indicator V 1) : U = V :=
   by
Diff
@@ -1139,7 +1139,7 @@ variable [MulZeroOneClass M]
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulZeroOneClass.{u2} M] {s : Set.{u1} α} {t : Set.{u1} α}, Eq.{max (succ u1) (succ u2)} (α -> M) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t) (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (α -> M) (α -> M) (α -> M) (instHMul.{max u1 u2} (α -> M) (Pi.instMul.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulZeroClass.toHasMul.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)))) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) s (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) t (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))))
 but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroOneClass.{u1} M] {s : Set.{u2} α} {t : Set.{u2} α}, Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) s t) (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7302 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> M) (α -> M) (α -> M) (instHMul.{max u2 u1} (α -> M) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => MulZeroClass.toMul.{u1} M (MulZeroOneClass.toMulZeroClass.{u1} M _inst_1)))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) s (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) t (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))))
+  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroOneClass.{u1} M] {s : Set.{u2} α} {t : Set.{u2} α}, Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) s t) (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7410 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> M) (α -> M) (α -> M) (instHMul.{max u2 u1} (α -> M) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => MulZeroClass.toMul.{u1} M (MulZeroOneClass.toMulZeroClass.{u1} M _inst_1)))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) s (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) t (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))))
 Case conversion may be inaccurate. Consider using '#align set.inter_indicator_one Set.inter_indicator_oneₓ'. -/
 theorem inter_indicator_one {s t : Set α} :
     (s ∩ t).indicator (1 : _ → M) = s.indicator 1 * t.indicator 1 :=
@@ -1150,7 +1150,7 @@ theorem inter_indicator_one {s t : Set α} :
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : MulZeroOneClass.{u3} M] {s : Set.{u1} α} {t : Set.{u2} β} {x : α} {y : β}, Eq.{succ u3} M (Set.indicator.{max u1 u2, u3} (Prod.{u1, u2} α β) M (MulZeroClass.toHasZero.{u3} M (MulZeroOneClass.toMulZeroClass.{u3} M _inst_1)) (Set.prod.{u1, u2} α β s t) (OfNat.ofNat.{max (max u1 u2) u3} ((Prod.{u1, u2} α β) -> M) 1 (OfNat.mk.{max (max u1 u2) u3} ((Prod.{u1, u2} α β) -> M) 1 (One.one.{max (max u1 u2) u3} ((Prod.{u1, u2} α β) -> M) (Pi.instOne.{max u1 u2, u3} (Prod.{u1, u2} α β) (fun (ᾰ : Prod.{u1, u2} α β) => M) (fun (i : Prod.{u1, u2} α β) => MulOneClass.toHasOne.{u3} M (MulZeroOneClass.toMulOneClass.{u3} M _inst_1)))))) (Prod.mk.{u1, u2} α β x y)) (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulZeroClass.toHasMul.{u3} M (MulZeroOneClass.toMulZeroClass.{u3} M _inst_1))) (Set.indicator.{u1, u3} α M (MulZeroClass.toHasZero.{u3} M (MulZeroOneClass.toMulZeroClass.{u3} M _inst_1)) s (OfNat.ofNat.{max u1 u3} (α -> M) 1 (OfNat.mk.{max u1 u3} (α -> M) 1 (One.one.{max u1 u3} (α -> M) (Pi.instOne.{u1, u3} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u3} M (MulZeroOneClass.toMulOneClass.{u3} M _inst_1)))))) x) (Set.indicator.{u2, u3} β M (MulZeroClass.toHasZero.{u3} M (MulZeroOneClass.toMulZeroClass.{u3} M _inst_1)) t (OfNat.ofNat.{max u2 u3} (β -> M) 1 (OfNat.mk.{max u2 u3} (β -> M) 1 (One.one.{max u2 u3} (β -> M) (Pi.instOne.{u2, u3} β (fun (ᾰ : β) => M) (fun (i : β) => MulOneClass.toHasOne.{u3} M (MulZeroOneClass.toMulOneClass.{u3} M _inst_1)))))) y))
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroOneClass.{u1} M] {s : Set.{u3} α} {t : Set.{u2} β} {x : α} {y : β}, Eq.{succ u1} M (Set.indicator.{max u3 u2, u1} (Prod.{u3, u2} α β) M (MulZeroOneClass.toZero.{u1} M _inst_1) (Set.prod.{u3, u2} α β s t) (OfNat.ofNat.{max (max u3 u2) u1} ((Prod.{u3, u2} α β) -> M) 1 (One.toOfNat1.{max (max u3 u2) u1} ((Prod.{u3, u2} α β) -> M) (Pi.instOne.{max u3 u2, u1} (Prod.{u3, u2} α β) (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7361 : Prod.{u3, u2} α β) => M) (fun (i : Prod.{u3, u2} α β) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) (Prod.mk.{u3, u2} α β x y)) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M (MulZeroOneClass.toMulZeroClass.{u1} M _inst_1))) (Set.indicator.{u3, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) s (OfNat.ofNat.{max u3 u1} (α -> M) 1 (One.toOfNat1.{max u3 u1} (α -> M) (Pi.instOne.{u3, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) x) (Set.indicator.{u2, u1} β M (MulZeroOneClass.toZero.{u1} M _inst_1) t (OfNat.ofNat.{max u2 u1} (β -> M) 1 (One.toOfNat1.{max u2 u1} (β -> M) (Pi.instOne.{u2, u1} β (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : β) => M) (fun (i : β) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) y))
+  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroOneClass.{u1} M] {s : Set.{u3} α} {t : Set.{u2} β} {x : α} {y : β}, Eq.{succ u1} M (Set.indicator.{max u3 u2, u1} (Prod.{u3, u2} α β) M (MulZeroOneClass.toZero.{u1} M _inst_1) (Set.prod.{u3, u2} α β s t) (OfNat.ofNat.{max (max u3 u2) u1} ((Prod.{u3, u2} α β) -> M) 1 (One.toOfNat1.{max (max u3 u2) u1} ((Prod.{u3, u2} α β) -> M) (Pi.instOne.{max u3 u2, u1} (Prod.{u3, u2} α β) (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7469 : Prod.{u3, u2} α β) => M) (fun (i : Prod.{u3, u2} α β) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) (Prod.mk.{u3, u2} α β x y)) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M (MulZeroOneClass.toMulZeroClass.{u1} M _inst_1))) (Set.indicator.{u3, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) s (OfNat.ofNat.{max u3 u1} (α -> M) 1 (One.toOfNat1.{max u3 u1} (α -> M) (Pi.instOne.{u3, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) x) (Set.indicator.{u2, u1} β M (MulZeroOneClass.toZero.{u1} M _inst_1) t (OfNat.ofNat.{max u2 u1} (β -> M) 1 (One.toOfNat1.{max u2 u1} (β -> M) (Pi.instOne.{u2, u1} β (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : β) => M) (fun (i : β) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) y))
 Case conversion may be inaccurate. Consider using '#align set.indicator_prod_one Set.indicator_prod_oneₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 theorem indicator_prod_one {s : Set α} {t : Set β} {x : α} {y : β} :
@@ -1184,7 +1184,7 @@ theorem indicator_eq_one_iff_mem {U : Set α} {x : α} : indicator U 1 x = (1 :
 lean 3 declaration is
   forall {α : Type.{u1}} (M : Type.{u2}) [_inst_1 : MulZeroOneClass.{u2} M] [_inst_2 : Nontrivial.{u2} M] {U : Set.{u1} α} {V : Set.{u1} α}, (Eq.{max (succ u1) (succ u2)} (α -> M) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) U (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) V (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1)))))))) -> (Eq.{succ u1} (Set.{u1} α) U V)
 but is expected to have type
-  forall {α : Type.{u2}} (M : Type.{u1}) [_inst_1 : MulZeroOneClass.{u1} M] [_inst_2 : Nontrivial.{u1} M] {U : Set.{u2} α} {V : Set.{u2} α}, (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) U (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7678 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) V (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))))) -> (Eq.{succ u2} (Set.{u2} α) U V)
+  forall {α : Type.{u2}} (M : Type.{u1}) [_inst_1 : MulZeroOneClass.{u1} M] [_inst_2 : Nontrivial.{u1} M] {U : Set.{u2} α} {V : Set.{u2} α}, (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) U (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7786 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) V (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))))) -> (Eq.{succ u2} (Set.{u2} α) U V)
 Case conversion may be inaccurate. Consider using '#align set.indicator_one_inj Set.indicator_one_injₓ'. -/
 theorem indicator_one_inj {U V : Set α} (h : indicator U (1 : α → M) = indicator V 1) : U = V :=
   by
Diff
@@ -1443,7 +1443,7 @@ end Set
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : MulOneClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] (f : MonoidHom.{u2, u3} M N _inst_1 _inst_2) (s : Set.{u1} α) (g : α -> M) (x : α), Eq.{succ u3} N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N _inst_1 _inst_2) (fun (_x : MonoidHom.{u2, u3} M N _inst_1 _inst_2) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N _inst_1 _inst_2) f (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) s g x)) (Set.mulIndicator.{u1, u3} α N (MulOneClass.toHasOne.{u3} N _inst_2) s (Function.comp.{succ u1, succ u2, succ u3} α M N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N _inst_1 _inst_2) (fun (_x : MonoidHom.{u2, u3} M N _inst_1 _inst_2) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N _inst_1 _inst_2) f) g) x)
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : MulOneClass.{u3} M] [_inst_2 : MulOneClass.{u2} N] (f : MonoidHom.{u3, u2} M N _inst_1 _inst_2) (s : Set.{u1} α) (g : α -> M) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (Set.mulIndicator.{u1, u3} α M (MulOneClass.toOne.{u3} M _inst_1) s g x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N (MulOneClass.toMul.{u3} M _inst_1) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N _inst_1 _inst_2 (MonoidHom.monoidHomClass.{u3, u2} M N _inst_1 _inst_2))) f (Set.mulIndicator.{u1, u3} α M (MulOneClass.toOne.{u3} M _inst_1) s g x)) (Set.mulIndicator.{u1, u2} α N (MulOneClass.toOne.{u2} N _inst_2) s (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N (MulOneClass.toMul.{u3} M _inst_1) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N _inst_1 _inst_2 (MonoidHom.monoidHomClass.{u3, u2} M N _inst_1 _inst_2))) f) g) x)
+  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : MulOneClass.{u3} M] [_inst_2 : MulOneClass.{u2} N] (f : MonoidHom.{u3, u2} M N _inst_1 _inst_2) (s : Set.{u1} α) (g : α -> M) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (Set.mulIndicator.{u1, u3} α M (MulOneClass.toOne.{u3} M _inst_1) s g x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N (MulOneClass.toMul.{u3} M _inst_1) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N _inst_1 _inst_2 (MonoidHom.monoidHomClass.{u3, u2} M N _inst_1 _inst_2))) f (Set.mulIndicator.{u1, u3} α M (MulOneClass.toOne.{u3} M _inst_1) s g x)) (Set.mulIndicator.{u1, u2} α N (MulOneClass.toOne.{u2} N _inst_2) s (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N (MulOneClass.toMul.{u3} M _inst_1) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N _inst_1 _inst_2 (MonoidHom.monoidHomClass.{u3, u2} M N _inst_1 _inst_2))) f) g) x)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_mul_indicator MonoidHom.map_mulIndicatorₓ'. -/
 @[to_additive]
 theorem MonoidHom.map_mulIndicator {M N : Type _} [MulOneClass M] [MulOneClass N] (f : M →* N)
Diff
@@ -1083,7 +1083,7 @@ theorem indicator_mul (s : Set α) (f g : α → M) :
   simp only [indicator]
   split_ifs
   · rfl
-  rw [mul_zero]
+  rw [MulZeroClass.mul_zero]
 #align set.indicator_mul Set.indicator_mul
 
 /- warning: set.indicator_mul_left -> Set.indicator_mul_left is a dubious translation:
@@ -1098,7 +1098,7 @@ theorem indicator_mul_left (s : Set α) (f g : α → M) :
   simp only [indicator]
   split_ifs
   · rfl
-  rw [zero_mul]
+  rw [MulZeroClass.zero_mul]
 #align set.indicator_mul_left Set.indicator_mul_left
 
 /- warning: set.indicator_mul_right -> Set.indicator_mul_right is a dubious translation:
@@ -1113,7 +1113,7 @@ theorem indicator_mul_right (s : Set α) (f g : α → M) :
   simp only [indicator]
   split_ifs
   · rfl
-  rw [mul_zero]
+  rw [MulZeroClass.mul_zero]
 #align set.indicator_mul_right Set.indicator_mul_right
 
 /- warning: set.inter_indicator_mul -> Set.inter_indicator_mul is a dubious translation:
Diff
@@ -1443,7 +1443,7 @@ end Set
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : MulOneClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] (f : MonoidHom.{u2, u3} M N _inst_1 _inst_2) (s : Set.{u1} α) (g : α -> M) (x : α), Eq.{succ u3} N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N _inst_1 _inst_2) (fun (_x : MonoidHom.{u2, u3} M N _inst_1 _inst_2) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N _inst_1 _inst_2) f (Set.mulIndicator.{u1, u2} α M (MulOneClass.toHasOne.{u2} M _inst_1) s g x)) (Set.mulIndicator.{u1, u3} α N (MulOneClass.toHasOne.{u3} N _inst_2) s (Function.comp.{succ u1, succ u2, succ u3} α M N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N _inst_1 _inst_2) (fun (_x : MonoidHom.{u2, u3} M N _inst_1 _inst_2) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N _inst_1 _inst_2) f) g) x)
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : MulOneClass.{u3} M] [_inst_2 : MulOneClass.{u2} N] (f : MonoidHom.{u3, u2} M N _inst_1 _inst_2) (s : Set.{u1} α) (g : α -> M) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (Set.mulIndicator.{u1, u3} α M (MulOneClass.toOne.{u3} M _inst_1) s g x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N (MulOneClass.toMul.{u3} M _inst_1) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N _inst_1 _inst_2 (MonoidHom.monoidHomClass.{u3, u2} M N _inst_1 _inst_2))) f (Set.mulIndicator.{u1, u3} α M (MulOneClass.toOne.{u3} M _inst_1) s g x)) (Set.mulIndicator.{u1, u2} α N (MulOneClass.toOne.{u2} N _inst_2) s (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N (MulOneClass.toMul.{u3} M _inst_1) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N _inst_1 _inst_2 (MonoidHom.monoidHomClass.{u3, u2} M N _inst_1 _inst_2))) f) g) x)
+  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : MulOneClass.{u3} M] [_inst_2 : MulOneClass.{u2} N] (f : MonoidHom.{u3, u2} M N _inst_1 _inst_2) (s : Set.{u1} α) (g : α -> M) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (Set.mulIndicator.{u1, u3} α M (MulOneClass.toOne.{u3} M _inst_1) s g x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N (MulOneClass.toMul.{u3} M _inst_1) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N _inst_1 _inst_2 (MonoidHom.monoidHomClass.{u3, u2} M N _inst_1 _inst_2))) f (Set.mulIndicator.{u1, u3} α M (MulOneClass.toOne.{u3} M _inst_1) s g x)) (Set.mulIndicator.{u1, u2} α N (MulOneClass.toOne.{u2} N _inst_2) s (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N (MulOneClass.toMul.{u3} M _inst_1) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N _inst_1 _inst_2) M N _inst_1 _inst_2 (MonoidHom.monoidHomClass.{u3, u2} M N _inst_1 _inst_2))) f) g) x)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_mul_indicator MonoidHom.map_mulIndicatorₓ'. -/
 @[to_additive]
 theorem MonoidHom.map_mulIndicator {M N : Type _} [MulOneClass M] [MulOneClass N] (f : M →* N)
Diff
@@ -1139,7 +1139,7 @@ variable [MulZeroOneClass M]
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : MulZeroOneClass.{u2} M] {s : Set.{u1} α} {t : Set.{u1} α}, Eq.{max (succ u1) (succ u2)} (α -> M) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s t) (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (α -> M) (α -> M) (α -> M) (instHMul.{max u1 u2} (α -> M) (Pi.instMul.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulZeroClass.toHasMul.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)))) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) s (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) t (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))))
 but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroOneClass.{u1} M] {s : Set.{u2} α} {t : Set.{u2} α}, Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) s t) (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7307 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> M) (α -> M) (α -> M) (instHMul.{max u2 u1} (α -> M) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => MulZeroClass.toMul.{u1} M (MulZeroOneClass.toMulZeroClass.{u1} M _inst_1)))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) s (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) t (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))))
+  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroOneClass.{u1} M] {s : Set.{u2} α} {t : Set.{u2} α}, Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) (Inter.inter.{u2} (Set.{u2} α) (Set.instInterSet.{u2} α) s t) (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7302 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (α -> M) (α -> M) (α -> M) (instHMul.{max u2 u1} (α -> M) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => MulZeroClass.toMul.{u1} M (MulZeroOneClass.toMulZeroClass.{u1} M _inst_1)))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) s (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) t (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))))
 Case conversion may be inaccurate. Consider using '#align set.inter_indicator_one Set.inter_indicator_oneₓ'. -/
 theorem inter_indicator_one {s t : Set α} :
     (s ∩ t).indicator (1 : _ → M) = s.indicator 1 * t.indicator 1 :=
@@ -1150,7 +1150,7 @@ theorem inter_indicator_one {s t : Set α} :
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : MulZeroOneClass.{u3} M] {s : Set.{u1} α} {t : Set.{u2} β} {x : α} {y : β}, Eq.{succ u3} M (Set.indicator.{max u1 u2, u3} (Prod.{u1, u2} α β) M (MulZeroClass.toHasZero.{u3} M (MulZeroOneClass.toMulZeroClass.{u3} M _inst_1)) (Set.prod.{u1, u2} α β s t) (OfNat.ofNat.{max (max u1 u2) u3} ((Prod.{u1, u2} α β) -> M) 1 (OfNat.mk.{max (max u1 u2) u3} ((Prod.{u1, u2} α β) -> M) 1 (One.one.{max (max u1 u2) u3} ((Prod.{u1, u2} α β) -> M) (Pi.instOne.{max u1 u2, u3} (Prod.{u1, u2} α β) (fun (ᾰ : Prod.{u1, u2} α β) => M) (fun (i : Prod.{u1, u2} α β) => MulOneClass.toHasOne.{u3} M (MulZeroOneClass.toMulOneClass.{u3} M _inst_1)))))) (Prod.mk.{u1, u2} α β x y)) (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulZeroClass.toHasMul.{u3} M (MulZeroOneClass.toMulZeroClass.{u3} M _inst_1))) (Set.indicator.{u1, u3} α M (MulZeroClass.toHasZero.{u3} M (MulZeroOneClass.toMulZeroClass.{u3} M _inst_1)) s (OfNat.ofNat.{max u1 u3} (α -> M) 1 (OfNat.mk.{max u1 u3} (α -> M) 1 (One.one.{max u1 u3} (α -> M) (Pi.instOne.{u1, u3} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u3} M (MulZeroOneClass.toMulOneClass.{u3} M _inst_1)))))) x) (Set.indicator.{u2, u3} β M (MulZeroClass.toHasZero.{u3} M (MulZeroOneClass.toMulZeroClass.{u3} M _inst_1)) t (OfNat.ofNat.{max u2 u3} (β -> M) 1 (OfNat.mk.{max u2 u3} (β -> M) 1 (One.one.{max u2 u3} (β -> M) (Pi.instOne.{u2, u3} β (fun (ᾰ : β) => M) (fun (i : β) => MulOneClass.toHasOne.{u3} M (MulZeroOneClass.toMulOneClass.{u3} M _inst_1)))))) y))
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroOneClass.{u1} M] {s : Set.{u3} α} {t : Set.{u2} β} {x : α} {y : β}, Eq.{succ u1} M (Set.indicator.{max u3 u2, u1} (Prod.{u3, u2} α β) M (MulZeroOneClass.toZero.{u1} M _inst_1) (Set.prod.{u3, u2} α β s t) (OfNat.ofNat.{max (max u3 u2) u1} ((Prod.{u3, u2} α β) -> M) 1 (One.toOfNat1.{max (max u3 u2) u1} ((Prod.{u3, u2} α β) -> M) (Pi.instOne.{max u3 u2, u1} (Prod.{u3, u2} α β) (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7366 : Prod.{u3, u2} α β) => M) (fun (i : Prod.{u3, u2} α β) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) (Prod.mk.{u3, u2} α β x y)) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M (MulZeroOneClass.toMulZeroClass.{u1} M _inst_1))) (Set.indicator.{u3, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) s (OfNat.ofNat.{max u3 u1} (α -> M) 1 (One.toOfNat1.{max u3 u1} (α -> M) (Pi.instOne.{u3, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) x) (Set.indicator.{u2, u1} β M (MulZeroOneClass.toZero.{u1} M _inst_1) t (OfNat.ofNat.{max u2 u1} (β -> M) 1 (One.toOfNat1.{max u2 u1} (β -> M) (Pi.instOne.{u2, u1} β (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : β) => M) (fun (i : β) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) y))
+  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : MulZeroOneClass.{u1} M] {s : Set.{u3} α} {t : Set.{u2} β} {x : α} {y : β}, Eq.{succ u1} M (Set.indicator.{max u3 u2, u1} (Prod.{u3, u2} α β) M (MulZeroOneClass.toZero.{u1} M _inst_1) (Set.prod.{u3, u2} α β s t) (OfNat.ofNat.{max (max u3 u2) u1} ((Prod.{u3, u2} α β) -> M) 1 (One.toOfNat1.{max (max u3 u2) u1} ((Prod.{u3, u2} α β) -> M) (Pi.instOne.{max u3 u2, u1} (Prod.{u3, u2} α β) (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7361 : Prod.{u3, u2} α β) => M) (fun (i : Prod.{u3, u2} α β) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) (Prod.mk.{u3, u2} α β x y)) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulZeroClass.toMul.{u1} M (MulZeroOneClass.toMulZeroClass.{u1} M _inst_1))) (Set.indicator.{u3, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) s (OfNat.ofNat.{max u3 u1} (α -> M) 1 (One.toOfNat1.{max u3 u1} (α -> M) (Pi.instOne.{u3, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) x) (Set.indicator.{u2, u1} β M (MulZeroOneClass.toZero.{u1} M _inst_1) t (OfNat.ofNat.{max u2 u1} (β -> M) 1 (One.toOfNat1.{max u2 u1} (β -> M) (Pi.instOne.{u2, u1} β (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : β) => M) (fun (i : β) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))) y))
 Case conversion may be inaccurate. Consider using '#align set.indicator_prod_one Set.indicator_prod_oneₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 theorem indicator_prod_one {s : Set α} {t : Set β} {x : α} {y : β} :
@@ -1184,7 +1184,7 @@ theorem indicator_eq_one_iff_mem {U : Set α} {x : α} : indicator U 1 x = (1 :
 lean 3 declaration is
   forall {α : Type.{u1}} (M : Type.{u2}) [_inst_1 : MulZeroOneClass.{u2} M] [_inst_2 : Nontrivial.{u2} M] {U : Set.{u1} α} {V : Set.{u1} α}, (Eq.{max (succ u1) (succ u2)} (α -> M) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) U (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1))))))) (Set.indicator.{u1, u2} α M (MulZeroClass.toHasZero.{u2} M (MulZeroOneClass.toMulZeroClass.{u2} M _inst_1)) V (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => MulOneClass.toHasOne.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M _inst_1)))))))) -> (Eq.{succ u1} (Set.{u1} α) U V)
 but is expected to have type
-  forall {α : Type.{u2}} (M : Type.{u1}) [_inst_1 : MulZeroOneClass.{u1} M] [_inst_2 : Nontrivial.{u1} M] {U : Set.{u2} α} {V : Set.{u2} α}, (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) U (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7683 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) V (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))))) -> (Eq.{succ u2} (Set.{u2} α) U V)
+  forall {α : Type.{u2}} (M : Type.{u1}) [_inst_1 : MulZeroOneClass.{u1} M] [_inst_2 : Nontrivial.{u1} M] {U : Set.{u2} α} {V : Set.{u2} α}, (Eq.{max (succ u2) (succ u1)} (α -> M) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) U (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.7678 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1)))))) (Set.indicator.{u2, u1} α M (MulZeroOneClass.toZero.{u1} M _inst_1) V (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : α) => M) (fun (i : α) => MulOneClass.toOne.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M _inst_1))))))) -> (Eq.{succ u2} (Set.{u2} α) U V)
 Case conversion may be inaccurate. Consider using '#align set.indicator_one_inj Set.indicator_one_injₓ'. -/
 theorem indicator_one_inj {U V : Set α} (h : indicator U (1 : α → M) = indicator V 1) : U = V :=
   by
Diff
@@ -1223,7 +1223,7 @@ lean 3 declaration is
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M} {g : α -> M} [_inst_2 : LE.{u1} M], (forall (a : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (LE.le.{u1} M _inst_2 (f a) (g a))) -> (forall (a : α), (Not (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s)) -> (LE.le.{u1} M _inst_2 (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)) (g a))) -> (LE.le.{max u2 u1} (α -> M) (Pi.hasLe.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_2)) (Set.mulIndicator.{u2, u1} α M _inst_1 s f) g)
 Case conversion may be inaccurate. Consider using '#align set.mul_indicator_le' Set.mulIndicator_le'ₓ'. -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (a «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ∉ » s) -/
 @[to_additive]
 theorem mulIndicator_le' (hfg : ∀ a ∈ s, f a ≤ g a) (hg : ∀ (a) (_ : a ∉ s), 1 ≤ g a) :
     mulIndicator s f ≤ g := fun a => mulIndicator_apply_le' (hfg _) (hg _)
@@ -1249,7 +1249,7 @@ lean 3 declaration is
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M} {g : α -> M} [_inst_2 : LE.{u1} M], (forall (a : α), (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s) -> (LE.le.{u1} M _inst_2 (f a) (g a))) -> (forall (a : α), (Not (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s)) -> (LE.le.{u1} M _inst_2 (f a) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)))) -> (LE.le.{max u2 u1} (α -> M) (Pi.hasLe.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_2)) f (Set.mulIndicator.{u2, u1} α M _inst_1 s g))
 Case conversion may be inaccurate. Consider using '#align set.le_mul_indicator Set.le_mulIndicatorₓ'. -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (a «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ∉ » s) -/
 @[to_additive]
 theorem le_mulIndicator (hfg : ∀ a ∈ s, f a ≤ g a) (hf : ∀ (a) (_ : a ∉ s), f a ≤ 1) :
     f ≤ mulIndicator s g := fun a => le_mulIndicator_apply (hfg _) (hf _)
@@ -1339,7 +1339,7 @@ lean 3 declaration is
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] {s : Set.{u2} α} {f : α -> M} [_inst_2 : Preorder.{u1} M], (forall (x : α), (Not (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) x s)) -> (LE.le.{u1} M (Preorder.toLE.{u1} M _inst_2) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M _inst_1)) (f x))) -> (LE.le.{max u2 u1} (α -> M) (Pi.hasLe.{u2, u1} α (fun (ᾰ : α) => M) (fun (i : α) => Preorder.toLE.{u1} M _inst_2)) (Set.mulIndicator.{u2, u1} α M _inst_1 s f) f)
 Case conversion may be inaccurate. Consider using '#align set.mul_indicator_le_self' Set.mulIndicator_le_self'ₓ'. -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (x «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x «expr ∉ » s) -/
 @[to_additive]
 theorem mulIndicator_le_self' (hf : ∀ (x) (_ : x ∉ s), 1 ≤ f x) : mulIndicator s f ≤ f :=
   mulIndicator_le' (fun _ _ => le_rfl) hf
Diff
@@ -460,7 +460,7 @@ theorem comp_mulIndicator_const (c : M) (f : M → N) (hf : f 1 = 1) :
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : One.{u2} M] (s : Set.{u1} α) (f : α -> M) (B : Set.{u2} M), Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α M (Set.mulIndicator.{u1, u2} α M _inst_1 s f) B) (Set.ite.{u1} α s (Set.preimage.{u1, u2} α M f B) (Set.preimage.{u1, u2} α M (OfNat.ofNat.{max u1 u2} (α -> M) 1 (OfNat.mk.{max u1 u2} (α -> M) 1 (One.one.{max u1 u2} (α -> M) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1))))) B))
 but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] (s : Set.{u2} α) (f : α -> M) (B : Set.{u1} M), Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u1} α M (Set.mulIndicator.{u2, u1} α M _inst_1 s f) B) (Set.ite.{u2} α s (Set.preimage.{u2, u1} α M f B) (Set.preimage.{u2, u1} α M (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Data.Set.Image._hyg.23 : α) => M) (fun (i : α) => _inst_1)))) B))
+  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : One.{u1} M] (s : Set.{u2} α) (f : α -> M) (B : Set.{u1} M), Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u1} α M (Set.mulIndicator.{u2, u1} α M _inst_1 s f) B) (Set.ite.{u2} α s (Set.preimage.{u2, u1} α M f B) (Set.preimage.{u2, u1} α M (OfNat.ofNat.{max u2 u1} (α -> M) 1 (One.toOfNat1.{max u2 u1} (α -> M) (Pi.instOne.{u2, u1} α (fun (a._@.Mathlib.Data.Set.Image._hyg.26 : α) => M) (fun (i : α) => _inst_1)))) B))
 Case conversion may be inaccurate. Consider using '#align set.mul_indicator_preimage Set.mulIndicator_preimageₓ'. -/
 @[to_additive]
 theorem mulIndicator_preimage (s : Set α) (f : α → M) (B : Set M) :

Changes in mathlib4

mathlib3
mathlib4
chore: backports from #11997, adaptations for nightly-2024-04-07 (#12176)

These are changes from #11997, the latest adaptation PR for nightly-2024-04-07, which can be made directly on master.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com>

Diff
@@ -127,7 +127,7 @@ theorem mulIndicator_eq_one' : mulIndicator s f = 1 ↔ Disjoint (mulSupport f)
 
 @[to_additive]
 theorem mulIndicator_apply_ne_one {a : α} : s.mulIndicator f a ≠ 1 ↔ a ∈ s ∩ mulSupport f := by
-  simp only [Ne.def, mulIndicator_apply_eq_one, not_imp, mem_inter_iff, mem_mulSupport]
+  simp only [Ne, mulIndicator_apply_eq_one, not_imp, mem_inter_iff, mem_mulSupport]
 #align set.mul_indicator_apply_ne_one Set.mulIndicator_apply_ne_one
 #align set.indicator_apply_ne_zero Set.indicator_apply_ne_zero
 
chore: tidy various files (#12121)
Diff
@@ -322,18 +322,8 @@ theorem mulIndicator_preimage_of_not_mem (s : Set α) (f : α → M) {t : Set M}
 @[to_additive]
 theorem mem_range_mulIndicator {r : M} {s : Set α} {f : α → M} :
     r ∈ range (mulIndicator s f) ↔ r = 1 ∧ s ≠ univ ∨ r ∈ f '' s := by
--- Porting note: This proof used to be:
-  -- simp [mulIndicator, ite_eq_iff, exists_or, eq_univ_iff_forall, and_comm, or_comm,
-  -- @eq_comm _ r 1]
-  simp only [mem_range, mulIndicator, ne_eq, mem_image]
-  rw [eq_univ_iff_forall, not_forall]
-  refine ⟨?_, ?_⟩
-  · rintro ⟨y, hy⟩
-    split_ifs at hy with hys
-    · tauto
-    · left
-      tauto
-  · rintro (⟨hr, ⟨x, hx⟩⟩ | ⟨x, ⟨hx, hxs⟩⟩) <;> use x <;> split_ifs <;> tauto
+  simp [mulIndicator, ite_eq_iff, exists_or, eq_univ_iff_forall, and_comm, or_comm,
+    @eq_comm _ r 1]
 #align set.mem_range_mul_indicator Set.mem_range_mulIndicator
 #align set.mem_range_indicator Set.mem_range_indicator
 
move: Algebraic pi instances (#10693)

Rename

  • Data.Pi.Algebra to Algebra.Group.Pi.Basic
  • Algebra.Group.Pi to Algebra.Group.Pi.Lemmas

Move a few instances from the latter to the former, the goal being that Algebra.Group.Pi.Basic is about all the pi instances of the classes defined in Algebra.Group.Defs. Algebra.Group.Pi.Lemmas will need further rearranging.

Diff
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Zhouhang Zhou
 -/
 import Mathlib.Algebra.Function.Support
+import Mathlib.Algebra.Group.Pi.Lemmas
 
 #align_import algebra.indicator_function from "leanprover-community/mathlib"@"2445c98ae4b87eabebdde552593519b9b6dc350c"
 
chore: scope symmDiff notations (#9844)

Those notations are not scoped whereas the file is very low in the import hierarchy.

Diff
@@ -380,6 +380,7 @@ theorem mulIndicator_union_of_disjoint (h : Disjoint s t) (f : α → M) :
 #align set.mul_indicator_union_of_disjoint Set.mulIndicator_union_of_disjoint
 #align set.indicator_union_of_disjoint Set.indicator_union_of_disjoint
 
+open scoped symmDiff in
 @[to_additive]
 theorem mulIndicator_symmDiff (s t : Set α) (f : α → M) :
     mulIndicator (s ∆ t) f = mulIndicator (s \ t) f * mulIndicator (t \ s) f :=
@@ -532,6 +533,7 @@ theorem mulIndicator_diff' (h : s ⊆ t) (f : α → G) :
   rw [mulIndicator_diff h, div_eq_mul_inv]
 #align set.indicator_diff Set.indicator_diff
 
+open scoped symmDiff in
 @[to_additive]
 theorem apply_mulIndicator_symmDiff {g : G → β} (hg : ∀ x, g x⁻¹ = g x)
     (s t : Set α) (f : α → G) (x : α):
chore: Sink Algebra.Support down the import tree (#8919)

Function.support is a very basic definition. Nevertheless, it is a pretty heavy import because it imports most objects a support lemma can be written about.

This PR reverses the dependencies between those objects and Function.support, so that the latter can become a much more lightweight import.

Only two import could not easily be reversed, namely the ones to Data.Set.Finite and Order.ConditionallyCompleteLattice.Basic, so I created two new files instead.

I credit:

Diff
@@ -3,7 +3,7 @@ Copyright (c) 2020 Zhouhang Zhou. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Zhouhang Zhou
 -/
-import Mathlib.Algebra.Support
+import Mathlib.Algebra.Function.Support
 
 #align_import algebra.indicator_function from "leanprover-community/mathlib"@"2445c98ae4b87eabebdde552593519b9b6dc350c"
 
@@ -30,8 +30,6 @@ arguments. This is in contrast with the design of `Pi.single` or `Set.piecewise`
 indicator, characteristic
 -/
 
-open BigOperators
-
 open Function
 
 variable {α β ι M N : Type*}
@@ -475,58 +473,6 @@ noncomputable def mulIndicatorHom {α} (M) [MulOneClass M] (s : Set α) : (α 
 
 end Monoid
 
-section DistribMulAction
-
-variable {A : Type*} [AddMonoid A] [Monoid M] [DistribMulAction M A]
-
-theorem indicator_smul_apply (s : Set α) (r : α → M) (f : α → A) (x : α) :
-    indicator s (fun x => r x • f x) x = r x • indicator s f x := by
-  dsimp only [indicator]
-  split_ifs
-  exacts [rfl, (smul_zero (r x)).symm]
-#align set.indicator_smul_apply Set.indicator_smul_apply
-
-theorem indicator_smul (s : Set α) (r : α → M) (f : α → A) :
-    (indicator s fun x : α => r x • f x) = fun x : α => r x • indicator s f x :=
-  funext <| indicator_smul_apply s r f
-#align set.indicator_smul Set.indicator_smul
-
-theorem indicator_const_smul_apply (s : Set α) (r : M) (f : α → A) (x : α) :
-    indicator s (fun x => r • f x) x = r • indicator s f x :=
-  indicator_smul_apply s (fun _ => r) f x
-#align set.indicator_const_smul_apply Set.indicator_const_smul_apply
-
-theorem indicator_const_smul (s : Set α) (r : M) (f : α → A) :
-    (indicator s fun x : α => r • f x) = fun x : α => r • indicator s f x :=
-  funext <| indicator_const_smul_apply s r f
-#align set.indicator_const_smul Set.indicator_const_smul
-
-end DistribMulAction
-
-section SMulWithZero
-
-variable {A : Type*} [Zero A] [Zero M] [SMulWithZero M A]
-
-theorem indicator_smul_apply_left (s : Set α) (r : α → M) (f : α → A) (x : α) :
-    indicator s (fun x => r x • f x) x = indicator s r x • f x := by
-  dsimp only [indicator]
-  split_ifs
-  exacts [rfl, (zero_smul _ (f x)).symm]
-
-theorem indicator_smul_left (s : Set α) (r : α → M) (f : α → A) :
-    (indicator s fun x : α => r x • f x) = fun x : α => indicator s r x • f x :=
-  funext <| indicator_smul_apply_left s r f
-
-theorem indicator_smul_const_apply (s : Set α) (r : α → M) (a : A) (x : α) :
-    indicator s (fun x => r x • a) x = indicator s r x • a :=
-  indicator_smul_apply_left s r (fun _ => a) x
-
-theorem indicator_smul_const (s : Set α) (r : α → M) (a : A) :
-    (indicator s fun x : α => r x • a) = fun x : α => indicator s r x • a :=
-  funext <| indicator_smul_const_apply s r a
-
-end SMulWithZero
-
 section Group
 
 variable {G : Type*} [Group G] {s t : Set α} {f g : α → G} {a : α}
@@ -594,111 +540,6 @@ theorem apply_mulIndicator_symmDiff {g : G → β} (hg : ∀ x, g x⁻¹ = g x)
 
 end Group
 
-theorem abs_indicator_symmDiff {G : Type*} [LinearOrderedAddCommGroup G]
-    (s t : Set α) (f : α → G) (x : α) :
-    |indicator (s ∆ t) f x| = |indicator s f x - indicator t f x| :=
-  apply_indicator_symmDiff abs_neg s t f x
-
-section CommMonoid
-
-variable [CommMonoid M]
-
-/-- Consider a product of `g i (f i)` over a `Finset`.  Suppose `g` is a
-function such as `Pow`, which maps a second argument of `1` to
-`1`. Then if `f` is replaced by the corresponding multiplicative indicator
-function, the `Finset` may be replaced by a possibly larger `Finset`
-without changing the value of the sum. -/
-@[to_additive]
-theorem prod_mulIndicator_subset_of_eq_one [One N] (f : α → N) (g : α → N → M) {s t : Finset α}
-    (h : s ⊆ t) (hg : ∀ a, g a 1 = 1) :
-    (∏ i in s, g i (f i)) = ∏ i in t, g i (mulIndicator (↑s) f i) := by
-  rw [← Finset.prod_subset h _]
-  · apply Finset.prod_congr rfl
-    intro i hi
-    congr
-    symm
-    -- Porting note: This did not use to need the implicit argument
-    exact mulIndicator_of_mem (α := α) hi f
-  · refine' fun i _ hn => _
-    convert hg i
-    -- Porting note: This did not use to need the implicit argument
-    exact mulIndicator_of_not_mem (α := α) hn f
-#align set.prod_mul_indicator_subset_of_eq_one Set.prod_mulIndicator_subset_of_eq_one
-#align set.sum_indicator_subset_of_eq_zero Set.sum_indicator_subset_of_eq_zero
-
-/-- Consider a sum of `g i (f i)` over a `Finset`. Suppose `g` is a
-function such as multiplication, which maps a second argument of 0 to
-0.  (A typical use case would be a weighted sum of `f i * h i` or `f i • h i`,
-where `f` gives the weights that are multiplied by some other
-function `h`.)  Then if `f` is replaced by the corresponding indicator
-function, the `Finset` may be replaced by a possibly larger `Finset`
-without changing the value of the sum. -/
-add_decl_doc Set.sum_indicator_subset_of_eq_zero
-
-/-- Taking the product of an indicator function over a possibly larger `Finset` is the same as
-taking the original function over the original `Finset`. -/
-@[to_additive
-      "Summing an indicator function over a possibly larger `Finset` is the same as summing
-      the original function over the original `finset`."]
-theorem prod_mulIndicator_subset (f : α → M) {s t : Finset α} (h : s ⊆ t) :
-    ∏ i in s, f i = ∏ i in t, mulIndicator (↑s) f i :=
-  prod_mulIndicator_subset_of_eq_one _ (fun _ b => b) h fun _ => rfl
-#align set.prod_mul_indicator_subset Set.prod_mulIndicator_subset
-#align set.sum_indicator_subset Set.sum_indicator_subset
-
-@[to_additive]
-theorem _root_.Finset.prod_mulIndicator_eq_prod_filter (s : Finset ι) (f : ι → α → M)
-    (t : ι → Set α) (g : ι → α) [DecidablePred fun i => g i ∈ t i] :
-    (∏ i in s, mulIndicator (t i) (f i) (g i)) = ∏ i in s.filter fun i => g i ∈ t i, f i (g i) := by
-  refine' (Finset.prod_filter_mul_prod_filter_not s (fun i => g i ∈ t i) _).symm.trans _
-  refine' Eq.trans _ (mul_one _)
-  exact
-    congr_arg₂ (· * ·)
-      (Finset.prod_congr rfl fun x hx => mulIndicator_of_mem (Finset.mem_filter.1 hx).2 _)
-      (Finset.prod_eq_one fun x hx => mulIndicator_of_not_mem (Finset.mem_filter.1 hx).2 _)
-#align finset.prod_mul_indicator_eq_prod_filter Finset.prod_mulIndicator_eq_prod_filter
-#align finset.sum_indicator_eq_sum_filter Finset.sum_indicator_eq_sum_filter
-
-@[to_additive]
-theorem mulIndicator_finset_prod (I : Finset ι) (s : Set α) (f : ι → α → M) :
-    mulIndicator s (∏ i in I, f i) = ∏ i in I, mulIndicator s (f i) :=
-  map_prod (mulIndicatorHom M s) _ _
-#align set.mul_indicator_finset_prod Set.mulIndicator_finset_prod
-#align set.indicator_finset_sum Set.indicator_finset_sum
-
-@[to_additive]
-theorem mulIndicator_finset_biUnion (I : Finset ι) (s : ι → Set α) {f : α → M} :
-    (∀ i ∈ I, ∀ j ∈ I, i ≠ j → Disjoint (s i) (s j)) →
-      mulIndicator (⋃ i ∈ I, s i) f = fun a => ∏ i in I, mulIndicator (s i) f a := by
-  classical
-    refine' Finset.induction_on I _ _
-    · intro
-      funext
-      simp
-    intro a I haI ih hI
-    funext
-    rw [Finset.prod_insert haI, Finset.set_biUnion_insert, mulIndicator_union_of_not_mem_inter,
-      ih _]
-    · intro i hi j hj hij
-      exact hI i (Finset.mem_insert_of_mem hi) j (Finset.mem_insert_of_mem hj) hij
-    simp only [not_exists, exists_prop, mem_iUnion, mem_inter_iff, not_and]
-    intro hx a' ha'
-    refine'
-      disjoint_left.1 (hI a (Finset.mem_insert_self _ _) a' (Finset.mem_insert_of_mem ha') _) hx
-    exact (ne_of_mem_of_not_mem ha' haI).symm
-#align set.mul_indicator_finset_bUnion Set.mulIndicator_finset_biUnion
-#align set.indicator_finset_bUnion Set.indicator_finset_biUnion
-
-@[to_additive]
-theorem mulIndicator_finset_biUnion_apply (I : Finset ι) (s : ι → Set α) {f : α → M}
-    (h : ∀ i ∈ I, ∀ j ∈ I, i ≠ j → Disjoint (s i) (s j)) (x : α) :
-    mulIndicator (⋃ i ∈ I, s i) f x = ∏ i in I, mulIndicator (s i) f x := by
-  rw [Set.mulIndicator_finset_biUnion I s h]
-#align set.mul_indicator_finset_bUnion_apply Set.mulIndicator_finset_biUnion_apply
-#align set.indicator_finset_bUnion_apply Set.indicator_finset_biUnion_apply
-
-end CommMonoid
-
 section MulZeroClass
 
 variable [MulZeroClass M] {s t : Set α} {f g : α → M} {a : α}
@@ -773,170 +614,6 @@ theorem indicator_one_inj {U V : Set α} (h : indicator U (1 : α → M) = indic
 
 end MulZeroOneClass
 
-section Order
-
-variable [One M] {s t : Set α} {f g : α → M} {a : α} {y : M}
-
-section
-
-variable [LE M]
-
-@[to_additive]
-theorem mulIndicator_apply_le' (hfg : a ∈ s → f a ≤ y) (hg : a ∉ s → 1 ≤ y) :
-    mulIndicator s f a ≤ y := by
-  by_cases ha : a ∈ s
-  · simpa [ha] using hfg ha
-  · simpa [ha] using hg ha
-#align set.mul_indicator_apply_le' Set.mulIndicator_apply_le'
-#align set.indicator_apply_le' Set.indicator_apply_le'
-
-/- ./././Mathport/Syntax/Translate/Basic.lean:632:2:
-warning: expanding binder collection (a «expr ∉ » s) -/
-@[to_additive]
-theorem mulIndicator_le' (hfg : ∀ a ∈ s, f a ≤ g a) (hg : ∀ (a) (_ : a ∉ s), 1 ≤ g a) :
-    mulIndicator s f ≤ g := fun _ => mulIndicator_apply_le' (hfg _) (hg _)
-#align set.mul_indicator_le' Set.mulIndicator_le'
-#align set.indicator_le' Set.indicator_le'
-
-@[to_additive]
-theorem le_mulIndicator_apply {y} (hfg : a ∈ s → y ≤ g a) (hf : a ∉ s → y ≤ 1) :
-    y ≤ mulIndicator s g a :=
-  @mulIndicator_apply_le' α Mᵒᵈ ‹_› _ _ _ _ _ hfg hf
-#align set.le_mul_indicator_apply Set.le_mulIndicator_apply
-#align set.le_indicator_apply Set.le_indicator_apply
-
-@[to_additive]
-theorem le_mulIndicator (hfg : ∀ a ∈ s, f a ≤ g a) (hf : ∀ (a) (_ : a ∉ s), f a ≤ 1) :
-    f ≤ mulIndicator s g := fun _ => le_mulIndicator_apply (hfg _) (hf _)
-#align set.le_mul_indicator Set.le_mulIndicator
-#align set.le_indicator Set.le_indicator
-
-end
-
-variable [Preorder M]
-
-@[to_additive indicator_apply_nonneg]
-theorem one_le_mulIndicator_apply (h : a ∈ s → 1 ≤ f a) : 1 ≤ mulIndicator s f a :=
-  le_mulIndicator_apply h fun _ => le_rfl
-#align set.one_le_mul_indicator_apply Set.one_le_mulIndicator_apply
-#align set.indicator_apply_nonneg Set.indicator_apply_nonneg
-
-@[to_additive indicator_nonneg]
-theorem one_le_mulIndicator (h : ∀ a ∈ s, 1 ≤ f a) (a : α) : 1 ≤ mulIndicator s f a :=
-  one_le_mulIndicator_apply (h a)
-#align set.one_le_mul_indicator Set.one_le_mulIndicator
-#align set.indicator_nonneg Set.indicator_nonneg
-
-@[to_additive]
-theorem mulIndicator_apply_le_one (h : a ∈ s → f a ≤ 1) : mulIndicator s f a ≤ 1 :=
-  mulIndicator_apply_le' h fun _ => le_rfl
-#align set.mul_indicator_apply_le_one Set.mulIndicator_apply_le_one
-#align set.indicator_apply_nonpos Set.indicator_apply_nonpos
-
-@[to_additive]
-theorem mulIndicator_le_one (h : ∀ a ∈ s, f a ≤ 1) (a : α) : mulIndicator s f a ≤ 1 :=
-  mulIndicator_apply_le_one (h a)
-#align set.mul_indicator_le_one Set.mulIndicator_le_one
-#align set.indicator_nonpos Set.indicator_nonpos
-
-@[to_additive]
-theorem mulIndicator_le_mulIndicator (h : f a ≤ g a) : mulIndicator s f a ≤ mulIndicator s g a :=
-  mulIndicator_rel_mulIndicator le_rfl fun _ => h
-#align set.mul_indicator_le_mul_indicator Set.mulIndicator_le_mulIndicator
-#align set.indicator_le_indicator Set.indicator_le_indicator
-
-attribute [mono] mulIndicator_le_mulIndicator indicator_le_indicator
-
-@[to_additive]
-theorem mulIndicator_le_mulIndicator_of_subset (h : s ⊆ t) (hf : ∀ a, 1 ≤ f a) (a : α) :
-    mulIndicator s f a ≤ mulIndicator t f a :=
-  mulIndicator_apply_le'
-    (fun ha => le_mulIndicator_apply (fun _ => le_rfl) fun hat => (hat <| h ha).elim) fun _ =>
-    one_le_mulIndicator_apply fun _ => hf _
-#align set.mul_indicator_le_mul_indicator_of_subset Set.mulIndicator_le_mulIndicator_of_subset
-#align set.indicator_le_indicator_of_subset Set.indicator_le_indicator_of_subset
-
-@[to_additive]
-theorem mulIndicator_le_self' (hf : ∀ (x) (_ : x ∉ s), 1 ≤ f x) : mulIndicator s f ≤ f :=
-  mulIndicator_le' (fun _ _ => le_rfl) hf
-#align set.mul_indicator_le_self' Set.mulIndicator_le_self'
-#align set.indicator_le_self' Set.indicator_le_self'
-
-@[to_additive]
-theorem mulIndicator_iUnion_apply {ι : Sort*} {M : Type*} [CompleteLattice M] [One M]
-    (h1 : (⊥ : M) = 1) (s : ι → Set α) (f : α → M) (x : α) :
-    mulIndicator (⋃ i, s i) f x = ⨆ i, mulIndicator (s i) f x := by
-  by_cases hx : x ∈ ⋃ i, s i
-  · rw [mulIndicator_of_mem hx]
-    rw [mem_iUnion] at hx
-    refine' le_antisymm _ (iSup_le fun i => mulIndicator_le_self' (fun x _ => h1 ▸ bot_le) x)
-    rcases hx with ⟨i, hi⟩
-    exact le_iSup_of_le i (ge_of_eq <| mulIndicator_of_mem hi _)
-  · rw [mulIndicator_of_not_mem hx]
-    simp only [mem_iUnion, not_exists] at hx
-    simp [hx, ← h1]
-#align set.mul_indicator_Union_apply Set.mulIndicator_iUnion_apply
-#align set.indicator_Union_apply Set.indicator_iUnion_apply
-
-@[to_additive] lemma mulIndicator_iInter_apply {ι : Sort*} {M : Type*} [Nonempty ι]
-    [CompleteLattice M] [One M] (h1 : (⊥ : M) = 1) (s : ι → Set α) (f : α → M) (x : α) :
-    mulIndicator (⋂ i, s i) f x = ⨅ i, mulIndicator (s i) f x := by
-  by_cases hx : x ∈ ⋂ i, s i
-  · rw [mulIndicator_of_mem hx]
-    rw [mem_iInter] at hx
-    refine le_antisymm ?_ (by simp only [mulIndicator_of_mem (hx _), ciInf_const, le_refl])
-    exact le_iInf (fun j ↦ by simp only [mulIndicator_of_mem (hx j), le_refl])
-  · rw [mulIndicator_of_not_mem hx]
-    simp only [mem_iInter, not_exists, not_forall] at hx
-    rcases hx with ⟨j, hj⟩
-    refine le_antisymm (by simp only [← h1, le_iInf_iff, bot_le, forall_const]) ?_
-    simpa [mulIndicator_of_not_mem hj] using (iInf_le (fun i ↦ (s i).mulIndicator f) j) x
-
-end Order
-
-section CanonicallyOrderedCommMonoid
-
-variable [CanonicallyOrderedCommMonoid M]
-
-@[to_additive]
-theorem mulIndicator_le_self (s : Set α) (f : α → M) : mulIndicator s f ≤ f :=
-  mulIndicator_le_self' fun _ _ => one_le _
-#align set.mul_indicator_le_self Set.mulIndicator_le_self
-#align set.indicator_le_self Set.indicator_le_self
-
-@[to_additive]
-theorem mulIndicator_apply_le {a : α} {s : Set α} {f g : α → M} (hfg : a ∈ s → f a ≤ g a) :
-    mulIndicator s f a ≤ g a :=
-  mulIndicator_apply_le' hfg fun _ => one_le _
-#align set.mul_indicator_apply_le Set.mulIndicator_apply_le
-#align set.indicator_apply_le Set.indicator_apply_le
-
-@[to_additive]
-theorem mulIndicator_le {s : Set α} {f g : α → M} (hfg : ∀ a ∈ s, f a ≤ g a) :
-    mulIndicator s f ≤ g :=
-  mulIndicator_le' hfg fun _ _ => one_le _
-#align set.mul_indicator_le Set.mulIndicator_le
-#align set.indicator_le Set.indicator_le
-
-end CanonicallyOrderedCommMonoid
-
-theorem indicator_le_indicator_nonneg {β} [LinearOrder β] [Zero β] (s : Set α) (f : α → β) :
-    s.indicator f ≤ { x | 0 ≤ f x }.indicator f := by
-  intro x
-  classical
-    simp_rw [indicator_apply]
-    split_ifs with h_1 h_2 h_3
-    · exact le_rfl
-    · exact (not_le.mp h_2).le
-    · exact h_3
-    · exact le_rfl
-#align set.indicator_le_indicator_nonneg Set.indicator_le_indicator_nonneg
-
-theorem indicator_nonpos_le_indicator {β} [LinearOrder β] [Zero β] (s : Set α) (f : α → β) :
-    { x | f x ≤ 0 }.indicator f ≤ s.indicator f :=
-  @indicator_le_indicator_nonneg α βᵒᵈ _ _ s f
-#align set.indicator_nonpos_le_indicator Set.indicator_nonpos_le_indicator
-
 end Set
 
 @[to_additive]
chore: remove deprecated MonoidHom.map_prod, AddMonoidHom.map_sum (#8787)
Diff
@@ -662,7 +662,7 @@ theorem _root_.Finset.prod_mulIndicator_eq_prod_filter (s : Finset ι) (f : ι 
 @[to_additive]
 theorem mulIndicator_finset_prod (I : Finset ι) (s : Set α) (f : ι → α → M) :
     mulIndicator s (∏ i in I, f i) = ∏ i in I, mulIndicator s (f i) :=
-  (mulIndicatorHom M s).map_prod _ _
+  map_prod (mulIndicatorHom M s) _ _
 #align set.mul_indicator_finset_prod Set.mulIndicator_finset_prod
 #align set.indicator_finset_sum Set.indicator_finset_sum
 
style: cleanup by putting by on the same line as := (#8407)

Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -355,8 +355,9 @@ variable [MulOneClass M] {s t : Set α} {f g : α → M} {a : α}
 
 @[to_additive]
 theorem mulIndicator_union_mul_inter_apply (f : α → M) (s t : Set α) (a : α) :
-    mulIndicator (s ∪ t) f a * mulIndicator (s ∩ t) f a = mulIndicator s f a * mulIndicator t f a :=
-  by by_cases hs : a ∈ s <;> by_cases ht : a ∈ t <;> simp [*]
+    mulIndicator (s ∪ t) f a * mulIndicator (s ∩ t) f a
+      = mulIndicator s f a * mulIndicator t f a := by
+  by_cases hs : a ∈ s <;> by_cases ht : a ∈ t <;> simp [*]
 #align set.mul_indicator_union_mul_inter_apply Set.mulIndicator_union_mul_inter_apply
 #align set.indicator_union_add_inter_apply Set.indicator_union_add_inter_apply
 
chore: rename CanonicallyOrderedAddMonoid to ..AddCommMonoid (#7503)

Renames:

CanonicallyOrderedMonoid -> CanonicallyOrderedCommMonoid

CanonicallyOrderedAddMonoid -> CanonicallyOrderedAddCommMonoid

CanonicallyLinearOrderedMonoid -> CanonicallyLinearOrderedCommMonoid

CanonicallyLinearOrderedAddMonoid -> CanonicallyLinearOrderedAddCommMonoid

Diff
@@ -893,9 +893,9 @@ theorem mulIndicator_iUnion_apply {ι : Sort*} {M : Type*} [CompleteLattice M] [
 
 end Order
 
-section CanonicallyOrderedMonoid
+section CanonicallyOrderedCommMonoid
 
-variable [CanonicallyOrderedMonoid M]
+variable [CanonicallyOrderedCommMonoid M]
 
 @[to_additive]
 theorem mulIndicator_le_self (s : Set α) (f : α → M) : mulIndicator s f ≤ f :=
@@ -917,7 +917,7 @@ theorem mulIndicator_le {s : Set α} {f g : α → M} (hfg : ∀ a ∈ s, f a 
 #align set.mul_indicator_le Set.mulIndicator_le
 #align set.indicator_le Set.indicator_le
 
-end CanonicallyOrderedMonoid
+end CanonicallyOrderedCommMonoid
 
 theorem indicator_le_indicator_nonneg {β} [LinearOrder β] [Zero β] (s : Set α) (f : α → β) :
     s.indicator f ≤ { x | 0 ≤ f x }.indicator f := by
feat: lemmas about indicator of the symmetric difference (#6738)
Diff
@@ -381,6 +381,11 @@ theorem mulIndicator_union_of_disjoint (h : Disjoint s t) (f : α → M) :
 #align set.mul_indicator_union_of_disjoint Set.mulIndicator_union_of_disjoint
 #align set.indicator_union_of_disjoint Set.indicator_union_of_disjoint
 
+@[to_additive]
+theorem mulIndicator_symmDiff (s t : Set α) (f : α → M) :
+    mulIndicator (s ∆ t) f = mulIndicator (s \ t) f * mulIndicator (t \ s) f :=
+  mulIndicator_union_of_disjoint (disjoint_sdiff_self_right.mono_left sdiff_le) _
+
 @[to_additive]
 theorem mulIndicator_mul (s : Set α) (f g : α → M) :
     (mulIndicator s fun a => f a * g a) = fun a => mulIndicator s f a * mulIndicator s g a := by
@@ -580,8 +585,19 @@ theorem mulIndicator_diff' (h : s ⊆ t) (f : α → G) :
   rw [mulIndicator_diff h, div_eq_mul_inv]
 #align set.indicator_diff Set.indicator_diff
 
+@[to_additive]
+theorem apply_mulIndicator_symmDiff {g : G → β} (hg : ∀ x, g x⁻¹ = g x)
+    (s t : Set α) (f : α → G) (x : α):
+    g (mulIndicator (s ∆ t) f x) = g (mulIndicator s f x / mulIndicator t f x) := by
+  by_cases hs : x ∈ s <;> by_cases ht : x ∈ t <;> simp [mem_symmDiff, *]
+
 end Group
 
+theorem abs_indicator_symmDiff {G : Type*} [LinearOrderedAddCommGroup G]
+    (s t : Set α) (f : α → G) (x : α) :
+    |indicator (s ∆ t) f x| = |indicator s f x - indicator t f x| :=
+  apply_indicator_symmDiff abs_neg s t f x
+
 section CommMonoid
 
 variable [CommMonoid M]
fix(Algebra/IndicatorFunction): minor fixes (#6640)
  • Fix name in docstrings.
  • Use Type* in variable, explicitly use Sort*.
  • Use to_additive to generate the additive version.
  • Drop pattern matching.
  • Add Set.mulIndicator_diff', the multiplicative version of Set.indicator_diff.
Diff
@@ -10,8 +10,8 @@ import Mathlib.Algebra.Support
 /-!
 # Indicator function
 
-- `indicator (s : Set α) (f : α → β) (a : α)` is `f a` if `a ∈ s` and is `0` otherwise.
-- `mulIndicator (s : Set α) (f : α → β) (a : α)` is `f a` if `a ∈ s` and is `1` otherwise.
+- `Set.indicator (s : Set α) (f : α → β) (a : α)` is `f a` if `a ∈ s` and is `0` otherwise.
+- `Set.mulIndicator (s : Set α) (f : α → β) (a : α)` is `f a` if `a ∈ s` and is `1` otherwise.
 
 
 ## Implementation note
@@ -21,10 +21,10 @@ used to indicate membership of an element in a set `s`,
 having the value `1` for all elements of `s` and the value `0` otherwise.
 But since it is usually used to restrict a function to a certain set `s`,
 we let the indicator function take the value `f x` for some function `f`, instead of `1`.
-If the usual indicator function is needed, just set `f` to be the constant function `λx, 1`.
+If the usual indicator function is needed, just set `f` to be the constant function `fun _ ↦ 1`.
 
 The indicator function is implemented non-computably, to avoid having to pass around `Decidable`
-arguments. This is in contrast with the design of `Pi.Single` or `Set.Piecewise`.
+arguments. This is in contrast with the design of `Pi.single` or `Set.piecewise`.
 
 ## Tags
 indicator, characteristic
@@ -34,7 +34,7 @@ open BigOperators
 
 open Function
 
-variable {α β ι M N : Type _}
+variable {α β ι M N : Type*}
 
 namespace Set
 
@@ -42,19 +42,11 @@ section One
 
 variable [One M] [One N] {s t : Set α} {f g : α → M} {a : α}
 
-/-- `indicator s f a` is `f a` if `a ∈ s`, `0` otherwise.  -/
-noncomputable def indicator {M} [Zero M] (s : Set α) (f : α → M) : α → M
-  | x =>
-    haveI := Classical.decPred (· ∈ s)
-    if x ∈ s then f x else 0
-#align set.indicator Set.indicator
-
-/-- `mulIndicator s f a` is `f a` if `a ∈ s`, `1` otherwise.  -/
-@[to_additive existing]
-noncomputable def mulIndicator (s : Set α) (f : α → M) : α → M
-  | x =>
-    haveI := Classical.decPred (· ∈ s)
-    if x ∈ s then f x else 1
+/-- `Set.mulIndicator s f a` is `f a` if `a ∈ s`, `1` otherwise.  -/
+@[to_additive "`Set.indicator s f a` is `f a` if `a ∈ s`, `0` otherwise."]
+noncomputable def mulIndicator (s : Set α) (f : α → M) (x : α) : M :=
+  haveI := Classical.decPred (· ∈ s)
+  if x ∈ s then f x else 1
 #align set.mul_indicator Set.mulIndicator
 
 @[to_additive (attr := simp)]
@@ -67,21 +59,19 @@ theorem piecewise_eq_mulIndicator [DecidablePred (· ∈ s)] : s.piecewise f 1 =
 @[to_additive]
 theorem mulIndicator_apply (s : Set α) (f : α → M) (a : α) [Decidable (a ∈ s)] :
     mulIndicator s f a = if a ∈ s then f a else 1 := by
-      unfold mulIndicator
-      split_ifs with h <;> simp
+  unfold mulIndicator
+  congr
 #align set.mul_indicator_apply Set.mulIndicator_apply
 #align set.indicator_apply Set.indicator_apply
 
 @[to_additive (attr := simp)]
 theorem mulIndicator_of_mem (h : a ∈ s) (f : α → M) : mulIndicator s f a = f a :=
-  letI := Classical.dec (a ∈ s)
   if_pos h
 #align set.mul_indicator_of_mem Set.mulIndicator_of_mem
 #align set.indicator_of_mem Set.indicator_of_mem
 
 @[to_additive (attr := simp)]
 theorem mulIndicator_of_not_mem (h : a ∉ s) (f : α → M) : mulIndicator s f a = 1 :=
-  letI := Classical.dec (a ∈ s)
   if_neg h
 #align set.mul_indicator_of_not_mem Set.mulIndicator_of_not_mem
 #align set.indicator_of_not_mem Set.indicator_of_not_mem
@@ -233,8 +223,7 @@ theorem mulIndicator_mulIndicator (s t : Set α) (f : α → M) :
     mulIndicator s (mulIndicator t f) = mulIndicator (s ∩ t) f :=
   funext fun x => by
     simp only [mulIndicator]
-    split_ifs
-    repeat' simp_all (config := { contextual := true })
+    split_ifs <;> simp_all (config := { contextual := true })
 #align set.mul_indicator_mul_indicator Set.mulIndicator_mulIndicator
 #align set.indicator_indicator Set.indicator_indicator
 
@@ -570,8 +559,9 @@ theorem mulIndicator_compl (s : Set α) (f : α → G) :
 #align set.mul_indicator_compl Set.mulIndicator_compl
 #align set.indicator_compl' Set.indicator_compl'
 
-theorem indicator_compl {G} [AddGroup G] (s : Set α) (f : α → G) :
-    indicator sᶜ f = f - indicator s f := by rw [sub_eq_add_neg, indicator_compl']
+@[to_additive indicator_compl]
+theorem mulIndicator_compl' (s : Set α) (f : α → G) :
+    mulIndicator sᶜ f = f / mulIndicator s f := by rw [div_eq_mul_inv, mulIndicator_compl]
 #align set.indicator_compl Set.indicator_compl
 
 @[to_additive indicator_diff']
@@ -584,8 +574,10 @@ theorem mulIndicator_diff (h : s ⊆ t) (f : α → G) :
 #align set.mul_indicator_diff Set.mulIndicator_diff
 #align set.indicator_diff' Set.indicator_diff'
 
-theorem indicator_diff {G : Type*} [AddGroup G] {s t : Set α} (h : s ⊆ t) (f : α → G) :
-    indicator (t \ s) f = indicator t f - indicator s f := by rw [indicator_diff' h, sub_eq_add_neg]
+@[to_additive indicator_diff]
+theorem mulIndicator_diff' (h : s ⊆ t) (f : α → G) :
+    mulIndicator (t \ s) f = mulIndicator t f / mulIndicator s f := by
+  rw [mulIndicator_diff h, div_eq_mul_inv]
 #align set.indicator_diff Set.indicator_diff
 
 end Group
@@ -658,7 +650,7 @@ theorem mulIndicator_finset_prod (I : Finset ι) (s : Set α) (f : ι → α →
 #align set.indicator_finset_sum Set.indicator_finset_sum
 
 @[to_additive]
-theorem mulIndicator_finset_biUnion {ι} (I : Finset ι) (s : ι → Set α) {f : α → M} :
+theorem mulIndicator_finset_biUnion (I : Finset ι) (s : ι → Set α) {f : α → M} :
     (∀ i ∈ I, ∀ j ∈ I, i ≠ j → Disjoint (s i) (s j)) →
       mulIndicator (⋃ i ∈ I, s i) f = fun a => ∏ i in I, mulIndicator (s i) f a := by
   classical
@@ -681,7 +673,7 @@ theorem mulIndicator_finset_biUnion {ι} (I : Finset ι) (s : ι → Set α) {f
 #align set.indicator_finset_bUnion Set.indicator_finset_biUnion
 
 @[to_additive]
-theorem mulIndicator_finset_biUnion_apply {ι} (I : Finset ι) (s : ι → Set α) {f : α → M}
+theorem mulIndicator_finset_biUnion_apply (I : Finset ι) (s : ι → Set α) {f : α → M}
     (h : ∀ i ∈ I, ∀ j ∈ I, i ≠ j → Disjoint (s i) (s j)) (x : α) :
     mulIndicator (⋃ i ∈ I, s i) f x = ∏ i in I, mulIndicator (s i) f x := by
   rw [Set.mulIndicator_finset_biUnion I s h]
@@ -854,8 +846,8 @@ theorem mulIndicator_le_self' (hf : ∀ (x) (_ : x ∉ s), 1 ≤ f x) : mulIndic
 #align set.indicator_le_self' Set.indicator_le_self'
 
 @[to_additive]
-theorem mulIndicator_iUnion_apply {ι M} [CompleteLattice M] [One M] (h1 : (⊥ : M) = 1)
-    (s : ι → Set α) (f : α → M) (x : α) :
+theorem mulIndicator_iUnion_apply {ι : Sort*} {M : Type*} [CompleteLattice M] [One M]
+    (h1 : (⊥ : M) = 1) (s : ι → Set α) (f : α → M) (x : α) :
     mulIndicator (⋃ i, s i) f x = ⨆ i, mulIndicator (s i) f x := by
   by_cases hx : x ∈ ⋃ i, s i
   · rw [mulIndicator_of_mem hx]
@@ -869,8 +861,8 @@ theorem mulIndicator_iUnion_apply {ι M} [CompleteLattice M] [One M] (h1 : (⊥
 #align set.mul_indicator_Union_apply Set.mulIndicator_iUnion_apply
 #align set.indicator_Union_apply Set.indicator_iUnion_apply
 
-@[to_additive] lemma mulIndicator_iInter_apply {ι M} [Nonempty ι] [CompleteLattice M] [One M]
-    (h1 : (⊥ : M) = 1) (s : ι → Set α) (f : α → M) (x : α) :
+@[to_additive] lemma mulIndicator_iInter_apply {ι : Sort*} {M : Type*} [Nonempty ι]
+    [CompleteLattice M] [One M] (h1 : (⊥ : M) = 1) (s : ι → Set α) (f : α → M) (x : α) :
     mulIndicator (⋂ i, s i) f x = ⨅ i, mulIndicator (s i) f x := by
   by_cases hx : x ∈ ⋂ i, s i
   · rw [mulIndicator_of_mem hx]
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
@@ -177,7 +177,7 @@ theorem mulIndicator_mulSupport : mulIndicator (mulSupport f) f = f :=
 #align set.indicator_support Set.indicator_support
 
 @[to_additive (attr := simp)]
-theorem mulIndicator_range_comp {ι : Sort _} (f : ι → α) (g : α → M) :
+theorem mulIndicator_range_comp {ι : Sort*} (f : ι → α) (g : α → M) :
     mulIndicator (range f) g ∘ f = g ∘ f :=
   letI := Classical.decPred (· ∈ range f)
   piecewise_range_comp _ _ _
@@ -482,7 +482,7 @@ end Monoid
 
 section DistribMulAction
 
-variable {A : Type _} [AddMonoid A] [Monoid M] [DistribMulAction M A]
+variable {A : Type*} [AddMonoid A] [Monoid M] [DistribMulAction M A]
 
 theorem indicator_smul_apply (s : Set α) (r : α → M) (f : α → A) (x : α) :
     indicator s (fun x => r x • f x) x = r x • indicator s f x := by
@@ -510,7 +510,7 @@ end DistribMulAction
 
 section SMulWithZero
 
-variable {A : Type _} [Zero A] [Zero M] [SMulWithZero M A]
+variable {A : Type*} [Zero A] [Zero M] [SMulWithZero M A]
 
 theorem indicator_smul_apply_left (s : Set α) (r : α → M) (f : α → A) (x : α) :
     indicator s (fun x => r x • f x) x = indicator s r x • f x := by
@@ -534,7 +534,7 @@ end SMulWithZero
 
 section Group
 
-variable {G : Type _} [Group G] {s t : Set α} {f g : α → G} {a : α}
+variable {G : Type*} [Group G] {s t : Set α} {f g : α → G} {a : α}
 
 @[to_additive]
 theorem mulIndicator_inv' (s : Set α) (f : α → G) : mulIndicator s f⁻¹ = (mulIndicator s f)⁻¹ :=
@@ -584,7 +584,7 @@ theorem mulIndicator_diff (h : s ⊆ t) (f : α → G) :
 #align set.mul_indicator_diff Set.mulIndicator_diff
 #align set.indicator_diff' Set.indicator_diff'
 
-theorem indicator_diff {G : Type _} [AddGroup G] {s t : Set α} (h : s ⊆ t) (f : α → G) :
+theorem indicator_diff {G : Type*} [AddGroup G] {s t : Set α} (h : s ⊆ t) (f : α → G) :
     indicator (t \ s) f = indicator t f - indicator s f := by rw [indicator_diff' h, sub_eq_add_neg]
 #align set.indicator_diff Set.indicator_diff
 
@@ -931,7 +931,7 @@ theorem indicator_nonpos_le_indicator {β} [LinearOrder β] [Zero β] (s : Set 
 end Set
 
 @[to_additive]
-theorem MonoidHom.map_mulIndicator {M N : Type _} [MulOneClass M] [MulOneClass N] (f : M →* N)
+theorem MonoidHom.map_mulIndicator {M N : Type*} [MulOneClass M] [MulOneClass N] (f : M →* N)
     (s : Set α) (g : α → M) (x : α) : f (s.mulIndicator g x) = s.mulIndicator (f ∘ g) x := by
   simp [Set.mulIndicator_comp_of_one]
 #align monoid_hom.map_mul_indicator MonoidHom.map_mulIndicator
feat(Algebra/IndicatorFunction): add indicator_iInter_apply as a counterpart to indicator_iUnion_apply. (#6078)

Add lemma mulIndicator_iInter_apply and its additive version indicator_iInter_apply. These are entirely parallel to the existing mulIndicator_iUnion_apply and its additive version indicator_iUnion_apply.

Diff
@@ -869,6 +869,20 @@ theorem mulIndicator_iUnion_apply {ι M} [CompleteLattice M] [One M] (h1 : (⊥
 #align set.mul_indicator_Union_apply Set.mulIndicator_iUnion_apply
 #align set.indicator_Union_apply Set.indicator_iUnion_apply
 
+@[to_additive] lemma mulIndicator_iInter_apply {ι M} [Nonempty ι] [CompleteLattice M] [One M]
+    (h1 : (⊥ : M) = 1) (s : ι → Set α) (f : α → M) (x : α) :
+    mulIndicator (⋂ i, s i) f x = ⨅ i, mulIndicator (s i) f x := by
+  by_cases hx : x ∈ ⋂ i, s i
+  · rw [mulIndicator_of_mem hx]
+    rw [mem_iInter] at hx
+    refine le_antisymm ?_ (by simp only [mulIndicator_of_mem (hx _), ciInf_const, le_refl])
+    exact le_iInf (fun j ↦ by simp only [mulIndicator_of_mem (hx j), le_refl])
+  · rw [mulIndicator_of_not_mem hx]
+    simp only [mem_iInter, not_exists, not_forall] at hx
+    rcases hx with ⟨j, hj⟩
+    refine le_antisymm (by simp only [← h1, le_iInf_iff, bot_le, forall_const]) ?_
+    simpa [mulIndicator_of_not_mem hj] using (iInf_le (fun i ↦ (s i).mulIndicator f) j) x
+
 end Order
 
 section CanonicallyOrderedMonoid
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) 2020 Zhouhang Zhou. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Zhouhang Zhou
-
-! This file was ported from Lean 3 source module algebra.indicator_function
-! leanprover-community/mathlib commit 2445c98ae4b87eabebdde552593519b9b6dc350c
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.Support
 
+#align_import algebra.indicator_function from "leanprover-community/mathlib"@"2445c98ae4b87eabebdde552593519b9b6dc350c"
+
 /-!
 # Indicator function
 
feat(Algebra.IndicatorFunction): indicator of smul in a SMulWithZero context (#5874)
Diff
@@ -511,6 +511,30 @@ theorem indicator_const_smul (s : Set α) (r : M) (f : α → A) :
 
 end DistribMulAction
 
+section SMulWithZero
+
+variable {A : Type _} [Zero A] [Zero M] [SMulWithZero M A]
+
+theorem indicator_smul_apply_left (s : Set α) (r : α → M) (f : α → A) (x : α) :
+    indicator s (fun x => r x • f x) x = indicator s r x • f x := by
+  dsimp only [indicator]
+  split_ifs
+  exacts [rfl, (zero_smul _ (f x)).symm]
+
+theorem indicator_smul_left (s : Set α) (r : α → M) (f : α → A) :
+    (indicator s fun x : α => r x • f x) = fun x : α => indicator s r x • f x :=
+  funext <| indicator_smul_apply_left s r f
+
+theorem indicator_smul_const_apply (s : Set α) (r : α → M) (a : A) (x : α) :
+    indicator s (fun x => r x • a) x = indicator s r x • a :=
+  indicator_smul_apply_left s r (fun _ => a) x
+
+theorem indicator_smul_const (s : Set α) (r : α → M) (a : A) :
+    (indicator s fun x : α => r x • a) = fun x : α => indicator s r x • a :=
+  funext <| indicator_smul_const_apply s r a
+
+end SMulWithZero
+
 section Group
 
 variable {G : Type _} [Group G] {s t : Set α} {f g : α → G} {a : α}
chore: fix focusing dots (#5708)

This PR is the result of running

find . -type f -name "*.lean" -exec sed -i -E 's/^( +)\. /\1· /' {} \;
find . -type f -name "*.lean" -exec sed -i -E 'N;s/^( +·)\n +(.*)$/\1 \2/;P;D' {} \;

which firstly replaces . focusing dots with · and secondly removes isolated instances of such dots, unifying them with the following line. A new rule is placed in the style linter to verify this.

Diff
@@ -464,11 +464,9 @@ theorem mulIndicator_mul_compl_eq_piecewise [DecidablePred (· ∈ s)] (f g : α
     s.mulIndicator f * sᶜ.mulIndicator g = s.piecewise f g := by
   ext x
   by_cases h : x ∈ s
-  ·
-    rw [piecewise_eq_of_mem _ _ _ h, Pi.mul_apply, Set.mulIndicator_of_mem h,
+  · rw [piecewise_eq_of_mem _ _ _ h, Pi.mul_apply, Set.mulIndicator_of_mem h,
       Set.mulIndicator_of_not_mem (Set.not_mem_compl_iff.2 h), mul_one]
-  ·
-    rw [piecewise_eq_of_not_mem _ _ _ h, Pi.mul_apply, Set.mulIndicator_of_not_mem h,
+  · rw [piecewise_eq_of_not_mem _ _ _ h, Pi.mul_apply, Set.mulIndicator_of_not_mem h,
       Set.mulIndicator_of_mem (Set.mem_compl h), one_mul]
 #align set.mul_indicator_mul_compl_eq_piecewise Set.mulIndicator_mul_compl_eq_piecewise
 #align set.indicator_add_compl_eq_piecewise Set.indicator_add_compl_eq_piecewise
fix: ∑' precedence (#5615)
  • Also remove most superfluous parentheses around big operators (, and variants).
  • roughly the used regex: ([^a-zA-Zα-ωΑ-Ω'𝓝ℳ₀𝕂ₛ)]) \(([∑∏][^()∑∏]*,[^()∑∏:]*)\) ([⊂⊆=<≤]) replaced by $1 $2 $3
Diff
@@ -613,7 +613,7 @@ taking the original function over the original `Finset`. -/
       "Summing an indicator function over a possibly larger `Finset` is the same as summing
       the original function over the original `finset`."]
 theorem prod_mulIndicator_subset (f : α → M) {s t : Finset α} (h : s ⊆ t) :
-    (∏ i in s, f i) = ∏ i in t, mulIndicator (↑s) f i :=
+    ∏ i in s, f i = ∏ i in t, mulIndicator (↑s) f i :=
   prod_mulIndicator_subset_of_eq_one _ (fun _ b => b) h fun _ => rfl
 #align set.prod_mul_indicator_subset Set.prod_mulIndicator_subset
 #align set.sum_indicator_subset Set.sum_indicator_subset
fix: change compl precedence (#5586)

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

Diff
@@ -415,28 +415,28 @@ theorem mulIndicator_mul' (s : Set α) (f g : α → M) :
 
 @[to_additive (attr := simp)]
 theorem mulIndicator_compl_mul_self_apply (s : Set α) (f : α → M) (a : α) :
-    mulIndicator (sᶜ) f a * mulIndicator s f a = f a :=
+    mulIndicator sᶜ f a * mulIndicator s f a = f a :=
   by_cases (fun ha : a ∈ s => by simp [ha]) fun ha => by simp [ha]
 #align set.mul_indicator_compl_mul_self_apply Set.mulIndicator_compl_mul_self_apply
 #align set.indicator_compl_add_self_apply Set.indicator_compl_add_self_apply
 
 @[to_additive (attr := simp)]
 theorem mulIndicator_compl_mul_self (s : Set α) (f : α → M) :
-    mulIndicator (sᶜ) f * mulIndicator s f = f :=
+    mulIndicator sᶜ f * mulIndicator s f = f :=
   funext <| mulIndicator_compl_mul_self_apply s f
 #align set.mul_indicator_compl_mul_self Set.mulIndicator_compl_mul_self
 #align set.indicator_compl_add_self Set.indicator_compl_add_self
 
 @[to_additive (attr := simp)]
 theorem mulIndicator_self_mul_compl_apply (s : Set α) (f : α → M) (a : α) :
-    mulIndicator s f a * mulIndicator (sᶜ) f a = f a :=
+    mulIndicator s f a * mulIndicator sᶜ f a = f a :=
   by_cases (fun ha : a ∈ s => by simp [ha]) fun ha => by simp [ha]
 #align set.mul_indicator_self_mul_compl_apply Set.mulIndicator_self_mul_compl_apply
 #align set.indicator_self_add_compl_apply Set.indicator_self_add_compl_apply
 
 @[to_additive (attr := simp)]
 theorem mulIndicator_self_mul_compl (s : Set α) (f : α → M) :
-    mulIndicator s f * mulIndicator (sᶜ) f = f :=
+    mulIndicator s f * mulIndicator sᶜ f = f :=
   funext <| mulIndicator_self_mul_compl_apply s f
 #align set.mul_indicator_self_mul_compl Set.mulIndicator_self_mul_compl
 #align set.indicator_self_add_compl Set.indicator_self_add_compl
@@ -546,13 +546,13 @@ theorem mulIndicator_div' (s : Set α) (f g : α → G) :
 
 @[to_additive indicator_compl']
 theorem mulIndicator_compl (s : Set α) (f : α → G) :
-    mulIndicator (sᶜ) f = f * (mulIndicator s f)⁻¹ :=
+    mulIndicator sᶜ f = f * (mulIndicator s f)⁻¹ :=
   eq_mul_inv_of_mul_eq <| s.mulIndicator_compl_mul_self f
 #align set.mul_indicator_compl Set.mulIndicator_compl
 #align set.indicator_compl' Set.indicator_compl'
 
 theorem indicator_compl {G} [AddGroup G] (s : Set α) (f : α → G) :
-    indicator (sᶜ) f = f - indicator s f := by rw [sub_eq_add_neg, indicator_compl']
+    indicator sᶜ f = f - indicator s f := by rw [sub_eq_add_neg, indicator_compl']
 #align set.indicator_compl Set.indicator_compl
 
 @[to_additive indicator_diff']
chore: clean up spacing around at and goals (#5387)

Changes are of the form

  • some_tactic at h⊢ -> some_tactic at h ⊢
  • some_tactic at h -> some_tactic at h
Diff
@@ -114,7 +114,7 @@ theorem mulIndicator_eq_self : s.mulIndicator f = f ↔ mulSupport f ⊆ s := by
 @[to_additive]
 theorem mulIndicator_eq_self_of_superset (h1 : s.mulIndicator f = f) (h2 : s ⊆ t) :
     t.mulIndicator f = f := by
-  rw [mulIndicator_eq_self] at h1⊢
+  rw [mulIndicator_eq_self] at h1 ⊢
   exact Subset.trans h1 h2
 #align set.mul_indicator_eq_self_of_superset Set.mulIndicator_eq_self_of_superset
 #align set.indicator_eq_self_of_superset Set.indicator_eq_self_of_superset
chore: add space after exacts (#4945)

Too often tempted to change these during other PRs, so doing a mass edit here.

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au>

Diff
@@ -357,7 +357,7 @@ theorem mulIndicator_rel_mulIndicator {r : M → M → Prop} (h1 : r 1 1) (ha :
     r (mulIndicator s f a) (mulIndicator s g a) := by
   simp only [mulIndicator]
   split_ifs with has
-  exacts[ha has, h1]
+  exacts [ha has, h1]
 #align set.mul_indicator_rel_mul_indicator Set.mulIndicator_rel_mulIndicator
 #align set.indicator_rel_indicator Set.indicator_rel_indicator
 
@@ -493,7 +493,7 @@ theorem indicator_smul_apply (s : Set α) (r : α → M) (f : α → A) (x : α)
     indicator s (fun x => r x • f x) x = r x • indicator s f x := by
   dsimp only [indicator]
   split_ifs
-  exacts[rfl, (smul_zero (r x)).symm]
+  exacts [rfl, (smul_zero (r x)).symm]
 #align set.indicator_smul_apply Set.indicator_smul_apply
 
 theorem indicator_smul (s : Set α) (r : α → M) (f : α → A) :
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
@@ -639,7 +639,7 @@ theorem mulIndicator_finset_prod (I : Finset ι) (s : Set α) (f : ι → α →
 #align set.indicator_finset_sum Set.indicator_finset_sum
 
 @[to_additive]
-theorem mulIndicator_finset_bunionᵢ {ι} (I : Finset ι) (s : ι → Set α) {f : α → M} :
+theorem mulIndicator_finset_biUnion {ι} (I : Finset ι) (s : ι → Set α) {f : α → M} :
     (∀ i ∈ I, ∀ j ∈ I, i ≠ j → Disjoint (s i) (s j)) →
       mulIndicator (⋃ i ∈ I, s i) f = fun a => ∏ i in I, mulIndicator (s i) f a := by
   classical
@@ -649,25 +649,25 @@ theorem mulIndicator_finset_bunionᵢ {ι} (I : Finset ι) (s : ι → Set α) {
       simp
     intro a I haI ih hI
     funext
-    rw [Finset.prod_insert haI, Finset.set_bunionᵢ_insert, mulIndicator_union_of_not_mem_inter,
+    rw [Finset.prod_insert haI, Finset.set_biUnion_insert, mulIndicator_union_of_not_mem_inter,
       ih _]
     · intro i hi j hj hij
       exact hI i (Finset.mem_insert_of_mem hi) j (Finset.mem_insert_of_mem hj) hij
-    simp only [not_exists, exists_prop, mem_unionᵢ, mem_inter_iff, not_and]
+    simp only [not_exists, exists_prop, mem_iUnion, mem_inter_iff, not_and]
     intro hx a' ha'
     refine'
       disjoint_left.1 (hI a (Finset.mem_insert_self _ _) a' (Finset.mem_insert_of_mem ha') _) hx
     exact (ne_of_mem_of_not_mem ha' haI).symm
-#align set.mul_indicator_finset_bUnion Set.mulIndicator_finset_bunionᵢ
-#align set.indicator_finset_bUnion Set.indicator_finset_bunionᵢ
+#align set.mul_indicator_finset_bUnion Set.mulIndicator_finset_biUnion
+#align set.indicator_finset_bUnion Set.indicator_finset_biUnion
 
 @[to_additive]
-theorem mulIndicator_finset_bunionᵢ_apply {ι} (I : Finset ι) (s : ι → Set α) {f : α → M}
+theorem mulIndicator_finset_biUnion_apply {ι} (I : Finset ι) (s : ι → Set α) {f : α → M}
     (h : ∀ i ∈ I, ∀ j ∈ I, i ≠ j → Disjoint (s i) (s j)) (x : α) :
     mulIndicator (⋃ i ∈ I, s i) f x = ∏ i in I, mulIndicator (s i) f x := by
-  rw [Set.mulIndicator_finset_bunionᵢ I s h]
-#align set.mul_indicator_finset_bUnion_apply Set.mulIndicator_finset_bunionᵢ_apply
-#align set.indicator_finset_bUnion_apply Set.indicator_finset_bunionᵢ_apply
+  rw [Set.mulIndicator_finset_biUnion I s h]
+#align set.mul_indicator_finset_bUnion_apply Set.mulIndicator_finset_biUnion_apply
+#align set.indicator_finset_bUnion_apply Set.indicator_finset_biUnion_apply
 
 end CommMonoid
 
@@ -835,20 +835,20 @@ theorem mulIndicator_le_self' (hf : ∀ (x) (_ : x ∉ s), 1 ≤ f x) : mulIndic
 #align set.indicator_le_self' Set.indicator_le_self'
 
 @[to_additive]
-theorem mulIndicator_unionᵢ_apply {ι M} [CompleteLattice M] [One M] (h1 : (⊥ : M) = 1)
+theorem mulIndicator_iUnion_apply {ι M} [CompleteLattice M] [One M] (h1 : (⊥ : M) = 1)
     (s : ι → Set α) (f : α → M) (x : α) :
     mulIndicator (⋃ i, s i) f x = ⨆ i, mulIndicator (s i) f x := by
   by_cases hx : x ∈ ⋃ i, s i
   · rw [mulIndicator_of_mem hx]
-    rw [mem_unionᵢ] at hx
-    refine' le_antisymm _ (supᵢ_le fun i => mulIndicator_le_self' (fun x _ => h1 ▸ bot_le) x)
+    rw [mem_iUnion] at hx
+    refine' le_antisymm _ (iSup_le fun i => mulIndicator_le_self' (fun x _ => h1 ▸ bot_le) x)
     rcases hx with ⟨i, hi⟩
-    exact le_supᵢ_of_le i (ge_of_eq <| mulIndicator_of_mem hi _)
+    exact le_iSup_of_le i (ge_of_eq <| mulIndicator_of_mem hi _)
   · rw [mulIndicator_of_not_mem hx]
-    simp only [mem_unionᵢ, not_exists] at hx
+    simp only [mem_iUnion, not_exists] at hx
     simp [hx, ← h1]
-#align set.mul_indicator_Union_apply Set.mulIndicator_unionᵢ_apply
-#align set.indicator_Union_apply Set.indicator_unionᵢ_apply
+#align set.mul_indicator_Union_apply Set.mulIndicator_iUnion_apply
+#align set.indicator_Union_apply Set.indicator_iUnion_apply
 
 end Order
 
chore: bye-bye, solo bys! (#3825)

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

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

Diff
@@ -306,9 +306,8 @@ theorem mulIndicator_one_preimage (s : Set M) :
 
 @[to_additive]
 theorem mulIndicator_const_preimage_eq_union (U : Set α) (s : Set M) (a : M) [Decidable (a ∈ s)]
-    [Decidable ((1 : M) ∈ s)] :
-    (U.mulIndicator fun _ => a) ⁻¹' s = (if a ∈ s then U else ∅) ∪ if (1 : M) ∈ s then Uᶜ else ∅ :=
-  by
+    [Decidable ((1 : M) ∈ s)] : (U.mulIndicator fun _ => a) ⁻¹' s =
+      (if a ∈ s then U else ∅) ∪ if (1 : M) ∈ s then Uᶜ else ∅ := by
   rw [mulIndicator_preimage, preimage_one, preimage_const]
   split_ifs <;> simp [← compl_eq_univ_diff]
 #align set.mul_indicator_const_preimage_eq_union Set.mulIndicator_const_preimage_eq_union
@@ -559,8 +558,7 @@ theorem indicator_compl {G} [AddGroup G] (s : Set α) (f : α → G) :
 @[to_additive indicator_diff']
 theorem mulIndicator_diff (h : s ⊆ t) (f : α → G) :
     mulIndicator (t \ s) f = mulIndicator t f * (mulIndicator s f)⁻¹ :=
-  eq_mul_inv_of_mul_eq <|
-    by
+  eq_mul_inv_of_mul_eq <| by
     rw [Pi.mul_def, ← mulIndicator_union_of_disjoint, diff_union_self,
       union_eq_self_of_subset_right h]
     exact disjoint_sdiff_self_left
feat: tactic congr! and improvement to convert (#2566)

This introduces a tactic congr! that is an analogue to mathlib 3's congr'. It is a more insistent version of congr that makes use of more congruence lemmas (including user congruence lemmas), propext, funext, and Subsingleton instances. It also has a feature to lift reflexive relations to equalities. Along with funext, the tactic does intros, allowing congr! to get access to function bodies; the introduced variables can be named using rename_i if needed.

This also modifies convert to use congr! rather than congr, which makes it work more like the mathlib3 version of the tactic.

Diff
@@ -252,7 +252,7 @@ theorem mulIndicator_inter_mulSupport (s : Set α) (f : α → M) :
 theorem comp_mulIndicator (h : M → β) (f : α → M) {s : Set α} {x : α} [DecidablePred (· ∈ s)] :
     h (s.mulIndicator f x) = s.piecewise (h ∘ f) (const α (h 1)) x := by
   letI := Classical.decPred (· ∈ s)
-  convert s.apply_piecewise f (const α 1) (fun _ => h) (x := x)
+  convert s.apply_piecewise f (const α 1) (fun _ => h) (x := x) using 2
 #align set.comp_mul_indicator Set.comp_mulIndicator
 #align set.comp_indicator Set.comp_indicator
 
chore: Restore most of the mono attribute (#2491)

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

I think I got all of the monos.

Diff
@@ -819,8 +819,7 @@ theorem mulIndicator_le_mulIndicator (h : f a ≤ g a) : mulIndicator s f a ≤
 #align set.mul_indicator_le_mul_indicator Set.mulIndicator_le_mulIndicator
 #align set.indicator_le_indicator Set.indicator_le_indicator
 
--- Porting note: Unknown attribute mono
---attribute [mono] mulIndicator_le_mulIndicator indicator_le_indicator
+attribute [mono] mulIndicator_le_mulIndicator indicator_le_indicator
 
 @[to_additive]
 theorem mulIndicator_le_mulIndicator_of_subset (h : s ⊆ t) (hf : ∀ a, 1 ≤ f a) (a : α) :
feat: add to_additive linter checking whether additive decl exists (#1881)
  • Force the user to specify whether the additive declaration already exists.
  • Will raise a linter error if the user specified it wrongly
  • Requested on Zulip
Diff
@@ -53,7 +53,7 @@ noncomputable def indicator {M} [Zero M] (s : Set α) (f : α → M) : α → M
 #align set.indicator Set.indicator
 
 /-- `mulIndicator s f a` is `f a` if `a ∈ s`, `1` otherwise.  -/
-@[to_additive]
+@[to_additive existing]
 noncomputable def mulIndicator (s : Set α) (f : α → M) : α → M
   | x =>
     haveI := Classical.decPred (· ∈ s)
chore: scoped BigOperators notation (#1952)
Diff
@@ -33,8 +33,7 @@ arguments. This is in contrast with the design of `Pi.Single` or `Set.Piecewise`
 indicator, characteristic
 -/
 
--- Porting note: unknown namespace BigOperators
--- open BigOperators
+open BigOperators
 
 open Function
 
feat: add uppercase lean 3 linter (#1796)

Implements a linter for lean 3 declarations containing capital letters (as suggested on Zulip).

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

Diff
@@ -472,7 +472,7 @@ theorem mulIndicator_mul_compl_eq_piecewise [DecidablePred (· ∈ s)] (f g : α
   ·
     rw [piecewise_eq_of_not_mem _ _ _ h, Pi.mul_apply, Set.mulIndicator_of_not_mem h,
       Set.mulIndicator_of_mem (Set.mem_compl h), one_mul]
-#align set.mulIndicator_mul_compl_eq_piecewise Set.mulIndicator_mul_compl_eq_piecewise
+#align set.mul_indicator_mul_compl_eq_piecewise Set.mulIndicator_mul_compl_eq_piecewise
 #align set.indicator_add_compl_eq_piecewise Set.indicator_add_compl_eq_piecewise
 
 /-- `Set.mulIndicator` as a `monoidHom`. -/
feat: port Algebra.IndicatorFunction (#1752)

Some mathport warning to pay attention to, and some proofs required some work explicitly using split_ifs which was not necessary in lean3, but otherwise straightforward.

Co-authored-by: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com> Co-authored-by: ChrisHughes24 <chrishughes24@gmail.com>

Dependencies 7 + 235

236 files ported (97.1%)
103551 lines ported (97.1%)
Show graph

The unported dependencies are