data.finsupp.defsMathlib.Data.Finsupp.Defs

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)

(last sync)

feat(data/finsupp/indicator, algebra/big_operators/finsupp): add some lemmas about finsupp.indicator (#17413)

mathlib4 PR: https://github.com/leanprover-community/mathlib4/pull/2258

Diff
@@ -232,7 +232,7 @@ lemma single_apply_left {f : α → β} (hf : function.injective f)
   single (f x) y (f z) = single x y z :=
 by { classical, simp only [single_apply, hf.eq_iff] }
 
-lemma single_eq_indicator : ⇑(single a b) = set.indicator {a} (λ _, b) :=
+lemma single_eq_set_indicator : ⇑(single a b) = set.indicator {a} (λ _, b) :=
 by { classical, ext, simp [single_apply, set.indicator, @eq_comm _ a] }
 
 @[simp] lemma single_eq_same : (single a b : α →₀ M) a = b :=
@@ -242,7 +242,7 @@ by { classical, exact pi.single_eq_same a b }
 by { classical, exact pi.single_eq_of_ne' h _ }
 
 lemma single_eq_update [decidable_eq α] (a : α) (b : M) : ⇑(single a b) = function.update 0 a b :=
-by rw [single_eq_indicator, ← set.piecewise_eq_indicator, set.piecewise_singleton]
+by rw [single_eq_set_indicator, ← set.piecewise_eq_indicator, set.piecewise_singleton]
 
 lemma single_eq_pi_single [decidable_eq α] (a : α) (b : M) : ⇑(single a b) = pi.single a b :=
 single_eq_update a b
@@ -284,7 +284,7 @@ have (single a b₁ : α →₀ M) a = (single a b₂ : α →₀ M) a, by rw eq
 by rwa [single_eq_same, single_eq_same] at this
 
 lemma single_apply_eq_zero {a x : α} {b : M} : single a b x = 0 ↔ (x = a → b = 0) :=
-by simp [single_eq_indicator]
+by simp [single_eq_set_indicator]
 
 lemma single_apply_ne_zero {a x : α} {b : M} : single a b x ≠ 0 ↔ (x = a ∧ b ≠ 0) :=
 by simp [single_apply_eq_zero]
@@ -337,7 +337,7 @@ lemma support_single_disjoint {b' : M} (hb : b ≠ 0) (hb' : b' ≠ 0) {i j : α
 by rw [support_single_ne_zero _ hb, support_single_ne_zero _ hb', disjoint_singleton]
 
 @[simp] lemma single_eq_zero : single a b = 0 ↔ b = 0 :=
-by simp [ext_iff, single_eq_indicator]
+by simp [ext_iff, single_eq_set_indicator]
 
 lemma single_swap (a₁ a₂ : α) (b : M) : single a₁ b a₂ = single a₂ b a₁ :=
 by { classical, simp only [single_apply], ac_refl }

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

fix(*): add missing classical tactics and decidable arguments (#18277)

As discussed in this Zulip thread, the classical tactic is buggy in Mathlib3, and "leaks" into subsequent declarations.

This doesn't port well, as the bug is fixed in lean 4.

This PR installs a temporary hack to contain these leaks, fixes all of the correponding breakages, then reverts the hack.

The result is that the new classical tactics in the diff are not needed in Lean 3, but will be needed in Lean 4.

In a future PR, I will try committing the hack itself; but in the meantime, these files are very close to (if not beyond) the port, so the sooner they are fixed the better.

Diff
@@ -222,21 +222,21 @@ def single (a : α) (b : M) : α →₀ M :=
   end }
 
 lemma single_apply [decidable (a = a')] : single a b a' = if a = a' then b else 0 :=
-by { simp_rw [@eq_comm _ a a'], convert pi.single_apply _ _ _, }
+by { classical, simp_rw [@eq_comm _ a a'], convert pi.single_apply _ _ _, }
 
 lemma single_apply_left {f : α → β} (hf : function.injective f)
   (x z : α) (y : M) :
   single (f x) y (f z) = single x y z :=
-by simp only [single_apply, hf.eq_iff]
+by { classical, simp only [single_apply, hf.eq_iff] }
 
 lemma single_eq_indicator : ⇑(single a b) = set.indicator {a} (λ _, b) :=
-by { ext, simp [single_apply, set.indicator, @eq_comm _ a] }
+by { classical, ext, simp [single_apply, set.indicator, @eq_comm _ a] }
 
 @[simp] lemma single_eq_same : (single a b : α →₀ M) a = b :=
-pi.single_eq_same a b
+by { classical, exact pi.single_eq_same a b }
 
 @[simp] lemma single_eq_of_ne (h : a ≠ a') : (single a b : α →₀ M) a' = 0 :=
-pi.single_eq_of_ne' h _
+by { classical, exact pi.single_eq_of_ne' h _ }
 
 lemma single_eq_update [decidable_eq α] (a : α) (b : M) : ⇑(single a b) = function.update 0 a b :=
 by rw [single_eq_indicator, ← set.piecewise_eq_indicator, set.piecewise_singleton]
@@ -245,12 +245,15 @@ lemma single_eq_pi_single [decidable_eq α] (a : α) (b : M) : ⇑(single a b) =
 single_eq_update a b
 
 @[simp] lemma single_zero (a : α) : (single a 0 : α →₀ M) = 0 :=
-coe_fn_injective $ by simpa only [single_eq_update, coe_zero]
-  using function.update_eq_self a (0 : α → M)
+coe_fn_injective $ begin
+  classical,
+  simpa only [single_eq_update, coe_zero] using function.update_eq_self a (0 : α → M)
+end
 
 lemma single_of_single_apply (a a' : α) (b : M) :
   single a ((single a' b) a) = single a' (single a' b) a :=
 begin
+  classical,
   rw [single_apply, single_apply],
   ext,
   split_ifs,
@@ -259,10 +262,10 @@ begin
 end
 
 lemma support_single_ne_zero (a : α) (hb : b ≠ 0) : (single a b).support = {a} :=
-if_neg hb
+by { classical, exact if_neg hb }
 
 lemma support_single_subset : (single a b).support ⊆ {a} :=
-show ite _ _ _ ⊆ _, by split_ifs; [exact empty_subset _, exact subset.refl _]
+by { classical, show ite _ _ _ ⊆ _, split_ifs; [exact empty_subset _, exact subset.refl _] }
 
 lemma single_apply_mem (x) : single a b x ∈ ({0, b} : set M) :=
 by rcases em (a = x) with (rfl|hx); [simp, simp [single_eq_of_ne hx]]
@@ -334,7 +337,7 @@ by rw [support_single_ne_zero _ hb, support_single_ne_zero _ hb', disjoint_singl
 by simp [ext_iff, single_eq_indicator]
 
 lemma single_swap (a₁ a₂ : α) (b : M) : single a₁ b a₂ = single a₂ b a₁ :=
-by simp only [single_apply]; ac_refl
+by { classical, simp only [single_apply], ac_refl }
 
 instance [nonempty α] [nontrivial M] : nontrivial (α →₀ M) :=
 begin

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(first ported)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Scott Morrison
 -/
-import Algebra.IndicatorFunction
+import Algebra.Function.Indicator
 import GroupTheory.Submonoid.Basic
 
 #align_import data.finsupp.defs from "leanprover-community/mathlib"@"842328d9df7e96fd90fc424e115679c15fb23a71"
@@ -267,7 +267,7 @@ theorem finite_support (f : α →₀ M) : Set.Finite (Function.support f) :=
 #align finsupp.finite_support Finsupp.finite_support
 -/
 
-/- ./././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 Finsupp.support_subset_iff /-
 theorem support_subset_iff {s : Set α} {f : α →₀ M} : ↑f.support ⊆ s ↔ ∀ (a) (_ : a ∉ s), f a = 0 :=
   by
@@ -570,7 +570,7 @@ theorem support_eq_singleton {f : α →₀ M} {a : α} :
 #align finsupp.support_eq_singleton Finsupp.support_eq_singleton
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (b «expr ≠ » 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (b «expr ≠ » 0) -/
 #print Finsupp.support_eq_singleton' /-
 theorem support_eq_singleton' {f : α →₀ M} {a : α} :
     f.support = {a} ↔ ∃ (b : _) (_ : b ≠ 0), f = single a b :=
@@ -587,7 +587,7 @@ theorem card_support_eq_one {f : α →₀ M} : card f.support = 1 ↔ ∃ a, f
 #align finsupp.card_support_eq_one Finsupp.card_support_eq_one
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (b «expr ≠ » 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (b «expr ≠ » 0) -/
 #print Finsupp.card_support_eq_one' /-
 theorem card_support_eq_one' {f : α →₀ M} :
     card f.support = 1 ↔ ∃ (a : _) (b : _) (_ : b ≠ 0), f = single a b := by
Diff
@@ -229,7 +229,7 @@ theorem ext_iff' {f g : α →₀ M} : f = g ↔ f.support = g.support ∧ ∀ x
         if h : a ∈ f.support then h₂ a h
         else by
           have hf : f a = 0 := not_mem_support_iff.1 h
-          have hg : g a = 0 := by rwa [h₁, not_mem_support_iff] at h 
+          have hg : g a = 0 := by rwa [h₁, not_mem_support_iff] at h
           rw [hf, hg]⟩
 #align finsupp.ext_iff' Finsupp.ext_iff'
 -/
@@ -447,7 +447,7 @@ theorem range_single_subset : Set.range (single a b) ⊆ {0, b} :=
 theorem single_injective (a : α) : Function.Injective (single a : M → α →₀ M) := fun b₁ b₂ eq =>
   by
   have : (single a b₁ : α →₀ M) a = (single a b₂ : α →₀ M) a := by rw [Eq]
-  rwa [single_eq_same, single_eq_same] at this 
+  rwa [single_eq_same, single_eq_same] at this
 #align finsupp.single_injective Finsupp.single_injective
 -/
 
@@ -488,11 +488,11 @@ theorem single_eq_single_iff (a₁ a₂ : α) (b₁ b₂ : M) :
   · intro eq
     by_cases a₁ = a₂
     · refine' Or.inl ⟨h, _⟩
-      rwa [h, (single_injective a₂).eq_iff] at eq 
-    · rw [ext_iff] at eq 
+      rwa [h, (single_injective a₂).eq_iff] at eq
+    · rw [ext_iff] at eq
       have h₁ := Eq a₁
       have h₂ := Eq a₂
-      simp only [single_eq_same, single_eq_of_ne h, single_eq_of_ne (Ne.symm h)] at h₁ h₂ 
+      simp only [single_eq_same, single_eq_of_ne h, single_eq_of_ne (Ne.symm h)] at h₁ h₂
       exact Or.inr ⟨h₁, h₂.symm⟩
   · rintro (⟨rfl, rfl⟩ | ⟨rfl, rfl⟩)
     · rfl
@@ -1017,7 +1017,7 @@ theorem embDomain_zero (f : α ↪ β) : (embDomain f 0 : β →₀ M) = 0 :=
 theorem embDomain_apply (f : α ↪ β) (v : α →₀ M) (a : α) : embDomain f v (f a) = v a := by
   classical
   change dite _ _ _ = _
-  split_ifs <;> rw [Finset.mem_map' f] at h 
+  split_ifs <;> rw [Finset.mem_map' f] at h
   · refine' congr_arg (v : α → M) (f.inj' _)
     exact Finset.choose_property (fun a₁ => f a₁ = f a) _ _
   · exact (not_mem_support_iff.1 h).symm
@@ -1123,7 +1123,7 @@ def zipWith (f : M → N → P) (hf : f 0 0 = 0) (g₁ : α →₀ M) (g₂ : α
     (fun a => f (g₁ a) (g₂ a)) fun a H =>
     by
     simp only [mem_union, mem_support_iff, Ne]; rw [← not_and_or]
-    rintro ⟨h₁, h₂⟩; rw [h₁, h₂] at H ; exact H hf
+    rintro ⟨h₁, h₂⟩; rw [h₁, h₂] at H; exact H hf
 #align finsupp.zip_with Finsupp.zipWith
 -/
 
@@ -1296,7 +1296,7 @@ protected theorem induction {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 :
   fun s =>
   Finset.cons_induction_on s (fun f hf => by rwa [support_eq_empty.1 hf]) fun a s has ih f hf =>
     by
-    suffices p (single a (f a) + f.eraseₓ a) by rwa [single_add_erase] at this 
+    suffices p (single a (f a) + f.eraseₓ a) by rwa [single_add_erase] at this
     classical
     apply ha
     · rw [support_erase, mem_erase]; exact fun H => H.1 rfl
@@ -1313,7 +1313,7 @@ theorem induction₂ {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 : p 0)
   fun s =>
   Finset.cons_induction_on s (fun f hf => by rwa [support_eq_empty.1 hf]) fun a s has ih f hf =>
     by
-    suffices p (f.eraseₓ a + single a (f a)) by rwa [erase_add_single] at this 
+    suffices p (f.eraseₓ a + single a (f a)) by rwa [erase_add_single] at this
     classical
     apply ha
     · rw [support_erase, mem_erase]; exact fun H => H.1 rfl
Diff
@@ -874,10 +874,10 @@ theorem ofSupportFinite_coe {f : α → M} {hf : (Function.support f).Finite} :
 #align finsupp.of_support_finite_coe Finsupp.ofSupportFinite_coe
 -/
 
-#print Finsupp.canLift /-
-instance canLift : CanLift (α → M) (α →₀ M) coeFn fun f => (Function.support f).Finite
+#print Finsupp.instCanLift /-
+instance instCanLift : CanLift (α → M) (α →₀ M) coeFn fun f => (Function.support f).Finite
     where prf f hf := ⟨ofSupportFinite f hf, rfl⟩
-#align finsupp.can_lift Finsupp.canLift
+#align finsupp.can_lift Finsupp.instCanLift
 -/
 
 end OfSupportFinite
@@ -1430,12 +1430,12 @@ section AddMonoid
 
 variable [AddMonoid M]
 
-#print Finsupp.hasNatScalar /-
+#print Finsupp.instNatSMul /-
 /-- Note the general `finsupp.has_smul` instance doesn't apply as `ℕ` is not distributive
 unless `β i`'s addition is commutative. -/
-instance hasNatScalar : SMul ℕ (α →₀ M) :=
+instance instNatSMul : SMul ℕ (α →₀ M) :=
   ⟨fun n v => v.mapRange ((· • ·) n) (nsmul_zero _)⟩
-#align finsupp.has_nat_scalar Finsupp.hasNatScalar
+#align finsupp.has_nat_scalar Finsupp.instNatSMul
 -/
 
 instance : AddMonoid (α →₀ M) :=
@@ -1508,12 +1508,12 @@ theorem mapRange_sub' [AddGroup G] [SubtractionMonoid H] [AddMonoidHomClass β G
 #align finsupp.map_range_sub' Finsupp.mapRange_sub'
 -/
 
-#print Finsupp.hasIntScalar /-
+#print Finsupp.instIntSMul /-
 /-- Note the general `finsupp.has_smul` instance doesn't apply as `ℤ` is not distributive
 unless `β i`'s addition is commutative. -/
-instance hasIntScalar [AddGroup G] : SMul ℤ (α →₀ G) :=
+instance instIntSMul [AddGroup G] : SMul ℤ (α →₀ G) :=
   ⟨fun n v => v.mapRange ((· • ·) n) (zsmul_zero _)⟩
-#align finsupp.has_int_scalar Finsupp.hasIntScalar
+#align finsupp.has_int_scalar Finsupp.instIntSMul
 -/
 
 instance [AddGroup G] : AddGroup (α →₀ G) :=
Diff
@@ -223,7 +223,14 @@ theorem coe_eq_zero {f : α →₀ M} : (f : α → M) = 0 ↔ f = 0 := by rw [
 
 #print Finsupp.ext_iff' /-
 theorem ext_iff' {f g : α →₀ M} : f = g ↔ f.support = g.support ∧ ∀ x ∈ f.support, f x = g x :=
-  ⟨fun h => h ▸ ⟨rfl, fun _ _ => rfl⟩, fun ⟨h₁, h₂⟩ => ext fun a => by classical⟩
+  ⟨fun h => h ▸ ⟨rfl, fun _ _ => rfl⟩, fun ⟨h₁, h₂⟩ =>
+    ext fun a => by
+      classical exact
+        if h : a ∈ f.support then h₂ a h
+        else by
+          have hf : f a = 0 := not_mem_support_iff.1 h
+          have hg : g a = 0 := by rwa [h₁, not_mem_support_iff] at h 
+          rw [hf, hg]⟩
 #align finsupp.ext_iff' Finsupp.ext_iff'
 -/
 
@@ -330,35 +337,49 @@ def single (a : α) (b : M) : α →₀ M
   toFun :=
     haveI := Classical.decEq α
     Pi.single a b
-  mem_support_toFun a' := by classical
+  mem_support_toFun a' := by
+    classical
+    obtain rfl | hb := eq_or_ne b 0
+    · simp
+    rw [if_neg hb, mem_singleton]
+    obtain rfl | ha := eq_or_ne a' a
+    · simp [hb]
+    simp [Pi.single_eq_of_ne', ha]
 #align finsupp.single Finsupp.single
 -/
 
 #print Finsupp.single_apply /-
-theorem single_apply [Decidable (a = a')] : single a b a' = if a = a' then b else 0 := by classical
+theorem single_apply [Decidable (a = a')] : single a b a' = if a = a' then b else 0 := by
+  classical
+  simp_rw [@eq_comm _ a a']
+  convert Pi.single_apply _ _ _
 #align finsupp.single_apply Finsupp.single_apply
 -/
 
 #print Finsupp.single_apply_left /-
 theorem single_apply_left {f : α → β} (hf : Function.Injective f) (x z : α) (y : M) :
-    single (f x) y (f z) = single x y z := by classical
+    single (f x) y (f z) = single x y z := by classical simp only [single_apply, hf.eq_iff]
 #align finsupp.single_apply_left Finsupp.single_apply_left
 -/
 
 #print Finsupp.single_eq_set_indicator /-
-theorem single_eq_set_indicator : ⇑(single a b) = Set.indicator {a} fun _ => b := by classical
+theorem single_eq_set_indicator : ⇑(single a b) = Set.indicator {a} fun _ => b := by
+  classical
+  ext
+  simp [single_apply, Set.indicator, @eq_comm _ a]
 #align finsupp.single_eq_set_indicator Finsupp.single_eq_set_indicator
 -/
 
 #print Finsupp.single_eq_same /-
 @[simp]
-theorem single_eq_same : (single a b : α →₀ M) a = b := by classical
+theorem single_eq_same : (single a b : α →₀ M) a = b := by classical exact Pi.single_eq_same a b
 #align finsupp.single_eq_same Finsupp.single_eq_same
 -/
 
 #print Finsupp.single_eq_of_ne /-
 @[simp]
-theorem single_eq_of_ne (h : a ≠ a') : (single a b : α →₀ M) a' = 0 := by classical
+theorem single_eq_of_ne (h : a ≠ a') : (single a b : α →₀ M) a' = 0 := by
+  classical exact Pi.single_eq_of_ne' h _
 #align finsupp.single_eq_of_ne Finsupp.single_eq_of_ne
 -/
 
@@ -377,23 +398,34 @@ theorem single_eq_pi_single [DecidableEq α] (a : α) (b : M) : ⇑(single a b)
 #print Finsupp.single_zero /-
 @[simp]
 theorem single_zero (a : α) : (single a 0 : α →₀ M) = 0 :=
-  coeFn_injective <| by classical
+  coeFn_injective <| by
+    classical simpa only [single_eq_update, coe_zero] using Function.update_eq_self a (0 : α → M)
 #align finsupp.single_zero Finsupp.single_zero
 -/
 
 #print Finsupp.single_of_single_apply /-
 theorem single_of_single_apply (a a' : α) (b : M) :
-    single a ((single a' b) a) = single a' (single a' b) a := by classical
+    single a ((single a' b) a) = single a' (single a' b) a := by
+  classical
+  rw [single_apply, single_apply]
+  ext
+  split_ifs
+  · rw [h]
+  · rw [zero_apply, single_apply, if_t_t]
 #align finsupp.single_of_single_apply Finsupp.single_of_single_apply
 -/
 
 #print Finsupp.support_single_ne_zero /-
-theorem support_single_ne_zero (a : α) (hb : b ≠ 0) : (single a b).support = {a} := by classical
+theorem support_single_ne_zero (a : α) (hb : b ≠ 0) : (single a b).support = {a} := by
+  classical exact if_neg hb
 #align finsupp.support_single_ne_zero Finsupp.support_single_ne_zero
 -/
 
 #print Finsupp.support_single_subset /-
-theorem support_single_subset : (single a b).support ⊆ {a} := by classical
+theorem support_single_subset : (single a b).support ⊆ {a} := by
+  classical
+  show ite _ _ _ ⊆ _
+  split_ifs <;> [exact empty_subset _; exact subset.refl _]
 #align finsupp.support_single_subset Finsupp.support_single_subset
 -/
 
@@ -502,7 +534,10 @@ theorem single_eq_zero : single a b = 0 ↔ b = 0 := by simp [ext_iff, single_eq
 -/
 
 #print Finsupp.single_swap /-
-theorem single_swap (a₁ a₂ : α) (b : M) : single a₁ b a₂ = single a₂ b a₁ := by classical
+theorem single_swap (a₁ a₂ : α) (b : M) : single a₁ b a₂ = single a₂ b a₁ := by
+  classical
+  simp only [single_apply]
+  ac_rfl
 #align finsupp.single_swap Finsupp.single_swap
 -/
 
@@ -641,13 +676,20 @@ theorem coe_update [DecidableEq α] : (f.update a b : α → M) = Function.updat
 
 #print Finsupp.update_self /-
 @[simp]
-theorem update_self : f.update a (f a) = f := by classical
+theorem update_self : f.update a (f a) = f := by
+  classical
+  ext
+  simp
 #align finsupp.update_self Finsupp.update_self
 -/
 
 #print Finsupp.zero_update /-
 @[simp]
-theorem zero_update : update 0 a b = single a b := by classical
+theorem zero_update : update 0 a b = single a b := by
+  classical
+  ext
+  rw [single_eq_update]
+  rfl
 #align finsupp.zero_update Finsupp.zero_update
 -/
 
@@ -669,7 +711,7 @@ variable {b}
 
 #print Finsupp.support_update_ne_zero /-
 theorem support_update_ne_zero [DecidableEq α] (h : b ≠ 0) :
-    support (f.update a b) = insert a f.support := by classical
+    support (f.update a b) = insert a f.support := by classical convert if_neg h
 #align finsupp.support_update_ne_zero Finsupp.support_update_ne_zero
 -/
 
@@ -716,7 +758,8 @@ theorem erase_same {a : α} {f : α →₀ M} : (f.eraseₓ a) a = 0 := by conve
 
 #print Finsupp.erase_ne /-
 @[simp]
-theorem erase_ne {a a' : α} {f : α →₀ M} (h : a' ≠ a) : (f.eraseₓ a) a' = f a' := by classical
+theorem erase_ne {a a' : α} {f : α →₀ M} (h : a' ≠ a) : (f.eraseₓ a) a' = f a' := by
+  classical convert if_neg h
 #align finsupp.erase_ne Finsupp.erase_ne
 -/
 
@@ -751,7 +794,8 @@ theorem erase_of_not_mem_support {f : α →₀ M} {a} (haf : a ∉ f.support) :
 
 #print Finsupp.erase_zero /-
 @[simp]
-theorem erase_zero (a : α) : erase a (0 : α →₀ M) = 0 := by classical
+theorem erase_zero (a : α) : erase a (0 : α →₀ M) = 0 := by
+  classical rw [← support_eq_empty, support_erase, support_zero, erase_empty]
 #align finsupp.erase_zero Finsupp.erase_zero
 -/
 
@@ -905,7 +949,8 @@ theorem support_mapRange {f : M → N} {hf : f 0 = 0} {g : α →₀ M} :
 @[simp]
 theorem mapRange_single {f : M → N} {hf : f 0 = 0} {a : α} {b : M} :
     mapRange f hf (single a b) = single a (f b) :=
-  ext fun a' => by classical
+  ext fun a' => by
+    classical simpa only [single_eq_pi_single] using Pi.apply_single _ (fun _ => hf) a _ a'
 #align finsupp.map_range_single Finsupp.mapRange_single
 -/
 
@@ -969,13 +1014,23 @@ theorem embDomain_zero (f : α ↪ β) : (embDomain f 0 : β →₀ M) = 0 :=
 
 #print Finsupp.embDomain_apply /-
 @[simp]
-theorem embDomain_apply (f : α ↪ β) (v : α →₀ M) (a : α) : embDomain f v (f a) = v a := by classical
+theorem embDomain_apply (f : α ↪ β) (v : α →₀ M) (a : α) : embDomain f v (f a) = v a := by
+  classical
+  change dite _ _ _ = _
+  split_ifs <;> rw [Finset.mem_map' f] at h 
+  · refine' congr_arg (v : α → M) (f.inj' _)
+    exact Finset.choose_property (fun a₁ => f a₁ = f a) _ _
+  · exact (not_mem_support_iff.1 h).symm
 #align finsupp.emb_domain_apply Finsupp.embDomain_apply
 -/
 
 #print Finsupp.embDomain_notin_range /-
 theorem embDomain_notin_range (f : α ↪ β) (v : α →₀ M) (a : β) (h : a ∉ Set.range f) :
-    embDomain f v a = 0 := by classical
+    embDomain f v a = 0 := by
+  classical
+  refine' dif_neg (mt (fun h => _) h)
+  rcases Finset.mem_map.1 h with ⟨a, h, rfl⟩
+  exact Set.mem_range_self a
 #align finsupp.emb_domain_notin_range Finsupp.embDomain_notin_range
 -/
 
@@ -1013,14 +1068,38 @@ theorem embDomain_mapRange (f : α ↪ β) (g : M → N) (p : α →₀ M) (hg :
 
 #print Finsupp.single_of_embDomain_single /-
 theorem single_of_embDomain_single (l : α →₀ M) (f : α ↪ β) (a : β) (b : M) (hb : b ≠ 0)
-    (h : l.embDomain f = single a b) : ∃ x, l = single x b ∧ f x = a := by classical
+    (h : l.embDomain f = single a b) : ∃ x, l = single x b ∧ f x = a := by
+  classical
+  have h_map_support : Finset.map f l.support = {a} := by
+    rw [← support_emb_domain, h, support_single_ne_zero _ hb] <;> rfl
+  have ha : a ∈ Finset.map f l.support := by simp only [h_map_support, Finset.mem_singleton]
+  rcases Finset.mem_map.1 ha with ⟨c, hc₁, hc₂⟩
+  use c
+  constructor
+  · ext d
+    rw [← emb_domain_apply f l, h]
+    by_cases h_cases : c = d
+    · simp only [Eq.symm h_cases, hc₂, single_eq_same]
+    · rw [single_apply, single_apply, if_neg, if_neg h_cases]
+      by_contra hfd
+      exact h_cases (f.injective (hc₂.trans hfd))
+  · exact hc₂
 #align finsupp.single_of_emb_domain_single Finsupp.single_of_embDomain_single
 -/
 
 #print Finsupp.embDomain_single /-
 @[simp]
 theorem embDomain_single (f : α ↪ β) (a : α) (m : M) : embDomain f (single a m) = single (f a) m :=
-  by classical
+  by
+  classical
+  ext b
+  by_cases h : b ∈ Set.range f
+  · rcases h with ⟨a', rfl⟩
+    simp [single_apply]
+  · simp only [emb_domain_notin_range, h, single_apply, not_false_iff]
+    rw [if_neg]
+    rintro rfl
+    simpa using h
 #align finsupp.emb_domain_single Finsupp.embDomain_single
 -/
 
@@ -1156,13 +1235,23 @@ noncomputable def coeFnAddHom : (α →₀ M) →+ α → M
 
 #print Finsupp.update_eq_single_add_erase /-
 theorem update_eq_single_add_erase (f : α →₀ M) (a : α) (b : M) :
-    f.update a b = single a b + f.eraseₓ a := by classical
+    f.update a b = single a b + f.eraseₓ a := by
+  classical
+  ext j
+  rcases eq_or_ne a j with (rfl | h)
+  · simp
+  · simp [Function.update_noteq h.symm, single_apply, h, erase_ne, h.symm]
 #align finsupp.update_eq_single_add_erase Finsupp.update_eq_single_add_erase
 -/
 
 #print Finsupp.update_eq_erase_add_single /-
 theorem update_eq_erase_add_single (f : α →₀ M) (a : α) (b : M) :
-    f.update a b = f.eraseₓ a + single a b := by classical
+    f.update a b = f.eraseₓ a + single a b := by
+  classical
+  ext j
+  rcases eq_or_ne a j with (rfl | h)
+  · simp
+  · simp [Function.update_noteq h.symm, single_apply, h, erase_ne, h.symm]
 #align finsupp.update_eq_erase_add_single Finsupp.update_eq_erase_add_single
 -/
 
@@ -1209,6 +1298,11 @@ protected theorem induction {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 :
     by
     suffices p (single a (f a) + f.eraseₓ a) by rwa [single_add_erase] at this 
     classical
+    apply ha
+    · rw [support_erase, mem_erase]; exact fun H => H.1 rfl
+    · rw [← mem_support_iff, hf]; exact mem_cons_self _ _
+    · apply ih _ _
+      rw [support_erase, hf, Finset.erase_cons]
 #align finsupp.induction Finsupp.induction
 -/
 
@@ -1221,6 +1315,12 @@ theorem induction₂ {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 : p 0)
     by
     suffices p (f.eraseₓ a + single a (f a)) by rwa [erase_add_single] at this 
     classical
+    apply ha
+    · rw [support_erase, mem_erase]; exact fun H => H.1 rfl
+    · rw [← mem_support_iff, hf]
+      exact mem_cons_self _ _
+    · apply ih _ _
+      rw [support_erase, hf, Finset.erase_cons]
 #align finsupp.induction₂ Finsupp.induction₂
 -/
 
@@ -1428,7 +1528,10 @@ theorem single_add_single_eq_single_add_single [AddCommMonoid M] {k l m n : α}
     (hu : u ≠ 0) (hv : v ≠ 0) :
     single k u + single l v = single m u + single n v ↔
       k = m ∧ l = n ∨ u = v ∧ k = n ∧ l = m ∨ u + v = 0 ∧ k = l ∧ m = n :=
-  by classical
+  by
+  classical
+  simp_rw [DFunLike.ext_iff, coe_add, single_eq_pi_single, ← funext_iff]
+  exact Pi.single_add_single_eq_single_add_single hu hv
 #align finsupp.single_add_single_eq_single_add_single Finsupp.single_add_single_eq_single_add_single
 -/
 
Diff
@@ -223,14 +223,7 @@ theorem coe_eq_zero {f : α →₀ M} : (f : α → M) = 0 ↔ f = 0 := by rw [
 
 #print Finsupp.ext_iff' /-
 theorem ext_iff' {f g : α →₀ M} : f = g ↔ f.support = g.support ∧ ∀ x ∈ f.support, f x = g x :=
-  ⟨fun h => h ▸ ⟨rfl, fun _ _ => rfl⟩, fun ⟨h₁, h₂⟩ =>
-    ext fun a => by
-      classical exact
-        if h : a ∈ f.support then h₂ a h
-        else by
-          have hf : f a = 0 := not_mem_support_iff.1 h
-          have hg : g a = 0 := by rwa [h₁, not_mem_support_iff] at h 
-          rw [hf, hg]⟩
+  ⟨fun h => h ▸ ⟨rfl, fun _ _ => rfl⟩, fun ⟨h₁, h₂⟩ => ext fun a => by classical⟩
 #align finsupp.ext_iff' Finsupp.ext_iff'
 -/
 
@@ -337,49 +330,35 @@ def single (a : α) (b : M) : α →₀ M
   toFun :=
     haveI := Classical.decEq α
     Pi.single a b
-  mem_support_toFun a' := by
-    classical
-    obtain rfl | hb := eq_or_ne b 0
-    · simp
-    rw [if_neg hb, mem_singleton]
-    obtain rfl | ha := eq_or_ne a' a
-    · simp [hb]
-    simp [Pi.single_eq_of_ne', ha]
+  mem_support_toFun a' := by classical
 #align finsupp.single Finsupp.single
 -/
 
 #print Finsupp.single_apply /-
-theorem single_apply [Decidable (a = a')] : single a b a' = if a = a' then b else 0 := by
-  classical
-  simp_rw [@eq_comm _ a a']
-  convert Pi.single_apply _ _ _
+theorem single_apply [Decidable (a = a')] : single a b a' = if a = a' then b else 0 := by classical
 #align finsupp.single_apply Finsupp.single_apply
 -/
 
 #print Finsupp.single_apply_left /-
 theorem single_apply_left {f : α → β} (hf : Function.Injective f) (x z : α) (y : M) :
-    single (f x) y (f z) = single x y z := by classical simp only [single_apply, hf.eq_iff]
+    single (f x) y (f z) = single x y z := by classical
 #align finsupp.single_apply_left Finsupp.single_apply_left
 -/
 
 #print Finsupp.single_eq_set_indicator /-
-theorem single_eq_set_indicator : ⇑(single a b) = Set.indicator {a} fun _ => b := by
-  classical
-  ext
-  simp [single_apply, Set.indicator, @eq_comm _ a]
+theorem single_eq_set_indicator : ⇑(single a b) = Set.indicator {a} fun _ => b := by classical
 #align finsupp.single_eq_set_indicator Finsupp.single_eq_set_indicator
 -/
 
 #print Finsupp.single_eq_same /-
 @[simp]
-theorem single_eq_same : (single a b : α →₀ M) a = b := by classical exact Pi.single_eq_same a b
+theorem single_eq_same : (single a b : α →₀ M) a = b := by classical
 #align finsupp.single_eq_same Finsupp.single_eq_same
 -/
 
 #print Finsupp.single_eq_of_ne /-
 @[simp]
-theorem single_eq_of_ne (h : a ≠ a') : (single a b : α →₀ M) a' = 0 := by
-  classical exact Pi.single_eq_of_ne' h _
+theorem single_eq_of_ne (h : a ≠ a') : (single a b : α →₀ M) a' = 0 := by classical
 #align finsupp.single_eq_of_ne Finsupp.single_eq_of_ne
 -/
 
@@ -398,34 +377,23 @@ theorem single_eq_pi_single [DecidableEq α] (a : α) (b : M) : ⇑(single a b)
 #print Finsupp.single_zero /-
 @[simp]
 theorem single_zero (a : α) : (single a 0 : α →₀ M) = 0 :=
-  coeFn_injective <| by
-    classical simpa only [single_eq_update, coe_zero] using Function.update_eq_self a (0 : α → M)
+  coeFn_injective <| by classical
 #align finsupp.single_zero Finsupp.single_zero
 -/
 
 #print Finsupp.single_of_single_apply /-
 theorem single_of_single_apply (a a' : α) (b : M) :
-    single a ((single a' b) a) = single a' (single a' b) a := by
-  classical
-  rw [single_apply, single_apply]
-  ext
-  split_ifs
-  · rw [h]
-  · rw [zero_apply, single_apply, if_t_t]
+    single a ((single a' b) a) = single a' (single a' b) a := by classical
 #align finsupp.single_of_single_apply Finsupp.single_of_single_apply
 -/
 
 #print Finsupp.support_single_ne_zero /-
-theorem support_single_ne_zero (a : α) (hb : b ≠ 0) : (single a b).support = {a} := by
-  classical exact if_neg hb
+theorem support_single_ne_zero (a : α) (hb : b ≠ 0) : (single a b).support = {a} := by classical
 #align finsupp.support_single_ne_zero Finsupp.support_single_ne_zero
 -/
 
 #print Finsupp.support_single_subset /-
-theorem support_single_subset : (single a b).support ⊆ {a} := by
-  classical
-  show ite _ _ _ ⊆ _
-  split_ifs <;> [exact empty_subset _; exact subset.refl _]
+theorem support_single_subset : (single a b).support ⊆ {a} := by classical
 #align finsupp.support_single_subset Finsupp.support_single_subset
 -/
 
@@ -534,10 +502,7 @@ theorem single_eq_zero : single a b = 0 ↔ b = 0 := by simp [ext_iff, single_eq
 -/
 
 #print Finsupp.single_swap /-
-theorem single_swap (a₁ a₂ : α) (b : M) : single a₁ b a₂ = single a₂ b a₁ := by
-  classical
-  simp only [single_apply]
-  ac_rfl
+theorem single_swap (a₁ a₂ : α) (b : M) : single a₁ b a₂ = single a₂ b a₁ := by classical
 #align finsupp.single_swap Finsupp.single_swap
 -/
 
@@ -676,20 +641,13 @@ theorem coe_update [DecidableEq α] : (f.update a b : α → M) = Function.updat
 
 #print Finsupp.update_self /-
 @[simp]
-theorem update_self : f.update a (f a) = f := by
-  classical
-  ext
-  simp
+theorem update_self : f.update a (f a) = f := by classical
 #align finsupp.update_self Finsupp.update_self
 -/
 
 #print Finsupp.zero_update /-
 @[simp]
-theorem zero_update : update 0 a b = single a b := by
-  classical
-  ext
-  rw [single_eq_update]
-  rfl
+theorem zero_update : update 0 a b = single a b := by classical
 #align finsupp.zero_update Finsupp.zero_update
 -/
 
@@ -711,7 +669,7 @@ variable {b}
 
 #print Finsupp.support_update_ne_zero /-
 theorem support_update_ne_zero [DecidableEq α] (h : b ≠ 0) :
-    support (f.update a b) = insert a f.support := by classical convert if_neg h
+    support (f.update a b) = insert a f.support := by classical
 #align finsupp.support_update_ne_zero Finsupp.support_update_ne_zero
 -/
 
@@ -758,8 +716,7 @@ theorem erase_same {a : α} {f : α →₀ M} : (f.eraseₓ a) a = 0 := by conve
 
 #print Finsupp.erase_ne /-
 @[simp]
-theorem erase_ne {a a' : α} {f : α →₀ M} (h : a' ≠ a) : (f.eraseₓ a) a' = f a' := by
-  classical convert if_neg h
+theorem erase_ne {a a' : α} {f : α →₀ M} (h : a' ≠ a) : (f.eraseₓ a) a' = f a' := by classical
 #align finsupp.erase_ne Finsupp.erase_ne
 -/
 
@@ -794,8 +751,7 @@ theorem erase_of_not_mem_support {f : α →₀ M} {a} (haf : a ∉ f.support) :
 
 #print Finsupp.erase_zero /-
 @[simp]
-theorem erase_zero (a : α) : erase a (0 : α →₀ M) = 0 := by
-  classical rw [← support_eq_empty, support_erase, support_zero, erase_empty]
+theorem erase_zero (a : α) : erase a (0 : α →₀ M) = 0 := by classical
 #align finsupp.erase_zero Finsupp.erase_zero
 -/
 
@@ -949,8 +905,7 @@ theorem support_mapRange {f : M → N} {hf : f 0 = 0} {g : α →₀ M} :
 @[simp]
 theorem mapRange_single {f : M → N} {hf : f 0 = 0} {a : α} {b : M} :
     mapRange f hf (single a b) = single a (f b) :=
-  ext fun a' => by
-    classical simpa only [single_eq_pi_single] using Pi.apply_single _ (fun _ => hf) a _ a'
+  ext fun a' => by classical
 #align finsupp.map_range_single Finsupp.mapRange_single
 -/
 
@@ -1014,23 +969,13 @@ theorem embDomain_zero (f : α ↪ β) : (embDomain f 0 : β →₀ M) = 0 :=
 
 #print Finsupp.embDomain_apply /-
 @[simp]
-theorem embDomain_apply (f : α ↪ β) (v : α →₀ M) (a : α) : embDomain f v (f a) = v a := by
-  classical
-  change dite _ _ _ = _
-  split_ifs <;> rw [Finset.mem_map' f] at h 
-  · refine' congr_arg (v : α → M) (f.inj' _)
-    exact Finset.choose_property (fun a₁ => f a₁ = f a) _ _
-  · exact (not_mem_support_iff.1 h).symm
+theorem embDomain_apply (f : α ↪ β) (v : α →₀ M) (a : α) : embDomain f v (f a) = v a := by classical
 #align finsupp.emb_domain_apply Finsupp.embDomain_apply
 -/
 
 #print Finsupp.embDomain_notin_range /-
 theorem embDomain_notin_range (f : α ↪ β) (v : α →₀ M) (a : β) (h : a ∉ Set.range f) :
-    embDomain f v a = 0 := by
-  classical
-  refine' dif_neg (mt (fun h => _) h)
-  rcases Finset.mem_map.1 h with ⟨a, h, rfl⟩
-  exact Set.mem_range_self a
+    embDomain f v a = 0 := by classical
 #align finsupp.emb_domain_notin_range Finsupp.embDomain_notin_range
 -/
 
@@ -1068,38 +1013,14 @@ theorem embDomain_mapRange (f : α ↪ β) (g : M → N) (p : α →₀ M) (hg :
 
 #print Finsupp.single_of_embDomain_single /-
 theorem single_of_embDomain_single (l : α →₀ M) (f : α ↪ β) (a : β) (b : M) (hb : b ≠ 0)
-    (h : l.embDomain f = single a b) : ∃ x, l = single x b ∧ f x = a := by
-  classical
-  have h_map_support : Finset.map f l.support = {a} := by
-    rw [← support_emb_domain, h, support_single_ne_zero _ hb] <;> rfl
-  have ha : a ∈ Finset.map f l.support := by simp only [h_map_support, Finset.mem_singleton]
-  rcases Finset.mem_map.1 ha with ⟨c, hc₁, hc₂⟩
-  use c
-  constructor
-  · ext d
-    rw [← emb_domain_apply f l, h]
-    by_cases h_cases : c = d
-    · simp only [Eq.symm h_cases, hc₂, single_eq_same]
-    · rw [single_apply, single_apply, if_neg, if_neg h_cases]
-      by_contra hfd
-      exact h_cases (f.injective (hc₂.trans hfd))
-  · exact hc₂
+    (h : l.embDomain f = single a b) : ∃ x, l = single x b ∧ f x = a := by classical
 #align finsupp.single_of_emb_domain_single Finsupp.single_of_embDomain_single
 -/
 
 #print Finsupp.embDomain_single /-
 @[simp]
 theorem embDomain_single (f : α ↪ β) (a : α) (m : M) : embDomain f (single a m) = single (f a) m :=
-  by
-  classical
-  ext b
-  by_cases h : b ∈ Set.range f
-  · rcases h with ⟨a', rfl⟩
-    simp [single_apply]
-  · simp only [emb_domain_notin_range, h, single_apply, not_false_iff]
-    rw [if_neg]
-    rintro rfl
-    simpa using h
+  by classical
 #align finsupp.emb_domain_single Finsupp.embDomain_single
 -/
 
@@ -1235,23 +1156,13 @@ noncomputable def coeFnAddHom : (α →₀ M) →+ α → M
 
 #print Finsupp.update_eq_single_add_erase /-
 theorem update_eq_single_add_erase (f : α →₀ M) (a : α) (b : M) :
-    f.update a b = single a b + f.eraseₓ a := by
-  classical
-  ext j
-  rcases eq_or_ne a j with (rfl | h)
-  · simp
-  · simp [Function.update_noteq h.symm, single_apply, h, erase_ne, h.symm]
+    f.update a b = single a b + f.eraseₓ a := by classical
 #align finsupp.update_eq_single_add_erase Finsupp.update_eq_single_add_erase
 -/
 
 #print Finsupp.update_eq_erase_add_single /-
 theorem update_eq_erase_add_single (f : α →₀ M) (a : α) (b : M) :
-    f.update a b = f.eraseₓ a + single a b := by
-  classical
-  ext j
-  rcases eq_or_ne a j with (rfl | h)
-  · simp
-  · simp [Function.update_noteq h.symm, single_apply, h, erase_ne, h.symm]
+    f.update a b = f.eraseₓ a + single a b := by classical
 #align finsupp.update_eq_erase_add_single Finsupp.update_eq_erase_add_single
 -/
 
@@ -1298,11 +1209,6 @@ protected theorem induction {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 :
     by
     suffices p (single a (f a) + f.eraseₓ a) by rwa [single_add_erase] at this 
     classical
-    apply ha
-    · rw [support_erase, mem_erase]; exact fun H => H.1 rfl
-    · rw [← mem_support_iff, hf]; exact mem_cons_self _ _
-    · apply ih _ _
-      rw [support_erase, hf, Finset.erase_cons]
 #align finsupp.induction Finsupp.induction
 -/
 
@@ -1315,12 +1221,6 @@ theorem induction₂ {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 : p 0)
     by
     suffices p (f.eraseₓ a + single a (f a)) by rwa [erase_add_single] at this 
     classical
-    apply ha
-    · rw [support_erase, mem_erase]; exact fun H => H.1 rfl
-    · rw [← mem_support_iff, hf]
-      exact mem_cons_self _ _
-    · apply ih _ _
-      rw [support_erase, hf, Finset.erase_cons]
 #align finsupp.induction₂ Finsupp.induction₂
 -/
 
@@ -1528,10 +1428,7 @@ theorem single_add_single_eq_single_add_single [AddCommMonoid M] {k l m n : α}
     (hu : u ≠ 0) (hv : v ≠ 0) :
     single k u + single l v = single m u + single n v ↔
       k = m ∧ l = n ∨ u = v ∧ k = n ∧ l = m ∨ u + v = 0 ∧ k = l ∧ m = n :=
-  by
-  classical
-  simp_rw [DFunLike.ext_iff, coe_add, single_eq_pi_single, ← funext_iff]
-  exact Pi.single_add_single_eq_single_add_single hu hv
+  by classical
 #align finsupp.single_add_single_eq_single_add_single Finsupp.single_add_single_eq_single_add_single
 -/
 
Diff
@@ -112,14 +112,14 @@ section Basic
 
 variable [Zero M]
 
-#print Finsupp.instDFunLike /-
-instance instDFunLike : DFunLike (α →₀ M) α fun _ => M :=
+#print Finsupp.instFunLike /-
+instance instFunLike : DFunLike (α →₀ M) α fun _ => M :=
   ⟨toFun, by
     rintro ⟨s, f, hf⟩ ⟨t, g, hg⟩ (rfl : f = g)
     congr
     ext a
     exact (hf _).trans (hg _).symm⟩
-#align finsupp.fun_like Finsupp.instDFunLike
+#align finsupp.fun_like Finsupp.instFunLike
 -/
 
 /-- Helper instance for when there are too many metavariables to apply `fun_like.has_coe_to_fun`
Diff
@@ -112,53 +112,53 @@ section Basic
 
 variable [Zero M]
 
-#print Finsupp.funLike /-
-instance funLike : FunLike (α →₀ M) α fun _ => M :=
+#print Finsupp.instDFunLike /-
+instance instDFunLike : DFunLike (α →₀ M) α fun _ => M :=
   ⟨toFun, by
     rintro ⟨s, f, hf⟩ ⟨t, g, hg⟩ (rfl : f = g)
     congr
     ext a
     exact (hf _).trans (hg _).symm⟩
-#align finsupp.fun_like Finsupp.funLike
+#align finsupp.fun_like Finsupp.instDFunLike
 -/
 
 /-- Helper instance for when there are too many metavariables to apply `fun_like.has_coe_to_fun`
 directly. -/
 instance : CoeFun (α →₀ M) fun _ => α → M :=
-  FunLike.hasCoeToFun
+  DFunLike.hasCoeToFun
 
 #print Finsupp.ext /-
 @[ext]
 theorem ext {f g : α →₀ M} (h : ∀ a, f a = g a) : f = g :=
-  FunLike.ext _ _ h
+  DFunLike.ext _ _ h
 #align finsupp.ext Finsupp.ext
 -/
 
 #print Finsupp.ext_iff /-
 /-- Deprecated. Use `fun_like.ext_iff` instead. -/
 theorem ext_iff {f g : α →₀ M} : f = g ↔ ∀ a, f a = g a :=
-  FunLike.ext_iff
+  DFunLike.ext_iff
 #align finsupp.ext_iff Finsupp.ext_iff
 -/
 
 #print Finsupp.coeFn_inj /-
 /-- Deprecated. Use `fun_like.coe_fn_eq` instead. -/
 theorem coeFn_inj {f g : α →₀ M} : (f : α → M) = g ↔ f = g :=
-  FunLike.coe_fn_eq
+  DFunLike.coe_fn_eq
 #align finsupp.coe_fn_inj Finsupp.coeFn_inj
 -/
 
 #print Finsupp.coeFn_injective /-
 /-- Deprecated. Use `fun_like.coe_injective` instead. -/
 theorem coeFn_injective : @Function.Injective (α →₀ M) (α → M) coeFn :=
-  FunLike.coe_injective
+  DFunLike.coe_injective
 #align finsupp.coe_fn_injective Finsupp.coeFn_injective
 -/
 
 #print Finsupp.congr_fun /-
 /-- Deprecated. Use `fun_like.congr_fun` instead. -/
 theorem congr_fun {f g : α →₀ M} (h : f = g) (a : α) : f a = g a :=
-  FunLike.congr_fun h _
+  DFunLike.congr_fun h _
 #align finsupp.congr_fun Finsupp.congr_fun
 -/
 
@@ -1200,7 +1200,7 @@ theorem single_add (a : α) (b₁ b₂ : M) : single a (b₁ + b₂) = single a
 -/
 
 instance : AddZeroClass (α →₀ M) :=
-  FunLike.coe_injective.AddZeroClass _ coe_zero coe_add
+  DFunLike.coe_injective.AddZeroClass _ coe_zero coe_add
 
 #print Finsupp.singleAddHom /-
 /-- `finsupp.single` as an `add_monoid_hom`.
@@ -1439,12 +1439,12 @@ instance hasNatScalar : SMul ℕ (α →₀ M) :=
 -/
 
 instance : AddMonoid (α →₀ M) :=
-  FunLike.coe_injective.AddMonoid _ coe_zero coe_add fun _ _ => rfl
+  DFunLike.coe_injective.AddMonoid _ coe_zero coe_add fun _ _ => rfl
 
 end AddMonoid
 
 instance [AddCommMonoid M] : AddCommMonoid (α →₀ M) :=
-  FunLike.coe_injective.AddCommMonoid _ coe_zero coe_add fun _ _ => rfl
+  DFunLike.coe_injective.AddCommMonoid _ coe_zero coe_add fun _ _ => rfl
 
 instance [NegZeroClass G] : Neg (α →₀ G) :=
   ⟨mapRange Neg.neg neg_zero⟩
@@ -1517,10 +1517,10 @@ instance hasIntScalar [AddGroup G] : SMul ℤ (α →₀ G) :=
 -/
 
 instance [AddGroup G] : AddGroup (α →₀ G) :=
-  FunLike.coe_injective.AddGroup _ coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl) fun _ _ => rfl
+  DFunLike.coe_injective.AddGroup _ coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl) fun _ _ => rfl
 
 instance [AddCommGroup G] : AddCommGroup (α →₀ G) :=
-  FunLike.coe_injective.AddCommGroup _ coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl) fun _ _ =>
+  DFunLike.coe_injective.AddCommGroup _ coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl) fun _ _ =>
     rfl
 
 #print Finsupp.single_add_single_eq_single_add_single /-
@@ -1530,7 +1530,7 @@ theorem single_add_single_eq_single_add_single [AddCommMonoid M] {k l m n : α}
       k = m ∧ l = n ∨ u = v ∧ k = n ∧ l = m ∨ u + v = 0 ∧ k = l ∧ m = n :=
   by
   classical
-  simp_rw [FunLike.ext_iff, coe_add, single_eq_pi_single, ← funext_iff]
+  simp_rw [DFunLike.ext_iff, coe_add, single_eq_pi_single, ← funext_iff]
   exact Pi.single_add_single_eq_single_add_single hu hv
 #align finsupp.single_add_single_eq_single_add_single Finsupp.single_add_single_eq_single_add_single
 -/
Diff
@@ -247,10 +247,10 @@ theorem support_nonempty_iff {f : α →₀ M} : f.support.Nonempty ↔ f ≠ 0
 #align finsupp.support_nonempty_iff Finsupp.support_nonempty_iff
 -/
 
-#print Finsupp.nonzero_iff_exists /-
-theorem nonzero_iff_exists {f : α →₀ M} : f ≠ 0 ↔ ∃ a : α, f a ≠ 0 := by
+#print Finsupp.ne_iff /-
+theorem ne_iff {f : α →₀ M} : f ≠ 0 ↔ ∃ a : α, f a ≠ 0 := by
   simp [← Finsupp.support_eq_empty, Finset.eq_empty_iff_forall_not_mem]
-#align finsupp.nonzero_iff_exists Finsupp.nonzero_iff_exists
+#align finsupp.nonzero_iff_exists Finsupp.ne_iff
 -/
 
 #print Finsupp.card_support_eq_zero /-
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Scott Morrison
 -/
-import Mathbin.Algebra.IndicatorFunction
-import Mathbin.GroupTheory.Submonoid.Basic
+import Algebra.IndicatorFunction
+import GroupTheory.Submonoid.Basic
 
 #align_import data.finsupp.defs from "leanprover-community/mathlib"@"842328d9df7e96fd90fc424e115679c15fb23a71"
 
@@ -267,7 +267,7 @@ theorem finite_support (f : α →₀ M) : Set.Finite (Function.support f) :=
 #align finsupp.finite_support Finsupp.finite_support
 -/
 
-/- ./././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 Finsupp.support_subset_iff /-
 theorem support_subset_iff {s : Set α} {f : α →₀ M} : ↑f.support ⊆ s ↔ ∀ (a) (_ : a ∉ s), f a = 0 :=
   by
@@ -570,7 +570,7 @@ theorem support_eq_singleton {f : α →₀ M} {a : α} :
 #align finsupp.support_eq_singleton Finsupp.support_eq_singleton
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b «expr ≠ » 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (b «expr ≠ » 0) -/
 #print Finsupp.support_eq_singleton' /-
 theorem support_eq_singleton' {f : α →₀ M} {a : α} :
     f.support = {a} ↔ ∃ (b : _) (_ : b ≠ 0), f = single a b :=
@@ -587,7 +587,7 @@ theorem card_support_eq_one {f : α →₀ M} : card f.support = 1 ↔ ∃ a, f
 #align finsupp.card_support_eq_one Finsupp.card_support_eq_one
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b «expr ≠ » 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (b «expr ≠ » 0) -/
 #print Finsupp.card_support_eq_one' /-
 theorem card_support_eq_one' {f : α →₀ M} :
     card f.support = 1 ↔ ∃ (a : _) (b : _) (_ : b ≠ 0), f = single a b := by
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Scott Morrison
-
-! This file was ported from Lean 3 source module data.finsupp.defs
-! leanprover-community/mathlib commit 842328d9df7e96fd90fc424e115679c15fb23a71
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Algebra.IndicatorFunction
 import Mathbin.GroupTheory.Submonoid.Basic
 
+#align_import data.finsupp.defs from "leanprover-community/mathlib"@"842328d9df7e96fd90fc424e115679c15fb23a71"
+
 /-!
 # Type of functions with finite support
 
@@ -270,7 +267,7 @@ theorem finite_support (f : α →₀ M) : Set.Finite (Function.support f) :=
 #align finsupp.finite_support Finsupp.finite_support
 -/
 
-/- ./././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 Finsupp.support_subset_iff /-
 theorem support_subset_iff {s : Set α} {f : α →₀ M} : ↑f.support ⊆ s ↔ ∀ (a) (_ : a ∉ s), f a = 0 :=
   by
@@ -573,7 +570,7 @@ theorem support_eq_singleton {f : α →₀ M} {a : α} :
 #align finsupp.support_eq_singleton Finsupp.support_eq_singleton
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (b «expr ≠ » 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b «expr ≠ » 0) -/
 #print Finsupp.support_eq_singleton' /-
 theorem support_eq_singleton' {f : α →₀ M} {a : α} :
     f.support = {a} ↔ ∃ (b : _) (_ : b ≠ 0), f = single a b :=
@@ -590,7 +587,7 @@ theorem card_support_eq_one {f : α →₀ M} : card f.support = 1 ↔ ∃ a, f
 #align finsupp.card_support_eq_one Finsupp.card_support_eq_one
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (b «expr ≠ » 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b «expr ≠ » 0) -/
 #print Finsupp.card_support_eq_one' /-
 theorem card_support_eq_one' {f : α →₀ M} :
     card f.support = 1 ↔ ∃ (a : _) (b : _) (_ : b ≠ 0), f = single a b := by
Diff
@@ -104,7 +104,6 @@ structure Finsupp (α : Type _) (M : Type _) [Zero M] where
 #align finsupp Finsupp
 -/
 
--- mathport name: «expr →₀ »
 infixr:25 " →₀ " => Finsupp
 
 namespace Finsupp
@@ -131,20 +130,26 @@ directly. -/
 instance : CoeFun (α →₀ M) fun _ => α → M :=
   FunLike.hasCoeToFun
 
+#print Finsupp.ext /-
 @[ext]
 theorem ext {f g : α →₀ M} (h : ∀ a, f a = g a) : f = g :=
   FunLike.ext _ _ h
 #align finsupp.ext Finsupp.ext
+-/
 
+#print Finsupp.ext_iff /-
 /-- Deprecated. Use `fun_like.ext_iff` instead. -/
 theorem ext_iff {f g : α →₀ M} : f = g ↔ ∀ a, f a = g a :=
   FunLike.ext_iff
 #align finsupp.ext_iff Finsupp.ext_iff
+-/
 
+#print Finsupp.coeFn_inj /-
 /-- Deprecated. Use `fun_like.coe_fn_eq` instead. -/
 theorem coeFn_inj {f g : α →₀ M} : (f : α → M) = g ↔ f = g :=
   FunLike.coe_fn_eq
 #align finsupp.coe_fn_inj Finsupp.coeFn_inj
+-/
 
 #print Finsupp.coeFn_injective /-
 /-- Deprecated. Use `fun_like.coe_injective` instead. -/
@@ -153,23 +158,29 @@ theorem coeFn_injective : @Function.Injective (α →₀ M) (α → M) coeFn :=
 #align finsupp.coe_fn_injective Finsupp.coeFn_injective
 -/
 
+#print Finsupp.congr_fun /-
 /-- Deprecated. Use `fun_like.congr_fun` instead. -/
 theorem congr_fun {f g : α →₀ M} (h : f = g) (a : α) : f a = g a :=
   FunLike.congr_fun h _
 #align finsupp.congr_fun Finsupp.congr_fun
+-/
 
+#print Finsupp.coe_mk /-
 @[simp]
 theorem coe_mk (f : α → M) (s : Finset α) (h : ∀ a, a ∈ s ↔ f a ≠ 0) : ⇑(⟨s, f, h⟩ : α →₀ M) = f :=
   rfl
 #align finsupp.coe_mk Finsupp.coe_mk
+-/
 
 instance : Zero (α →₀ M) :=
   ⟨⟨∅, 0, fun _ => ⟨False.elim, fun H => H rfl⟩⟩⟩
 
+#print Finsupp.coe_zero /-
 @[simp]
 theorem coe_zero : ⇑(0 : α →₀ M) = 0 :=
   rfl
 #align finsupp.coe_zero Finsupp.coe_zero
+-/
 
 #print Finsupp.zero_apply /-
 theorem zero_apply {a : α} : (0 : α →₀ M) a = 0 :=
@@ -177,32 +188,43 @@ theorem zero_apply {a : α} : (0 : α →₀ M) a = 0 :=
 #align finsupp.zero_apply Finsupp.zero_apply
 -/
 
+#print Finsupp.support_zero /-
 @[simp]
 theorem support_zero : (0 : α →₀ M).support = ∅ :=
   rfl
 #align finsupp.support_zero Finsupp.support_zero
+-/
 
 instance : Inhabited (α →₀ M) :=
   ⟨0⟩
 
+#print Finsupp.mem_support_iff /-
 @[simp]
 theorem mem_support_iff {f : α →₀ M} : ∀ {a : α}, a ∈ f.support ↔ f a ≠ 0 :=
   f.mem_support_toFun
 #align finsupp.mem_support_iff Finsupp.mem_support_iff
+-/
 
+#print Finsupp.fun_support_eq /-
 @[simp, norm_cast]
 theorem fun_support_eq (f : α →₀ M) : Function.support f = f.support :=
   Set.ext fun x => mem_support_iff.symm
 #align finsupp.fun_support_eq Finsupp.fun_support_eq
+-/
 
+#print Finsupp.not_mem_support_iff /-
 theorem not_mem_support_iff {f : α →₀ M} {a} : a ∉ f.support ↔ f a = 0 :=
   not_iff_comm.1 mem_support_iff.symm
 #align finsupp.not_mem_support_iff Finsupp.not_mem_support_iff
+-/
 
+#print Finsupp.coe_eq_zero /-
 @[simp, norm_cast]
 theorem coe_eq_zero {f : α →₀ M} : (f : α → M) = 0 ↔ f = 0 := by rw [← coe_zero, coe_fn_inj]
 #align finsupp.coe_eq_zero Finsupp.coe_eq_zero
+-/
 
+#print Finsupp.ext_iff' /-
 theorem ext_iff' {f g : α →₀ M} : f = g ↔ f.support = g.support ∧ ∀ x ∈ f.support, f x = g x :=
   ⟨fun h => h ▸ ⟨rfl, fun _ _ => rfl⟩, fun ⟨h₁, h₂⟩ =>
     ext fun a => by
@@ -213,35 +235,48 @@ theorem ext_iff' {f g : α →₀ M} : f = g ↔ f.support = g.support ∧ ∀ x
           have hg : g a = 0 := by rwa [h₁, not_mem_support_iff] at h 
           rw [hf, hg]⟩
 #align finsupp.ext_iff' Finsupp.ext_iff'
+-/
 
+#print Finsupp.support_eq_empty /-
 @[simp]
 theorem support_eq_empty {f : α →₀ M} : f.support = ∅ ↔ f = 0 := by
   exact_mod_cast @Function.support_eq_empty_iff _ _ _ f
 #align finsupp.support_eq_empty Finsupp.support_eq_empty
+-/
 
+#print Finsupp.support_nonempty_iff /-
 theorem support_nonempty_iff {f : α →₀ M} : f.support.Nonempty ↔ f ≠ 0 := by
   simp only [Finsupp.support_eq_empty, Finset.nonempty_iff_ne_empty, Ne.def]
 #align finsupp.support_nonempty_iff Finsupp.support_nonempty_iff
+-/
 
+#print Finsupp.nonzero_iff_exists /-
 theorem nonzero_iff_exists {f : α →₀ M} : f ≠ 0 ↔ ∃ a : α, f a ≠ 0 := by
   simp [← Finsupp.support_eq_empty, Finset.eq_empty_iff_forall_not_mem]
 #align finsupp.nonzero_iff_exists Finsupp.nonzero_iff_exists
+-/
 
+#print Finsupp.card_support_eq_zero /-
 theorem card_support_eq_zero {f : α →₀ M} : card f.support = 0 ↔ f = 0 := by simp
 #align finsupp.card_support_eq_zero Finsupp.card_support_eq_zero
+-/
 
 instance [DecidableEq α] [DecidableEq M] : DecidableEq (α →₀ M) := fun f g =>
   decidable_of_iff (f.support = g.support ∧ ∀ a ∈ f.support, f a = g a) ext_iff'.symm
 
+#print Finsupp.finite_support /-
 theorem finite_support (f : α →₀ M) : Set.Finite (Function.support f) :=
   f.fun_support_eq.symm ▸ f.support.finite_toSet
 #align finsupp.finite_support Finsupp.finite_support
+-/
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (a «expr ∉ » s) -/
+#print Finsupp.support_subset_iff /-
 theorem support_subset_iff {s : Set α} {f : α →₀ M} : ↑f.support ⊆ s ↔ ∀ (a) (_ : a ∉ s), f a = 0 :=
   by
   simp only [Set.subset_def, mem_coe, mem_support_iff] <;> exact forall_congr' fun a => not_imp_comm
 #align finsupp.support_subset_iff Finsupp.support_subset_iff
+-/
 
 #print Finsupp.equivFunOnFinite /-
 /-- Given `finite α`, `equiv_fun_on_finite` is the `equiv` between `α →₀ β` and `α → β`.
@@ -273,14 +308,18 @@ noncomputable def Equiv.finsuppUnique {ι : Type _} [Unique ι] : (ι →₀ M)
 #align equiv.finsupp_unique Equiv.finsuppUnique
 -/
 
+#print Finsupp.unique_ext /-
 @[ext]
 theorem unique_ext [Unique α] {f g : α →₀ M} (h : f default = g default) : f = g :=
   ext fun a => by rwa [Unique.eq_default a]
 #align finsupp.unique_ext Finsupp.unique_ext
+-/
 
+#print Finsupp.unique_ext_iff /-
 theorem unique_ext_iff [Unique α] {f g : α →₀ M} : f = g ↔ f default = g default :=
   ⟨fun h => h ▸ rfl, unique_ext⟩
 #align finsupp.unique_ext_iff Finsupp.unique_ext_iff
+-/
 
 end Basic
 
@@ -312,21 +351,27 @@ def single (a : α) (b : M) : α →₀ M
 #align finsupp.single Finsupp.single
 -/
 
+#print Finsupp.single_apply /-
 theorem single_apply [Decidable (a = a')] : single a b a' = if a = a' then b else 0 := by
   classical
   simp_rw [@eq_comm _ a a']
   convert Pi.single_apply _ _ _
 #align finsupp.single_apply Finsupp.single_apply
+-/
 
+#print Finsupp.single_apply_left /-
 theorem single_apply_left {f : α → β} (hf : Function.Injective f) (x z : α) (y : M) :
     single (f x) y (f z) = single x y z := by classical simp only [single_apply, hf.eq_iff]
 #align finsupp.single_apply_left Finsupp.single_apply_left
+-/
 
+#print Finsupp.single_eq_set_indicator /-
 theorem single_eq_set_indicator : ⇑(single a b) = Set.indicator {a} fun _ => b := by
   classical
   ext
   simp [single_apply, Set.indicator, @eq_comm _ a]
 #align finsupp.single_eq_set_indicator Finsupp.single_eq_set_indicator
+-/
 
 #print Finsupp.single_eq_same /-
 @[simp]
@@ -334,25 +379,34 @@ theorem single_eq_same : (single a b : α →₀ M) a = b := by classical exact
 #align finsupp.single_eq_same Finsupp.single_eq_same
 -/
 
+#print Finsupp.single_eq_of_ne /-
 @[simp]
 theorem single_eq_of_ne (h : a ≠ a') : (single a b : α →₀ M) a' = 0 := by
   classical exact Pi.single_eq_of_ne' h _
 #align finsupp.single_eq_of_ne Finsupp.single_eq_of_ne
+-/
 
+#print Finsupp.single_eq_update /-
 theorem single_eq_update [DecidableEq α] (a : α) (b : M) : ⇑(single a b) = Function.update 0 a b :=
   by rw [single_eq_set_indicator, ← Set.piecewise_eq_indicator, Set.piecewise_singleton]
 #align finsupp.single_eq_update Finsupp.single_eq_update
+-/
 
+#print Finsupp.single_eq_pi_single /-
 theorem single_eq_pi_single [DecidableEq α] (a : α) (b : M) : ⇑(single a b) = Pi.single a b :=
   single_eq_update a b
 #align finsupp.single_eq_pi_single Finsupp.single_eq_pi_single
+-/
 
+#print Finsupp.single_zero /-
 @[simp]
 theorem single_zero (a : α) : (single a 0 : α →₀ M) = 0 :=
   coeFn_injective <| by
     classical simpa only [single_eq_update, coe_zero] using Function.update_eq_self a (0 : α → M)
 #align finsupp.single_zero Finsupp.single_zero
+-/
 
+#print Finsupp.single_of_single_apply /-
 theorem single_of_single_apply (a a' : α) (b : M) :
     single a ((single a' b) a) = single a' (single a' b) a := by
   classical
@@ -362,6 +416,7 @@ theorem single_of_single_apply (a a' : α) (b : M) :
   · rw [h]
   · rw [zero_apply, single_apply, if_t_t]
 #align finsupp.single_of_single_apply Finsupp.single_of_single_apply
+-/
 
 #print Finsupp.support_single_ne_zero /-
 theorem support_single_ne_zero (a : α) (hb : b ≠ 0) : (single a b).support = {a} := by
@@ -369,11 +424,13 @@ theorem support_single_ne_zero (a : α) (hb : b ≠ 0) : (single a b).support =
 #align finsupp.support_single_ne_zero Finsupp.support_single_ne_zero
 -/
 
+#print Finsupp.support_single_subset /-
 theorem support_single_subset : (single a b).support ⊆ {a} := by
   classical
   show ite _ _ _ ⊆ _
   split_ifs <;> [exact empty_subset _; exact subset.refl _]
 #align finsupp.support_single_subset Finsupp.support_single_subset
+-/
 
 #print Finsupp.single_apply_mem /-
 theorem single_apply_mem (x) : single a b x ∈ ({0, b} : Set M) := by
@@ -409,10 +466,13 @@ theorem single_apply_ne_zero {a x : α} {b : M} : single a b x ≠ 0 ↔ x = a 
 #align finsupp.single_apply_ne_zero Finsupp.single_apply_ne_zero
 -/
 
+#print Finsupp.mem_support_single /-
 theorem mem_support_single (a a' : α) (b : M) : a ∈ (single a' b).support ↔ a = a' ∧ b ≠ 0 := by
   simp [single_apply_eq_zero, not_or]
 #align finsupp.mem_support_single Finsupp.mem_support_single
+-/
 
+#print Finsupp.eq_single_iff /-
 theorem eq_single_iff {f : α →₀ M} {a b} : f = single a b ↔ f.support ⊆ {a} ∧ f a = b :=
   by
   refine' ⟨fun h => h.symm ▸ ⟨support_single_subset, single_eq_same⟩, _⟩
@@ -421,7 +481,9 @@ theorem eq_single_iff {f : α →₀ M} {a b} : f = single a b ↔ f.support ⊆
   by_cases hx : a = x <;> simp only [hx, single_eq_same, single_eq_of_ne, Ne.def, not_false_iff]
   exact not_mem_support_iff.1 (mt (fun hx => (mem_singleton.1 (h hx)).symm) hx)
 #align finsupp.eq_single_iff Finsupp.eq_single_iff
+-/
 
+#print Finsupp.single_eq_single_iff /-
 theorem single_eq_single_iff (a₁ a₂ : α) (b₁ b₂ : M) :
     single a₁ b₁ = single a₂ b₂ ↔ a₁ = a₂ ∧ b₁ = b₂ ∨ b₁ = 0 ∧ b₂ = 0 :=
   by
@@ -439,6 +501,7 @@ theorem single_eq_single_iff (a₁ a₂ : α) (b₁ b₂ : M) :
     · rfl
     · rw [single_zero, single_zero]
 #align finsupp.single_eq_single_iff Finsupp.single_eq_single_iff
+-/
 
 #print Finsupp.single_left_injective /-
 /-- `finsupp.single a b` is injective in `a`. For the statement that it is injective in `b`, see
@@ -454,18 +517,24 @@ theorem single_left_inj (h : b ≠ 0) : single a b = single a' b ↔ a = a' :=
 #align finsupp.single_left_inj Finsupp.single_left_inj
 -/
 
+#print Finsupp.support_single_ne_bot /-
 theorem support_single_ne_bot (i : α) (h : b ≠ 0) : (single i b).support ≠ ⊥ := by
   simpa only [support_single_ne_zero _ h] using singleton_ne_empty _
 #align finsupp.support_single_ne_bot Finsupp.support_single_ne_bot
+-/
 
+#print Finsupp.support_single_disjoint /-
 theorem support_single_disjoint {b' : M} (hb : b ≠ 0) (hb' : b' ≠ 0) {i j : α} :
     Disjoint (single i b).support (single j b').support ↔ i ≠ j := by
   rw [support_single_ne_zero _ hb, support_single_ne_zero _ hb', disjoint_singleton]
 #align finsupp.support_single_disjoint Finsupp.support_single_disjoint
+-/
 
+#print Finsupp.single_eq_zero /-
 @[simp]
 theorem single_eq_zero : single a b = 0 ↔ b = 0 := by simp [ext_iff, single_eq_set_indicator]
 #align finsupp.single_eq_zero Finsupp.single_eq_zero
+-/
 
 #print Finsupp.single_swap /-
 theorem single_swap (a₁ a₂ : α) (b : M) : single a₁ b a₂ = single a₂ b a₁ := by
@@ -481,15 +550,20 @@ instance [Nonempty α] [Nontrivial M] : Nontrivial (α →₀ M) :=
   rcases exists_ne (0 : M) with ⟨x, hx⟩
   exact nontrivial_of_ne (single default x) 0 (mt single_eq_zero.1 hx)
 
+#print Finsupp.unique_single /-
 theorem unique_single [Unique α] (x : α →₀ M) : x = single default (x default) :=
   ext <| Unique.forall_iff.2 single_eq_same.symm
 #align finsupp.unique_single Finsupp.unique_single
+-/
 
+#print Finsupp.unique_single_eq_iff /-
 @[simp]
 theorem unique_single_eq_iff [Unique α] {b' : M} : single a b = single a' b' ↔ b = b' := by
   rw [unique_ext_iff, Unique.eq_default a, Unique.eq_default a', single_eq_same, single_eq_same]
 #align finsupp.unique_single_eq_iff Finsupp.unique_single_eq_iff
+-/
 
+#print Finsupp.support_eq_singleton /-
 theorem support_eq_singleton {f : α →₀ M} {a : α} :
     f.support = {a} ↔ f a ≠ 0 ∧ f = single a (f a) :=
   ⟨fun h =>
@@ -497,8 +571,10 @@ theorem support_eq_singleton {f : α →₀ M} {a : α} :
       eq_single_iff.2 ⟨subset_of_eq h, rfl⟩⟩,
     fun h => h.2.symm ▸ support_single_ne_zero _ h.1⟩
 #align finsupp.support_eq_singleton Finsupp.support_eq_singleton
+-/
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (b «expr ≠ » 0) -/
+#print Finsupp.support_eq_singleton' /-
 theorem support_eq_singleton' {f : α →₀ M} {a : α} :
     f.support = {a} ↔ ∃ (b : _) (_ : b ≠ 0), f = single a b :=
   ⟨fun h =>
@@ -506,47 +582,64 @@ theorem support_eq_singleton' {f : α →₀ M} {a : α} :
     ⟨_, h.1, h.2⟩,
     fun ⟨b, hb, hf⟩ => hf.symm ▸ support_single_ne_zero _ hb⟩
 #align finsupp.support_eq_singleton' Finsupp.support_eq_singleton'
+-/
 
+#print Finsupp.card_support_eq_one /-
 theorem card_support_eq_one {f : α →₀ M} : card f.support = 1 ↔ ∃ a, f a ≠ 0 ∧ f = single a (f a) :=
   by simp only [card_eq_one, support_eq_singleton]
 #align finsupp.card_support_eq_one Finsupp.card_support_eq_one
+-/
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (b «expr ≠ » 0) -/
+#print Finsupp.card_support_eq_one' /-
 theorem card_support_eq_one' {f : α →₀ M} :
     card f.support = 1 ↔ ∃ (a : _) (b : _) (_ : b ≠ 0), f = single a b := by
   simp only [card_eq_one, support_eq_singleton']
 #align finsupp.card_support_eq_one' Finsupp.card_support_eq_one'
+-/
 
+#print Finsupp.support_subset_singleton /-
 theorem support_subset_singleton {f : α →₀ M} {a : α} : f.support ⊆ {a} ↔ f = single a (f a) :=
   ⟨fun h => eq_single_iff.mpr ⟨h, rfl⟩, fun h => (eq_single_iff.mp h).left⟩
 #align finsupp.support_subset_singleton Finsupp.support_subset_singleton
+-/
 
+#print Finsupp.support_subset_singleton' /-
 theorem support_subset_singleton' {f : α →₀ M} {a : α} : f.support ⊆ {a} ↔ ∃ b, f = single a b :=
   ⟨fun h => ⟨f a, support_subset_singleton.mp h⟩, fun ⟨b, hb⟩ => by
     rw [hb, support_subset_singleton, single_eq_same]⟩
 #align finsupp.support_subset_singleton' Finsupp.support_subset_singleton'
+-/
 
+#print Finsupp.card_support_le_one /-
 theorem card_support_le_one [Nonempty α] {f : α →₀ M} :
     card f.support ≤ 1 ↔ ∃ a, f = single a (f a) := by
   simp only [card_le_one_iff_subset_singleton, support_subset_singleton]
 #align finsupp.card_support_le_one Finsupp.card_support_le_one
+-/
 
+#print Finsupp.card_support_le_one' /-
 theorem card_support_le_one' [Nonempty α] {f : α →₀ M} :
     card f.support ≤ 1 ↔ ∃ a b, f = single a b := by
   simp only [card_le_one_iff_subset_singleton, support_subset_singleton']
 #align finsupp.card_support_le_one' Finsupp.card_support_le_one'
+-/
 
+#print Finsupp.equivFunOnFinite_single /-
 @[simp]
 theorem equivFunOnFinite_single [DecidableEq α] [Finite α] (x : α) (m : M) :
     Finsupp.equivFunOnFinite (Finsupp.single x m) = Pi.single x m := by ext;
   simp [Finsupp.single_eq_pi_single]
 #align finsupp.equiv_fun_on_finite_single Finsupp.equivFunOnFinite_single
+-/
 
+#print Finsupp.equivFunOnFinite_symm_single /-
 @[simp]
 theorem equivFunOnFinite_symm_single [DecidableEq α] [Finite α] (x : α) (m : M) :
     Finsupp.equivFunOnFinite.symm (Pi.single x m) = Finsupp.single x m := by
   rw [← equiv_fun_on_finite_single, Equiv.symm_apply_apply]
 #align finsupp.equiv_fun_on_finite_symm_single Finsupp.equivFunOnFinite_symm_single
+-/
 
 end Single
 
@@ -577,18 +670,23 @@ def update (f : α →₀ M) (a : α) (b : M) : α →₀ M
 #align finsupp.update Finsupp.update
 -/
 
+#print Finsupp.coe_update /-
 @[simp]
 theorem coe_update [DecidableEq α] : (f.update a b : α → M) = Function.update f a b := by
   convert rfl
 #align finsupp.coe_update Finsupp.coe_update
+-/
 
+#print Finsupp.update_self /-
 @[simp]
 theorem update_self : f.update a (f a) = f := by
   classical
   ext
   simp
 #align finsupp.update_self Finsupp.update_self
+-/
 
+#print Finsupp.zero_update /-
 @[simp]
 theorem zero_update : update 0 a b = single a b := by
   classical
@@ -596,22 +694,29 @@ theorem zero_update : update 0 a b = single a b := by
   rw [single_eq_update]
   rfl
 #align finsupp.zero_update Finsupp.zero_update
+-/
 
+#print Finsupp.support_update /-
 theorem support_update [DecidableEq α] [DecidableEq M] :
     support (f.update a b) = if b = 0 then f.support.eraseₓ a else insert a f.support := by
   convert rfl
 #align finsupp.support_update Finsupp.support_update
+-/
 
+#print Finsupp.support_update_zero /-
 @[simp]
 theorem support_update_zero [DecidableEq α] : support (f.update a 0) = f.support.eraseₓ a := by
   convert if_pos rfl
 #align finsupp.support_update_zero Finsupp.support_update_zero
+-/
 
 variable {b}
 
+#print Finsupp.support_update_ne_zero /-
 theorem support_update_ne_zero [DecidableEq α] (h : b ≠ 0) :
     support (f.update a b) = insert a f.support := by classical convert if_neg h
 #align finsupp.support_update_ne_zero Finsupp.support_update_ne_zero
+-/
 
 end Update
 
@@ -641,20 +746,27 @@ def erase (a : α) (f : α →₀ M) : α →₀ M
 #align finsupp.erase Finsupp.erase
 -/
 
+#print Finsupp.support_erase /-
 @[simp]
 theorem support_erase [DecidableEq α] {a : α} {f : α →₀ M} :
     (f.eraseₓ a).support = f.support.eraseₓ a := by convert rfl
 #align finsupp.support_erase Finsupp.support_erase
+-/
 
+#print Finsupp.erase_same /-
 @[simp]
 theorem erase_same {a : α} {f : α →₀ M} : (f.eraseₓ a) a = 0 := by convert if_pos rfl
 #align finsupp.erase_same Finsupp.erase_same
+-/
 
+#print Finsupp.erase_ne /-
 @[simp]
 theorem erase_ne {a a' : α} {f : α →₀ M} (h : a' ≠ a) : (f.eraseₓ a) a' = f a' := by
   classical convert if_neg h
 #align finsupp.erase_ne Finsupp.erase_ne
+-/
 
+#print Finsupp.erase_single /-
 @[simp]
 theorem erase_single {a : α} {b : M} : erase a (single a b) = 0 :=
   by
@@ -662,14 +774,18 @@ theorem erase_single {a : α} {b : M} : erase a (single a b) = 0 :=
   · rw [hs, erase_same]; rfl
   · rw [erase_ne hs]; exact single_eq_of_ne (Ne.symm hs)
 #align finsupp.erase_single Finsupp.erase_single
+-/
 
+#print Finsupp.erase_single_ne /-
 theorem erase_single_ne {a a' : α} {b : M} (h : a ≠ a') : erase a (single a' b) = single a' b :=
   by
   ext s; by_cases hs : s = a
   · rw [hs, erase_same, single_eq_of_ne h.symm]
   · rw [erase_ne hs]
 #align finsupp.erase_single_ne Finsupp.erase_single_ne
+-/
 
+#print Finsupp.erase_of_not_mem_support /-
 @[simp]
 theorem erase_of_not_mem_support {f : α →₀ M} {a} (haf : a ∉ f.support) : erase a f = f :=
   by
@@ -677,11 +793,14 @@ theorem erase_of_not_mem_support {f : α →₀ M} {a} (haf : a ∉ f.support) :
   · rwa [hab, erase_same, eq_comm, ← not_mem_support_iff]
   · rw [erase_ne hab]
 #align finsupp.erase_of_not_mem_support Finsupp.erase_of_not_mem_support
+-/
 
+#print Finsupp.erase_zero /-
 @[simp]
 theorem erase_zero (a : α) : erase a (0 : α →₀ M) = 0 := by
   classical rw [← support_eq_empty, support_erase, support_zero, erase_empty]
 #align finsupp.erase_zero Finsupp.erase_zero
+-/
 
 end Erase
 
@@ -706,21 +825,27 @@ def onFinset (s : Finset α) (f : α → M) (hf : ∀ a, f a ≠ 0 → a ∈ s)
 #align finsupp.on_finset Finsupp.onFinset
 -/
 
+#print Finsupp.onFinset_apply /-
 @[simp]
 theorem onFinset_apply {s : Finset α} {f : α → M} {hf a} : (onFinset s f hf : α →₀ M) a = f a :=
   rfl
 #align finsupp.on_finset_apply Finsupp.onFinset_apply
+-/
 
+#print Finsupp.support_onFinset_subset /-
 @[simp]
 theorem support_onFinset_subset {s : Finset α} {f : α → M} {hf} : (onFinset s f hf).support ⊆ s :=
   by convert filter_subset _ _
 #align finsupp.support_on_finset_subset Finsupp.support_onFinset_subset
+-/
 
+#print Finsupp.mem_support_onFinset /-
 @[simp]
 theorem mem_support_onFinset {s : Finset α} {f : α → M} (hf : ∀ a : α, f a ≠ 0 → a ∈ s) {a : α} :
     a ∈ (Finsupp.onFinset s f hf).support ↔ f a ≠ 0 := by
   rw [Finsupp.mem_support_iff, Finsupp.onFinset_apply]
 #align finsupp.mem_support_on_finset Finsupp.mem_support_onFinset
+-/
 
 #print Finsupp.support_onFinset /-
 theorem support_onFinset [DecidableEq M] {s : Finset α} {f : α → M}
@@ -745,10 +870,12 @@ noncomputable def ofSupportFinite (f : α → M) (hf : (Function.support f).Fini
 #align finsupp.of_support_finite Finsupp.ofSupportFinite
 -/
 
+#print Finsupp.ofSupportFinite_coe /-
 theorem ofSupportFinite_coe {f : α → M} {hf : (Function.support f).Finite} :
     (ofSupportFinite f hf : α → M) = f :=
   rfl
 #align finsupp.of_support_finite_coe Finsupp.ofSupportFinite_coe
+-/
 
 #print Finsupp.canLift /-
 instance canLift : CanLift (α → M) (α →₀ M) coeFn fun f => (Function.support f).Finite
@@ -800,10 +927,12 @@ theorem mapRange_zero {f : M → N} {hf : f 0 = 0} : mapRange f hf (0 : α →
 #align finsupp.map_range_zero Finsupp.mapRange_zero
 -/
 
+#print Finsupp.mapRange_id /-
 @[simp]
 theorem mapRange_id (g : α →₀ M) : mapRange id rfl g = g :=
   ext fun _ => rfl
 #align finsupp.map_range_id Finsupp.mapRange_id
+-/
 
 #print Finsupp.mapRange_comp /-
 theorem mapRange_comp (f : N → P) (hf : f 0 = 0) (f₂ : M → N) (hf₂ : f₂ 0 = 0) (h : (f ∘ f₂) 0 = 0)
@@ -872,16 +1001,21 @@ def embDomain (f : α ↪ β) (v : α →₀ M) : β →₀ M
 #align finsupp.emb_domain Finsupp.embDomain
 -/
 
+#print Finsupp.support_embDomain /-
 @[simp]
 theorem support_embDomain (f : α ↪ β) (v : α →₀ M) : (embDomain f v).support = v.support.map f :=
   rfl
 #align finsupp.support_emb_domain Finsupp.support_embDomain
+-/
 
+#print Finsupp.embDomain_zero /-
 @[simp]
 theorem embDomain_zero (f : α ↪ β) : (embDomain f 0 : β →₀ M) = 0 :=
   rfl
 #align finsupp.emb_domain_zero Finsupp.embDomain_zero
+-/
 
+#print Finsupp.embDomain_apply /-
 @[simp]
 theorem embDomain_apply (f : α ↪ β) (v : α →₀ M) (a : α) : embDomain f v (f a) = v a := by
   classical
@@ -891,7 +1025,9 @@ theorem embDomain_apply (f : α ↪ β) (v : α →₀ M) (a : α) : embDomain f
     exact Finset.choose_property (fun a₁ => f a₁ = f a) _ _
   · exact (not_mem_support_iff.1 h).symm
 #align finsupp.emb_domain_apply Finsupp.embDomain_apply
+-/
 
+#print Finsupp.embDomain_notin_range /-
 theorem embDomain_notin_range (f : α ↪ β) (v : α →₀ M) (a : β) (h : a ∉ Set.range f) :
     embDomain f v a = 0 := by
   classical
@@ -899,21 +1035,29 @@ theorem embDomain_notin_range (f : α ↪ β) (v : α →₀ M) (a : β) (h : a
   rcases Finset.mem_map.1 h with ⟨a, h, rfl⟩
   exact Set.mem_range_self a
 #align finsupp.emb_domain_notin_range Finsupp.embDomain_notin_range
+-/
 
+#print Finsupp.embDomain_injective /-
 theorem embDomain_injective (f : α ↪ β) : Function.Injective (embDomain f : (α →₀ M) → β →₀ M) :=
   fun l₁ l₂ h => ext fun a => by simpa only [emb_domain_apply] using ext_iff.1 h (f a)
 #align finsupp.emb_domain_injective Finsupp.embDomain_injective
+-/
 
+#print Finsupp.embDomain_inj /-
 @[simp]
 theorem embDomain_inj {f : α ↪ β} {l₁ l₂ : α →₀ M} : embDomain f l₁ = embDomain f l₂ ↔ l₁ = l₂ :=
   (embDomain_injective f).eq_iff
 #align finsupp.emb_domain_inj Finsupp.embDomain_inj
+-/
 
+#print Finsupp.embDomain_eq_zero /-
 @[simp]
 theorem embDomain_eq_zero {f : α ↪ β} {l : α →₀ M} : embDomain f l = 0 ↔ l = 0 :=
   (embDomain_injective f).eq_iff' <| embDomain_zero f
 #align finsupp.emb_domain_eq_zero Finsupp.embDomain_eq_zero
+-/
 
+#print Finsupp.embDomain_mapRange /-
 theorem embDomain_mapRange (f : α ↪ β) (g : M → N) (p : α →₀ M) (hg : g 0 = 0) :
     embDomain f (mapRange g hg p) = mapRange g hg (embDomain f p) :=
   by
@@ -923,7 +1067,9 @@ theorem embDomain_mapRange (f : α ↪ β) (g : M → N) (p : α →₀ M) (hg :
     rw [map_range_apply, emb_domain_apply, emb_domain_apply, map_range_apply]
   · rw [map_range_apply, emb_domain_notin_range, emb_domain_notin_range, ← hg] <;> assumption
 #align finsupp.emb_domain_map_range Finsupp.embDomain_mapRange
+-/
 
+#print Finsupp.single_of_embDomain_single /-
 theorem single_of_embDomain_single (l : α →₀ M) (f : α ↪ β) (a : β) (b : M) (hb : b ≠ 0)
     (h : l.embDomain f = single a b) : ∃ x, l = single x b ∧ f x = a := by
   classical
@@ -942,7 +1088,9 @@ theorem single_of_embDomain_single (l : α →₀ M) (f : α ↪ β) (a : β) (b
       exact h_cases (f.injective (hc₂.trans hfd))
   · exact hc₂
 #align finsupp.single_of_emb_domain_single Finsupp.single_of_embDomain_single
+-/
 
+#print Finsupp.embDomain_single /-
 @[simp]
 theorem embDomain_single (f : α ↪ β) (a : α) (m : M) : embDomain f (single a m) = single (f a) m :=
   by
@@ -956,6 +1104,7 @@ theorem embDomain_single (f : α ↪ β) (a : α) (m : M) : embDomain f (single
     rintro rfl
     simpa using h
 #align finsupp.emb_domain_single Finsupp.embDomain_single
+-/
 
 end EmbDomain
 
@@ -981,16 +1130,20 @@ def zipWith (f : M → N → P) (hf : f 0 0 = 0) (g₁ : α →₀ M) (g₂ : α
 #align finsupp.zip_with Finsupp.zipWith
 -/
 
+#print Finsupp.zipWith_apply /-
 @[simp]
 theorem zipWith_apply {f : M → N → P} {hf : f 0 0 = 0} {g₁ : α →₀ M} {g₂ : α →₀ N} {a : α} :
     zipWith f hf g₁ g₂ a = f (g₁ a) (g₂ a) :=
   rfl
 #align finsupp.zip_with_apply Finsupp.zipWith_apply
+-/
 
+#print Finsupp.support_zipWith /-
 theorem support_zipWith [D : DecidableEq α] {f : M → N → P} {hf : f 0 0 = 0} {g₁ : α →₀ M}
     {g₂ : α →₀ N} : (zipWith f hf g₁ g₂).support ⊆ g₁.support ∪ g₂.support := by
   rw [Subsingleton.elim D] <;> exact support_on_finset_subset
 #align finsupp.support_zip_with Finsupp.support_zipWith
+-/
 
 end ZipWith
 
@@ -1004,20 +1157,27 @@ variable [AddZeroClass M]
 instance : Add (α →₀ M) :=
   ⟨zipWith (· + ·) (add_zero 0)⟩
 
+#print Finsupp.coe_add /-
 @[simp]
 theorem coe_add (f g : α →₀ M) : ⇑(f + g) = f + g :=
   rfl
 #align finsupp.coe_add Finsupp.coe_add
+-/
 
+#print Finsupp.add_apply /-
 theorem add_apply (g₁ g₂ : α →₀ M) (a : α) : (g₁ + g₂) a = g₁ a + g₂ a :=
   rfl
 #align finsupp.add_apply Finsupp.add_apply
+-/
 
+#print Finsupp.support_add /-
 theorem support_add [DecidableEq α] {g₁ g₂ : α →₀ M} :
     (g₁ + g₂).support ⊆ g₁.support ∪ g₂.support :=
   support_zipWith
 #align finsupp.support_add Finsupp.support_add
+-/
 
+#print Finsupp.support_add_eq /-
 theorem support_add_eq [DecidableEq α] {g₁ g₂ : α →₀ M} (h : Disjoint g₁.support g₂.support) :
     (g₁ + g₂).support = g₁.support ∪ g₂.support :=
   le_antisymm support_zipWith fun a ha =>
@@ -1030,7 +1190,9 @@ theorem support_add_eq [DecidableEq α] {g₁ g₂ : α →₀ M} (h : Disjoint
       have : a ∉ g₁.support := disjoint_right.1 h ha
       simp only [mem_support_iff, Classical.not_not] at * <;> simpa only [add_apply, this, zero_add]
 #align finsupp.support_add_eq Finsupp.support_add_eq
+-/
 
+#print Finsupp.single_add /-
 @[simp]
 theorem single_add (a : α) (b₁ b₂ : M) : single a (b₁ + b₂) = single a b₁ + single a b₂ :=
   ext fun a' => by
@@ -1038,10 +1200,12 @@ theorem single_add (a : α) (b₁ b₂ : M) : single a (b₁ + b₂) = single a
     · rw [h, add_apply, single_eq_same, single_eq_same, single_eq_same]
     · rw [add_apply, single_eq_of_ne h, single_eq_of_ne h, single_eq_of_ne h, zero_add]
 #align finsupp.single_add Finsupp.single_add
+-/
 
 instance : AddZeroClass (α →₀ M) :=
   FunLike.coe_injective.AddZeroClass _ coe_zero coe_add
 
+#print Finsupp.singleAddHom /-
 /-- `finsupp.single` as an `add_monoid_hom`.
 
 See `finsupp.lsingle` in `linear_algebra/finsupp` for the stronger version as a linear map. -/
@@ -1049,7 +1213,9 @@ See `finsupp.lsingle` in `linear_algebra/finsupp` for the stronger version as a
 def singleAddHom (a : α) : M →+ α →₀ M :=
   ⟨single a, single_zero a, single_add a⟩
 #align finsupp.single_add_hom Finsupp.singleAddHom
+-/
 
+#print Finsupp.applyAddHom /-
 /-- Evaluation of a function `f : α →₀ M` at a point as an additive monoid homomorphism.
 
 See `finsupp.lapply` in `linear_algebra/finsupp` for the stronger version as a linear map. -/
@@ -1057,7 +1223,9 @@ See `finsupp.lapply` in `linear_algebra/finsupp` for the stronger version as a l
 def applyAddHom (a : α) : (α →₀ M) →+ M :=
   ⟨fun g => g a, zero_apply, fun _ _ => add_apply _ _ _⟩
 #align finsupp.apply_add_hom Finsupp.applyAddHom
+-/
 
+#print Finsupp.coeFnAddHom /-
 /-- Coercion from a `finsupp` to a function type is an `add_monoid_hom`. -/
 @[simps]
 noncomputable def coeFnAddHom : (α →₀ M) →+ α → M
@@ -1066,7 +1234,9 @@ noncomputable def coeFnAddHom : (α →₀ M) →+ α → M
   map_zero' := coe_zero
   map_add' := coe_add
 #align finsupp.coe_fn_add_hom Finsupp.coeFnAddHom
+-/
 
+#print Finsupp.update_eq_single_add_erase /-
 theorem update_eq_single_add_erase (f : α →₀ M) (a : α) (b : M) :
     f.update a b = single a b + f.eraseₓ a := by
   classical
@@ -1075,7 +1245,9 @@ theorem update_eq_single_add_erase (f : α →₀ M) (a : α) (b : M) :
   · simp
   · simp [Function.update_noteq h.symm, single_apply, h, erase_ne, h.symm]
 #align finsupp.update_eq_single_add_erase Finsupp.update_eq_single_add_erase
+-/
 
+#print Finsupp.update_eq_erase_add_single /-
 theorem update_eq_erase_add_single (f : α →₀ M) (a : α) (b : M) :
     f.update a b = f.eraseₓ a + single a b := by
   classical
@@ -1084,15 +1256,21 @@ theorem update_eq_erase_add_single (f : α →₀ M) (a : α) (b : M) :
   · simp
   · simp [Function.update_noteq h.symm, single_apply, h, erase_ne, h.symm]
 #align finsupp.update_eq_erase_add_single Finsupp.update_eq_erase_add_single
+-/
 
+#print Finsupp.single_add_erase /-
 theorem single_add_erase (a : α) (f : α →₀ M) : single a (f a) + f.eraseₓ a = f := by
   rw [← update_eq_single_add_erase, update_self]
 #align finsupp.single_add_erase Finsupp.single_add_erase
+-/
 
+#print Finsupp.erase_add_single /-
 theorem erase_add_single (a : α) (f : α →₀ M) : f.eraseₓ a + single a (f a) = f := by
   rw [← update_eq_erase_add_single, update_self]
 #align finsupp.erase_add_single Finsupp.erase_add_single
+-/
 
+#print Finsupp.erase_add /-
 @[simp]
 theorem erase_add (a : α) (f f' : α →₀ M) : erase a (f + f') = erase a f + erase a f' :=
   by
@@ -1100,7 +1278,9 @@ theorem erase_add (a : α) (f f' : α →₀ M) : erase a (f + f') = erase a f +
   · rw [hs, add_apply, erase_same, erase_same, erase_same, add_zero]
   rw [add_apply, erase_ne hs, erase_ne hs, erase_ne hs, add_apply]
 #align finsupp.erase_add Finsupp.erase_add
+-/
 
+#print Finsupp.eraseAddHom /-
 /-- `finsupp.erase` as an `add_monoid_hom`. -/
 @[simps]
 def eraseAddHom (a : α) : (α →₀ M) →+ α →₀ M
@@ -1109,7 +1289,9 @@ def eraseAddHom (a : α) : (α →₀ M) →+ α →₀ M
   map_zero' := erase_zero a
   map_add' := erase_add a
 #align finsupp.erase_add_hom Finsupp.eraseAddHom
+-/
 
+#print Finsupp.induction /-
 @[elab_as_elim]
 protected theorem induction {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 : p 0)
     (ha : ∀ (a b) (f : α →₀ M), a ∉ f.support → b ≠ 0 → p f → p (single a b + f)) : p f :=
@@ -1125,7 +1307,9 @@ protected theorem induction {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 :
     · apply ih _ _
       rw [support_erase, hf, Finset.erase_cons]
 #align finsupp.induction Finsupp.induction
+-/
 
+#print Finsupp.induction₂ /-
 theorem induction₂ {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 : p 0)
     (ha : ∀ (a b) (f : α →₀ M), a ∉ f.support → b ≠ 0 → p f → p (f + single a b)) : p f :=
   suffices ∀ (s) (f : α →₀ M), f.support = s → p f from this _ _ rfl
@@ -1141,12 +1325,16 @@ theorem induction₂ {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 : p 0)
     · apply ih _ _
       rw [support_erase, hf, Finset.erase_cons]
 #align finsupp.induction₂ Finsupp.induction₂
+-/
 
+#print Finsupp.induction_linear /-
 theorem induction_linear {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 : p 0)
     (hadd : ∀ f g : α →₀ M, p f → p g → p (f + g)) (hsingle : ∀ a b, p (single a b)) : p f :=
   induction₂ f h0 fun a b f _ _ w => hadd _ _ w (hsingle _ _)
 #align finsupp.induction_linear Finsupp.induction_linear
+-/
 
+#print Finsupp.add_closure_setOf_eq_single /-
 @[simp]
 theorem add_closure_setOf_eq_single :
     AddSubmonoid.closure {f : α →₀ M | ∃ a b, f = single a b} = ⊤ :=
@@ -1154,7 +1342,9 @@ theorem add_closure_setOf_eq_single :
     Finsupp.induction x (AddSubmonoid.zero_mem _) fun a b f ha hb hf =>
       AddSubmonoid.add_mem _ (AddSubmonoid.subset_closure <| ⟨a, b, rfl⟩) hf
 #align finsupp.add_closure_set_of_eq_single Finsupp.add_closure_setOf_eq_single
+-/
 
+#print Finsupp.addHom_ext /-
 /-- If two additive homomorphisms from `α →₀ M` are equal on each `single a b`,
 then they are equal. -/
 theorem addHom_ext [AddZeroClass N] ⦃f g : (α →₀ M) →+ N⦄
@@ -1164,7 +1354,9 @@ theorem addHom_ext [AddZeroClass N] ⦃f g : (α →₀ M) →+ N⦄
   rintro _ ⟨x, y, rfl⟩
   apply H
 #align finsupp.add_hom_ext Finsupp.addHom_ext
+-/
 
+#print Finsupp.addHom_ext' /-
 /-- If two additive homomorphisms from `α →₀ M` are equal on each `single a b`,
 then they are equal.
 
@@ -1176,32 +1368,42 @@ theorem addHom_ext' [AddZeroClass N] ⦃f g : (α →₀ M) →+ N⦄
     (H : ∀ x, f.comp (singleAddHom x) = g.comp (singleAddHom x)) : f = g :=
   addHom_ext fun x => AddMonoidHom.congr_fun (H x)
 #align finsupp.add_hom_ext' Finsupp.addHom_ext'
+-/
 
+#print Finsupp.mulHom_ext /-
 theorem mulHom_ext [MulOneClass N] ⦃f g : Multiplicative (α →₀ M) →* N⦄
     (H : ∀ x y, f (Multiplicative.ofAdd <| single x y) = g (Multiplicative.ofAdd <| single x y)) :
     f = g :=
   MonoidHom.ext <|
     AddMonoidHom.congr_fun <| @addHom_ext α M (Additive N) _ _ f.toAdditive'' g.toAdditive'' H
 #align finsupp.mul_hom_ext Finsupp.mulHom_ext
+-/
 
+#print Finsupp.mulHom_ext' /-
 @[ext]
 theorem mulHom_ext' [MulOneClass N] {f g : Multiplicative (α →₀ M) →* N}
     (H : ∀ x, f.comp (singleAddHom x).toMultiplicative = g.comp (singleAddHom x).toMultiplicative) :
     f = g :=
   mulHom_ext fun x => MonoidHom.congr_fun (H x)
 #align finsupp.mul_hom_ext' Finsupp.mulHom_ext'
+-/
 
+#print Finsupp.mapRange_add /-
 theorem mapRange_add [AddZeroClass N] {f : M → N} {hf : f 0 = 0}
     (hf' : ∀ x y, f (x + y) = f x + f y) (v₁ v₂ : α →₀ M) :
     mapRange f hf (v₁ + v₂) = mapRange f hf v₁ + mapRange f hf v₂ :=
   ext fun _ => by simp only [hf', add_apply, map_range_apply]
 #align finsupp.map_range_add Finsupp.mapRange_add
+-/
 
+#print Finsupp.mapRange_add' /-
 theorem mapRange_add' [AddZeroClass N] [AddMonoidHomClass β M N] {f : β} (v₁ v₂ : α →₀ M) :
     mapRange f (map_zero f) (v₁ + v₂) = mapRange f (map_zero f) v₁ + mapRange f (map_zero f) v₂ :=
   mapRange_add (map_add f) v₁ v₂
 #align finsupp.map_range_add' Finsupp.mapRange_add'
+-/
 
+#print Finsupp.embDomain.addMonoidHom /-
 /-- Bundle `emb_domain f` as an additive map from `α →₀ M` to `β →₀ M`. -/
 @[simps]
 def embDomain.addMonoidHom (f : α ↪ β) : (α →₀ M) →+ β →₀ M
@@ -1215,12 +1417,15 @@ def embDomain.addMonoidHom (f : α ↪ β) : (α →₀ M) →+ β →₀ M
       simp
     · simp [emb_domain_notin_range, h]
 #align finsupp.emb_domain.add_monoid_hom Finsupp.embDomain.addMonoidHom
+-/
 
+#print Finsupp.embDomain_add /-
 @[simp]
 theorem embDomain_add (f : α ↪ β) (v w : α →₀ M) :
     embDomain f (v + w) = embDomain f v + embDomain f w :=
   (embDomain.addMonoidHom f).map_add v w
 #align finsupp.emb_domain_add Finsupp.embDomain_add
+-/
 
 end AddZeroClass
 
@@ -1228,11 +1433,13 @@ section AddMonoid
 
 variable [AddMonoid M]
 
+#print Finsupp.hasNatScalar /-
 /-- Note the general `finsupp.has_smul` instance doesn't apply as `ℕ` is not distributive
 unless `β i`'s addition is commutative. -/
 instance hasNatScalar : SMul ℕ (α →₀ M) :=
   ⟨fun n v => v.mapRange ((· • ·) n) (nsmul_zero _)⟩
 #align finsupp.has_nat_scalar Finsupp.hasNatScalar
+-/
 
 instance : AddMonoid (α →₀ M) :=
   FunLike.coe_injective.AddMonoid _ coe_zero coe_add fun _ _ => rfl
@@ -1245,54 +1452,72 @@ instance [AddCommMonoid M] : AddCommMonoid (α →₀ M) :=
 instance [NegZeroClass G] : Neg (α →₀ G) :=
   ⟨mapRange Neg.neg neg_zero⟩
 
+#print Finsupp.coe_neg /-
 @[simp]
 theorem coe_neg [NegZeroClass G] (g : α →₀ G) : ⇑(-g) = -g :=
   rfl
 #align finsupp.coe_neg Finsupp.coe_neg
+-/
 
+#print Finsupp.neg_apply /-
 theorem neg_apply [NegZeroClass G] (g : α →₀ G) (a : α) : (-g) a = -g a :=
   rfl
 #align finsupp.neg_apply Finsupp.neg_apply
+-/
 
+#print Finsupp.mapRange_neg /-
 theorem mapRange_neg [NegZeroClass G] [NegZeroClass H] {f : G → H} {hf : f 0 = 0}
     (hf' : ∀ x, f (-x) = -f x) (v : α →₀ G) : mapRange f hf (-v) = -mapRange f hf v :=
   ext fun _ => by simp only [hf', neg_apply, map_range_apply]
 #align finsupp.map_range_neg Finsupp.mapRange_neg
+-/
 
+#print Finsupp.mapRange_neg' /-
 theorem mapRange_neg' [AddGroup G] [SubtractionMonoid H] [AddMonoidHomClass β G H] {f : β}
     (v : α →₀ G) : mapRange f (map_zero f) (-v) = -mapRange f (map_zero f) v :=
   mapRange_neg (map_neg f) v
 #align finsupp.map_range_neg' Finsupp.mapRange_neg'
+-/
 
 instance [SubNegZeroMonoid G] : Sub (α →₀ G) :=
   ⟨zipWith Sub.sub (sub_zero _)⟩
 
+#print Finsupp.coe_sub /-
 @[simp]
 theorem coe_sub [SubNegZeroMonoid G] (g₁ g₂ : α →₀ G) : ⇑(g₁ - g₂) = g₁ - g₂ :=
   rfl
 #align finsupp.coe_sub Finsupp.coe_sub
+-/
 
+#print Finsupp.sub_apply /-
 theorem sub_apply [SubNegZeroMonoid G] (g₁ g₂ : α →₀ G) (a : α) : (g₁ - g₂) a = g₁ a - g₂ a :=
   rfl
 #align finsupp.sub_apply Finsupp.sub_apply
+-/
 
+#print Finsupp.mapRange_sub /-
 theorem mapRange_sub [SubNegZeroMonoid G] [SubNegZeroMonoid H] {f : G → H} {hf : f 0 = 0}
     (hf' : ∀ x y, f (x - y) = f x - f y) (v₁ v₂ : α →₀ G) :
     mapRange f hf (v₁ - v₂) = mapRange f hf v₁ - mapRange f hf v₂ :=
   ext fun _ => by simp only [hf', sub_apply, map_range_apply]
 #align finsupp.map_range_sub Finsupp.mapRange_sub
+-/
 
+#print Finsupp.mapRange_sub' /-
 theorem mapRange_sub' [AddGroup G] [SubtractionMonoid H] [AddMonoidHomClass β G H] {f : β}
     (v₁ v₂ : α →₀ G) :
     mapRange f (map_zero f) (v₁ - v₂) = mapRange f (map_zero f) v₁ - mapRange f (map_zero f) v₂ :=
   mapRange_sub (map_sub f) v₁ v₂
 #align finsupp.map_range_sub' Finsupp.mapRange_sub'
+-/
 
+#print Finsupp.hasIntScalar /-
 /-- Note the general `finsupp.has_smul` instance doesn't apply as `ℤ` is not distributive
 unless `β i`'s addition is commutative. -/
 instance hasIntScalar [AddGroup G] : SMul ℤ (α →₀ G) :=
   ⟨fun n v => v.mapRange ((· • ·) n) (zsmul_zero _)⟩
 #align finsupp.has_int_scalar Finsupp.hasIntScalar
+-/
 
 instance [AddGroup G] : AddGroup (α →₀ G) :=
   FunLike.coe_injective.AddGroup _ coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl) fun _ _ => rfl
@@ -1301,6 +1526,7 @@ instance [AddCommGroup G] : AddCommGroup (α →₀ G) :=
   FunLike.coe_injective.AddCommGroup _ coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl) fun _ _ =>
     rfl
 
+#print Finsupp.single_add_single_eq_single_add_single /-
 theorem single_add_single_eq_single_add_single [AddCommMonoid M] {k l m n : α} {u v : M}
     (hu : u ≠ 0) (hv : v ≠ 0) :
     single k u + single l v = single m u + single n v ↔
@@ -1310,7 +1536,9 @@ theorem single_add_single_eq_single_add_single [AddCommMonoid M] {k l m n : α}
   simp_rw [FunLike.ext_iff, coe_add, single_eq_pi_single, ← funext_iff]
   exact Pi.single_add_single_eq_single_add_single hu hv
 #align finsupp.single_add_single_eq_single_add_single Finsupp.single_add_single_eq_single_add_single
+-/
 
+#print Finsupp.support_neg /-
 @[simp]
 theorem support_neg [AddGroup G] (f : α →₀ G) : support (-f) = support f :=
   Finset.Subset.antisymm support_mapRange
@@ -1318,14 +1546,18 @@ theorem support_neg [AddGroup G] (f : α →₀ G) : support (-f) = support f :=
       support f = support (- -f) := congr_arg support (neg_neg _).symm
       _ ⊆ support (-f) := support_mapRange)
 #align finsupp.support_neg Finsupp.support_neg
+-/
 
+#print Finsupp.support_sub /-
 theorem support_sub [DecidableEq α] [AddGroup G] {f g : α →₀ G} :
     support (f - g) ⊆ support f ∪ support g :=
   by
   rw [sub_eq_add_neg, ← support_neg g]
   exact support_add
 #align finsupp.support_sub Finsupp.support_sub
+-/
 
+#print Finsupp.erase_eq_sub_single /-
 theorem erase_eq_sub_single [AddGroup G] (f : α →₀ G) (a : α) : f.eraseₓ a = f - single a (f a) :=
   by
   ext a'
@@ -1333,11 +1565,14 @@ theorem erase_eq_sub_single [AddGroup G] (f : α →₀ G) (a : α) : f.eraseₓ
   · simp
   · simp [erase_ne h.symm, single_eq_of_ne h]
 #align finsupp.erase_eq_sub_single Finsupp.erase_eq_sub_single
+-/
 
+#print Finsupp.update_eq_sub_add_single /-
 theorem update_eq_sub_add_single [AddGroup G] (f : α →₀ G) (a : α) (b : G) :
     f.update a b = f - single a (f a) + single a b := by
   rw [update_eq_erase_add_single, erase_eq_sub_single]
 #align finsupp.update_eq_sub_add_single Finsupp.update_eq_sub_add_single
+-/
 
 end Finsupp
 
Diff
@@ -1316,8 +1316,7 @@ theorem support_neg [AddGroup G] (f : α →₀ G) : support (-f) = support f :=
   Finset.Subset.antisymm support_mapRange
     (calc
       support f = support (- -f) := congr_arg support (neg_neg _).symm
-      _ ⊆ support (-f) := support_mapRange
-      )
+      _ ⊆ support (-f) := support_mapRange)
 #align finsupp.support_neg Finsupp.support_neg
 
 theorem support_sub [DecidableEq α] [AddGroup G] {f g : α →₀ G} :
Diff
@@ -237,7 +237,7 @@ theorem finite_support (f : α →₀ M) : Set.Finite (Function.support f) :=
   f.fun_support_eq.symm ▸ f.support.finite_toSet
 #align finsupp.finite_support Finsupp.finite_support
 
-/- ./././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) -/
 theorem support_subset_iff {s : Set α} {f : α →₀ M} : ↑f.support ⊆ s ↔ ∀ (a) (_ : a ∉ s), f a = 0 :=
   by
   simp only [Set.subset_def, mem_coe, mem_support_iff] <;> exact forall_congr' fun a => not_imp_comm
@@ -498,7 +498,7 @@ theorem support_eq_singleton {f : α →₀ M} {a : α} :
     fun h => h.2.symm ▸ support_single_ne_zero _ h.1⟩
 #align finsupp.support_eq_singleton Finsupp.support_eq_singleton
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b «expr ≠ » 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (b «expr ≠ » 0) -/
 theorem support_eq_singleton' {f : α →₀ M} {a : α} :
     f.support = {a} ↔ ∃ (b : _) (_ : b ≠ 0), f = single a b :=
   ⟨fun h =>
@@ -511,7 +511,7 @@ theorem card_support_eq_one {f : α →₀ M} : card f.support = 1 ↔ ∃ a, f
   by simp only [card_eq_one, support_eq_singleton]
 #align finsupp.card_support_eq_one Finsupp.card_support_eq_one
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b «expr ≠ » 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (b «expr ≠ » 0) -/
 theorem card_support_eq_one' {f : α →₀ M} :
     card f.support = 1 ↔ ∃ (a : _) (b : _) (_ : b ≠ 0), f = single a b := by
   simp only [card_eq_one, support_eq_singleton']
Diff
@@ -207,11 +207,11 @@ theorem ext_iff' {f g : α →₀ M} : f = g ↔ f.support = g.support ∧ ∀ x
   ⟨fun h => h ▸ ⟨rfl, fun _ _ => rfl⟩, fun ⟨h₁, h₂⟩ =>
     ext fun a => by
       classical exact
-          if h : a ∈ f.support then h₂ a h
-          else by
-            have hf : f a = 0 := not_mem_support_iff.1 h
-            have hg : g a = 0 := by rwa [h₁, not_mem_support_iff] at h 
-            rw [hf, hg]⟩
+        if h : a ∈ f.support then h₂ a h
+        else by
+          have hf : f a = 0 := not_mem_support_iff.1 h
+          have hg : g a = 0 := by rwa [h₁, not_mem_support_iff] at h 
+          rw [hf, hg]⟩
 #align finsupp.ext_iff' Finsupp.ext_iff'
 
 @[simp]
@@ -303,19 +303,19 @@ def single (a : α) (b : M) : α →₀ M
     Pi.single a b
   mem_support_toFun a' := by
     classical
-      obtain rfl | hb := eq_or_ne b 0
-      · simp
-      rw [if_neg hb, mem_singleton]
-      obtain rfl | ha := eq_or_ne a' a
-      · simp [hb]
-      simp [Pi.single_eq_of_ne', ha]
+    obtain rfl | hb := eq_or_ne b 0
+    · simp
+    rw [if_neg hb, mem_singleton]
+    obtain rfl | ha := eq_or_ne a' a
+    · simp [hb]
+    simp [Pi.single_eq_of_ne', ha]
 #align finsupp.single Finsupp.single
 -/
 
 theorem single_apply [Decidable (a = a')] : single a b a' = if a = a' then b else 0 := by
   classical
-    simp_rw [@eq_comm _ a a']
-    convert Pi.single_apply _ _ _
+  simp_rw [@eq_comm _ a a']
+  convert Pi.single_apply _ _ _
 #align finsupp.single_apply Finsupp.single_apply
 
 theorem single_apply_left {f : α → β} (hf : Function.Injective f) (x z : α) (y : M) :
@@ -324,8 +324,8 @@ theorem single_apply_left {f : α → β} (hf : Function.Injective f) (x z : α)
 
 theorem single_eq_set_indicator : ⇑(single a b) = Set.indicator {a} fun _ => b := by
   classical
-    ext
-    simp [single_apply, Set.indicator, @eq_comm _ a]
+  ext
+  simp [single_apply, Set.indicator, @eq_comm _ a]
 #align finsupp.single_eq_set_indicator Finsupp.single_eq_set_indicator
 
 #print Finsupp.single_eq_same /-
@@ -356,11 +356,11 @@ theorem single_zero (a : α) : (single a 0 : α →₀ M) = 0 :=
 theorem single_of_single_apply (a a' : α) (b : M) :
     single a ((single a' b) a) = single a' (single a' b) a := by
   classical
-    rw [single_apply, single_apply]
-    ext
-    split_ifs
-    · rw [h]
-    · rw [zero_apply, single_apply, if_t_t]
+  rw [single_apply, single_apply]
+  ext
+  split_ifs
+  · rw [h]
+  · rw [zero_apply, single_apply, if_t_t]
 #align finsupp.single_of_single_apply Finsupp.single_of_single_apply
 
 #print Finsupp.support_single_ne_zero /-
@@ -371,8 +371,8 @@ theorem support_single_ne_zero (a : α) (hb : b ≠ 0) : (single a b).support =
 
 theorem support_single_subset : (single a b).support ⊆ {a} := by
   classical
-    show ite _ _ _ ⊆ _
-    split_ifs <;> [exact empty_subset _; exact subset.refl _]
+  show ite _ _ _ ⊆ _
+  split_ifs <;> [exact empty_subset _; exact subset.refl _]
 #align finsupp.support_single_subset Finsupp.support_single_subset
 
 #print Finsupp.single_apply_mem /-
@@ -470,8 +470,8 @@ theorem single_eq_zero : single a b = 0 ↔ b = 0 := by simp [ext_iff, single_eq
 #print Finsupp.single_swap /-
 theorem single_swap (a₁ a₂ : α) (b : M) : single a₁ b a₂ = single a₂ b a₁ := by
   classical
-    simp only [single_apply]
-    ac_rfl
+  simp only [single_apply]
+  ac_rfl
 #align finsupp.single_swap Finsupp.single_swap
 -/
 
@@ -585,16 +585,16 @@ theorem coe_update [DecidableEq α] : (f.update a b : α → M) = Function.updat
 @[simp]
 theorem update_self : f.update a (f a) = f := by
   classical
-    ext
-    simp
+  ext
+  simp
 #align finsupp.update_self Finsupp.update_self
 
 @[simp]
 theorem zero_update : update 0 a b = single a b := by
   classical
-    ext
-    rw [single_eq_update]
-    rfl
+  ext
+  rw [single_eq_update]
+  rfl
 #align finsupp.zero_update Finsupp.zero_update
 
 theorem support_update [DecidableEq α] [DecidableEq M] :
@@ -885,19 +885,19 @@ theorem embDomain_zero (f : α ↪ β) : (embDomain f 0 : β →₀ M) = 0 :=
 @[simp]
 theorem embDomain_apply (f : α ↪ β) (v : α →₀ M) (a : α) : embDomain f v (f a) = v a := by
   classical
-    change dite _ _ _ = _
-    split_ifs <;> rw [Finset.mem_map' f] at h 
-    · refine' congr_arg (v : α → M) (f.inj' _)
-      exact Finset.choose_property (fun a₁ => f a₁ = f a) _ _
-    · exact (not_mem_support_iff.1 h).symm
+  change dite _ _ _ = _
+  split_ifs <;> rw [Finset.mem_map' f] at h 
+  · refine' congr_arg (v : α → M) (f.inj' _)
+    exact Finset.choose_property (fun a₁ => f a₁ = f a) _ _
+  · exact (not_mem_support_iff.1 h).symm
 #align finsupp.emb_domain_apply Finsupp.embDomain_apply
 
 theorem embDomain_notin_range (f : α ↪ β) (v : α →₀ M) (a : β) (h : a ∉ Set.range f) :
     embDomain f v a = 0 := by
   classical
-    refine' dif_neg (mt (fun h => _) h)
-    rcases Finset.mem_map.1 h with ⟨a, h, rfl⟩
-    exact Set.mem_range_self a
+  refine' dif_neg (mt (fun h => _) h)
+  rcases Finset.mem_map.1 h with ⟨a, h, rfl⟩
+  exact Set.mem_range_self a
 #align finsupp.emb_domain_notin_range Finsupp.embDomain_notin_range
 
 theorem embDomain_injective (f : α ↪ β) : Function.Injective (embDomain f : (α →₀ M) → β →₀ M) :=
@@ -927,34 +927,34 @@ theorem embDomain_mapRange (f : α ↪ β) (g : M → N) (p : α →₀ M) (hg :
 theorem single_of_embDomain_single (l : α →₀ M) (f : α ↪ β) (a : β) (b : M) (hb : b ≠ 0)
     (h : l.embDomain f = single a b) : ∃ x, l = single x b ∧ f x = a := by
   classical
-    have h_map_support : Finset.map f l.support = {a} := by
-      rw [← support_emb_domain, h, support_single_ne_zero _ hb] <;> rfl
-    have ha : a ∈ Finset.map f l.support := by simp only [h_map_support, Finset.mem_singleton]
-    rcases Finset.mem_map.1 ha with ⟨c, hc₁, hc₂⟩
-    use c
-    constructor
-    · ext d
-      rw [← emb_domain_apply f l, h]
-      by_cases h_cases : c = d
-      · simp only [Eq.symm h_cases, hc₂, single_eq_same]
-      · rw [single_apply, single_apply, if_neg, if_neg h_cases]
-        by_contra hfd
-        exact h_cases (f.injective (hc₂.trans hfd))
-    · exact hc₂
+  have h_map_support : Finset.map f l.support = {a} := by
+    rw [← support_emb_domain, h, support_single_ne_zero _ hb] <;> rfl
+  have ha : a ∈ Finset.map f l.support := by simp only [h_map_support, Finset.mem_singleton]
+  rcases Finset.mem_map.1 ha with ⟨c, hc₁, hc₂⟩
+  use c
+  constructor
+  · ext d
+    rw [← emb_domain_apply f l, h]
+    by_cases h_cases : c = d
+    · simp only [Eq.symm h_cases, hc₂, single_eq_same]
+    · rw [single_apply, single_apply, if_neg, if_neg h_cases]
+      by_contra hfd
+      exact h_cases (f.injective (hc₂.trans hfd))
+  · exact hc₂
 #align finsupp.single_of_emb_domain_single Finsupp.single_of_embDomain_single
 
 @[simp]
 theorem embDomain_single (f : α ↪ β) (a : α) (m : M) : embDomain f (single a m) = single (f a) m :=
   by
   classical
-    ext b
-    by_cases h : b ∈ Set.range f
-    · rcases h with ⟨a', rfl⟩
-      simp [single_apply]
-    · simp only [emb_domain_notin_range, h, single_apply, not_false_iff]
-      rw [if_neg]
-      rintro rfl
-      simpa using h
+  ext b
+  by_cases h : b ∈ Set.range f
+  · rcases h with ⟨a', rfl⟩
+    simp [single_apply]
+  · simp only [emb_domain_notin_range, h, single_apply, not_false_iff]
+    rw [if_neg]
+    rintro rfl
+    simpa using h
 #align finsupp.emb_domain_single Finsupp.embDomain_single
 
 end EmbDomain
@@ -1070,19 +1070,19 @@ noncomputable def coeFnAddHom : (α →₀ M) →+ α → M
 theorem update_eq_single_add_erase (f : α →₀ M) (a : α) (b : M) :
     f.update a b = single a b + f.eraseₓ a := by
   classical
-    ext j
-    rcases eq_or_ne a j with (rfl | h)
-    · simp
-    · simp [Function.update_noteq h.symm, single_apply, h, erase_ne, h.symm]
+  ext j
+  rcases eq_or_ne a j with (rfl | h)
+  · simp
+  · simp [Function.update_noteq h.symm, single_apply, h, erase_ne, h.symm]
 #align finsupp.update_eq_single_add_erase Finsupp.update_eq_single_add_erase
 
 theorem update_eq_erase_add_single (f : α →₀ M) (a : α) (b : M) :
     f.update a b = f.eraseₓ a + single a b := by
   classical
-    ext j
-    rcases eq_or_ne a j with (rfl | h)
-    · simp
-    · simp [Function.update_noteq h.symm, single_apply, h, erase_ne, h.symm]
+  ext j
+  rcases eq_or_ne a j with (rfl | h)
+  · simp
+  · simp [Function.update_noteq h.symm, single_apply, h, erase_ne, h.symm]
 #align finsupp.update_eq_erase_add_single Finsupp.update_eq_erase_add_single
 
 theorem single_add_erase (a : α) (f : α →₀ M) : single a (f a) + f.eraseₓ a = f := by
@@ -1119,11 +1119,11 @@ protected theorem induction {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 :
     by
     suffices p (single a (f a) + f.eraseₓ a) by rwa [single_add_erase] at this 
     classical
-      apply ha
-      · rw [support_erase, mem_erase]; exact fun H => H.1 rfl
-      · rw [← mem_support_iff, hf]; exact mem_cons_self _ _
-      · apply ih _ _
-        rw [support_erase, hf, Finset.erase_cons]
+    apply ha
+    · rw [support_erase, mem_erase]; exact fun H => H.1 rfl
+    · rw [← mem_support_iff, hf]; exact mem_cons_self _ _
+    · apply ih _ _
+      rw [support_erase, hf, Finset.erase_cons]
 #align finsupp.induction Finsupp.induction
 
 theorem induction₂ {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 : p 0)
@@ -1134,12 +1134,12 @@ theorem induction₂ {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 : p 0)
     by
     suffices p (f.eraseₓ a + single a (f a)) by rwa [erase_add_single] at this 
     classical
-      apply ha
-      · rw [support_erase, mem_erase]; exact fun H => H.1 rfl
-      · rw [← mem_support_iff, hf]
-        exact mem_cons_self _ _
-      · apply ih _ _
-        rw [support_erase, hf, Finset.erase_cons]
+    apply ha
+    · rw [support_erase, mem_erase]; exact fun H => H.1 rfl
+    · rw [← mem_support_iff, hf]
+      exact mem_cons_self _ _
+    · apply ih _ _
+      rw [support_erase, hf, Finset.erase_cons]
 #align finsupp.induction₂ Finsupp.induction₂
 
 theorem induction_linear {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 : p 0)
@@ -1149,7 +1149,7 @@ theorem induction_linear {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 : p
 
 @[simp]
 theorem add_closure_setOf_eq_single :
-    AddSubmonoid.closure { f : α →₀ M | ∃ a b, f = single a b } = ⊤ :=
+    AddSubmonoid.closure {f : α →₀ M | ∃ a b, f = single a b} = ⊤ :=
   top_unique fun x hx =>
     Finsupp.induction x (AddSubmonoid.zero_mem _) fun a b f ha hb hf =>
       AddSubmonoid.add_mem _ (AddSubmonoid.subset_closure <| ⟨a, b, rfl⟩) hf
@@ -1307,8 +1307,8 @@ theorem single_add_single_eq_single_add_single [AddCommMonoid M] {k l m n : α}
       k = m ∧ l = n ∨ u = v ∧ k = n ∧ l = m ∨ u + v = 0 ∧ k = l ∧ m = n :=
   by
   classical
-    simp_rw [FunLike.ext_iff, coe_add, single_eq_pi_single, ← funext_iff]
-    exact Pi.single_add_single_eq_single_add_single hu hv
+  simp_rw [FunLike.ext_iff, coe_add, single_eq_pi_single, ← funext_iff]
+  exact Pi.single_add_single_eq_single_add_single hu hv
 #align finsupp.single_add_single_eq_single_add_single Finsupp.single_add_single_eq_single_add_single
 
 @[simp]
Diff
@@ -210,7 +210,7 @@ theorem ext_iff' {f g : α →₀ M} : f = g ↔ f.support = g.support ∧ ∀ x
           if h : a ∈ f.support then h₂ a h
           else by
             have hf : f a = 0 := not_mem_support_iff.1 h
-            have hg : g a = 0 := by rwa [h₁, not_mem_support_iff] at h
+            have hg : g a = 0 := by rwa [h₁, not_mem_support_iff] at h 
             rw [hf, hg]⟩
 #align finsupp.ext_iff' Finsupp.ext_iff'
 
@@ -372,12 +372,12 @@ theorem support_single_ne_zero (a : α) (hb : b ≠ 0) : (single a b).support =
 theorem support_single_subset : (single a b).support ⊆ {a} := by
   classical
     show ite _ _ _ ⊆ _
-    split_ifs <;> [exact empty_subset _;exact subset.refl _]
+    split_ifs <;> [exact empty_subset _; exact subset.refl _]
 #align finsupp.support_single_subset Finsupp.support_single_subset
 
 #print Finsupp.single_apply_mem /-
 theorem single_apply_mem (x) : single a b x ∈ ({0, b} : Set M) := by
-  rcases em (a = x) with (rfl | hx) <;> [simp;simp [single_eq_of_ne hx]]
+  rcases em (a = x) with (rfl | hx) <;> [simp; simp [single_eq_of_ne hx]]
 #align finsupp.single_apply_mem Finsupp.single_apply_mem
 -/
 
@@ -393,7 +393,7 @@ theorem range_single_subset : Set.range (single a b) ⊆ {0, b} :=
 theorem single_injective (a : α) : Function.Injective (single a : M → α →₀ M) := fun b₁ b₂ eq =>
   by
   have : (single a b₁ : α →₀ M) a = (single a b₂ : α →₀ M) a := by rw [Eq]
-  rwa [single_eq_same, single_eq_same] at this
+  rwa [single_eq_same, single_eq_same] at this 
 #align finsupp.single_injective Finsupp.single_injective
 -/
 
@@ -429,11 +429,11 @@ theorem single_eq_single_iff (a₁ a₂ : α) (b₁ b₂ : M) :
   · intro eq
     by_cases a₁ = a₂
     · refine' Or.inl ⟨h, _⟩
-      rwa [h, (single_injective a₂).eq_iff] at eq
-    · rw [ext_iff] at eq
+      rwa [h, (single_injective a₂).eq_iff] at eq 
+    · rw [ext_iff] at eq 
       have h₁ := Eq a₁
       have h₂ := Eq a₂
-      simp only [single_eq_same, single_eq_of_ne h, single_eq_of_ne (Ne.symm h)] at h₁ h₂
+      simp only [single_eq_same, single_eq_of_ne h, single_eq_of_ne (Ne.symm h)] at h₁ h₂ 
       exact Or.inr ⟨h₁, h₂.symm⟩
   · rintro (⟨rfl, rfl⟩ | ⟨rfl, rfl⟩)
     · rfl
@@ -500,7 +500,7 @@ theorem support_eq_singleton {f : α →₀ M} {a : α} :
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b «expr ≠ » 0) -/
 theorem support_eq_singleton' {f : α →₀ M} {a : α} :
-    f.support = {a} ↔ ∃ (b : _)(_ : b ≠ 0), f = single a b :=
+    f.support = {a} ↔ ∃ (b : _) (_ : b ≠ 0), f = single a b :=
   ⟨fun h =>
     let h := support_eq_singleton.1 h
     ⟨_, h.1, h.2⟩,
@@ -513,7 +513,7 @@ theorem card_support_eq_one {f : α →₀ M} : card f.support = 1 ↔ ∃ a, f
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b «expr ≠ » 0) -/
 theorem card_support_eq_one' {f : α →₀ M} :
-    card f.support = 1 ↔ ∃ (a : _)(b : _)(_ : b ≠ 0), f = single a b := by
+    card f.support = 1 ↔ ∃ (a : _) (b : _) (_ : b ≠ 0), f = single a b := by
   simp only [card_eq_one, support_eq_singleton']
 #align finsupp.card_support_eq_one' Finsupp.card_support_eq_one'
 
@@ -637,7 +637,7 @@ def erase (a : α) (f : α →₀ M) : α →₀ M
     if a' = a then 0 else f a'
   mem_support_toFun a' := by
     rw [mem_erase, mem_support_iff] <;> split_ifs <;>
-      [exact ⟨fun H _ => H.1 h, fun H => (H rfl).elim⟩;exact and_iff_right h]
+      [exact ⟨fun H _ => H.1 h, fun H => (H rfl).elim⟩; exact and_iff_right h]
 #align finsupp.erase Finsupp.erase
 -/
 
@@ -886,7 +886,7 @@ theorem embDomain_zero (f : α ↪ β) : (embDomain f 0 : β →₀ M) = 0 :=
 theorem embDomain_apply (f : α ↪ β) (v : α →₀ M) (a : α) : embDomain f v (f a) = v a := by
   classical
     change dite _ _ _ = _
-    split_ifs <;> rw [Finset.mem_map' f] at h
+    split_ifs <;> rw [Finset.mem_map' f] at h 
     · refine' congr_arg (v : α → M) (f.inj' _)
       exact Finset.choose_property (fun a₁ => f a₁ = f a) _ _
     · exact (not_mem_support_iff.1 h).symm
@@ -977,7 +977,7 @@ def zipWith (f : M → N → P) (hf : f 0 0 = 0) (g₁ : α →₀ M) (g₂ : α
     (fun a => f (g₁ a) (g₂ a)) fun a H =>
     by
     simp only [mem_union, mem_support_iff, Ne]; rw [← not_and_or]
-    rintro ⟨h₁, h₂⟩; rw [h₁, h₂] at H; exact H hf
+    rintro ⟨h₁, h₂⟩; rw [h₁, h₂] at H ; exact H hf
 #align finsupp.zip_with Finsupp.zipWith
 -/
 
@@ -1025,7 +1025,7 @@ theorem support_add_eq [DecidableEq α] {g₁ g₂ : α →₀ M} (h : Disjoint
       (fun ha => by
         have : a ∉ g₂.support := disjoint_left.1 h ha
         simp only [mem_support_iff, Classical.not_not] at * <;>
-          simpa only [add_apply, this, add_zero] )
+          simpa only [add_apply, this, add_zero])
       fun ha => by
       have : a ∉ g₁.support := disjoint_right.1 h ha
       simp only [mem_support_iff, Classical.not_not] at * <;> simpa only [add_apply, this, zero_add]
@@ -1117,7 +1117,7 @@ protected theorem induction {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 :
   fun s =>
   Finset.cons_induction_on s (fun f hf => by rwa [support_eq_empty.1 hf]) fun a s has ih f hf =>
     by
-    suffices p (single a (f a) + f.eraseₓ a) by rwa [single_add_erase] at this
+    suffices p (single a (f a) + f.eraseₓ a) by rwa [single_add_erase] at this 
     classical
       apply ha
       · rw [support_erase, mem_erase]; exact fun H => H.1 rfl
@@ -1132,7 +1132,7 @@ theorem induction₂ {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 : p 0)
   fun s =>
   Finset.cons_induction_on s (fun f hf => by rwa [support_eq_empty.1 hf]) fun a s has ih f hf =>
     by
-    suffices p (f.eraseₓ a + single a (f a)) by rwa [erase_add_single] at this
+    suffices p (f.eraseₓ a + single a (f a)) by rwa [erase_add_single] at this 
     classical
       apply ha
       · rw [support_erase, mem_erase]; exact fun H => H.1 rfl
Diff
@@ -90,7 +90,7 @@ noncomputable section
 
 open Finset Function
 
-open BigOperators
+open scoped BigOperators
 
 variable {α β γ ι M M' N P G H R S : Type _}
 
Diff
@@ -131,34 +131,16 @@ directly. -/
 instance : CoeFun (α →₀ M) fun _ => α → M :=
   FunLike.hasCoeToFun
 
-/- warning: finsupp.ext -> Finsupp.ext is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, (forall (a : α), Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) g a)) -> (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {g : Finsupp.{u2, u1} α M _inst_1}, (forall (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) g a)) -> (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f g)
-Case conversion may be inaccurate. Consider using '#align finsupp.ext Finsupp.extₓ'. -/
 @[ext]
 theorem ext {f g : α →₀ M} (h : ∀ a, f a = g a) : f = g :=
   FunLike.ext _ _ h
 #align finsupp.ext Finsupp.ext
 
-/- warning: finsupp.ext_iff -> Finsupp.ext_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g) (forall (a : α), Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) g a))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {g : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f g) (forall (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) g a))
-Case conversion may be inaccurate. Consider using '#align finsupp.ext_iff Finsupp.ext_iffₓ'. -/
 /-- Deprecated. Use `fun_like.ext_iff` instead. -/
 theorem ext_iff {f g : α →₀ M} : f = g ↔ ∀ a, f a = g a :=
   FunLike.ext_iff
 #align finsupp.ext_iff Finsupp.ext_iff
 
-/- warning: finsupp.coe_fn_inj -> Finsupp.coeFn_inj is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{max (succ u1) (succ u2)} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) g)) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {g : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{max (succ u2) (succ u1)} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) g)) (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f g)
-Case conversion may be inaccurate. Consider using '#align finsupp.coe_fn_inj Finsupp.coeFn_injₓ'. -/
 /-- Deprecated. Use `fun_like.coe_fn_eq` instead. -/
 theorem coeFn_inj {f g : α →₀ M} : (f : α → M) = g ↔ f = g :=
   FunLike.coe_fn_eq
@@ -171,23 +153,11 @@ theorem coeFn_injective : @Function.Injective (α →₀ M) (α → M) coeFn :=
 #align finsupp.coe_fn_injective Finsupp.coeFn_injective
 -/
 
-/- warning: finsupp.congr_fun -> Finsupp.congr_fun is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g) -> (forall (a : α), Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) g a))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {g : Finsupp.{u2, u1} α M _inst_1}, (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f g) -> (forall (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) g a))
-Case conversion may be inaccurate. Consider using '#align finsupp.congr_fun Finsupp.congr_funₓ'. -/
 /-- Deprecated. Use `fun_like.congr_fun` instead. -/
 theorem congr_fun {f g : α →₀ M} (h : f = g) (a : α) : f a = g a :=
   FunLike.congr_fun h _
 #align finsupp.congr_fun Finsupp.congr_fun
 
-/- warning: finsupp.coe_mk -> Finsupp.coe_mk is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (f : α -> M) (s : Finset.{u1} α) (h : forall (a : α), Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) (Ne.{succ u2} M (f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))), Eq.{max (succ u1) (succ u2)} (α -> M) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.mk.{u1, u2} α M _inst_1 s f h)) f
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : α -> M) (s : Finset.{u2} α) (h : forall (a : α), Iff (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) a s) (Ne.{succ u1} M (f a) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1)))), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.mk.{u2, u1} α M _inst_1 s f h)) f
-Case conversion may be inaccurate. Consider using '#align finsupp.coe_mk Finsupp.coe_mkₓ'. -/
 @[simp]
 theorem coe_mk (f : α → M) (s : Finset α) (h : ∀ a, a ∈ s ↔ f a ≠ 0) : ⇑(⟨s, f, h⟩ : α →₀ M) = f :=
   rfl
@@ -196,12 +166,6 @@ theorem coe_mk (f : α → M) (s : Finset α) (h : ∀ a, a ∈ s ↔ f a ≠ 0)
 instance : Zero (α →₀ M) :=
   ⟨⟨∅, 0, fun _ => ⟨False.elim, fun H => H rfl⟩⟩⟩
 
-/- warning: finsupp.coe_zero -> Finsupp.coe_zero is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M], Eq.{succ (max u1 u2)} (α -> M) (coeFn.{max (succ u1) (succ u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1))))) (OfNat.ofNat.{max u1 u2} (α -> M) 0 (OfNat.mk.{max u1 u2} (α -> M) 0 (Zero.zero.{max u1 u2} (α -> M) (Pi.instZero.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1)))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M], Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)))) (OfNat.ofNat.{max u2 u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) 0 (Zero.toOfNat0.{max u2 u1} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (Pi.instZero.{u2, u1} α (fun (a : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (fun (i : α) => _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.coe_zero Finsupp.coe_zeroₓ'. -/
 @[simp]
 theorem coe_zero : ⇑(0 : α →₀ M) = 0 :=
   rfl
@@ -213,12 +177,6 @@ theorem zero_apply {a : α} : (0 : α →₀ M) a = 0 :=
 #align finsupp.zero_apply Finsupp.zero_apply
 -/
 
-/- warning: finsupp.support_zero -> Finsupp.support_zero is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M], Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1))))) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M], Eq.{succ u2} (Finset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)))) (EmptyCollection.emptyCollection.{u2} (Finset.{u2} α) (Finset.instEmptyCollectionFinset.{u2} α))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_zero Finsupp.support_zeroₓ'. -/
 @[simp]
 theorem support_zero : (0 : α →₀ M).support = ∅ :=
   rfl
@@ -227,54 +185,24 @@ theorem support_zero : (0 : α →₀ M).support = ∅ :=
 instance : Inhabited (α →₀ M) :=
   ⟨0⟩
 
-/- warning: finsupp.mem_support_iff -> Finsupp.mem_support_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {a : α}, Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M _inst_1 f)) (Ne.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {a : α}, Iff (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) a (Finsupp.support.{u2, u1} α M _inst_1 f)) (Ne.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1)))
-Case conversion may be inaccurate. Consider using '#align finsupp.mem_support_iff Finsupp.mem_support_iffₓ'. -/
 @[simp]
 theorem mem_support_iff {f : α →₀ M} : ∀ {a : α}, a ∈ f.support ↔ f a ≠ 0 :=
   f.mem_support_toFun
 #align finsupp.mem_support_iff Finsupp.mem_support_iff
 
-/- warning: finsupp.fun_support_eq -> Finsupp.fun_support_eq is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1), Eq.{succ u1} (Set.{u1} α) (Function.support.{u1, u2} α M _inst_1 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f)) ((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} α))) (Finsupp.support.{u1, u2} α M _inst_1 f))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1), Eq.{succ u2} (Set.{u2} α) (Function.support.{u2, u1} α M _inst_1 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f)) (Finset.toSet.{u2} α (Finsupp.support.{u2, u1} α M _inst_1 f))
-Case conversion may be inaccurate. Consider using '#align finsupp.fun_support_eq Finsupp.fun_support_eqₓ'. -/
 @[simp, norm_cast]
 theorem fun_support_eq (f : α →₀ M) : Function.support f = f.support :=
   Set.ext fun x => mem_support_iff.symm
 #align finsupp.fun_support_eq Finsupp.fun_support_eq
 
-/- warning: finsupp.not_mem_support_iff -> Finsupp.not_mem_support_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {a : α}, Iff (Not (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M _inst_1 f))) (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {a : α}, Iff (Not (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) a (Finsupp.support.{u2, u1} α M _inst_1 f))) (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1)))
-Case conversion may be inaccurate. Consider using '#align finsupp.not_mem_support_iff Finsupp.not_mem_support_iffₓ'. -/
 theorem not_mem_support_iff {f : α →₀ M} {a} : a ∉ f.support ↔ f a = 0 :=
   not_iff_comm.1 mem_support_iff.symm
 #align finsupp.not_mem_support_iff Finsupp.not_mem_support_iff
 
-/- warning: finsupp.coe_eq_zero -> Finsupp.coe_eq_zero is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{max (succ u1) (succ u2)} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f) (OfNat.ofNat.{max u1 u2} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) f) 0 (OfNat.mk.{max u1 u2} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) f) 0 (Zero.zero.{max u1 u2} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) f) (Pi.instZero.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1)))))) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1)))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{max (succ u2) (succ u1)} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f) (OfNat.ofNat.{max u2 u1} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{max u2 u1} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (Pi.instZero.{u2, u1} α (fun (a : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (fun (i : α) => _inst_1))))) (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.coe_eq_zero Finsupp.coe_eq_zeroₓ'. -/
 @[simp, norm_cast]
 theorem coe_eq_zero {f : α →₀ M} : (f : α → M) = 0 ↔ f = 0 := by rw [← coe_zero, coe_fn_inj]
 #align finsupp.coe_eq_zero Finsupp.coe_eq_zero
 
-/- warning: finsupp.ext_iff' -> Finsupp.ext_iff' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g) (And (Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 f) (Finsupp.support.{u1, u2} α M _inst_1 g)) (forall (x : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) x (Finsupp.support.{u1, u2} α M _inst_1 f)) -> (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) g x))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {g : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f g) (And (Eq.{succ u2} (Finset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 f) (Finsupp.support.{u2, u1} α M _inst_1 g)) (forall (x : α), (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) x (Finsupp.support.{u2, u1} α M _inst_1 f)) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) g x))))
-Case conversion may be inaccurate. Consider using '#align finsupp.ext_iff' Finsupp.ext_iff'ₓ'. -/
 theorem ext_iff' {f g : α →₀ M} : f = g ↔ f.support = g.support ∧ ∀ x ∈ f.support, f x = g x :=
   ⟨fun h => h ▸ ⟨rfl, fun _ _ => rfl⟩, fun ⟨h₁, h₂⟩ =>
     ext fun a => by
@@ -286,65 +214,29 @@ theorem ext_iff' {f g : α →₀ M} : f = g ↔ f.support = g.support ∧ ∀ x
             rw [hf, hg]⟩
 #align finsupp.ext_iff' Finsupp.ext_iff'
 
-/- warning: finsupp.support_eq_empty -> Finsupp.support_eq_empty is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 f) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α))) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1)))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{succ u2} (Finset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 f) (EmptyCollection.emptyCollection.{u2} (Finset.{u2} α) (Finset.instEmptyCollectionFinset.{u2} α))) (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_eq_empty Finsupp.support_eq_emptyₓ'. -/
 @[simp]
 theorem support_eq_empty {f : α →₀ M} : f.support = ∅ ↔ f = 0 := by
   exact_mod_cast @Function.support_eq_empty_iff _ _ _ f
 #align finsupp.support_eq_empty Finsupp.support_eq_empty
 
-/- warning: finsupp.support_nonempty_iff -> Finsupp.support_nonempty_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Finset.Nonempty.{u1} α (Finsupp.support.{u1, u2} α M _inst_1 f)) (Ne.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1)))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Finset.Nonempty.{u2} α (Finsupp.support.{u2, u1} α M _inst_1 f)) (Ne.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_nonempty_iff Finsupp.support_nonempty_iffₓ'. -/
 theorem support_nonempty_iff {f : α →₀ M} : f.support.Nonempty ↔ f ≠ 0 := by
   simp only [Finsupp.support_eq_empty, Finset.nonempty_iff_ne_empty, Ne.def]
 #align finsupp.support_nonempty_iff Finsupp.support_nonempty_iff
 
-/- warning: finsupp.nonzero_iff_exists -> Finsupp.nonzero_iff_exists is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Ne.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1))))) (Exists.{succ u1} α (fun (a : α) => Ne.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Ne.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)))) (Exists.{succ u2} α (fun (a : α) => Ne.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.nonzero_iff_exists Finsupp.nonzero_iff_existsₓ'. -/
 theorem nonzero_iff_exists {f : α →₀ M} : f ≠ 0 ↔ ∃ a : α, f a ≠ 0 := by
   simp [← Finsupp.support_eq_empty, Finset.eq_empty_iff_forall_not_mem]
 #align finsupp.nonzero_iff_exists Finsupp.nonzero_iff_exists
 
-/- warning: finsupp.card_support_eq_zero -> Finsupp.card_support_eq_zero is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{1} Nat (Finset.card.{u1} α (Finsupp.support.{u1, u2} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1)))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{1} Nat (Finset.card.{u2} α (Finsupp.support.{u2, u1} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.card_support_eq_zero Finsupp.card_support_eq_zeroₓ'. -/
 theorem card_support_eq_zero {f : α →₀ M} : card f.support = 0 ↔ f = 0 := by simp
 #align finsupp.card_support_eq_zero Finsupp.card_support_eq_zero
 
 instance [DecidableEq α] [DecidableEq M] : DecidableEq (α →₀ M) := fun f g =>
   decidable_of_iff (f.support = g.support ∧ ∀ a ∈ f.support, f a = g a) ext_iff'.symm
 
-/- warning: finsupp.finite_support -> Finsupp.finite_support is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1), Set.Finite.{u1} α (Function.support.{u1, u2} α M _inst_1 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1), Set.Finite.{u2} α (Function.support.{u2, u1} α M _inst_1 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f))
-Case conversion may be inaccurate. Consider using '#align finsupp.finite_support Finsupp.finite_supportₓ'. -/
 theorem finite_support (f : α →₀ M) : Set.Finite (Function.support f) :=
   f.fun_support_eq.symm ▸ f.support.finite_toSet
 #align finsupp.finite_support Finsupp.finite_support
 
-/- warning: finsupp.support_subset_iff -> Finsupp.support_subset_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {s : Set.{u1} α} {f : Finsupp.{u1, u2} α M _inst_1}, Iff (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) ((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} α))) (Finsupp.support.{u1, u2} α M _inst_1 f)) s) (forall (a : α), (Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s)) -> (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {s : Set.{u2} α} {f : Finsupp.{u2, u1} α M _inst_1}, Iff (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Finset.toSet.{u2} α (Finsupp.support.{u2, u1} α M _inst_1 f)) s) (forall (a : α), (Not (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s)) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_subset_iff Finsupp.support_subset_iffₓ'. -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ∉ » s) -/
 theorem support_subset_iff {s : Set α} {f : α →₀ M} : ↑f.support ⊆ s ↔ ∀ (a) (_ : a ∉ s), f a = 0 :=
   by
@@ -381,23 +273,11 @@ noncomputable def Equiv.finsuppUnique {ι : Type _} [Unique ι] : (ι →₀ M)
 #align equiv.finsupp_unique Equiv.finsuppUnique
 -/
 
-/- warning: finsupp.unique_ext -> Finsupp.unique_ext is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : Unique.{succ u1} α] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f (Inhabited.default.{succ u1} α (Unique.inhabited.{succ u1} α _inst_2))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) g (Inhabited.default.{succ u1} α (Unique.inhabited.{succ u1} α _inst_2)))) -> (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : Unique.{succ u2} α] {f : Finsupp.{u2, u1} α M _inst_1} {g : Finsupp.{u2, u1} α M _inst_1}, (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) (Inhabited.default.{succ u2} α (Unique.instInhabited.{succ u2} α _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f (Inhabited.default.{succ u2} α (Unique.instInhabited.{succ u2} α _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) g (Inhabited.default.{succ u2} α (Unique.instInhabited.{succ u2} α _inst_2)))) -> (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f g)
-Case conversion may be inaccurate. Consider using '#align finsupp.unique_ext Finsupp.unique_extₓ'. -/
 @[ext]
 theorem unique_ext [Unique α] {f g : α →₀ M} (h : f default = g default) : f = g :=
   ext fun a => by rwa [Unique.eq_default a]
 #align finsupp.unique_ext Finsupp.unique_ext
 
-/- warning: finsupp.unique_ext_iff -> Finsupp.unique_ext_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : Unique.{succ u1} α] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g) (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f (Inhabited.default.{succ u1} α (Unique.inhabited.{succ u1} α _inst_2))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) g (Inhabited.default.{succ u1} α (Unique.inhabited.{succ u1} α _inst_2))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : Unique.{succ u2} α] {f : Finsupp.{u2, u1} α M _inst_1} {g : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f g) (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) (Inhabited.default.{succ u2} α (Unique.instInhabited.{succ u2} α _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f (Inhabited.default.{succ u2} α (Unique.instInhabited.{succ u2} α _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) g (Inhabited.default.{succ u2} α (Unique.instInhabited.{succ u2} α _inst_2))))
-Case conversion may be inaccurate. Consider using '#align finsupp.unique_ext_iff Finsupp.unique_ext_iffₓ'. -/
 theorem unique_ext_iff [Unique α] {f g : α →₀ M} : f = g ↔ f default = g default :=
   ⟨fun h => h ▸ rfl, unique_ext⟩
 #align finsupp.unique_ext_iff Finsupp.unique_ext_iff
@@ -432,34 +312,16 @@ def single (a : α) (b : M) : α →₀ M
 #align finsupp.single Finsupp.single
 -/
 
-/- warning: finsupp.single_apply -> Finsupp.single_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {a' : α} {b : M} [_inst_2 : Decidable (Eq.{succ u1} α a a')], Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a b) a') (ite.{succ u2} M (Eq.{succ u1} α a a') _inst_2 b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {a' : α} {b : M} [_inst_2 : Decidable (Eq.{succ u2} α a a')], Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a') (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a b) a') (ite.{succ u1} M (Eq.{succ u2} α a a') _inst_2 b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1)))
-Case conversion may be inaccurate. Consider using '#align finsupp.single_apply Finsupp.single_applyₓ'. -/
 theorem single_apply [Decidable (a = a')] : single a b a' = if a = a' then b else 0 := by
   classical
     simp_rw [@eq_comm _ a a']
     convert Pi.single_apply _ _ _
 #align finsupp.single_apply Finsupp.single_apply
 
-/- warning: finsupp.single_apply_left -> Finsupp.single_apply_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] {f : α -> β}, (Function.Injective.{succ u1, succ u2} α β f) -> (forall (x : α) (z : α) (y : M), Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (fun (_x : Finsupp.{u2, u3} β M _inst_1) => β -> M) (Finsupp.coeFun.{u2, u3} β M _inst_1) (Finsupp.single.{u2, u3} β M _inst_1 (f x) y) (f z)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (fun (_x : Finsupp.{u1, u3} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u3} α M _inst_1) (Finsupp.single.{u1, u3} α M _inst_1 x y) z))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : α -> β}, (Function.Injective.{succ u3, succ u2} α β f) -> (forall (x : α) (z : α) (y : M), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) (f z)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M _inst_1) (Finsupp.single.{u2, u1} β M _inst_1 (f x) y) (f z)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M _inst_1) (Finsupp.single.{u3, u1} α M _inst_1 x y) z))
-Case conversion may be inaccurate. Consider using '#align finsupp.single_apply_left Finsupp.single_apply_leftₓ'. -/
 theorem single_apply_left {f : α → β} (hf : Function.Injective f) (x z : α) (y : M) :
     single (f x) y (f z) = single x y z := by classical simp only [single_apply, hf.eq_iff]
 #align finsupp.single_apply_left Finsupp.single_apply_left
 
-/- warning: finsupp.single_eq_set_indicator -> Finsupp.single_eq_set_indicator is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {b : M}, Eq.{max (succ u1) (succ u2)} (α -> M) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a b)) (Set.indicator.{u1, u2} α M _inst_1 (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.hasSingleton.{u1} α) a) (fun (_x : α) => b))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {b : M}, Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a b)) (Set.indicator.{u2, u1} α M _inst_1 (Singleton.singleton.{u2, u2} α (Set.{u2} α) (Set.instSingletonSet.{u2} α) a) (fun (_x : α) => b))
-Case conversion may be inaccurate. Consider using '#align finsupp.single_eq_set_indicator Finsupp.single_eq_set_indicatorₓ'. -/
 theorem single_eq_set_indicator : ⇑(single a b) = Set.indicator {a} fun _ => b := by
   classical
     ext
@@ -472,55 +334,25 @@ theorem single_eq_same : (single a b : α →₀ M) a = b := by classical exact
 #align finsupp.single_eq_same Finsupp.single_eq_same
 -/
 
-/- warning: finsupp.single_eq_of_ne -> Finsupp.single_eq_of_ne is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {a' : α} {b : M}, (Ne.{succ u1} α a a') -> (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a b) a') (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {a' : α} {b : M}, (Ne.{succ u2} α a a') -> (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a') (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a b) a') (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a') 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a') _inst_1)))
-Case conversion may be inaccurate. Consider using '#align finsupp.single_eq_of_ne Finsupp.single_eq_of_neₓ'. -/
 @[simp]
 theorem single_eq_of_ne (h : a ≠ a') : (single a b : α →₀ M) a' = 0 := by
   classical exact Pi.single_eq_of_ne' h _
 #align finsupp.single_eq_of_ne Finsupp.single_eq_of_ne
 
-/- warning: finsupp.single_eq_update -> Finsupp.single_eq_update is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] (a : α) (b : M), Eq.{max (succ u1) (succ u2)} (α -> M) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a b)) (Function.update.{succ u1, succ u2} α (fun (a : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (OfNat.ofNat.{max u1 u2} (α -> M) 0 (OfNat.mk.{max u1 u2} (α -> M) 0 (Zero.zero.{max u1 u2} (α -> M) (Pi.instZero.{u1, u2} α (fun (a : α) => M) (fun (i : α) => _inst_1))))) a b)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] (a : α) (b : M), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a b)) (Function.update.{succ u2, succ u1} α (fun (a : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (fun (a : α) (b : α) => _inst_2 a b) (OfNat.ofNat.{max u2 u1} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{max u2 u1} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (Pi.instZero.{u2, u1} α (fun (a : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (fun (i : α) => _inst_1)))) a b)
-Case conversion may be inaccurate. Consider using '#align finsupp.single_eq_update Finsupp.single_eq_updateₓ'. -/
 theorem single_eq_update [DecidableEq α] (a : α) (b : M) : ⇑(single a b) = Function.update 0 a b :=
   by rw [single_eq_set_indicator, ← Set.piecewise_eq_indicator, Set.piecewise_singleton]
 #align finsupp.single_eq_update Finsupp.single_eq_update
 
-/- warning: finsupp.single_eq_pi_single -> Finsupp.single_eq_pi_single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] (a : α) (b : M), Eq.{max (succ u1) (succ u2)} (α -> M) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a b)) (Pi.single.{u1, u2} α (fun (a : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) a b)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] (a : α) (b : M), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a b)) (Pi.single.{u2, u1} α (fun (a : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) a b)
-Case conversion may be inaccurate. Consider using '#align finsupp.single_eq_pi_single Finsupp.single_eq_pi_singleₓ'. -/
 theorem single_eq_pi_single [DecidableEq α] (a : α) (b : M) : ⇑(single a b) = Pi.single a b :=
   single_eq_update a b
 #align finsupp.single_eq_pi_single Finsupp.single_eq_pi_single
 
-/- warning: finsupp.single_zero -> Finsupp.single_zero is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (a : α), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (a : α), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)))
-Case conversion may be inaccurate. Consider using '#align finsupp.single_zero Finsupp.single_zeroₓ'. -/
 @[simp]
 theorem single_zero (a : α) : (single a 0 : α →₀ M) = 0 :=
   coeFn_injective <| by
     classical simpa only [single_eq_update, coe_zero] using Function.update_eq_self a (0 : α → M)
 #align finsupp.single_zero Finsupp.single_zero
 
-/- warning: finsupp.single_of_single_apply -> Finsupp.single_of_single_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (a : α) (a' : α) (b : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a' b) a)) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (Finsupp.{u1, max u1 u2} α (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1)) (fun (_x : Finsupp.{u1, max u1 u2} α (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1)) => α -> (Finsupp.{u1, u2} α M _inst_1)) (Finsupp.coeFun.{u1, max u1 u2} α (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1)) (Finsupp.single.{u1, max u1 u2} α (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1) a' (Finsupp.single.{u1, u2} α M _inst_1 a' b)) a)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (a : α) (a' : α) (b : M), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1) (Finsupp.single.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1 a (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a' b) a)) (FunLike.coe.{max (succ u2) (succ (max u2 u1)), succ u2, succ (max u2 u1)} (Finsupp.{u2, max u2 u1} α (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => Finsupp.{u2, u1} α M _inst_1) _x) (Finsupp.funLike.{u2, max u2 u1} α (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)) (Finsupp.single.{u2, max u1 u2} α (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1) a' (Finsupp.single.{u2, u1} α M _inst_1 a' b)) a)
-Case conversion may be inaccurate. Consider using '#align finsupp.single_of_single_apply Finsupp.single_of_single_applyₓ'. -/
 theorem single_of_single_apply (a a' : α) (b : M) :
     single a ((single a' b) a) = single a' (single a' b) a := by
   classical
@@ -537,12 +369,6 @@ theorem support_single_ne_zero (a : α) (hb : b ≠ 0) : (single a b).support =
 #align finsupp.support_single_ne_zero Finsupp.support_single_ne_zero
 -/
 
-/- warning: finsupp.support_single_subset -> Finsupp.support_single_subset is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {b : M}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 (Finsupp.single.{u1, u2} α M _inst_1 a b)) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {b : M}, HasSubset.Subset.{u2} (Finset.{u2} α) (Finset.instHasSubsetFinset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 (Finsupp.single.{u2, u1} α M _inst_1 a b)) (Singleton.singleton.{u2, u2} α (Finset.{u2} α) (Finset.instSingletonFinset.{u2} α) a)
-Case conversion may be inaccurate. Consider using '#align finsupp.support_single_subset Finsupp.support_single_subsetₓ'. -/
 theorem support_single_subset : (single a b).support ⊆ {a} := by
   classical
     show ite _ _ _ ⊆ _
@@ -583,22 +409,10 @@ theorem single_apply_ne_zero {a x : α} {b : M} : single a b x ≠ 0 ↔ x = a 
 #align finsupp.single_apply_ne_zero Finsupp.single_apply_ne_zero
 -/
 
-/- warning: finsupp.mem_support_single -> Finsupp.mem_support_single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (a : α) (a' : α) (b : M), Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M _inst_1 (Finsupp.single.{u1, u2} α M _inst_1 a' b))) (And (Eq.{succ u1} α a a') (Ne.{succ u2} M b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (a : α) (a' : α) (b : M), Iff (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) a (Finsupp.support.{u2, u1} α M _inst_1 (Finsupp.single.{u2, u1} α M _inst_1 a' b))) (And (Eq.{succ u2} α a a') (Ne.{succ u1} M b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.mem_support_single Finsupp.mem_support_singleₓ'. -/
 theorem mem_support_single (a a' : α) (b : M) : a ∈ (single a' b).support ↔ a = a' ∧ b ≠ 0 := by
   simp [single_apply_eq_zero, not_or]
 #align finsupp.mem_support_single Finsupp.mem_support_single
 
-/- warning: finsupp.eq_single_iff -> Finsupp.eq_single_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {a : α} {b : M}, Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (Finsupp.single.{u1, u2} α M _inst_1 a b)) (And (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 f) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a)) (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) b))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {a : α} {b : M}, Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (Finsupp.single.{u2, u1} α M _inst_1 a b)) (And (HasSubset.Subset.{u2} (Finset.{u2} α) (Finset.instHasSubsetFinset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 f) (Singleton.singleton.{u2, u2} α (Finset.{u2} α) (Finset.instSingletonFinset.{u2} α) a)) (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) b))
-Case conversion may be inaccurate. Consider using '#align finsupp.eq_single_iff Finsupp.eq_single_iffₓ'. -/
 theorem eq_single_iff {f : α →₀ M} {a b} : f = single a b ↔ f.support ⊆ {a} ∧ f a = b :=
   by
   refine' ⟨fun h => h.symm ▸ ⟨support_single_subset, single_eq_same⟩, _⟩
@@ -608,12 +422,6 @@ theorem eq_single_iff {f : α →₀ M} {a b} : f = single a b ↔ f.support ⊆
   exact not_mem_support_iff.1 (mt (fun hx => (mem_singleton.1 (h hx)).symm) hx)
 #align finsupp.eq_single_iff Finsupp.eq_single_iff
 
-/- warning: finsupp.single_eq_single_iff -> Finsupp.single_eq_single_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (a₁ : α) (a₂ : α) (b₁ : M) (b₂ : M), Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a₁ b₁) (Finsupp.single.{u1, u2} α M _inst_1 a₂ b₂)) (Or (And (Eq.{succ u1} α a₁ a₂) (Eq.{succ u2} M b₁ b₂)) (And (Eq.{succ u2} M b₁ (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M b₂ (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (a₁ : α) (a₂ : α) (b₁ : M) (b₂ : M), Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a₁ b₁) (Finsupp.single.{u2, u1} α M _inst_1 a₂ b₂)) (Or (And (Eq.{succ u2} α a₁ a₂) (Eq.{succ u1} M b₁ b₂)) (And (Eq.{succ u1} M b₁ (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (Eq.{succ u1} M b₂ (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align finsupp.single_eq_single_iff Finsupp.single_eq_single_iffₓ'. -/
 theorem single_eq_single_iff (a₁ a₂ : α) (b₁ b₂ : M) :
     single a₁ b₁ = single a₂ b₂ ↔ a₁ = a₂ ∧ b₁ = b₂ ∨ b₁ = 0 ∧ b₂ = 0 :=
   by
@@ -646,33 +454,15 @@ theorem single_left_inj (h : b ≠ 0) : single a b = single a' b ↔ a = a' :=
 #align finsupp.single_left_inj Finsupp.single_left_inj
 -/
 
-/- warning: finsupp.support_single_ne_bot -> Finsupp.support_single_ne_bot is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {b : M} (i : α), (Ne.{succ u2} M b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) -> (Ne.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 (Finsupp.single.{u1, u2} α M _inst_1 i b)) (Bot.bot.{u1} (Finset.{u1} α) (GeneralizedBooleanAlgebra.toHasBot.{u1} (Finset.{u1} α) (Finset.generalizedBooleanAlgebra.{u1} α (fun (a : α) (b : α) => Classical.propDecidable (Eq.{succ u1} α a b))))))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {b : M} (i : α), (Ne.{succ u2} M b (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M _inst_1))) -> (Ne.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 (Finsupp.single.{u1, u2} α M _inst_1 i b)) (Bot.bot.{u1} (Finset.{u1} α) (OrderBot.toBot.{u1} (Finset.{u1} α) (Preorder.toLE.{u1} (Finset.{u1} α) (PartialOrder.toPreorder.{u1} (Finset.{u1} α) (Finset.partialOrder.{u1} α))) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α))))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_single_ne_bot Finsupp.support_single_ne_botₓ'. -/
 theorem support_single_ne_bot (i : α) (h : b ≠ 0) : (single i b).support ≠ ⊥ := by
   simpa only [support_single_ne_zero _ h] using singleton_ne_empty _
 #align finsupp.support_single_ne_bot Finsupp.support_single_ne_bot
 
-/- warning: finsupp.support_single_disjoint -> Finsupp.support_single_disjoint is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {b : M} {b' : M}, (Ne.{succ u2} M b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) -> (Ne.{succ u2} M b' (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) -> (forall {i : α} {j : α}, Iff (Disjoint.{u1} (Finset.{u1} α) (Finset.partialOrder.{u1} α) (Finset.orderBot.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 (Finsupp.single.{u1, u2} α M _inst_1 i b)) (Finsupp.support.{u1, u2} α M _inst_1 (Finsupp.single.{u1, u2} α M _inst_1 j b'))) (Ne.{succ u1} α i j))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {b : M} {b' : M}, (Ne.{succ u2} M b (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M _inst_1))) -> (Ne.{succ u2} M b' (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M _inst_1))) -> (forall {i : α} {j : α}, Iff (Disjoint.{u1} (Finset.{u1} α) (Finset.partialOrder.{u1} α) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 (Finsupp.single.{u1, u2} α M _inst_1 i b)) (Finsupp.support.{u1, u2} α M _inst_1 (Finsupp.single.{u1, u2} α M _inst_1 j b'))) (Ne.{succ u1} α i j))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_single_disjoint Finsupp.support_single_disjointₓ'. -/
 theorem support_single_disjoint {b' : M} (hb : b ≠ 0) (hb' : b' ≠ 0) {i j : α} :
     Disjoint (single i b).support (single j b').support ↔ i ≠ j := by
   rw [support_single_ne_zero _ hb, support_single_ne_zero _ hb', disjoint_singleton]
 #align finsupp.support_single_disjoint Finsupp.support_single_disjoint
 
-/- warning: finsupp.single_eq_zero -> Finsupp.single_eq_zero is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {b : M}, Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a b) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1))))) (Eq.{succ u2} M b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {b : M}, Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a b) (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)))) (Eq.{succ u1} M b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1)))
-Case conversion may be inaccurate. Consider using '#align finsupp.single_eq_zero Finsupp.single_eq_zeroₓ'. -/
 @[simp]
 theorem single_eq_zero : single a b = 0 ↔ b = 0 := by simp [ext_iff, single_eq_set_indicator]
 #align finsupp.single_eq_zero Finsupp.single_eq_zero
@@ -691,33 +481,15 @@ instance [Nonempty α] [Nontrivial M] : Nontrivial (α →₀ M) :=
   rcases exists_ne (0 : M) with ⟨x, hx⟩
   exact nontrivial_of_ne (single default x) 0 (mt single_eq_zero.1 hx)
 
-/- warning: finsupp.unique_single -> Finsupp.unique_single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : Unique.{succ u1} α] (x : Finsupp.{u1, u2} α M _inst_1), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) x (Finsupp.single.{u1, u2} α M _inst_1 (Inhabited.default.{succ u1} α (Unique.inhabited.{succ u1} α _inst_2)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) x (Inhabited.default.{succ u1} α (Unique.inhabited.{succ u1} α _inst_2))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : Unique.{succ u2} α] (x : Finsupp.{u2, u1} α M _inst_1), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) x (Finsupp.single.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) (Inhabited.default.{succ u2} α (Unique.instInhabited.{succ u2} α _inst_2))) _inst_1 (Inhabited.default.{succ u2} α (Unique.instInhabited.{succ u2} α _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) x (Inhabited.default.{succ u2} α (Unique.instInhabited.{succ u2} α _inst_2))))
-Case conversion may be inaccurate. Consider using '#align finsupp.unique_single Finsupp.unique_singleₓ'. -/
 theorem unique_single [Unique α] (x : α →₀ M) : x = single default (x default) :=
   ext <| Unique.forall_iff.2 single_eq_same.symm
 #align finsupp.unique_single Finsupp.unique_single
 
-/- warning: finsupp.unique_single_eq_iff -> Finsupp.unique_single_eq_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {a' : α} {b : M} [_inst_2 : Unique.{succ u1} α] {b' : M}, Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a b) (Finsupp.single.{u1, u2} α M _inst_1 a' b')) (Eq.{succ u2} M b b')
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {a' : α} {b : M} [_inst_2 : Unique.{succ u2} α] {b' : M}, Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a b) (Finsupp.single.{u2, u1} α M _inst_1 a' b')) (Eq.{succ u1} M b b')
-Case conversion may be inaccurate. Consider using '#align finsupp.unique_single_eq_iff Finsupp.unique_single_eq_iffₓ'. -/
 @[simp]
 theorem unique_single_eq_iff [Unique α] {b' : M} : single a b = single a' b' ↔ b = b' := by
   rw [unique_ext_iff, Unique.eq_default a, Unique.eq_default a', single_eq_same, single_eq_same]
 #align finsupp.unique_single_eq_iff Finsupp.unique_single_eq_iff
 
-/- warning: finsupp.support_eq_singleton -> Finsupp.support_eq_singleton is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {a : α}, Iff (Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 f) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a)) (And (Ne.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (Finsupp.single.{u1, u2} α M _inst_1 a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {a : α}, Iff (Eq.{succ u2} (Finset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 f) (Singleton.singleton.{u2, u2} α (Finset.{u2} α) (Finset.instSingletonFinset.{u2} α) a)) (And (Ne.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1))) (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (Finsupp.single.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1 a (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a))))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_eq_singleton Finsupp.support_eq_singletonₓ'. -/
 theorem support_eq_singleton {f : α →₀ M} {a : α} :
     f.support = {a} ↔ f a ≠ 0 ∧ f = single a (f a) :=
   ⟨fun h =>
@@ -726,12 +498,6 @@ theorem support_eq_singleton {f : α →₀ M} {a : α} :
     fun h => h.2.symm ▸ support_single_ne_zero _ h.1⟩
 #align finsupp.support_eq_singleton Finsupp.support_eq_singleton
 
-/- warning: finsupp.support_eq_singleton' -> Finsupp.support_eq_singleton' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {a : α}, Iff (Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 f) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a)) (Exists.{succ u2} M (fun (b : M) => Exists.{0} (Ne.{succ u2} M b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (fun (H : Ne.{succ u2} M b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) => Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (Finsupp.single.{u1, u2} α M _inst_1 a b))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {a : α}, Iff (Eq.{succ u2} (Finset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 f) (Singleton.singleton.{u2, u2} α (Finset.{u2} α) (Finset.instSingletonFinset.{u2} α) a)) (Exists.{succ u1} M (fun (b : M) => Exists.{0} (Ne.{succ u1} M b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (fun (H : Ne.{succ u1} M b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) => Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (Finsupp.single.{u2, u1} α M _inst_1 a b))))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_eq_singleton' Finsupp.support_eq_singleton'ₓ'. -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b «expr ≠ » 0) -/
 theorem support_eq_singleton' {f : α →₀ M} {a : α} :
     f.support = {a} ↔ ∃ (b : _)(_ : b ≠ 0), f = single a b :=
@@ -741,89 +507,41 @@ theorem support_eq_singleton' {f : α →₀ M} {a : α} :
     fun ⟨b, hb, hf⟩ => hf.symm ▸ support_single_ne_zero _ hb⟩
 #align finsupp.support_eq_singleton' Finsupp.support_eq_singleton'
 
-/- warning: finsupp.card_support_eq_one -> Finsupp.card_support_eq_one is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{1} Nat (Finset.card.{u1} α (Finsupp.support.{u1, u2} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) (Exists.{succ u1} α (fun (a : α) => And (Ne.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (Finsupp.single.{u1, u2} α M _inst_1 a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a)))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{1} Nat (Finset.card.{u2} α (Finsupp.support.{u2, u1} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) (Exists.{succ u2} α (fun (a : α) => And (Ne.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1))) (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (Finsupp.single.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1 a (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a)))))
-Case conversion may be inaccurate. Consider using '#align finsupp.card_support_eq_one Finsupp.card_support_eq_oneₓ'. -/
 theorem card_support_eq_one {f : α →₀ M} : card f.support = 1 ↔ ∃ a, f a ≠ 0 ∧ f = single a (f a) :=
   by simp only [card_eq_one, support_eq_singleton]
 #align finsupp.card_support_eq_one Finsupp.card_support_eq_one
 
-/- warning: finsupp.card_support_eq_one' -> Finsupp.card_support_eq_one' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{1} Nat (Finset.card.{u1} α (Finsupp.support.{u1, u2} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) (Exists.{succ u1} α (fun (a : α) => Exists.{succ u2} M (fun (b : M) => Exists.{0} (Ne.{succ u2} M b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (fun (H : Ne.{succ u2} M b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) => Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (Finsupp.single.{u1, u2} α M _inst_1 a b)))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{1} Nat (Finset.card.{u2} α (Finsupp.support.{u2, u1} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) (Exists.{succ u2} α (fun (a : α) => Exists.{succ u1} M (fun (b : M) => Exists.{0} (Ne.{succ u1} M b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (fun (H : Ne.{succ u1} M b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) => Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (Finsupp.single.{u2, u1} α M _inst_1 a b)))))
-Case conversion may be inaccurate. Consider using '#align finsupp.card_support_eq_one' Finsupp.card_support_eq_one'ₓ'. -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b «expr ≠ » 0) -/
 theorem card_support_eq_one' {f : α →₀ M} :
     card f.support = 1 ↔ ∃ (a : _)(b : _)(_ : b ≠ 0), f = single a b := by
   simp only [card_eq_one, support_eq_singleton']
 #align finsupp.card_support_eq_one' Finsupp.card_support_eq_one'
 
-/- warning: finsupp.support_subset_singleton -> Finsupp.support_subset_singleton is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {a : α}, Iff (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 f) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a)) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (Finsupp.single.{u1, u2} α M _inst_1 a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {a : α}, Iff (HasSubset.Subset.{u2} (Finset.{u2} α) (Finset.instHasSubsetFinset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 f) (Singleton.singleton.{u2, u2} α (Finset.{u2} α) (Finset.instSingletonFinset.{u2} α) a)) (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (Finsupp.single.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1 a (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a)))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_subset_singleton Finsupp.support_subset_singletonₓ'. -/
 theorem support_subset_singleton {f : α →₀ M} {a : α} : f.support ⊆ {a} ↔ f = single a (f a) :=
   ⟨fun h => eq_single_iff.mpr ⟨h, rfl⟩, fun h => (eq_single_iff.mp h).left⟩
 #align finsupp.support_subset_singleton Finsupp.support_subset_singleton
 
-/- warning: finsupp.support_subset_singleton' -> Finsupp.support_subset_singleton' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {a : α}, Iff (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 f) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a)) (Exists.{succ u2} M (fun (b : M) => Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (Finsupp.single.{u1, u2} α M _inst_1 a b)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {a : α}, Iff (HasSubset.Subset.{u2} (Finset.{u2} α) (Finset.instHasSubsetFinset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 f) (Singleton.singleton.{u2, u2} α (Finset.{u2} α) (Finset.instSingletonFinset.{u2} α) a)) (Exists.{succ u1} M (fun (b : M) => Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (Finsupp.single.{u2, u1} α M _inst_1 a b)))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_subset_singleton' Finsupp.support_subset_singleton'ₓ'. -/
 theorem support_subset_singleton' {f : α →₀ M} {a : α} : f.support ⊆ {a} ↔ ∃ b, f = single a b :=
   ⟨fun h => ⟨f a, support_subset_singleton.mp h⟩, fun ⟨b, hb⟩ => by
     rw [hb, support_subset_singleton, single_eq_same]⟩
 #align finsupp.support_subset_singleton' Finsupp.support_subset_singleton'
 
-/- warning: finsupp.card_support_le_one -> Finsupp.card_support_le_one is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : Nonempty.{succ u1} α] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (LE.le.{0} Nat Nat.hasLe (Finset.card.{u1} α (Finsupp.support.{u1, u2} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) (Exists.{succ u1} α (fun (a : α) => Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (Finsupp.single.{u1, u2} α M _inst_1 a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : Nonempty.{succ u2} α] {f : Finsupp.{u2, u1} α M _inst_1}, Iff (LE.le.{0} Nat instLENat (Finset.card.{u2} α (Finsupp.support.{u2, u1} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) (Exists.{succ u2} α (fun (a : α) => Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (Finsupp.single.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1 a (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a))))
-Case conversion may be inaccurate. Consider using '#align finsupp.card_support_le_one Finsupp.card_support_le_oneₓ'. -/
 theorem card_support_le_one [Nonempty α] {f : α →₀ M} :
     card f.support ≤ 1 ↔ ∃ a, f = single a (f a) := by
   simp only [card_le_one_iff_subset_singleton, support_subset_singleton]
 #align finsupp.card_support_le_one Finsupp.card_support_le_one
 
-/- warning: finsupp.card_support_le_one' -> Finsupp.card_support_le_one' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : Nonempty.{succ u1} α] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (LE.le.{0} Nat Nat.hasLe (Finset.card.{u1} α (Finsupp.support.{u1, u2} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) (Exists.{succ u1} α (fun (a : α) => Exists.{succ u2} M (fun (b : M) => Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (Finsupp.single.{u1, u2} α M _inst_1 a b))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : Nonempty.{succ u2} α] {f : Finsupp.{u2, u1} α M _inst_1}, Iff (LE.le.{0} Nat instLENat (Finset.card.{u2} α (Finsupp.support.{u2, u1} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) (Exists.{succ u2} α (fun (a : α) => Exists.{succ u1} M (fun (b : M) => Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (Finsupp.single.{u2, u1} α M _inst_1 a b))))
-Case conversion may be inaccurate. Consider using '#align finsupp.card_support_le_one' Finsupp.card_support_le_one'ₓ'. -/
 theorem card_support_le_one' [Nonempty α] {f : α →₀ M} :
     card f.support ≤ 1 ↔ ∃ a b, f = single a b := by
   simp only [card_le_one_iff_subset_singleton, support_subset_singleton']
 #align finsupp.card_support_le_one' Finsupp.card_support_le_one'
 
-/- warning: finsupp.equiv_fun_on_finite_single -> Finsupp.equivFunOnFinite_single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] [_inst_3 : Finite.{succ u1} α] (x : α) (m : M), Eq.{max (succ u1) (succ u2)} (α -> M) (coeFn.{max 1 (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (α -> M)) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (α -> M)) => (Finsupp.{u1, u2} α M _inst_1) -> α -> M) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (α -> M)) (Finsupp.equivFunOnFinite.{u1, u2} α M _inst_1 _inst_3) (Finsupp.single.{u1, u2} α M _inst_1 x m)) (Pi.single.{u1, u2} α (fun (ᾰ : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] [_inst_3 : Finite.{succ u2} α] (x : α) (m : M), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Finsupp.{u2, u1} α M _inst_1) => α -> M) (Finsupp.single.{u2, u1} α M _inst_1 x m)) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (α -> M)) (Finsupp.{u2, u1} α M _inst_1) (fun (_x : Finsupp.{u2, u1} α M _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Finsupp.{u2, u1} α M _inst_1) => α -> M) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1) (α -> M)) (Finsupp.equivFunOnFinite.{u2, u1} α M _inst_1 _inst_3) (Finsupp.single.{u2, u1} α M _inst_1 x m)) (Pi.single.{u2, u1} α (fun (ᾰ : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)
-Case conversion may be inaccurate. Consider using '#align finsupp.equiv_fun_on_finite_single Finsupp.equivFunOnFinite_singleₓ'. -/
 @[simp]
 theorem equivFunOnFinite_single [DecidableEq α] [Finite α] (x : α) (m : M) :
     Finsupp.equivFunOnFinite (Finsupp.single x m) = Pi.single x m := by ext;
   simp [Finsupp.single_eq_pi_single]
 #align finsupp.equiv_fun_on_finite_single Finsupp.equivFunOnFinite_single
 
-/- warning: finsupp.equiv_fun_on_finite_symm_single -> Finsupp.equivFunOnFinite_symm_single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] [_inst_3 : Finite.{succ u1} α] (x : α) (m : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (coeFn.{max 1 (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (Finsupp.{u1, u2} α M _inst_1)) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (Finsupp.{u1, u2} α M _inst_1)) => (α -> M) -> (Finsupp.{u1, u2} α M _inst_1)) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (Finsupp.{u1, u2} α M _inst_1)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (α -> M) (Finsupp.equivFunOnFinite.{u1, u2} α M _inst_1 _inst_3)) (Pi.single.{u1, u2} α (fun (x : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)) (Finsupp.single.{u1, u2} α M _inst_1 x m)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] [_inst_3 : Finite.{succ u2} α] (x : α) (m : M), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => Finsupp.{u2, u1} α M _inst_1) (Pi.single.{u2, u1} α (fun (a._@.Mathlib.Data.Pi.Algebra._hyg.1846 : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (Finsupp.{u2, u1} α M _inst_1)) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => Finsupp.{u2, u1} α M _inst_1) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (Finsupp.{u2, u1} α M _inst_1)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1) (α -> M) (Finsupp.equivFunOnFinite.{u2, u1} α M _inst_1 _inst_3)) (Pi.single.{u2, u1} α (fun (x : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)) (Finsupp.single.{u2, u1} α M _inst_1 x m)
-Case conversion may be inaccurate. Consider using '#align finsupp.equiv_fun_on_finite_symm_single Finsupp.equivFunOnFinite_symm_singleₓ'. -/
 @[simp]
 theorem equivFunOnFinite_symm_single [DecidableEq α] [Finite α] (x : α) (m : M) :
     Finsupp.equivFunOnFinite.symm (Pi.single x m) = Finsupp.single x m := by
@@ -859,23 +577,11 @@ def update (f : α →₀ M) (a : α) (b : M) : α →₀ M
 #align finsupp.update Finsupp.update
 -/
 
-/- warning: finsupp.coe_update -> Finsupp.coe_update is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) (a : α) (b : M) [_inst_2 : DecidableEq.{succ u1} α], Eq.{max (succ u1) (succ u2)} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.update.{u1, u2} α M _inst_1 f a b)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.update.{u1, u2} α M _inst_1 f a b)) (Function.update.{succ u1, succ u2} α (fun (ᾰ : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f) a b)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) (a : α) (b : M) [_inst_2 : DecidableEq.{succ u2} α], Eq.{max (succ u2) (succ u1)} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.update.{u2, u1} α M _inst_1 f a b)) (Function.update.{succ u2, succ u1} α (fun (ᾰ : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (fun (a : α) (b : α) => _inst_2 a b) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f) a b)
-Case conversion may be inaccurate. Consider using '#align finsupp.coe_update Finsupp.coe_updateₓ'. -/
 @[simp]
 theorem coe_update [DecidableEq α] : (f.update a b : α → M) = Function.update f a b := by
   convert rfl
 #align finsupp.coe_update Finsupp.coe_update
 
-/- warning: finsupp.update_self -> Finsupp.update_self is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) (a : α), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.update.{u1, u2} α M _inst_1 f a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a)) f
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) (a : α), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.update.{u2, u1} α M _inst_1 f a (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a)) f
-Case conversion may be inaccurate. Consider using '#align finsupp.update_self Finsupp.update_selfₓ'. -/
 @[simp]
 theorem update_self : f.update a (f a) = f := by
   classical
@@ -883,12 +589,6 @@ theorem update_self : f.update a (f a) = f := by
     simp
 #align finsupp.update_self Finsupp.update_self
 
-/- warning: finsupp.zero_update -> Finsupp.zero_update is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (a : α) (b : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.update.{u1, u2} α M _inst_1 (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1)))) a b) (Finsupp.single.{u1, u2} α M _inst_1 a b)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (a : α) (b : M), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.update.{u2, u1} α M _inst_1 (OfNat.ofNat.{max u1 u2} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u1 u2} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1))) a b) (Finsupp.single.{u2, u1} α M _inst_1 a b)
-Case conversion may be inaccurate. Consider using '#align finsupp.zero_update Finsupp.zero_updateₓ'. -/
 @[simp]
 theorem zero_update : update 0 a b = single a b := by
   classical
@@ -897,23 +597,11 @@ theorem zero_update : update 0 a b = single a b := by
     rfl
 #align finsupp.zero_update Finsupp.zero_update
 
-/- warning: finsupp.support_update -> Finsupp.support_update is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) (a : α) (b : M) [_inst_2 : DecidableEq.{succ u1} α] [_inst_3 : DecidableEq.{succ u2} M], Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 (Finsupp.update.{u1, u2} α M _inst_1 f a b)) (ite.{succ u1} (Finset.{u1} α) (Eq.{succ u2} M b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (_inst_3 b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Finset.erase.{u1} α (fun (a : α) (b : α) => _inst_2 a b) (Finsupp.support.{u1, u2} α M _inst_1 f) a) (Insert.insert.{u1, u1} α (Finset.{u1} α) (Finset.hasInsert.{u1} α (fun (a : α) (b : α) => _inst_2 a b)) a (Finsupp.support.{u1, u2} α M _inst_1 f)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) (a : α) (b : M) [_inst_2 : DecidableEq.{succ u2} α] [_inst_3 : DecidableEq.{succ u1} M], Eq.{succ u2} (Finset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 (Finsupp.update.{u2, u1} α M _inst_1 f a b)) (ite.{succ u2} (Finset.{u2} α) (Eq.{succ u1} M b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (_inst_3 b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (Finset.erase.{u2} α (fun (a : α) (b : α) => _inst_2 a b) (Finsupp.support.{u2, u1} α M _inst_1 f) a) (Insert.insert.{u2, u2} α (Finset.{u2} α) (Finset.instInsertFinset.{u2} α (fun (a : α) (b : α) => _inst_2 a b)) a (Finsupp.support.{u2, u1} α M _inst_1 f)))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_update Finsupp.support_updateₓ'. -/
 theorem support_update [DecidableEq α] [DecidableEq M] :
     support (f.update a b) = if b = 0 then f.support.eraseₓ a else insert a f.support := by
   convert rfl
 #align finsupp.support_update Finsupp.support_update
 
-/- warning: finsupp.support_update_zero -> Finsupp.support_update_zero is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) (a : α) [_inst_2 : DecidableEq.{succ u1} α], Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 (Finsupp.update.{u1, u2} α M _inst_1 f a (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (Finset.erase.{u1} α (fun (a : α) (b : α) => _inst_2 a b) (Finsupp.support.{u1, u2} α M _inst_1 f) a)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) (a : α) [_inst_2 : DecidableEq.{succ u2} α], Eq.{succ u2} (Finset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 (Finsupp.update.{u2, u1} α M _inst_1 f a (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1)))) (Finset.erase.{u2} α (fun (a : α) (b : α) => _inst_2 a b) (Finsupp.support.{u2, u1} α M _inst_1 f) a)
-Case conversion may be inaccurate. Consider using '#align finsupp.support_update_zero Finsupp.support_update_zeroₓ'. -/
 @[simp]
 theorem support_update_zero [DecidableEq α] : support (f.update a 0) = f.support.eraseₓ a := by
   convert if_pos rfl
@@ -921,12 +609,6 @@ theorem support_update_zero [DecidableEq α] : support (f.update a 0) = f.suppor
 
 variable {b}
 
-/- warning: finsupp.support_update_ne_zero -> Finsupp.support_update_ne_zero is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) (a : α) {b : M} [_inst_2 : DecidableEq.{succ u1} α], (Ne.{succ u2} M b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) -> (Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 (Finsupp.update.{u1, u2} α M _inst_1 f a b)) (Insert.insert.{u1, u1} α (Finset.{u1} α) (Finset.hasInsert.{u1} α (fun (a : α) (b : α) => _inst_2 a b)) a (Finsupp.support.{u1, u2} α M _inst_1 f)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) (a : α) {b : M} [_inst_2 : DecidableEq.{succ u2} α], (Ne.{succ u1} M b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) -> (Eq.{succ u2} (Finset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 (Finsupp.update.{u2, u1} α M _inst_1 f a b)) (Insert.insert.{u2, u2} α (Finset.{u2} α) (Finset.instInsertFinset.{u2} α (fun (a : α) (b : α) => _inst_2 a b)) a (Finsupp.support.{u2, u1} α M _inst_1 f)))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_update_ne_zero Finsupp.support_update_ne_zeroₓ'. -/
 theorem support_update_ne_zero [DecidableEq α] (h : b ≠ 0) :
     support (f.update a b) = insert a f.support := by classical convert if_neg h
 #align finsupp.support_update_ne_zero Finsupp.support_update_ne_zero
@@ -959,44 +641,20 @@ def erase (a : α) (f : α →₀ M) : α →₀ M
 #align finsupp.erase Finsupp.erase
 -/
 
-/- warning: finsupp.support_erase -> Finsupp.support_erase is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] {a : α} {f : Finsupp.{u1, u2} α M _inst_1}, Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 (Finsupp.erase.{u1, u2} α M _inst_1 a f)) (Finset.erase.{u1} α (fun (a : α) (b : α) => _inst_2 a b) (Finsupp.support.{u1, u2} α M _inst_1 f) a)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] {a : α} {f : Finsupp.{u2, u1} α M _inst_1}, Eq.{succ u2} (Finset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 (Finsupp.erase.{u2, u1} α M _inst_1 a f)) (Finset.erase.{u2} α (fun (a : α) (b : α) => _inst_2 a b) (Finsupp.support.{u2, u1} α M _inst_1 f) a)
-Case conversion may be inaccurate. Consider using '#align finsupp.support_erase Finsupp.support_eraseₓ'. -/
 @[simp]
 theorem support_erase [DecidableEq α] {a : α} {f : α →₀ M} :
     (f.eraseₓ a).support = f.support.eraseₓ a := by convert rfl
 #align finsupp.support_erase Finsupp.support_erase
 
-/- warning: finsupp.erase_same -> Finsupp.erase_same is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {f : Finsupp.{u1, u2} α M _inst_1}, Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.erase.{u1, u2} α M _inst_1 a f) a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {f : Finsupp.{u2, u1} α M _inst_1}, Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.erase.{u2, u1} α M _inst_1 a f) a) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1))
-Case conversion may be inaccurate. Consider using '#align finsupp.erase_same Finsupp.erase_sameₓ'. -/
 @[simp]
 theorem erase_same {a : α} {f : α →₀ M} : (f.eraseₓ a) a = 0 := by convert if_pos rfl
 #align finsupp.erase_same Finsupp.erase_same
 
-/- warning: finsupp.erase_ne -> Finsupp.erase_ne is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {a' : α} {f : Finsupp.{u1, u2} α M _inst_1}, (Ne.{succ u1} α a' a) -> (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.erase.{u1, u2} α M _inst_1 a f) a') (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a'))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {a' : α} {f : Finsupp.{u2, u1} α M _inst_1}, (Ne.{succ u2} α a' a) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a') (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.erase.{u2, u1} α M _inst_1 a f) a') (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a'))
-Case conversion may be inaccurate. Consider using '#align finsupp.erase_ne Finsupp.erase_neₓ'. -/
 @[simp]
 theorem erase_ne {a a' : α} {f : α →₀ M} (h : a' ≠ a) : (f.eraseₓ a) a' = f a' := by
   classical convert if_neg h
 #align finsupp.erase_ne Finsupp.erase_ne
 
-/- warning: finsupp.erase_single -> Finsupp.erase_single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {b : M}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.erase.{u1, u2} α M _inst_1 a (Finsupp.single.{u1, u2} α M _inst_1 a b)) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {b : M}, Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.erase.{u2, u1} α M _inst_1 a (Finsupp.single.{u2, u1} α M _inst_1 a b)) (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)))
-Case conversion may be inaccurate. Consider using '#align finsupp.erase_single Finsupp.erase_singleₓ'. -/
 @[simp]
 theorem erase_single {a : α} {b : M} : erase a (single a b) = 0 :=
   by
@@ -1005,12 +663,6 @@ theorem erase_single {a : α} {b : M} : erase a (single a b) = 0 :=
   · rw [erase_ne hs]; exact single_eq_of_ne (Ne.symm hs)
 #align finsupp.erase_single Finsupp.erase_single
 
-/- warning: finsupp.erase_single_ne -> Finsupp.erase_single_ne is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {a' : α} {b : M}, (Ne.{succ u1} α a a') -> (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.erase.{u1, u2} α M _inst_1 a (Finsupp.single.{u1, u2} α M _inst_1 a' b)) (Finsupp.single.{u1, u2} α M _inst_1 a' b))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {a' : α} {b : M}, (Ne.{succ u2} α a a') -> (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.erase.{u2, u1} α M _inst_1 a (Finsupp.single.{u2, u1} α M _inst_1 a' b)) (Finsupp.single.{u2, u1} α M _inst_1 a' b))
-Case conversion may be inaccurate. Consider using '#align finsupp.erase_single_ne Finsupp.erase_single_neₓ'. -/
 theorem erase_single_ne {a a' : α} {b : M} (h : a ≠ a') : erase a (single a' b) = single a' b :=
   by
   ext s; by_cases hs : s = a
@@ -1018,12 +670,6 @@ theorem erase_single_ne {a a' : α} {b : M} (h : a ≠ a') : erase a (single a'
   · rw [erase_ne hs]
 #align finsupp.erase_single_ne Finsupp.erase_single_ne
 
-/- warning: finsupp.erase_of_not_mem_support -> Finsupp.erase_of_not_mem_support is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {a : α}, (Not (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M _inst_1 f))) -> (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.erase.{u1, u2} α M _inst_1 a f) f)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {a : α}, (Not (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) a (Finsupp.support.{u2, u1} α M _inst_1 f))) -> (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.erase.{u2, u1} α M _inst_1 a f) f)
-Case conversion may be inaccurate. Consider using '#align finsupp.erase_of_not_mem_support Finsupp.erase_of_not_mem_supportₓ'. -/
 @[simp]
 theorem erase_of_not_mem_support {f : α →₀ M} {a} (haf : a ∉ f.support) : erase a f = f :=
   by
@@ -1032,12 +678,6 @@ theorem erase_of_not_mem_support {f : α →₀ M} {a} (haf : a ∉ f.support) :
   · rw [erase_ne hab]
 #align finsupp.erase_of_not_mem_support Finsupp.erase_of_not_mem_support
 
-/- warning: finsupp.erase_zero -> Finsupp.erase_zero is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (a : α), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.erase.{u1, u2} α M _inst_1 a (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1))))) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (a : α), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.erase.{u2, u1} α M _inst_1 a (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)))) (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)))
-Case conversion may be inaccurate. Consider using '#align finsupp.erase_zero Finsupp.erase_zeroₓ'. -/
 @[simp]
 theorem erase_zero (a : α) : erase a (0 : α →₀ M) = 0 := by
   classical rw [← support_eq_empty, support_erase, support_zero, erase_empty]
@@ -1066,34 +706,16 @@ def onFinset (s : Finset α) (f : α → M) (hf : ∀ a, f a ≠ 0 → a ∈ s)
 #align finsupp.on_finset Finsupp.onFinset
 -/
 
-/- warning: finsupp.on_finset_apply -> Finsupp.onFinset_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {s : Finset.{u1} α} {f : α -> M} {hf : forall (a : α), (Ne.{succ u2} M (f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s)} {a : α}, Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.onFinset.{u1, u2} α M _inst_1 s f hf) a) (f a)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {s : Finset.{u2} α} {f : α -> M} {hf : forall (a : α), (Ne.{succ u1} M (f a) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) -> (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) a s)} {a : α}, Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.onFinset.{u2, u1} α M _inst_1 s f hf) a) (f a)
-Case conversion may be inaccurate. Consider using '#align finsupp.on_finset_apply Finsupp.onFinset_applyₓ'. -/
 @[simp]
 theorem onFinset_apply {s : Finset α} {f : α → M} {hf a} : (onFinset s f hf : α →₀ M) a = f a :=
   rfl
 #align finsupp.on_finset_apply Finsupp.onFinset_apply
 
-/- warning: finsupp.support_on_finset_subset -> Finsupp.support_onFinset_subset is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {s : Finset.{u1} α} {f : α -> M} {hf : forall (a : α), (Ne.{succ u2} M (f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s)}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 (Finsupp.onFinset.{u1, u2} α M _inst_1 s f hf)) s
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {s : Finset.{u2} α} {f : α -> M} {hf : forall (a : α), (Ne.{succ u1} M (f a) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) -> (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) a s)}, HasSubset.Subset.{u2} (Finset.{u2} α) (Finset.instHasSubsetFinset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 (Finsupp.onFinset.{u2, u1} α M _inst_1 s f hf)) s
-Case conversion may be inaccurate. Consider using '#align finsupp.support_on_finset_subset Finsupp.support_onFinset_subsetₓ'. -/
 @[simp]
 theorem support_onFinset_subset {s : Finset α} {f : α → M} {hf} : (onFinset s f hf).support ⊆ s :=
   by convert filter_subset _ _
 #align finsupp.support_on_finset_subset Finsupp.support_onFinset_subset
 
-/- warning: finsupp.mem_support_on_finset -> Finsupp.mem_support_onFinset is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {s : Finset.{u1} α} {f : α -> M} (hf : forall (a : α), (Ne.{succ u2} M (f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s)) {a : α}, Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M _inst_1 (Finsupp.onFinset.{u1, u2} α M _inst_1 s f hf))) (Ne.{succ u2} M (f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {s : Finset.{u2} α} {f : α -> M} (hf : forall (a : α), (Ne.{succ u1} M (f a) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) -> (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) a s)) {a : α}, Iff (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) a (Finsupp.support.{u2, u1} α M _inst_1 (Finsupp.onFinset.{u2, u1} α M _inst_1 s f hf))) (Ne.{succ u1} M (f a) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1)))
-Case conversion may be inaccurate. Consider using '#align finsupp.mem_support_on_finset Finsupp.mem_support_onFinsetₓ'. -/
 @[simp]
 theorem mem_support_onFinset {s : Finset α} {f : α → M} (hf : ∀ a : α, f a ≠ 0 → a ∈ s) {a : α} :
     a ∈ (Finsupp.onFinset s f hf).support ↔ f a ≠ 0 := by
@@ -1123,12 +745,6 @@ noncomputable def ofSupportFinite (f : α → M) (hf : (Function.support f).Fini
 #align finsupp.of_support_finite Finsupp.ofSupportFinite
 -/
 
-/- warning: finsupp.of_support_finite_coe -> Finsupp.ofSupportFinite_coe is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : α -> M} {hf : Set.Finite.{u1} α (Function.support.{u1, u2} α M _inst_1 f)}, Eq.{max (succ u1) (succ u2)} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.ofSupportFinite.{u1, u2} α M _inst_1 f hf)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.ofSupportFinite.{u1, u2} α M _inst_1 f hf)) f
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : α -> M} {hf : Set.Finite.{u2} α (Function.support.{u2, u1} α M _inst_1 f)}, Eq.{max (succ u2) (succ u1)} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.ofSupportFinite.{u2, u1} α M _inst_1 f hf)) f
-Case conversion may be inaccurate. Consider using '#align finsupp.of_support_finite_coe Finsupp.ofSupportFinite_coeₓ'. -/
 theorem ofSupportFinite_coe {f : α → M} {hf : (Function.support f).Finite} :
     (ofSupportFinite f hf : α → M) = f :=
   rfl
@@ -1184,12 +800,6 @@ theorem mapRange_zero {f : M → N} {hf : f 0 = 0} : mapRange f hf (0 : α →
 #align finsupp.map_range_zero Finsupp.mapRange_zero
 -/
 
-/- warning: finsupp.map_range_id -> Finsupp.mapRange_id is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (g : Finsupp.{u1, u2} α M _inst_1), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.mapRange.{u1, u2, u2} α M M _inst_1 _inst_1 (id.{succ u2} M) (rfl.{succ u2} M (id.{succ u2} M (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) g) g
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (g : Finsupp.{u2, u1} α M _inst_1), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.mapRange.{u2, u1, u1} α M M _inst_1 _inst_1 (id.{succ u1} M) (rfl.{succ u1} M (id.{succ u1} M (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1)))) g) g
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range_id Finsupp.mapRange_idₓ'. -/
 @[simp]
 theorem mapRange_id (g : α →₀ M) : mapRange id rfl g = g :=
   ext fun _ => rfl
@@ -1262,34 +872,16 @@ def embDomain (f : α ↪ β) (v : α →₀ M) : β →₀ M
 #align finsupp.emb_domain Finsupp.embDomain
 -/
 
-/- warning: finsupp.support_emb_domain -> Finsupp.support_embDomain is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Function.Embedding.{succ u1, succ u2} α β) (v : Finsupp.{u1, u3} α M _inst_1), Eq.{succ u2} (Finset.{u2} β) (Finsupp.support.{u2, u3} β M _inst_1 (Finsupp.embDomain.{u1, u2, u3} α β M _inst_1 f v)) (Finset.map.{u1, u2} α β f (Finsupp.support.{u1, u3} α M _inst_1 v))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Function.Embedding.{succ u3, succ u2} α β) (v : Finsupp.{u3, u1} α M _inst_1), Eq.{succ u2} (Finset.{u2} β) (Finsupp.support.{u2, u1} β M _inst_1 (Finsupp.embDomain.{u3, u2, u1} α β M _inst_1 f v)) (Finset.map.{u3, u2} α β f (Finsupp.support.{u3, u1} α M _inst_1 v))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_emb_domain Finsupp.support_embDomainₓ'. -/
 @[simp]
 theorem support_embDomain (f : α ↪ β) (v : α →₀ M) : (embDomain f v).support = v.support.map f :=
   rfl
 #align finsupp.support_emb_domain Finsupp.support_embDomain
 
-/- warning: finsupp.emb_domain_zero -> Finsupp.embDomain_zero is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Function.Embedding.{succ u1, succ u2} α β), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.embDomain.{u1, u2, u3} α β M _inst_1 f (OfNat.ofNat.{max u1 u3} (Finsupp.{u1, u3} α M _inst_1) 0 (OfNat.mk.{max u1 u3} (Finsupp.{u1, u3} α M _inst_1) 0 (Zero.zero.{max u1 u3} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.zero.{u1, u3} α M _inst_1))))) (OfNat.ofNat.{max u2 u3} (Finsupp.{u2, u3} β M _inst_1) 0 (OfNat.mk.{max u2 u3} (Finsupp.{u2, u3} β M _inst_1) 0 (Zero.zero.{max u2 u3} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.zero.{u2, u3} β M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Function.Embedding.{succ u3, succ u2} α β), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} β M _inst_1) (Finsupp.embDomain.{u3, u2, u1} α β M _inst_1 f (OfNat.ofNat.{max u3 u1} (Finsupp.{u3, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u3 u1} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.zero.{u3, u1} α M _inst_1)))) (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} β M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} β M _inst_1) (Finsupp.zero.{u2, u1} β M _inst_1)))
-Case conversion may be inaccurate. Consider using '#align finsupp.emb_domain_zero Finsupp.embDomain_zeroₓ'. -/
 @[simp]
 theorem embDomain_zero (f : α ↪ β) : (embDomain f 0 : β →₀ M) = 0 :=
   rfl
 #align finsupp.emb_domain_zero Finsupp.embDomain_zero
 
-/- warning: finsupp.emb_domain_apply -> Finsupp.embDomain_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Function.Embedding.{succ u1, succ u2} α β) (v : Finsupp.{u1, u3} α M _inst_1) (a : α), Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (fun (_x : Finsupp.{u2, u3} β M _inst_1) => β -> M) (Finsupp.coeFun.{u2, u3} β M _inst_1) (Finsupp.embDomain.{u1, u2, u3} α β M _inst_1 f v) (coeFn.{max 1 (succ u1) (succ u2), max (succ u1) (succ u2)} (Function.Embedding.{succ u1, succ u2} α β) (fun (_x : Function.Embedding.{succ u1, succ u2} α β) => α -> β) (Function.Embedding.hasCoeToFun.{succ u1, succ u2} α β) f a)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (fun (_x : Finsupp.{u1, u3} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u3} α M _inst_1) v a)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Function.Embedding.{succ u3, succ u2} α β) (v : Finsupp.{u3, u1} α M _inst_1) (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Function.Embedding.{succ u3, succ u2} α β) α (fun (a : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) a) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Function.Embedding.{succ u3, succ u2} α β) α β (Function.instEmbeddingLikeEmbedding.{succ u3, succ u2} α β)) f a)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M _inst_1) (Finsupp.embDomain.{u3, u2, u1} α β M _inst_1 f v) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Function.Embedding.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Function.Embedding.{succ u3, succ u2} α β) α β (Function.instEmbeddingLikeEmbedding.{succ u3, succ u2} α β)) f a)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M _inst_1) v a)
-Case conversion may be inaccurate. Consider using '#align finsupp.emb_domain_apply Finsupp.embDomain_applyₓ'. -/
 @[simp]
 theorem embDomain_apply (f : α ↪ β) (v : α →₀ M) (a : α) : embDomain f v (f a) = v a := by
   classical
@@ -1300,12 +892,6 @@ theorem embDomain_apply (f : α ↪ β) (v : α →₀ M) (a : α) : embDomain f
     · exact (not_mem_support_iff.1 h).symm
 #align finsupp.emb_domain_apply Finsupp.embDomain_apply
 
-/- warning: finsupp.emb_domain_notin_range -> Finsupp.embDomain_notin_range is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Function.Embedding.{succ u1, succ u2} α β) (v : Finsupp.{u1, u3} α M _inst_1) (a : β), (Not (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) a (Set.range.{u2, succ u1} β α (coeFn.{max 1 (succ u1) (succ u2), max (succ u1) (succ u2)} (Function.Embedding.{succ u1, succ u2} α β) (fun (_x : Function.Embedding.{succ u1, succ u2} α β) => α -> β) (Function.Embedding.hasCoeToFun.{succ u1, succ u2} α β) f)))) -> (Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (fun (_x : Finsupp.{u2, u3} β M _inst_1) => β -> M) (Finsupp.coeFun.{u2, u3} β M _inst_1) (Finsupp.embDomain.{u1, u2, u3} α β M _inst_1 f v) a) (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Function.Embedding.{succ u3, succ u2} α β) (v : Finsupp.{u3, u1} α M _inst_1) (a : β), (Not (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) a (Set.range.{u2, succ u3} β α (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Function.Embedding.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Function.Embedding.{succ u3, succ u2} α β) α β (Function.instEmbeddingLikeEmbedding.{succ u3, succ u2} α β)) f)))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M _inst_1) (Finsupp.embDomain.{u3, u2, u1} α β M _inst_1 f v) a) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) a) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) a) _inst_1)))
-Case conversion may be inaccurate. Consider using '#align finsupp.emb_domain_notin_range Finsupp.embDomain_notin_rangeₓ'. -/
 theorem embDomain_notin_range (f : α ↪ β) (v : α →₀ M) (a : β) (h : a ∉ Set.range f) :
     embDomain f v a = 0 := by
   classical
@@ -1314,44 +900,20 @@ theorem embDomain_notin_range (f : α ↪ β) (v : α →₀ M) (a : β) (h : a
     exact Set.mem_range_self a
 #align finsupp.emb_domain_notin_range Finsupp.embDomain_notin_range
 
-/- warning: finsupp.emb_domain_injective -> Finsupp.embDomain_injective is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Function.Embedding.{succ u1, succ u2} α β), Function.Injective.{max (succ u1) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u2, u3} β M _inst_1) (Finsupp.embDomain.{u1, u2, u3} α β M _inst_1 f)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Function.Embedding.{succ u3, succ u2} α β), Function.Injective.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.{u2, u1} β M _inst_1) (Finsupp.embDomain.{u3, u2, u1} α β M _inst_1 f)
-Case conversion may be inaccurate. Consider using '#align finsupp.emb_domain_injective Finsupp.embDomain_injectiveₓ'. -/
 theorem embDomain_injective (f : α ↪ β) : Function.Injective (embDomain f : (α →₀ M) → β →₀ M) :=
   fun l₁ l₂ h => ext fun a => by simpa only [emb_domain_apply] using ext_iff.1 h (f a)
 #align finsupp.emb_domain_injective Finsupp.embDomain_injective
 
-/- warning: finsupp.emb_domain_inj -> Finsupp.embDomain_inj is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] {f : Function.Embedding.{succ u1, succ u2} α β} {l₁ : Finsupp.{u1, u3} α M _inst_1} {l₂ : Finsupp.{u1, u3} α M _inst_1}, Iff (Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.embDomain.{u1, u2, u3} α β M _inst_1 f l₁) (Finsupp.embDomain.{u1, u2, u3} α β M _inst_1 f l₂)) (Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) l₁ l₂)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Function.Embedding.{succ u3, succ u2} α β} {l₁ : Finsupp.{u3, u1} α M _inst_1} {l₂ : Finsupp.{u3, u1} α M _inst_1}, Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} β M _inst_1) (Finsupp.embDomain.{u3, u2, u1} α β M _inst_1 f l₁) (Finsupp.embDomain.{u3, u2, u1} α β M _inst_1 f l₂)) (Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) l₁ l₂)
-Case conversion may be inaccurate. Consider using '#align finsupp.emb_domain_inj Finsupp.embDomain_injₓ'. -/
 @[simp]
 theorem embDomain_inj {f : α ↪ β} {l₁ l₂ : α →₀ M} : embDomain f l₁ = embDomain f l₂ ↔ l₁ = l₂ :=
   (embDomain_injective f).eq_iff
 #align finsupp.emb_domain_inj Finsupp.embDomain_inj
 
-/- warning: finsupp.emb_domain_eq_zero -> Finsupp.embDomain_eq_zero is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] {f : Function.Embedding.{succ u1, succ u2} α β} {l : Finsupp.{u1, u3} α M _inst_1}, Iff (Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.embDomain.{u1, u2, u3} α β M _inst_1 f l) (OfNat.ofNat.{max u2 u3} (Finsupp.{u2, u3} β M _inst_1) 0 (OfNat.mk.{max u2 u3} (Finsupp.{u2, u3} β M _inst_1) 0 (Zero.zero.{max u2 u3} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.zero.{u2, u3} β M _inst_1))))) (Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) l (OfNat.ofNat.{max u1 u3} (Finsupp.{u1, u3} α M _inst_1) 0 (OfNat.mk.{max u1 u3} (Finsupp.{u1, u3} α M _inst_1) 0 (Zero.zero.{max u1 u3} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.zero.{u1, u3} α M _inst_1)))))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Function.Embedding.{succ u3, succ u2} α β} {l : Finsupp.{u3, u1} α M _inst_1}, Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} β M _inst_1) (Finsupp.embDomain.{u3, u2, u1} α β M _inst_1 f l) (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} β M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} β M _inst_1) (Finsupp.zero.{u2, u1} β M _inst_1)))) (Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) l (OfNat.ofNat.{max u3 u1} (Finsupp.{u3, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u3 u1} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.zero.{u3, u1} α M _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.emb_domain_eq_zero Finsupp.embDomain_eq_zeroₓ'. -/
 @[simp]
 theorem embDomain_eq_zero {f : α ↪ β} {l : α →₀ M} : embDomain f l = 0 ↔ l = 0 :=
   (embDomain_injective f).eq_iff' <| embDomain_zero f
 #align finsupp.emb_domain_eq_zero Finsupp.embDomain_eq_zero
 
-/- warning: finsupp.emb_domain_map_range -> Finsupp.embDomain_mapRange is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : Zero.{u3} M] [_inst_2 : Zero.{u4} N] (f : Function.Embedding.{succ u1, succ u2} α β) (g : M -> N) (p : Finsupp.{u1, u3} α M _inst_1) (hg : Eq.{succ u4} N (g (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M _inst_1)))) (OfNat.ofNat.{u4} N 0 (OfNat.mk.{u4} N 0 (Zero.zero.{u4} N _inst_2)))), Eq.{max (succ u2) (succ u4)} (Finsupp.{u2, u4} β N _inst_2) (Finsupp.embDomain.{u1, u2, u4} α β N _inst_2 f (Finsupp.mapRange.{u1, u3, u4} α M N _inst_1 _inst_2 g hg p)) (Finsupp.mapRange.{u2, u3, u4} β M N _inst_1 _inst_2 g hg (Finsupp.embDomain.{u1, u2, u3} α β M _inst_1 f p))
-but is expected to have type
-  forall {α : Type.{u4}} {β : Type.{u3}} {M : Type.{u2}} {N : Type.{u1}} [_inst_1 : Zero.{u2} M] [_inst_2 : Zero.{u1} N] (f : Function.Embedding.{succ u4, succ u3} α β) (g : M -> N) (p : Finsupp.{u4, u2} α M _inst_1) (hg : Eq.{succ u1} N (g (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M _inst_1))) (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N _inst_2))), Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} β N _inst_2) (Finsupp.embDomain.{u4, u3, u1} α β N _inst_2 f (Finsupp.mapRange.{u4, u2, u1} α M N _inst_1 _inst_2 g hg p)) (Finsupp.mapRange.{u3, u2, u1} β M N _inst_1 _inst_2 g hg (Finsupp.embDomain.{u4, u3, u2} α β M _inst_1 f p))
-Case conversion may be inaccurate. Consider using '#align finsupp.emb_domain_map_range Finsupp.embDomain_mapRangeₓ'. -/
 theorem embDomain_mapRange (f : α ↪ β) (g : M → N) (p : α →₀ M) (hg : g 0 = 0) :
     embDomain f (mapRange g hg p) = mapRange g hg (embDomain f p) :=
   by
@@ -1362,12 +924,6 @@ theorem embDomain_mapRange (f : α ↪ β) (g : M → N) (p : α →₀ M) (hg :
   · rw [map_range_apply, emb_domain_notin_range, emb_domain_notin_range, ← hg] <;> assumption
 #align finsupp.emb_domain_map_range Finsupp.embDomain_mapRange
 
-/- warning: finsupp.single_of_emb_domain_single -> Finsupp.single_of_embDomain_single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (l : Finsupp.{u1, u3} α M _inst_1) (f : Function.Embedding.{succ u1, succ u2} α β) (a : β) (b : M), (Ne.{succ u3} M b (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M _inst_1)))) -> (Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.embDomain.{u1, u2, u3} α β M _inst_1 f l) (Finsupp.single.{u2, u3} β M _inst_1 a b)) -> (Exists.{succ u1} α (fun (x : α) => And (Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) l (Finsupp.single.{u1, u3} α M _inst_1 x b)) (Eq.{succ u2} β (coeFn.{max 1 (succ u1) (succ u2), max (succ u1) (succ u2)} (Function.Embedding.{succ u1, succ u2} α β) (fun (_x : Function.Embedding.{succ u1, succ u2} α β) => α -> β) (Function.Embedding.hasCoeToFun.{succ u1, succ u2} α β) f x) a)))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (l : Finsupp.{u3, u2} α M _inst_1) (f : Function.Embedding.{succ u3, succ u1} α β) (a : β) (b : M), (Ne.{succ u2} M b (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M _inst_1))) -> (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} β M _inst_1) (Finsupp.embDomain.{u3, u1, u2} α β M _inst_1 f l) (Finsupp.single.{u1, u2} β M _inst_1 a b)) -> (Exists.{succ u3} α (fun (x : α) => And (Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} α M _inst_1) l (Finsupp.single.{u3, u2} α M _inst_1 x b)) (Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Function.Embedding.{succ u3, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u1), succ u3, succ u1} (Function.Embedding.{succ u3, succ u1} α β) α β (Function.instEmbeddingLikeEmbedding.{succ u3, succ u1} α β)) f x) a)))
-Case conversion may be inaccurate. Consider using '#align finsupp.single_of_emb_domain_single Finsupp.single_of_embDomain_singleₓ'. -/
 theorem single_of_embDomain_single (l : α →₀ M) (f : α ↪ β) (a : β) (b : M) (hb : b ≠ 0)
     (h : l.embDomain f = single a b) : ∃ x, l = single x b ∧ f x = a := by
   classical
@@ -1387,12 +943,6 @@ theorem single_of_embDomain_single (l : α →₀ M) (f : α ↪ β) (a : β) (b
     · exact hc₂
 #align finsupp.single_of_emb_domain_single Finsupp.single_of_embDomain_single
 
-/- warning: finsupp.emb_domain_single -> Finsupp.embDomain_single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Function.Embedding.{succ u1, succ u2} α β) (a : α) (m : M), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.embDomain.{u1, u2, u3} α β M _inst_1 f (Finsupp.single.{u1, u3} α M _inst_1 a m)) (Finsupp.single.{u2, u3} β M _inst_1 (coeFn.{max 1 (succ u1) (succ u2), max (succ u1) (succ u2)} (Function.Embedding.{succ u1, succ u2} α β) (fun (_x : Function.Embedding.{succ u1, succ u2} α β) => α -> β) (Function.Embedding.hasCoeToFun.{succ u1, succ u2} α β) f a) m)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Function.Embedding.{succ u3, succ u2} α β) (a : α) (m : M), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} β M _inst_1) (Finsupp.embDomain.{u3, u2, u1} α β M _inst_1 f (Finsupp.single.{u3, u1} α M _inst_1 a m)) (Finsupp.single.{u2, u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) a) M _inst_1 (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Function.Embedding.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Function.Embedding.{succ u3, succ u2} α β) α β (Function.instEmbeddingLikeEmbedding.{succ u3, succ u2} α β)) f a) m)
-Case conversion may be inaccurate. Consider using '#align finsupp.emb_domain_single Finsupp.embDomain_singleₓ'. -/
 @[simp]
 theorem embDomain_single (f : α ↪ β) (a : α) (m : M) : embDomain f (single a m) = single (f a) m :=
   by
@@ -1431,24 +981,12 @@ def zipWith (f : M → N → P) (hf : f 0 0 = 0) (g₁ : α →₀ M) (g₂ : α
 #align finsupp.zip_with Finsupp.zipWith
 -/
 
-/- warning: finsupp.zip_with_apply -> Finsupp.zipWith_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {P : Type.{u4}} [_inst_1 : Zero.{u2} M] [_inst_2 : Zero.{u3} N] [_inst_3 : Zero.{u4} P] {f : M -> N -> P} {hf : Eq.{succ u4} P (f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))} {g₁ : Finsupp.{u1, u2} α M _inst_1} {g₂ : Finsupp.{u1, u3} α N _inst_2} {a : α}, Eq.{succ u4} P (coeFn.{max (succ u1) (succ u4), max (succ u1) (succ u4)} (Finsupp.{u1, u4} α P _inst_3) (fun (_x : Finsupp.{u1, u4} α P _inst_3) => α -> P) (Finsupp.coeFun.{u1, u4} α P _inst_3) (Finsupp.zipWith.{u1, u2, u3, u4} α M N P _inst_1 _inst_2 _inst_3 f hf g₁ g₂) a) (f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) g₁ a) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N _inst_2) (fun (_x : Finsupp.{u1, u3} α N _inst_2) => α -> N) (Finsupp.coeFun.{u1, u3} α N _inst_2) g₂ a))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} {P : Type.{u4}} [_inst_1 : Zero.{u3} M] [_inst_2 : Zero.{u2} N] [_inst_3 : Zero.{u4} P] {f : M -> N -> P} {hf : Eq.{succ u4} P (f (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1)) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) (OfNat.ofNat.{u4} P 0 (Zero.toOfNat0.{u4} P _inst_3))} {g₁ : Finsupp.{u1, u3} α M _inst_1} {g₂ : Finsupp.{u1, u2} α N _inst_2} {a : α}, Eq.{succ u4} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => P) a) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (Finsupp.{u1, u4} α P _inst_3) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => P) _x) (Finsupp.funLike.{u1, u4} α P _inst_3) (Finsupp.zipWith.{u1, u3, u2, u4} α M N P _inst_1 _inst_2 _inst_3 f hf g₁ g₂) a) (f (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u1, u3} α M _inst_1) g₁ a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α N _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => N) _x) (Finsupp.funLike.{u1, u2} α N _inst_2) g₂ a))
-Case conversion may be inaccurate. Consider using '#align finsupp.zip_with_apply Finsupp.zipWith_applyₓ'. -/
 @[simp]
 theorem zipWith_apply {f : M → N → P} {hf : f 0 0 = 0} {g₁ : α →₀ M} {g₂ : α →₀ N} {a : α} :
     zipWith f hf g₁ g₂ a = f (g₁ a) (g₂ a) :=
   rfl
 #align finsupp.zip_with_apply Finsupp.zipWith_apply
 
-/- warning: finsupp.support_zip_with -> Finsupp.support_zipWith is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {P : Type.{u4}} [_inst_1 : Zero.{u2} M] [_inst_2 : Zero.{u3} N] [_inst_3 : Zero.{u4} P] [D : DecidableEq.{succ u1} α] {f : M -> N -> P} {hf : Eq.{succ u4} P (f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))} {g₁ : Finsupp.{u1, u2} α M _inst_1} {g₂ : Finsupp.{u1, u3} α N _inst_2}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u4} α P _inst_3 (Finsupp.zipWith.{u1, u2, u3, u4} α M N P _inst_1 _inst_2 _inst_3 f hf g₁ g₂)) (Union.union.{u1} (Finset.{u1} α) (Finset.hasUnion.{u1} α (fun (a : α) (b : α) => D a b)) (Finsupp.support.{u1, u2} α M _inst_1 g₁) (Finsupp.support.{u1, u3} α N _inst_2 g₂))
-but is expected to have type
-  forall {α : Type.{u4}} {M : Type.{u2}} {N : Type.{u1}} {P : Type.{u3}} [_inst_1 : Zero.{u2} M] [_inst_2 : Zero.{u1} N] [_inst_3 : Zero.{u3} P] [D : DecidableEq.{succ u4} α] {f : M -> N -> P} {hf : Eq.{succ u3} P (f (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M _inst_1)) (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N _inst_2))) (OfNat.ofNat.{u3} P 0 (Zero.toOfNat0.{u3} P _inst_3))} {g₁ : Finsupp.{u4, u2} α M _inst_1} {g₂ : Finsupp.{u4, u1} α N _inst_2}, HasSubset.Subset.{u4} (Finset.{u4} α) (Finset.instHasSubsetFinset.{u4} α) (Finsupp.support.{u4, u3} α P _inst_3 (Finsupp.zipWith.{u4, u2, u1, u3} α M N P _inst_1 _inst_2 _inst_3 f hf g₁ g₂)) (Union.union.{u4} (Finset.{u4} α) (Finset.instUnionFinset.{u4} α (fun (a : α) (b : α) => D a b)) (Finsupp.support.{u4, u2} α M _inst_1 g₁) (Finsupp.support.{u4, u1} α N _inst_2 g₂))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_zip_with Finsupp.support_zipWithₓ'. -/
 theorem support_zipWith [D : DecidableEq α] {f : M → N → P} {hf : f 0 0 = 0} {g₁ : α →₀ M}
     {g₂ : α →₀ N} : (zipWith f hf g₁ g₂).support ⊆ g₁.support ∪ g₂.support := by
   rw [Subsingleton.elim D] <;> exact support_on_finset_subset
@@ -1466,44 +1004,20 @@ variable [AddZeroClass M]
 instance : Add (α →₀ M) :=
   ⟨zipWith (· + ·) (add_zero 0)⟩
 
-/- warning: finsupp.coe_add -> Finsupp.coe_add is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), Eq.{succ (max u1 u2)} (α -> M) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) f g)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (α -> M) (α -> M) (α -> M) (instHAdd.{max u1 u2} (α -> M) (Pi.instAdd.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => AddZeroClass.toHasAdd.{u2} M _inst_1))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) g))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (g : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) f g)) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (instHAdd.{max u2 u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (Pi.instAdd.{u2, u1} α (fun (ᾰ : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (fun (i : α) => AddZeroClass.toAdd.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) _inst_1))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) g))
-Case conversion may be inaccurate. Consider using '#align finsupp.coe_add Finsupp.coe_addₓ'. -/
 @[simp]
 theorem coe_add (f g : α →₀ M) : ⇑(f + g) = f + g :=
   rfl
 #align finsupp.coe_add Finsupp.coe_add
 
-/- warning: finsupp.add_apply -> Finsupp.add_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (g₁ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (g₂ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (a : α), Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) g₁ g₂) a) (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toHasAdd.{u2} M _inst_1)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) g₁ a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) g₂ a))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] (g₁ : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (g₂ : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) g₁ g₂) a) (HAdd.hAdd.{u1, u1, u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (instHAdd.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddZeroClass.toAdd.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) g₁ a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) g₂ a))
-Case conversion may be inaccurate. Consider using '#align finsupp.add_apply Finsupp.add_applyₓ'. -/
 theorem add_apply (g₁ g₂ : α →₀ M) (a : α) : (g₁ + g₂) a = g₁ a + g₂ a :=
   rfl
 #align finsupp.add_apply Finsupp.add_apply
 
-/- warning: finsupp.support_add -> Finsupp.support_add is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] {g₁ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)} {g₂ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) g₁ g₂)) (Union.union.{u1} (Finset.{u1} α) (Finset.hasUnion.{u1} α (fun (a : α) (b : α) => _inst_2 a b)) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) g₁) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) g₂))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] {g₁ : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)} {g₂ : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)}, HasSubset.Subset.{u2} (Finset.{u2} α) (Finset.instHasSubsetFinset.{u2} α) (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) g₁ g₂)) (Union.union.{u2} (Finset.{u2} α) (Finset.instUnionFinset.{u2} α (fun (a : α) (b : α) => _inst_2 a b)) (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) g₁) (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) g₂))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_add Finsupp.support_addₓ'. -/
 theorem support_add [DecidableEq α] {g₁ g₂ : α →₀ M} :
     (g₁ + g₂).support ⊆ g₁.support ∪ g₂.support :=
   support_zipWith
 #align finsupp.support_add Finsupp.support_add
 
-/- warning: finsupp.support_add_eq -> Finsupp.support_add_eq is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] {g₁ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)} {g₂ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)}, (Disjoint.{u1} (Finset.{u1} α) (Finset.partialOrder.{u1} α) (Finset.orderBot.{u1} α) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) g₁) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) g₂)) -> (Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) g₁ g₂)) (Union.union.{u1} (Finset.{u1} α) (Finset.hasUnion.{u1} α (fun (a : α) (b : α) => _inst_2 a b)) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) g₁) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) g₂)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] {g₁ : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)} {g₂ : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)}, (Disjoint.{u2} (Finset.{u2} α) (Finset.partialOrder.{u2} α) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u2} α) (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) g₁) (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) g₂)) -> (Eq.{succ u2} (Finset.{u2} α) (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) g₁ g₂)) (Union.union.{u2} (Finset.{u2} α) (Finset.instUnionFinset.{u2} α (fun (a : α) (b : α) => _inst_2 a b)) (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) g₁) (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) g₂)))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_add_eq Finsupp.support_add_eqₓ'. -/
 theorem support_add_eq [DecidableEq α] {g₁ g₂ : α →₀ M} (h : Disjoint g₁.support g₂.support) :
     (g₁ + g₂).support = g₁.support ∪ g₂.support :=
   le_antisymm support_zipWith fun a ha =>
@@ -1517,12 +1031,6 @@ theorem support_add_eq [DecidableEq α] {g₁ g₂ : α →₀ M} (h : Disjoint
       simp only [mem_support_iff, Classical.not_not] at * <;> simpa only [add_apply, this, zero_add]
 #align finsupp.support_add_eq Finsupp.support_add_eq
 
-/- warning: finsupp.single_add -> Finsupp.single_add is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (a : α) (b₁ : M) (b₂ : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toHasAdd.{u2} M _inst_1)) b₁ b₂)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b₁) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b₂))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] (a : α) (b₁ : M) (b₂ : M), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.single.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a (HAdd.hAdd.{u1, u1, u1} M M M (instHAdd.{u1} M (AddZeroClass.toAdd.{u1} M _inst_1)) b₁ b₂)) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) (Finsupp.single.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a b₁) (Finsupp.single.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a b₂))
-Case conversion may be inaccurate. Consider using '#align finsupp.single_add Finsupp.single_addₓ'. -/
 @[simp]
 theorem single_add (a : α) (b₁ b₂ : M) : single a (b₁ + b₂) = single a b₁ + single a b₂ :=
   ext fun a' => by
@@ -1534,12 +1042,6 @@ theorem single_add (a : α) (b₁ b₂ : M) : single a (b₁ + b₂) = single a
 instance : AddZeroClass (α →₀ M) :=
   FunLike.coe_injective.AddZeroClass _ coe_zero coe_add
 
-/- warning: finsupp.single_add_hom -> Finsupp.singleAddHom is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M], α -> (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M], α -> (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1))
-Case conversion may be inaccurate. Consider using '#align finsupp.single_add_hom Finsupp.singleAddHomₓ'. -/
 /-- `finsupp.single` as an `add_monoid_hom`.
 
 See `finsupp.lsingle` in `linear_algebra/finsupp` for the stronger version as a linear map. -/
@@ -1548,12 +1050,6 @@ def singleAddHom (a : α) : M →+ α →₀ M :=
   ⟨single a, single_zero a, single_add a⟩
 #align finsupp.single_add_hom Finsupp.singleAddHom
 
-/- warning: finsupp.apply_add_hom -> Finsupp.applyAddHom is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M], α -> (AddMonoidHom.{max u1 u2, u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) M (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_1)
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M], α -> (AddMonoidHom.{max u2 u1, u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) M (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_1)
-Case conversion may be inaccurate. Consider using '#align finsupp.apply_add_hom Finsupp.applyAddHomₓ'. -/
 /-- Evaluation of a function `f : α →₀ M` at a point as an additive monoid homomorphism.
 
 See `finsupp.lapply` in `linear_algebra/finsupp` for the stronger version as a linear map. -/
@@ -1562,12 +1058,6 @@ def applyAddHom (a : α) : (α →₀ M) →+ M :=
   ⟨fun g => g a, zero_apply, fun _ _ => add_apply _ _ _⟩
 #align finsupp.apply_add_hom Finsupp.applyAddHom
 
-/- warning: finsupp.coe_fn_add_hom -> Finsupp.coeFnAddHom is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M], AddMonoidHom.{max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (α -> M) (Finsupp.addZeroClass.{u1, u2} α M _inst_1) (Pi.addZeroClass.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M], AddMonoidHom.{max u2 u1, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (α -> M) (Finsupp.addZeroClass.{u1, u2} α M _inst_1) (Pi.addZeroClass.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1))
-Case conversion may be inaccurate. Consider using '#align finsupp.coe_fn_add_hom Finsupp.coeFnAddHomₓ'. -/
 /-- Coercion from a `finsupp` to a function type is an `add_monoid_hom`. -/
 @[simps]
 noncomputable def coeFnAddHom : (α →₀ M) →+ α → M
@@ -1577,12 +1067,6 @@ noncomputable def coeFnAddHom : (α →₀ M) →+ α → M
   map_add' := coe_add
 #align finsupp.coe_fn_add_hom Finsupp.coeFnAddHom
 
-/- warning: finsupp.update_eq_single_add_erase -> Finsupp.update_eq_single_add_erase is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (a : α) (b : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.update.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) f a b) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a f))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (a : α) (b : M), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.update.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) f a b) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) (Finsupp.single.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a b) (Finsupp.erase.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a f))
-Case conversion may be inaccurate. Consider using '#align finsupp.update_eq_single_add_erase Finsupp.update_eq_single_add_eraseₓ'. -/
 theorem update_eq_single_add_erase (f : α →₀ M) (a : α) (b : M) :
     f.update a b = single a b + f.eraseₓ a := by
   classical
@@ -1592,12 +1076,6 @@ theorem update_eq_single_add_erase (f : α →₀ M) (a : α) (b : M) :
     · simp [Function.update_noteq h.symm, single_apply, h, erase_ne, h.symm]
 #align finsupp.update_eq_single_add_erase Finsupp.update_eq_single_add_erase
 
-/- warning: finsupp.update_eq_erase_add_single -> Finsupp.update_eq_erase_add_single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (a : α) (b : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.update.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) f a b) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a f) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (a : α) (b : M), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.update.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) f a b) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) (Finsupp.erase.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a f) (Finsupp.single.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a b))
-Case conversion may be inaccurate. Consider using '#align finsupp.update_eq_erase_add_single Finsupp.update_eq_erase_add_singleₓ'. -/
 theorem update_eq_erase_add_single (f : α →₀ M) (a : α) (b : M) :
     f.update a b = f.eraseₓ a + single a b := by
   classical
@@ -1607,32 +1085,14 @@ theorem update_eq_erase_add_single (f : α →₀ M) (a : α) (b : M) :
     · simp [Function.update_noteq h.symm, single_apply, h, erase_ne, h.symm]
 #align finsupp.update_eq_erase_add_single Finsupp.update_eq_erase_add_single
 
-/- warning: finsupp.single_add_erase -> Finsupp.single_add_erase is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (a : α) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) f a)) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a f)) f
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] (a : α) (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddZeroClass.toZero.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1)) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddZeroClass.toZero.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddZeroClass.toZero.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddZeroClass.toZero.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1)) (Finsupp.add.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1)) (Finsupp.single.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddZeroClass.toZero.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1) a (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) f a)) (Finsupp.erase.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a f)) f
-Case conversion may be inaccurate. Consider using '#align finsupp.single_add_erase Finsupp.single_add_eraseₓ'. -/
 theorem single_add_erase (a : α) (f : α →₀ M) : single a (f a) + f.eraseₓ a = f := by
   rw [← update_eq_single_add_erase, update_self]
 #align finsupp.single_add_erase Finsupp.single_add_erase
 
-/- warning: finsupp.erase_add_single -> Finsupp.erase_add_single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (a : α) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a f) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) f a))) f
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] (a : α) (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddZeroClass.toZero.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) (Finsupp.erase.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a f) (Finsupp.single.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddZeroClass.toZero.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1) a (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) f a))) f
-Case conversion may be inaccurate. Consider using '#align finsupp.erase_add_single Finsupp.erase_add_singleₓ'. -/
 theorem erase_add_single (a : α) (f : α →₀ M) : f.eraseₓ a + single a (f a) = f := by
   rw [← update_eq_erase_add_single, update_self]
 #align finsupp.erase_add_single Finsupp.erase_add_single
 
-/- warning: finsupp.erase_add -> Finsupp.erase_add is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (a : α) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (f' : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) f f')) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a f) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a f'))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] (a : α) (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (f' : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.erase.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) f f')) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) (Finsupp.erase.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a f) (Finsupp.erase.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a f'))
-Case conversion may be inaccurate. Consider using '#align finsupp.erase_add Finsupp.erase_addₓ'. -/
 @[simp]
 theorem erase_add (a : α) (f f' : α →₀ M) : erase a (f + f') = erase a f + erase a f' :=
   by
@@ -1641,12 +1101,6 @@ theorem erase_add (a : α) (f f' : α →₀ M) : erase a (f + f') = erase a f +
   rw [add_apply, erase_ne hs, erase_ne hs, erase_ne hs, add_apply]
 #align finsupp.erase_add Finsupp.erase_add
 
-/- warning: finsupp.erase_add_hom -> Finsupp.eraseAddHom is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M], α -> (AddMonoidHom.{max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M], α -> (AddMonoidHom.{max u2 u1, max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))
-Case conversion may be inaccurate. Consider using '#align finsupp.erase_add_hom Finsupp.eraseAddHomₓ'. -/
 /-- `finsupp.erase` as an `add_monoid_hom`. -/
 @[simps]
 def eraseAddHom (a : α) : (α →₀ M) →+ α →₀ M
@@ -1656,12 +1110,6 @@ def eraseAddHom (a : α) : (α →₀ M) →+ α →₀ M
   map_add' := erase_add a
 #align finsupp.erase_add_hom Finsupp.eraseAddHom
 
-/- warning: finsupp.induction -> Finsupp.induction is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] {p : (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> Prop} (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), (p (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))))) -> (forall (a : α) (b : M) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), (Not (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) f))) -> (Ne.{succ u2} M b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M _inst_1))))) -> (p f) -> (p (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b) f))) -> (p f)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] {p : (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) -> Prop} (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), (p (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.zero.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1))))) -> (forall (a : α) (b : M) (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), (Not (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) a (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) f))) -> (Ne.{succ u1} M b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M (AddZeroClass.toZero.{u1} M _inst_1)))) -> (p f) -> (p (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) (Finsupp.single.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a b) f))) -> (p f)
-Case conversion may be inaccurate. Consider using '#align finsupp.induction Finsupp.inductionₓ'. -/
 @[elab_as_elim]
 protected theorem induction {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 : p 0)
     (ha : ∀ (a b) (f : α →₀ M), a ∉ f.support → b ≠ 0 → p f → p (single a b + f)) : p f :=
@@ -1678,12 +1126,6 @@ protected theorem induction {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 :
         rw [support_erase, hf, Finset.erase_cons]
 #align finsupp.induction Finsupp.induction
 
-/- warning: finsupp.induction₂ -> Finsupp.induction₂ is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] {p : (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> Prop} (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), (p (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))))) -> (forall (a : α) (b : M) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), (Not (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) f))) -> (Ne.{succ u2} M b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M _inst_1))))) -> (p f) -> (p (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) f (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b)))) -> (p f)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] {p : (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) -> Prop} (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), (p (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.zero.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1))))) -> (forall (a : α) (b : M) (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), (Not (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) a (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) f))) -> (Ne.{succ u1} M b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M (AddZeroClass.toZero.{u1} M _inst_1)))) -> (p f) -> (p (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) f (Finsupp.single.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a b)))) -> (p f)
-Case conversion may be inaccurate. Consider using '#align finsupp.induction₂ Finsupp.induction₂ₓ'. -/
 theorem induction₂ {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 : p 0)
     (ha : ∀ (a b) (f : α →₀ M), a ∉ f.support → b ≠ 0 → p f → p (f + single a b)) : p f :=
   suffices ∀ (s) (f : α →₀ M), f.support = s → p f from this _ _ rfl
@@ -1700,23 +1142,11 @@ theorem induction₂ {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 : p 0)
         rw [support_erase, hf, Finset.erase_cons]
 #align finsupp.induction₂ Finsupp.induction₂
 
-/- warning: finsupp.induction_linear -> Finsupp.induction_linear is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] {p : (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> Prop} (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), (p (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))))) -> (forall (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), (p f) -> (p g) -> (p (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) f g))) -> (forall (a : α) (b : M), p (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b)) -> (p f)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] {p : (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) -> Prop} (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), (p (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.zero.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1))))) -> (forall (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (g : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), (p f) -> (p g) -> (p (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) f g))) -> (forall (a : α) (b : M), p (Finsupp.single.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a b)) -> (p f)
-Case conversion may be inaccurate. Consider using '#align finsupp.induction_linear Finsupp.induction_linearₓ'. -/
 theorem induction_linear {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 : p 0)
     (hadd : ∀ f g : α →₀ M, p f → p g → p (f + g)) (hsingle : ∀ a b, p (single a b)) : p f :=
   induction₂ f h0 fun a b f _ _ w => hadd _ _ w (hsingle _ _)
 #align finsupp.induction_linear Finsupp.induction_linear
 
-/- warning: finsupp.add_closure_set_of_eq_single -> Finsupp.add_closure_setOf_eq_single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M], Eq.{succ (max u1 u2)} (AddSubmonoid.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (AddSubmonoid.closure.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1) (setOf.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => Exists.{succ u1} α (fun (a : α) => Exists.{succ u2} M (fun (b : M) => Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) f (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b)))))) (Top.top.{max u1 u2} (AddSubmonoid.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (AddSubmonoid.hasTop.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M], Eq.{max (succ u2) (succ u1)} (AddSubmonoid.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.addZeroClass.{u2, u1} α M _inst_1)) (AddSubmonoid.closure.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.addZeroClass.{u2, u1} α M _inst_1) (setOf.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (fun (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) => Exists.{succ u2} α (fun (a : α) => Exists.{succ u1} M (fun (b : M) => Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) f (Finsupp.single.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a b)))))) (Top.top.{max u2 u1} (AddSubmonoid.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.addZeroClass.{u2, u1} α M _inst_1)) (AddSubmonoid.instTopAddSubmonoid.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.addZeroClass.{u2, u1} α M _inst_1)))
-Case conversion may be inaccurate. Consider using '#align finsupp.add_closure_set_of_eq_single Finsupp.add_closure_setOf_eq_singleₓ'. -/
 @[simp]
 theorem add_closure_setOf_eq_single :
     AddSubmonoid.closure { f : α →₀ M | ∃ a b, f = single a b } = ⊤ :=
@@ -1725,12 +1155,6 @@ theorem add_closure_setOf_eq_single :
       AddSubmonoid.add_mem _ (AddSubmonoid.subset_closure <| ⟨a, b, rfl⟩) hf
 #align finsupp.add_closure_set_of_eq_single Finsupp.add_closure_setOf_eq_single
 
-/- warning: finsupp.add_hom_ext -> Finsupp.addHom_ext is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : AddZeroClass.{u3} N] {{f : AddMonoidHom.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2}} {{g : AddMonoidHom.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2}}, (forall (x : α) (y : M), Eq.{succ u3} N (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ (max u1 u2)) (succ u3)} (AddMonoidHom.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (fun (_x : AddMonoidHom.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) => (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> N) (AddMonoidHom.hasCoeToFun.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) f (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) x y)) (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ (max u1 u2)) (succ u3)} (AddMonoidHom.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (fun (_x : AddMonoidHom.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) => (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> N) (AddMonoidHom.hasCoeToFun.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) g (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) x y))) -> (Eq.{max (succ u3) (succ (max u1 u2))} (AddMonoidHom.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) f g)
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : AddZeroClass.{u3} N] {{f : AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2}} {{g : AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2}}, (forall (x : α) (y : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => N) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y)) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => N) _x) (AddHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (AddZeroClass.toAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (AddZeroClass.toAdd.{u3} N _inst_2) (AddMonoidHomClass.toAddHomClass.{max (max u1 u2) u3, max u1 u2, u3} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2 (AddMonoidHom.addMonoidHomClass.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2))) f (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y)) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => N) _x) (AddHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (AddZeroClass.toAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (AddZeroClass.toAdd.{u3} N _inst_2) (AddMonoidHomClass.toAddHomClass.{max (max u1 u2) u3, max u1 u2, u3} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2 (AddMonoidHom.addMonoidHomClass.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2))) g (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y))) -> (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) f g)
-Case conversion may be inaccurate. Consider using '#align finsupp.add_hom_ext Finsupp.addHom_extₓ'. -/
 /-- If two additive homomorphisms from `α →₀ M` are equal on each `single a b`,
 then they are equal. -/
 theorem addHom_ext [AddZeroClass N] ⦃f g : (α →₀ M) →+ N⦄
@@ -1741,12 +1165,6 @@ theorem addHom_ext [AddZeroClass N] ⦃f g : (α →₀ M) →+ N⦄
   apply H
 #align finsupp.add_hom_ext Finsupp.addHom_ext
 
-/- warning: finsupp.add_hom_ext' -> Finsupp.addHom_ext' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : AddZeroClass.{u3} N] {{f : AddMonoidHom.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2}} {{g : AddMonoidHom.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2}}, (forall (x : α), Eq.{max (succ u3) (succ u2)} (AddMonoidHom.{u2, u3} M N _inst_1 _inst_2) (AddMonoidHom.comp.{u2, max u1 u2, u3} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2 f (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x)) (AddMonoidHom.comp.{u2, max u1 u2, u3} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2 g (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x))) -> (Eq.{max (succ u3) (succ (max u1 u2))} (AddMonoidHom.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) f g)
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : AddZeroClass.{u3} N] {{f : AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2}} {{g : AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2}}, (forall (x : α), Eq.{max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} M N _inst_1 _inst_2) (AddMonoidHom.comp.{u2, max u1 u2, u3} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2 f (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x)) (AddMonoidHom.comp.{u2, max u1 u2, u3} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2 g (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x))) -> (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) f g)
-Case conversion may be inaccurate. Consider using '#align finsupp.add_hom_ext' Finsupp.addHom_ext'ₓ'. -/
 /-- If two additive homomorphisms from `α →₀ M` are equal on each `single a b`,
 then they are equal.
 
@@ -1759,9 +1177,6 @@ theorem addHom_ext' [AddZeroClass N] ⦃f g : (α →₀ M) →+ N⦄
   addHom_ext fun x => AddMonoidHom.congr_fun (H x)
 #align finsupp.add_hom_ext' Finsupp.addHom_ext'
 
-/- warning: finsupp.mul_hom_ext -> Finsupp.mulHom_ext is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align finsupp.mul_hom_ext Finsupp.mulHom_extₓ'. -/
 theorem mulHom_ext [MulOneClass N] ⦃f g : Multiplicative (α →₀ M) →* N⦄
     (H : ∀ x y, f (Multiplicative.ofAdd <| single x y) = g (Multiplicative.ofAdd <| single x y)) :
     f = g :=
@@ -1769,9 +1184,6 @@ theorem mulHom_ext [MulOneClass N] ⦃f g : Multiplicative (α →₀ M) →* N
     AddMonoidHom.congr_fun <| @addHom_ext α M (Additive N) _ _ f.toAdditive'' g.toAdditive'' H
 #align finsupp.mul_hom_ext Finsupp.mulHom_ext
 
-/- warning: finsupp.mul_hom_ext' -> Finsupp.mulHom_ext' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align finsupp.mul_hom_ext' Finsupp.mulHom_ext'ₓ'. -/
 @[ext]
 theorem mulHom_ext' [MulOneClass N] {f g : Multiplicative (α →₀ M) →* N}
     (H : ∀ x, f.comp (singleAddHom x).toMultiplicative = g.comp (singleAddHom x).toMultiplicative) :
@@ -1779,35 +1191,17 @@ theorem mulHom_ext' [MulOneClass N] {f g : Multiplicative (α →₀ M) →* N}
   mulHom_ext fun x => MonoidHom.congr_fun (H x)
 #align finsupp.mul_hom_ext' Finsupp.mulHom_ext'
 
-/- warning: finsupp.map_range_add -> Finsupp.mapRange_add is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : AddZeroClass.{u3} N] {f : M -> N} {hf : Eq.{succ u3} N (f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M _inst_1))))) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N (AddZeroClass.toHasZero.{u3} N _inst_2))))}, (forall (x : M) (y : M), Eq.{succ u3} N (f (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toHasAdd.{u2} M _inst_1)) x y)) (HAdd.hAdd.{u3, u3, u3} N N N (instHAdd.{u3} N (AddZeroClass.toHasAdd.{u3} N _inst_2)) (f x) (f y))) -> (forall (v₁ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (v₂ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N _inst_2)) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M _inst_1) (AddZeroClass.toHasZero.{u3} N _inst_2) f hf (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) v₁ v₂)) (HAdd.hAdd.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N _inst_2)) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N _inst_2)) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N _inst_2)) (instHAdd.{max u1 u3} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N _inst_2)) (Finsupp.add.{u1, u3} α N _inst_2)) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M _inst_1) (AddZeroClass.toHasZero.{u3} N _inst_2) f hf v₁) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M _inst_1) (AddZeroClass.toHasZero.{u3} N _inst_2) f hf v₂)))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : AddZeroClass.{u3} N] {f : M -> N} {hf : Eq.{succ u3} N (f (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (AddZeroClass.toZero.{u2} M _inst_1)))) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N (AddZeroClass.toZero.{u3} N _inst_2)))}, (forall (x : M) (y : M), Eq.{succ u3} N (f (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toAdd.{u2} M _inst_1)) x y)) (HAdd.hAdd.{u3, u3, u3} N N N (instHAdd.{u3} N (AddZeroClass.toAdd.{u3} N _inst_2)) (f x) (f y))) -> (forall (v₁ : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (v₂ : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} N _inst_2)) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u3} N _inst_2) f hf (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) v₁ v₂)) (HAdd.hAdd.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} N _inst_2)) (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} N _inst_2)) (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} N _inst_2)) (instHAdd.{max u1 u3} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} N _inst_2)) (Finsupp.add.{u1, u3} α N _inst_2)) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u3} N _inst_2) f hf v₁) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u3} N _inst_2) f hf v₂)))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range_add Finsupp.mapRange_addₓ'. -/
 theorem mapRange_add [AddZeroClass N] {f : M → N} {hf : f 0 = 0}
     (hf' : ∀ x y, f (x + y) = f x + f y) (v₁ v₂ : α →₀ M) :
     mapRange f hf (v₁ + v₂) = mapRange f hf v₁ + mapRange f hf v₂ :=
   ext fun _ => by simp only [hf', add_apply, map_range_apply]
 #align finsupp.map_range_add Finsupp.mapRange_add
 
-/- warning: finsupp.map_range_add' -> Finsupp.mapRange_add' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddZeroClass.{u3} M] [_inst_2 : AddZeroClass.{u4} N] [_inst_3 : AddMonoidHomClass.{u2, u3, u4} β M N _inst_1 _inst_2] {f : β} (v₁ : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (v₂ : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => M -> N) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β M (fun (_x : M) => N) (AddHomClass.toFunLike.{u2, u3, u4} β M N (AddZeroClass.toHasAdd.{u3} M _inst_1) (AddZeroClass.toHasAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3))) f) (map_zero.{u3, u4, u2} M N β (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3) f) (HAdd.hAdd.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (instHAdd.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.add.{u1, u3} α M _inst_1)) v₁ v₂)) (HAdd.hAdd.{max u1 u4, max u1 u4, max u1 u4} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (instHAdd.{max u1 u4} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (Finsupp.add.{u1, u4} α N _inst_2)) (Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => M -> N) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β M (fun (_x : M) => N) (AddHomClass.toFunLike.{u2, u3, u4} β M N (AddZeroClass.toHasAdd.{u3} M _inst_1) (AddZeroClass.toHasAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3))) f) (map_zero.{u3, u4, u2} M N β (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3) f) v₁) (Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => M -> N) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β M (fun (_x : M) => N) (AddHomClass.toFunLike.{u2, u3, u4} β M N (AddZeroClass.toHasAdd.{u3} M _inst_1) (AddZeroClass.toHasAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3))) f) (map_zero.{u3, u4, u2} M N β (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3) f) v₂))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u3}} {M : Type.{u2}} {N : Type.{u4}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : AddZeroClass.{u4} N] [_inst_3 : AddMonoidHomClass.{u3, u2, u4} β M N _inst_1 _inst_2] {f : β} (v₁ : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (v₂ : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (Finsupp.mapRange.{u1, u2, u4} α M N (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (FunLike.coe.{succ u3, succ u2, succ u4} β M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{u3, u2, u4} β M N (AddZeroClass.toAdd.{u2} M _inst_1) (AddZeroClass.toAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3)) f) (map_zero.{u4, u2, u3} M N β (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3) f) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) v₁ v₂)) (HAdd.hAdd.{max u1 u4, max u1 u4, max u1 u4} (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (instHAdd.{max u1 u4} (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (Finsupp.add.{u1, u4} α N _inst_2)) (Finsupp.mapRange.{u1, u2, u4} α M N (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (FunLike.coe.{succ u3, succ u2, succ u4} β M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{u3, u2, u4} β M N (AddZeroClass.toAdd.{u2} M _inst_1) (AddZeroClass.toAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3)) f) (map_zero.{u4, u2, u3} M N β (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3) f) v₁) (Finsupp.mapRange.{u1, u2, u4} α M N (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (FunLike.coe.{succ u3, succ u2, succ u4} β M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{u3, u2, u4} β M N (AddZeroClass.toAdd.{u2} M _inst_1) (AddZeroClass.toAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3)) f) (map_zero.{u4, u2, u3} M N β (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3) f) v₂))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range_add' Finsupp.mapRange_add'ₓ'. -/
 theorem mapRange_add' [AddZeroClass N] [AddMonoidHomClass β M N] {f : β} (v₁ v₂ : α →₀ M) :
     mapRange f (map_zero f) (v₁ + v₂) = mapRange f (map_zero f) v₁ + mapRange f (map_zero f) v₂ :=
   mapRange_add (map_add f) v₁ v₂
 #align finsupp.map_range_add' Finsupp.mapRange_add'
 
-/- warning: finsupp.emb_domain.add_monoid_hom -> Finsupp.embDomain.addMonoidHom is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddZeroClass.{u3} M], (Function.Embedding.{succ u1, succ u2} α β) -> (AddMonoidHom.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.addZeroClass.{u1, u3} α M _inst_1) (Finsupp.addZeroClass.{u2, u3} β M _inst_1))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddZeroClass.{u3} M], (Function.Embedding.{succ u1, succ u2} α β) -> (AddMonoidHom.{max u3 u1, max u3 u2} (Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M _inst_1)) (Finsupp.{u2, u3} β M (AddZeroClass.toZero.{u3} M _inst_1)) (Finsupp.addZeroClass.{u1, u3} α M _inst_1) (Finsupp.addZeroClass.{u2, u3} β M _inst_1))
-Case conversion may be inaccurate. Consider using '#align finsupp.emb_domain.add_monoid_hom Finsupp.embDomain.addMonoidHomₓ'. -/
 /-- Bundle `emb_domain f` as an additive map from `α →₀ M` to `β →₀ M`. -/
 @[simps]
 def embDomain.addMonoidHom (f : α ↪ β) : (α →₀ M) →+ β →₀ M
@@ -1822,12 +1216,6 @@ def embDomain.addMonoidHom (f : α ↪ β) : (α →₀ M) →+ β →₀ M
     · simp [emb_domain_notin_range, h]
 #align finsupp.emb_domain.add_monoid_hom Finsupp.embDomain.addMonoidHom
 
-/- warning: finsupp.emb_domain_add -> Finsupp.embDomain_add is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddZeroClass.{u3} M] (f : Function.Embedding.{succ u1, succ u2} α β) (v : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (w : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.embDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f (HAdd.hAdd.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (instHAdd.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.add.{u1, u3} α M _inst_1)) v w)) (HAdd.hAdd.{max u2 u3, max u2 u3, max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (instHAdd.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.add.{u2, u3} β M _inst_1)) (Finsupp.embDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f v) (Finsupp.embDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f w))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] (f : Function.Embedding.{succ u3, succ u2} α β) (v : Finsupp.{u3, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (w : Finsupp.{u3, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} β M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.embDomain.{u3, u2, u1} α β M (AddZeroClass.toZero.{u1} M _inst_1) f (HAdd.hAdd.{max u3 u1, max u3 u1, max u3 u1} (Finsupp.{u3, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u3, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u3, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u3 u1} (Finsupp.{u3, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M _inst_1)) v w)) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} β M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} β M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M _inst_1)) (Finsupp.embDomain.{u3, u2, u1} α β M (AddZeroClass.toZero.{u1} M _inst_1) f v) (Finsupp.embDomain.{u3, u2, u1} α β M (AddZeroClass.toZero.{u1} M _inst_1) f w))
-Case conversion may be inaccurate. Consider using '#align finsupp.emb_domain_add Finsupp.embDomain_addₓ'. -/
 @[simp]
 theorem embDomain_add (f : α ↪ β) (v w : α →₀ M) :
     embDomain f (v + w) = embDomain f v + embDomain f w :=
@@ -1840,12 +1228,6 @@ section AddMonoid
 
 variable [AddMonoid M]
 
-/- warning: finsupp.has_nat_scalar -> Finsupp.hasNatScalar is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddMonoid.{u2} M], SMul.{0, max u1 u2} Nat (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddMonoid.{u2} M], SMul.{0, max u2 u1} Nat (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1))
-Case conversion may be inaccurate. Consider using '#align finsupp.has_nat_scalar Finsupp.hasNatScalarₓ'. -/
 /-- Note the general `finsupp.has_smul` instance doesn't apply as `ℕ` is not distributive
 unless `β i`'s addition is commutative. -/
 instance hasNatScalar : SMul ℕ (α →₀ M) :=
@@ -1863,44 +1245,20 @@ instance [AddCommMonoid M] : AddCommMonoid (α →₀ M) :=
 instance [NegZeroClass G] : Neg (α →₀ G) :=
   ⟨mapRange Neg.neg neg_zero⟩
 
-/- warning: finsupp.coe_neg -> Finsupp.coe_neg is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : NegZeroClass.{u2} G] (g : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)), Eq.{succ (max u1 u2)} (α -> G) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (fun (_x : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) => α -> G) (Finsupp.coeFun.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (Finsupp.neg.{u1, u2} α G _inst_1) g)) (Neg.neg.{max u1 u2} (α -> G) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => G) (fun (i : α) => NegZeroClass.toHasNeg.{u2} G _inst_1)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (fun (_x : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) => α -> G) (Finsupp.coeFun.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) g))
-but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : NegZeroClass.{u2} G] (g : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)), Eq.{max (succ u1) (succ u2)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) (Finsupp.neg.{u1, u2} α G _inst_1) g)) (Neg.neg.{max u1 u2} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (fun (i : α) => NegZeroClass.toNeg.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) i) _inst_1)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) g))
-Case conversion may be inaccurate. Consider using '#align finsupp.coe_neg Finsupp.coe_negₓ'. -/
 @[simp]
 theorem coe_neg [NegZeroClass G] (g : α →₀ G) : ⇑(-g) = -g :=
   rfl
 #align finsupp.coe_neg Finsupp.coe_neg
 
-/- warning: finsupp.neg_apply -> Finsupp.neg_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : NegZeroClass.{u2} G] (g : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (a : α), Eq.{succ u2} G (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (fun (_x : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) => α -> G) (Finsupp.coeFun.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (Finsupp.neg.{u1, u2} α G _inst_1) g) a) (Neg.neg.{u2} G (NegZeroClass.toHasNeg.{u2} G _inst_1) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (fun (_x : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) => α -> G) (Finsupp.coeFun.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) g a))
-but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : NegZeroClass.{u2} G] (g : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) (Finsupp.neg.{u1, u2} α G _inst_1) g) a) (Neg.neg.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (NegZeroClass.toNeg.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) _inst_1) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) g a))
-Case conversion may be inaccurate. Consider using '#align finsupp.neg_apply Finsupp.neg_applyₓ'. -/
 theorem neg_apply [NegZeroClass G] (g : α →₀ G) (a : α) : (-g) a = -g a :=
   rfl
 #align finsupp.neg_apply Finsupp.neg_apply
 
-/- warning: finsupp.map_range_neg -> Finsupp.mapRange_neg is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} {H : Type.{u3}} [_inst_1 : NegZeroClass.{u2} G] [_inst_2 : NegZeroClass.{u3} H] {f : G -> H} {hf : Eq.{succ u3} H (f (OfNat.ofNat.{u2} G 0 (OfNat.mk.{u2} G 0 (Zero.zero.{u2} G (NegZeroClass.toHasZero.{u2} G _inst_1))))) (OfNat.ofNat.{u3} H 0 (OfNat.mk.{u3} H 0 (Zero.zero.{u3} H (NegZeroClass.toHasZero.{u3} H _inst_2))))}, (forall (x : G), Eq.{succ u3} H (f (Neg.neg.{u2} G (NegZeroClass.toHasNeg.{u2} G _inst_1) x)) (Neg.neg.{u3} H (NegZeroClass.toHasNeg.{u3} H _inst_2) (f x))) -> (forall (v : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α H (NegZeroClass.toHasZero.{u3} H _inst_2)) (Finsupp.mapRange.{u1, u2, u3} α G H (NegZeroClass.toHasZero.{u2} G _inst_1) (NegZeroClass.toHasZero.{u3} H _inst_2) f hf (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (Finsupp.neg.{u1, u2} α G _inst_1) v)) (Neg.neg.{max u1 u3} (Finsupp.{u1, u3} α H (NegZeroClass.toHasZero.{u3} H _inst_2)) (Finsupp.neg.{u1, u3} α H _inst_2) (Finsupp.mapRange.{u1, u2, u3} α G H (NegZeroClass.toHasZero.{u2} G _inst_1) (NegZeroClass.toHasZero.{u3} H _inst_2) f hf v)))
-but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u3}} {H : Type.{u2}} [_inst_1 : NegZeroClass.{u3} G] [_inst_2 : NegZeroClass.{u2} H] {f : G -> H} {hf : Eq.{succ u2} H (f (OfNat.ofNat.{u3} G 0 (Zero.toOfNat0.{u3} G (NegZeroClass.toZero.{u3} G _inst_1)))) (OfNat.ofNat.{u2} H 0 (Zero.toOfNat0.{u2} H (NegZeroClass.toZero.{u2} H _inst_2)))}, (forall (x : G), Eq.{succ u2} H (f (Neg.neg.{u3} G (NegZeroClass.toNeg.{u3} G _inst_1) x)) (Neg.neg.{u2} H (NegZeroClass.toNeg.{u2} H _inst_2) (f x))) -> (forall (v : Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G _inst_1)), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H _inst_2)) (Finsupp.mapRange.{u1, u3, u2} α G H (NegZeroClass.toZero.{u3} G _inst_1) (NegZeroClass.toZero.{u2} H _inst_2) f hf (Neg.neg.{max u1 u3} (Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G _inst_1)) (Finsupp.neg.{u1, u3} α G _inst_1) v)) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H _inst_2)) (Finsupp.neg.{u1, u2} α H _inst_2) (Finsupp.mapRange.{u1, u3, u2} α G H (NegZeroClass.toZero.{u3} G _inst_1) (NegZeroClass.toZero.{u2} H _inst_2) f hf v)))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range_neg Finsupp.mapRange_negₓ'. -/
 theorem mapRange_neg [NegZeroClass G] [NegZeroClass H] {f : G → H} {hf : f 0 = 0}
     (hf' : ∀ x, f (-x) = -f x) (v : α →₀ G) : mapRange f hf (-v) = -mapRange f hf v :=
   ext fun _ => by simp only [hf', neg_apply, map_range_apply]
 #align finsupp.map_range_neg Finsupp.mapRange_neg
 
-/- warning: finsupp.map_range_neg' -> Finsupp.mapRange_neg' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u3}} {H : Type.{u4}} [_inst_1 : AddGroup.{u3} G] [_inst_2 : SubtractionMonoid.{u4} H] [_inst_3 : AddMonoidHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))] {f : β} (v : Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) (Neg.neg.{max u1 u3} (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (Finsupp.neg.{u1, u3} α G (SubNegZeroMonoid.toNegZeroClass.{u3} G (SubtractionMonoid.toSubNegZeroMonoid.{u3} G (AddGroup.toSubtractionMonoid.{u3} G _inst_1)))) v)) (Neg.neg.{max u1 u4} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.neg.{u1, u4} α H (SubNegZeroMonoid.toNegZeroClass.{u4} H (SubtractionMonoid.toSubNegZeroMonoid.{u4} H _inst_2))) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) v))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u4}} {H : Type.{u3}} [_inst_1 : AddGroup.{u4} G] [_inst_2 : SubtractionMonoid.{u3} H] [_inst_3 : AddMonoidHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))] {f : β} (v : Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) (Neg.neg.{max u1 u4} (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.neg.{u1, u4} α G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1)))) v)) (Neg.neg.{max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.neg.{u1, u3} α H (SubNegZeroMonoid.toNegZeroClass.{u3} H (SubtractionMonoid.toSubNegZeroMonoid.{u3} H _inst_2))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) v))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range_neg' Finsupp.mapRange_neg'ₓ'. -/
 theorem mapRange_neg' [AddGroup G] [SubtractionMonoid H] [AddMonoidHomClass β G H] {f : β}
     (v : α →₀ G) : mapRange f (map_zero f) (-v) = -mapRange f (map_zero f) v :=
   mapRange_neg (map_neg f) v
@@ -1909,54 +1267,27 @@ theorem mapRange_neg' [AddGroup G] [SubtractionMonoid H] [AddMonoidHomClass β G
 instance [SubNegZeroMonoid G] : Sub (α →₀ G) :=
   ⟨zipWith Sub.sub (sub_zero _)⟩
 
-/- warning: finsupp.coe_sub -> Finsupp.coe_sub is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : SubNegZeroMonoid.{u2} G] (g₁ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (g₂ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))), Eq.{succ (max u1 u2)} (α -> G) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.coeFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.sub.{u1, u2} α G _inst_1)) g₁ g₂)) (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 (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1)))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.coeFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) g₁) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.coeFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) g₂))
-but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : SubNegZeroMonoid.{u2} G] (g₁ : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (g₂ : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))), Eq.{max (succ u1) (succ u2)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (Finsupp.sub.{u1, u2} α G _inst_1)) g₁ g₂)) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (instHSub.{max u1 u2} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (Pi.instSub.{u1, u2} α (fun (ᾰ : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (fun (i : α) => SubNegMonoid.toSub.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) i) (SubNegZeroMonoid.toSubNegMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) i) _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) g₁) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) g₂))
-Case conversion may be inaccurate. Consider using '#align finsupp.coe_sub Finsupp.coe_subₓ'. -/
 @[simp]
 theorem coe_sub [SubNegZeroMonoid G] (g₁ g₂ : α →₀ G) : ⇑(g₁ - g₂) = g₁ - g₂ :=
   rfl
 #align finsupp.coe_sub Finsupp.coe_sub
 
-/- warning: finsupp.sub_apply -> Finsupp.sub_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : SubNegZeroMonoid.{u2} G] (g₁ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (g₂ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (a : α), Eq.{succ u2} G (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.coeFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.sub.{u1, u2} α G _inst_1)) g₁ g₂) a) (HSub.hSub.{u2, u2, u2} G G G (instHSub.{u2} G (SubNegMonoid.toHasSub.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.coeFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) g₁ a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.coeFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) g₂ a))
-but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : SubNegZeroMonoid.{u2} G] (g₁ : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (g₂ : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (Finsupp.sub.{u1, u2} α G _inst_1)) g₁ g₂) a) (HSub.hSub.{u2, u2, u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (instHSub.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubNegMonoid.toSub.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubNegZeroMonoid.toSubNegMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) _inst_1))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) g₁ a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) g₂ a))
-Case conversion may be inaccurate. Consider using '#align finsupp.sub_apply Finsupp.sub_applyₓ'. -/
 theorem sub_apply [SubNegZeroMonoid G] (g₁ g₂ : α →₀ G) (a : α) : (g₁ - g₂) a = g₁ a - g₂ a :=
   rfl
 #align finsupp.sub_apply Finsupp.sub_apply
 
-/- warning: finsupp.map_range_sub -> Finsupp.mapRange_sub is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} {H : Type.{u3}} [_inst_1 : SubNegZeroMonoid.{u2} G] [_inst_2 : SubNegZeroMonoid.{u3} H] {f : G -> H} {hf : Eq.{succ u3} H (f (OfNat.ofNat.{u2} G 0 (OfNat.mk.{u2} G 0 (Zero.zero.{u2} G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1)))))))) (OfNat.ofNat.{u3} H 0 (OfNat.mk.{u3} H 0 (Zero.zero.{u3} H (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2)))))))}, (forall (x : G) (y : G), Eq.{succ u3} H (f (HSub.hSub.{u2, u2, u2} G G G (instHSub.{u2} G (SubNegMonoid.toHasSub.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))) x y)) (HSub.hSub.{u3, u3, u3} H H H (instHSub.{u3} H (SubNegMonoid.toHasSub.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2))) (f x) (f y))) -> (forall (v₁ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (v₂ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α H (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.mapRange.{u1, u2, u3} α G H (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1)))) (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2)))) f hf (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.sub.{u1, u2} α G _inst_1)) v₁ v₂)) (HSub.hSub.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.{u1, u3} α H (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.{u1, u3} α H (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2))))) (instHSub.{max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.sub.{u1, u3} α H _inst_2)) (Finsupp.mapRange.{u1, u2, u3} α G H (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1)))) (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2)))) f hf v₁) (Finsupp.mapRange.{u1, u2, u3} α G H (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1)))) (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2)))) f hf v₂)))
-but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u3}} {H : Type.{u2}} [_inst_1 : SubNegZeroMonoid.{u3} G] [_inst_2 : SubNegZeroMonoid.{u2} H] {f : G -> H} {hf : Eq.{succ u2} H (f (OfNat.ofNat.{u3} G 0 (Zero.toOfNat0.{u3} G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))))) (OfNat.ofNat.{u2} H 0 (Zero.toOfNat0.{u2} H (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2))))}, (forall (x : G) (y : G), Eq.{succ u2} H (f (HSub.hSub.{u3, u3, u3} G G G (instHSub.{u3} G (SubNegMonoid.toSub.{u3} G (SubNegZeroMonoid.toSubNegMonoid.{u3} G _inst_1))) x y)) (HSub.hSub.{u2, u2, u2} H H H (instHSub.{u2} H (SubNegMonoid.toSub.{u2} H (SubNegZeroMonoid.toSubNegMonoid.{u2} H _inst_2))) (f x) (f y))) -> (forall (v₁ : Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))) (v₂ : Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2))) (Finsupp.mapRange.{u1, u3, u2} α G H (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1)) (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2)) f hf (HSub.hSub.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))) (Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))) (Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))) (instHSub.{max u1 u3} (Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))) (Finsupp.sub.{u1, u3} α G _inst_1)) v₁ v₂)) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2))) (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2))) (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2))) (Finsupp.sub.{u1, u2} α H _inst_2)) (Finsupp.mapRange.{u1, u3, u2} α G H (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1)) (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2)) f hf v₁) (Finsupp.mapRange.{u1, u3, u2} α G H (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1)) (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2)) f hf v₂)))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range_sub Finsupp.mapRange_subₓ'. -/
 theorem mapRange_sub [SubNegZeroMonoid G] [SubNegZeroMonoid H] {f : G → H} {hf : f 0 = 0}
     (hf' : ∀ x y, f (x - y) = f x - f y) (v₁ v₂ : α →₀ G) :
     mapRange f hf (v₁ - v₂) = mapRange f hf v₁ - mapRange f hf v₂ :=
   ext fun _ => by simp only [hf', sub_apply, map_range_apply]
 #align finsupp.map_range_sub Finsupp.mapRange_sub
 
-/- warning: finsupp.map_range_sub' -> Finsupp.mapRange_sub' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range_sub' Finsupp.mapRange_sub'ₓ'. -/
 theorem mapRange_sub' [AddGroup G] [SubtractionMonoid H] [AddMonoidHomClass β G H] {f : β}
     (v₁ v₂ : α →₀ G) :
     mapRange f (map_zero f) (v₁ - v₂) = mapRange f (map_zero f) v₁ - mapRange f (map_zero f) v₂ :=
   mapRange_sub (map_sub f) v₁ v₂
 #align finsupp.map_range_sub' Finsupp.mapRange_sub'
 
-/- warning: finsupp.has_int_scalar -> Finsupp.hasIntScalar is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G], SMul.{0, max u1 u2} Int (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))))
-but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G], SMul.{0, max u2 u1} Int (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align finsupp.has_int_scalar Finsupp.hasIntScalarₓ'. -/
 /-- Note the general `finsupp.has_smul` instance doesn't apply as `ℤ` is not distributive
 unless `β i`'s addition is commutative. -/
 instance hasIntScalar [AddGroup G] : SMul ℤ (α →₀ G) :=
@@ -1970,12 +1301,6 @@ instance [AddCommGroup G] : AddCommGroup (α →₀ G) :=
   FunLike.coe_injective.AddCommGroup _ coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl) fun _ _ =>
     rfl
 
-/- warning: finsupp.single_add_single_eq_single_add_single -> Finsupp.single_add_single_eq_single_add_single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] {k : α} {l : α} {m : α} {n : α} {u : M} {v : M}, (Ne.{succ u2} M u (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))))) -> (Ne.{succ u2} M v (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))))) -> (Iff (Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) k u) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) l v)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) m u) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) n v))) (Or (And (Eq.{succ u1} α k m) (Eq.{succ u1} α l n)) (Or (And (Eq.{succ u2} M u v) (And (Eq.{succ u1} α k n) (Eq.{succ u1} α l m))) (And (Eq.{succ u2} M (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) u v) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))))) (And (Eq.{succ u1} α k l) (Eq.{succ u1} α m n))))))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] {k : α} {l : α} {m : α} {n : α} {u : M} {v : M}, (Ne.{succ u2} M u (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))) -> (Ne.{succ u2} M v (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))) -> (Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.single.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) k u) (Finsupp.single.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) l v)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.single.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) m u) (Finsupp.single.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) n v))) (Or (And (Eq.{succ u1} α k m) (Eq.{succ u1} α l n)) (Or (And (Eq.{succ u2} M u v) (And (Eq.{succ u1} α k n) (Eq.{succ u1} α l m))) (And (Eq.{succ u2} M (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) u v) (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))) (And (Eq.{succ u1} α k l) (Eq.{succ u1} α m n))))))
-Case conversion may be inaccurate. Consider using '#align finsupp.single_add_single_eq_single_add_single Finsupp.single_add_single_eq_single_add_singleₓ'. -/
 theorem single_add_single_eq_single_add_single [AddCommMonoid M] {k l m n : α} {u v : M}
     (hu : u ≠ 0) (hv : v ≠ 0) :
     single k u + single l v = single m u + single n v ↔
@@ -1986,12 +1311,6 @@ theorem single_add_single_eq_single_add_single [AddCommMonoid M] {k l m n : α}
     exact Pi.single_add_single_eq_single_add_single hu hv
 #align finsupp.single_add_single_eq_single_add_single Finsupp.single_add_single_eq_single_add_single
 
-/- warning: finsupp.support_neg -> Finsupp.support_neg is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (f : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))), Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.neg.{u1, u2} α G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f)) (Finsupp.support.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) f)
-but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (f : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))), Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.neg.{u1, u2} α G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f)) (Finsupp.support.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f)
-Case conversion may be inaccurate. Consider using '#align finsupp.support_neg Finsupp.support_negₓ'. -/
 @[simp]
 theorem support_neg [AddGroup G] (f : α →₀ G) : support (-f) = support f :=
   Finset.Subset.antisymm support_mapRange
@@ -2001,12 +1320,6 @@ theorem support_neg [AddGroup G] (f : α →₀ G) : support (-f) = support f :=
       )
 #align finsupp.support_neg Finsupp.support_neg
 
-/- warning: finsupp.support_sub -> Finsupp.support_sub is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : AddGroup.{u2} G] {f : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2))))} {g : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2))))}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2)))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2))))) (Finsupp.sub.{u1, u2} α G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_2)))) f g)) (Union.union.{u1} (Finset.{u1} α) (Finset.hasUnion.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finsupp.support.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2)))) f) (Finsupp.support.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2)))) g))
-but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} α] [_inst_2 : AddGroup.{u1} G] {f : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2))))} {g : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2))))}, HasSubset.Subset.{u2} (Finset.{u2} α) (Finset.instHasSubsetFinset.{u2} α) (Finsupp.support.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2)))) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2))))) (instHSub.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2))))) (Finsupp.sub.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2)))) f g)) (Union.union.{u2} (Finset.{u2} α) (Finset.instUnionFinset.{u2} α (fun (a : α) (b : α) => _inst_1 a b)) (Finsupp.support.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2)))) f) (Finsupp.support.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2)))) g))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_sub Finsupp.support_subₓ'. -/
 theorem support_sub [DecidableEq α] [AddGroup G] {f g : α →₀ G} :
     support (f - g) ⊆ support f ∪ support g :=
   by
@@ -2014,12 +1327,6 @@ theorem support_sub [DecidableEq α] [AddGroup G] {f g : α →₀ G} :
   exact support_add
 #align finsupp.support_sub Finsupp.support_sub
 
-/- warning: finsupp.erase_eq_sub_single -> Finsupp.erase_eq_sub_single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (f : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (a : α), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.erase.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) a f) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.sub.{u1, u2} α G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f (Finsupp.single.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.coeFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) f a)))
-but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (f : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (a : α), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.erase.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) a f) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (NegZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubNegZeroMonoid.toNegZeroClass.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubtractionMonoid.toSubNegZeroMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (AddGroup.toSubtractionMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) _inst_1))))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.sub.{u1, u2} α G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f (Finsupp.single.{u1, u2} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (NegZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubNegZeroMonoid.toNegZeroClass.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubtractionMonoid.toSubNegZeroMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (AddGroup.toSubtractionMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) _inst_1)))) a (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) f a)))
-Case conversion may be inaccurate. Consider using '#align finsupp.erase_eq_sub_single Finsupp.erase_eq_sub_singleₓ'. -/
 theorem erase_eq_sub_single [AddGroup G] (f : α →₀ G) (a : α) : f.eraseₓ a = f - single a (f a) :=
   by
   ext a'
@@ -2028,12 +1335,6 @@ theorem erase_eq_sub_single [AddGroup G] (f : α →₀ G) (a : α) : f.eraseₓ
   · simp [erase_ne h.symm, single_eq_of_ne h]
 #align finsupp.erase_eq_sub_single Finsupp.erase_eq_sub_single
 
-/- warning: finsupp.update_eq_sub_add_single -> Finsupp.update_eq_sub_add_single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (f : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (a : α) (b : G), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.update.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) f a b) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.add.{u1, u2} α G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.sub.{u1, u2} α G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f (Finsupp.single.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.coeFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) f a))) (Finsupp.single.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) a b))
-but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (f : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (a : α) (b : G), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.update.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f a b) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.add.{u1, u2} α G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (NegZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubNegZeroMonoid.toNegZeroClass.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubtractionMonoid.toSubNegZeroMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (AddGroup.toSubtractionMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) _inst_1))))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.sub.{u1, u2} α G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f (Finsupp.single.{u1, u2} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (NegZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubNegZeroMonoid.toNegZeroClass.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubtractionMonoid.toSubNegZeroMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (AddGroup.toSubtractionMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) _inst_1)))) a (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) f a))) (Finsupp.single.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) a b))
-Case conversion may be inaccurate. Consider using '#align finsupp.update_eq_sub_add_single Finsupp.update_eq_sub_add_singleₓ'. -/
 theorem update_eq_sub_add_single [AddGroup G] (f : α →₀ G) (a : α) (b : G) :
     f.update a b = f - single a (f a) + single a b := by
   rw [update_eq_erase_add_single, erase_eq_sub_single]
Diff
@@ -814,9 +814,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align finsupp.equiv_fun_on_finite_single Finsupp.equivFunOnFinite_singleₓ'. -/
 @[simp]
 theorem equivFunOnFinite_single [DecidableEq α] [Finite α] (x : α) (m : M) :
-    Finsupp.equivFunOnFinite (Finsupp.single x m) = Pi.single x m :=
-  by
-  ext
+    Finsupp.equivFunOnFinite (Finsupp.single x m) = Pi.single x m := by ext;
   simp [Finsupp.single_eq_pi_single]
 #align finsupp.equiv_fun_on_finite_single Finsupp.equivFunOnFinite_single
 
@@ -1003,10 +1001,8 @@ Case conversion may be inaccurate. Consider using '#align finsupp.erase_single F
 theorem erase_single {a : α} {b : M} : erase a (single a b) = 0 :=
   by
   ext s; by_cases hs : s = a
-  · rw [hs, erase_same]
-    rfl
-  · rw [erase_ne hs]
-    exact single_eq_of_ne (Ne.symm hs)
+  · rw [hs, erase_same]; rfl
+  · rw [erase_ne hs]; exact single_eq_of_ne (Ne.symm hs)
 #align finsupp.erase_single Finsupp.erase_single
 
 /- warning: finsupp.erase_single_ne -> Finsupp.erase_single_ne is a dubious translation:
@@ -1676,10 +1672,8 @@ protected theorem induction {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 :
     suffices p (single a (f a) + f.eraseₓ a) by rwa [single_add_erase] at this
     classical
       apply ha
-      · rw [support_erase, mem_erase]
-        exact fun H => H.1 rfl
-      · rw [← mem_support_iff, hf]
-        exact mem_cons_self _ _
+      · rw [support_erase, mem_erase]; exact fun H => H.1 rfl
+      · rw [← mem_support_iff, hf]; exact mem_cons_self _ _
       · apply ih _ _
         rw [support_erase, hf, Finset.erase_cons]
 #align finsupp.induction Finsupp.induction
@@ -1699,8 +1693,7 @@ theorem induction₂ {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 : p 0)
     suffices p (f.eraseₓ a + single a (f a)) by rwa [erase_add_single] at this
     classical
       apply ha
-      · rw [support_erase, mem_erase]
-        exact fun H => H.1 rfl
+      · rw [support_erase, mem_erase]; exact fun H => H.1 rfl
       · rw [← mem_support_iff, hf]
         exact mem_cons_self _ _
       · apply ih _ _
Diff
@@ -1767,10 +1767,7 @@ theorem addHom_ext' [AddZeroClass N] ⦃f g : (α →₀ M) →+ N⦄
 #align finsupp.add_hom_ext' Finsupp.addHom_ext'
 
 /- warning: finsupp.mul_hom_ext -> Finsupp.mulHom_ext is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] {{f : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}} {{g : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}}, (forall (x : α) (y : M), Eq.{succ u3} N (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ (max u1 u2)) (succ u3)} (MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (fun (_x : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) => (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) -> N) (MonoidHom.hasCoeToFun.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f (coeFn.{succ (max u1 u2), succ (max u1 u2)} (Equiv.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (fun (_x : Equiv.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) => (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (Equiv.hasCoeToFun.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) x y))) (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ (max u1 u2)) (succ u3)} (MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (fun (_x : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) => (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) -> N) (MonoidHom.hasCoeToFun.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) g (coeFn.{succ (max u1 u2), succ (max u1 u2)} (Equiv.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (fun (_x : Equiv.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) => (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (Equiv.hasCoeToFun.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) x y)))) -> (Eq.{max (succ u3) (succ (max u1 u2))} (MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f g)
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] {{f : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}} {{g : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}}, (forall (x : α) (y : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (a : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) a) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (fun (_x : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (MulOneClass.toMul.{max u1 u2} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) (MulOneClass.toMul.{u3} N _inst_2) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 (MonoidHom.monoidHomClass.{max u1 u2, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2))) f (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) _x) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (fun (_x : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (MulOneClass.toMul.{max u1 u2} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) (MulOneClass.toMul.{u3} N _inst_2) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 (MonoidHom.monoidHomClass.{max u1 u2, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2))) g (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) _x) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y)))) -> (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f g)
+<too large>
 Case conversion may be inaccurate. Consider using '#align finsupp.mul_hom_ext Finsupp.mulHom_extₓ'. -/
 theorem mulHom_ext [MulOneClass N] ⦃f g : Multiplicative (α →₀ M) →* N⦄
     (H : ∀ x y, f (Multiplicative.ofAdd <| single x y) = g (Multiplicative.ofAdd <| single x y)) :
@@ -1780,10 +1777,7 @@ theorem mulHom_ext [MulOneClass N] ⦃f g : Multiplicative (α →₀ M) →* N
 #align finsupp.mul_hom_ext Finsupp.mulHom_ext
 
 /- warning: finsupp.mul_hom_ext' -> Finsupp.mulHom_ext' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] {f : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2} {g : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}, (forall (x : α), Eq.{max (succ u3) (succ u2)} (MonoidHom.{u2, u3} (Multiplicative.{u2} M) N (Multiplicative.mulOneClass.{u2} M _inst_1) _inst_2) (MonoidHom.comp.{u2, max u1 u2, u3} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 f (coeFn.{max 1 (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (Equiv.{max (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) => (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) -> (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.toMultiplicative.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x))) (MonoidHom.comp.{u2, max u1 u2, u3} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 g (coeFn.{max 1 (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (Equiv.{max (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) => (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) -> (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.toMultiplicative.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x)))) -> (Eq.{max (succ u3) (succ (max u1 u2))} (MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f g)
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] {f : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2} {g : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}, (forall (x : α), Eq.{max (succ u2) (succ u3)} (MonoidHom.{u2, u3} (Multiplicative.{u2} M) N (Multiplicative.mulOneClass.{u2} M _inst_1) _inst_2) (MonoidHom.comp.{u2, max u1 u2, u3} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 f (FunLike.coe.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (Equiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (fun (_x : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) _x) (Equiv.instFunLikeEquiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.toMultiplicative.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x))) (MonoidHom.comp.{u2, max u1 u2, u3} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 g (FunLike.coe.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (Equiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (fun (_x : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) _x) (Equiv.instFunLikeEquiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.toMultiplicative.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x)))) -> (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f g)
+<too large>
 Case conversion may be inaccurate. Consider using '#align finsupp.mul_hom_ext' Finsupp.mulHom_ext'ₓ'. -/
 @[ext]
 theorem mulHom_ext' [MulOneClass N] {f g : Multiplicative (α →₀ M) →* N}
@@ -1956,10 +1950,7 @@ theorem mapRange_sub [SubNegZeroMonoid G] [SubNegZeroMonoid H] {f : G → H} {hf
 #align finsupp.map_range_sub Finsupp.mapRange_sub
 
 /- warning: finsupp.map_range_sub' -> Finsupp.mapRange_sub' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u3}} {H : Type.{u4}} [_inst_1 : AddGroup.{u3} G] [_inst_2 : SubtractionMonoid.{u4} H] [_inst_3 : AddMonoidHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))] {f : β} (v₁ : Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (v₂ : Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) (HSub.hSub.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (instHSub.{max u1 u3} (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (Finsupp.sub.{u1, u3} α G (SubtractionMonoid.toSubNegZeroMonoid.{u3} G (AddGroup.toSubtractionMonoid.{u3} G _inst_1)))) v₁ v₂)) (HSub.hSub.{max u1 u4, max u1 u4, max u1 u4} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (instHSub.{max u1 u4} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.sub.{u1, u4} α H (SubtractionMonoid.toSubNegZeroMonoid.{u4} H _inst_2))) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) v₁) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) v₂))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u4}} {H : Type.{u3}} [_inst_1 : AddGroup.{u4} G] [_inst_2 : SubtractionMonoid.{u3} H] [_inst_3 : AddMonoidHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))] {f : β} (v₁ : Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (v₂ : Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) (HSub.hSub.{max u1 u4, max u1 u4, max u1 u4} (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (instHSub.{max u1 u4} (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.sub.{u1, u4} α G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1)))) v₁ v₂)) (HSub.hSub.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (instHSub.{max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.sub.{u1, u3} α H (SubtractionMonoid.toSubNegZeroMonoid.{u3} H _inst_2))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) v₁) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) v₂))
+<too large>
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range_sub' Finsupp.mapRange_sub'ₓ'. -/
 theorem mapRange_sub' [AddGroup G] [SubtractionMonoid H] [AddMonoidHomClass β G H] {f : β}
     (v₁ v₂ : α →₀ G) :
Diff
@@ -546,12 +546,12 @@ Case conversion may be inaccurate. Consider using '#align finsupp.support_single
 theorem support_single_subset : (single a b).support ⊆ {a} := by
   classical
     show ite _ _ _ ⊆ _
-    split_ifs <;> [exact empty_subset _, exact subset.refl _]
+    split_ifs <;> [exact empty_subset _;exact subset.refl _]
 #align finsupp.support_single_subset Finsupp.support_single_subset
 
 #print Finsupp.single_apply_mem /-
 theorem single_apply_mem (x) : single a b x ∈ ({0, b} : Set M) := by
-  rcases em (a = x) with (rfl | hx) <;> [simp, simp [single_eq_of_ne hx]]
+  rcases em (a = x) with (rfl | hx) <;> [simp;simp [single_eq_of_ne hx]]
 #align finsupp.single_apply_mem Finsupp.single_apply_mem
 -/
 
@@ -957,7 +957,7 @@ def erase (a : α) (f : α →₀ M) : α →₀ M
     if a' = a then 0 else f a'
   mem_support_toFun a' := by
     rw [mem_erase, mem_support_iff] <;> split_ifs <;>
-      [exact ⟨fun H _ => H.1 h, fun H => (H rfl).elim⟩, exact and_iff_right h]
+      [exact ⟨fun H _ => H.1 h, fun H => (H rfl).elim⟩;exact and_iff_right h]
 #align finsupp.erase Finsupp.erase
 -/
 
Diff
@@ -810,7 +810,7 @@ theorem card_support_le_one' [Nonempty α] {f : α →₀ M} :
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] [_inst_3 : Finite.{succ u1} α] (x : α) (m : M), Eq.{max (succ u1) (succ u2)} (α -> M) (coeFn.{max 1 (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (α -> M)) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (α -> M)) => (Finsupp.{u1, u2} α M _inst_1) -> α -> M) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (α -> M)) (Finsupp.equivFunOnFinite.{u1, u2} α M _inst_1 _inst_3) (Finsupp.single.{u1, u2} α M _inst_1 x m)) (Pi.single.{u1, u2} α (fun (ᾰ : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)
 but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] [_inst_3 : Finite.{succ u2} α] (x : α) (m : M), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Finsupp.{u2, u1} α M _inst_1) => α -> M) (Finsupp.single.{u2, u1} α M _inst_1 x m)) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (α -> M)) (Finsupp.{u2, u1} α M _inst_1) (fun (_x : Finsupp.{u2, u1} α M _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Finsupp.{u2, u1} α M _inst_1) => α -> M) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1) (α -> M)) (Finsupp.equivFunOnFinite.{u2, u1} α M _inst_1 _inst_3) (Finsupp.single.{u2, u1} α M _inst_1 x m)) (Pi.single.{u2, u1} α (fun (ᾰ : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)
+  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] [_inst_3 : Finite.{succ u2} α] (x : α) (m : M), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Finsupp.{u2, u1} α M _inst_1) => α -> M) (Finsupp.single.{u2, u1} α M _inst_1 x m)) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (α -> M)) (Finsupp.{u2, u1} α M _inst_1) (fun (_x : Finsupp.{u2, u1} α M _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Finsupp.{u2, u1} α M _inst_1) => α -> M) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1) (α -> M)) (Finsupp.equivFunOnFinite.{u2, u1} α M _inst_1 _inst_3) (Finsupp.single.{u2, u1} α M _inst_1 x m)) (Pi.single.{u2, u1} α (fun (ᾰ : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)
 Case conversion may be inaccurate. Consider using '#align finsupp.equiv_fun_on_finite_single Finsupp.equivFunOnFinite_singleₓ'. -/
 @[simp]
 theorem equivFunOnFinite_single [DecidableEq α] [Finite α] (x : α) (m : M) :
@@ -824,7 +824,7 @@ theorem equivFunOnFinite_single [DecidableEq α] [Finite α] (x : α) (m : M) :
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] [_inst_3 : Finite.{succ u1} α] (x : α) (m : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (coeFn.{max 1 (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (Finsupp.{u1, u2} α M _inst_1)) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (Finsupp.{u1, u2} α M _inst_1)) => (α -> M) -> (Finsupp.{u1, u2} α M _inst_1)) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (Finsupp.{u1, u2} α M _inst_1)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (α -> M) (Finsupp.equivFunOnFinite.{u1, u2} α M _inst_1 _inst_3)) (Pi.single.{u1, u2} α (fun (x : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)) (Finsupp.single.{u1, u2} α M _inst_1 x m)
 but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] [_inst_3 : Finite.{succ u2} α] (x : α) (m : M), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => Finsupp.{u2, u1} α M _inst_1) (Pi.single.{u2, u1} α (fun (a._@.Mathlib.Data.Pi.Algebra._hyg.1846 : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (Finsupp.{u2, u1} α M _inst_1)) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => Finsupp.{u2, u1} α M _inst_1) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (Finsupp.{u2, u1} α M _inst_1)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1) (α -> M) (Finsupp.equivFunOnFinite.{u2, u1} α M _inst_1 _inst_3)) (Pi.single.{u2, u1} α (fun (x : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)) (Finsupp.single.{u2, u1} α M _inst_1 x m)
+  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] [_inst_3 : Finite.{succ u2} α] (x : α) (m : M), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => Finsupp.{u2, u1} α M _inst_1) (Pi.single.{u2, u1} α (fun (a._@.Mathlib.Data.Pi.Algebra._hyg.1846 : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (Finsupp.{u2, u1} α M _inst_1)) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => Finsupp.{u2, u1} α M _inst_1) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (Finsupp.{u2, u1} α M _inst_1)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1) (α -> M) (Finsupp.equivFunOnFinite.{u2, u1} α M _inst_1 _inst_3)) (Pi.single.{u2, u1} α (fun (x : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)) (Finsupp.single.{u2, u1} α M _inst_1 x m)
 Case conversion may be inaccurate. Consider using '#align finsupp.equiv_fun_on_finite_symm_single Finsupp.equivFunOnFinite_symm_singleₓ'. -/
 @[simp]
 theorem equivFunOnFinite_symm_single [DecidableEq α] [Finite α] (x : α) (m : M) :
@@ -1770,7 +1770,7 @@ theorem addHom_ext' [AddZeroClass N] ⦃f g : (α →₀ M) →+ N⦄
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] {{f : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}} {{g : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}}, (forall (x : α) (y : M), Eq.{succ u3} N (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ (max u1 u2)) (succ u3)} (MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (fun (_x : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) => (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) -> N) (MonoidHom.hasCoeToFun.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f (coeFn.{succ (max u1 u2), succ (max u1 u2)} (Equiv.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (fun (_x : Equiv.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) => (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (Equiv.hasCoeToFun.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) x y))) (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ (max u1 u2)) (succ u3)} (MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (fun (_x : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) => (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) -> N) (MonoidHom.hasCoeToFun.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) g (coeFn.{succ (max u1 u2), succ (max u1 u2)} (Equiv.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (fun (_x : Equiv.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) => (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (Equiv.hasCoeToFun.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) x y)))) -> (Eq.{max (succ u3) (succ (max u1 u2))} (MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f g)
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] {{f : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}} {{g : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}}, (forall (x : α) (y : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (a : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) a) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (fun (_x : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (MulOneClass.toMul.{max u1 u2} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) (MulOneClass.toMul.{u3} N _inst_2) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 (MonoidHom.monoidHomClass.{max u1 u2, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2))) f (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) _x) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (fun (_x : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (MulOneClass.toMul.{max u1 u2} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) (MulOneClass.toMul.{u3} N _inst_2) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 (MonoidHom.monoidHomClass.{max u1 u2, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2))) g (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) _x) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y)))) -> (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f g)
+  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] {{f : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}} {{g : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}}, (forall (x : α) (y : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (a : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) a) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (fun (_x : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (MulOneClass.toMul.{max u1 u2} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) (MulOneClass.toMul.{u3} N _inst_2) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 (MonoidHom.monoidHomClass.{max u1 u2, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2))) f (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) _x) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (fun (_x : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (MulOneClass.toMul.{max u1 u2} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) (MulOneClass.toMul.{u3} N _inst_2) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 (MonoidHom.monoidHomClass.{max u1 u2, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2))) g (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) _x) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y)))) -> (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f g)
 Case conversion may be inaccurate. Consider using '#align finsupp.mul_hom_ext Finsupp.mulHom_extₓ'. -/
 theorem mulHom_ext [MulOneClass N] ⦃f g : Multiplicative (α →₀ M) →* N⦄
     (H : ∀ x y, f (Multiplicative.ofAdd <| single x y) = g (Multiplicative.ofAdd <| single x y)) :
@@ -1783,7 +1783,7 @@ theorem mulHom_ext [MulOneClass N] ⦃f g : Multiplicative (α →₀ M) →* N
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] {f : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2} {g : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}, (forall (x : α), Eq.{max (succ u3) (succ u2)} (MonoidHom.{u2, u3} (Multiplicative.{u2} M) N (Multiplicative.mulOneClass.{u2} M _inst_1) _inst_2) (MonoidHom.comp.{u2, max u1 u2, u3} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 f (coeFn.{max 1 (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (Equiv.{max (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) => (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) -> (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.toMultiplicative.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x))) (MonoidHom.comp.{u2, max u1 u2, u3} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 g (coeFn.{max 1 (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (Equiv.{max (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) => (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) -> (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.toMultiplicative.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x)))) -> (Eq.{max (succ u3) (succ (max u1 u2))} (MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f g)
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] {f : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2} {g : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}, (forall (x : α), Eq.{max (succ u2) (succ u3)} (MonoidHom.{u2, u3} (Multiplicative.{u2} M) N (Multiplicative.mulOneClass.{u2} M _inst_1) _inst_2) (MonoidHom.comp.{u2, max u1 u2, u3} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 f (FunLike.coe.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (Equiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (fun (_x : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) _x) (Equiv.instFunLikeEquiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.toMultiplicative.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x))) (MonoidHom.comp.{u2, max u1 u2, u3} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 g (FunLike.coe.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (Equiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (fun (_x : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) _x) (Equiv.instFunLikeEquiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.toMultiplicative.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x)))) -> (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f g)
+  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] {f : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2} {g : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}, (forall (x : α), Eq.{max (succ u2) (succ u3)} (MonoidHom.{u2, u3} (Multiplicative.{u2} M) N (Multiplicative.mulOneClass.{u2} M _inst_1) _inst_2) (MonoidHom.comp.{u2, max u1 u2, u3} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 f (FunLike.coe.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (Equiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (fun (_x : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) _x) (Equiv.instFunLikeEquiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.toMultiplicative.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x))) (MonoidHom.comp.{u2, max u1 u2, u3} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 g (FunLike.coe.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (Equiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (fun (_x : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) _x) (Equiv.instFunLikeEquiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.toMultiplicative.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x)))) -> (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f g)
 Case conversion may be inaccurate. Consider using '#align finsupp.mul_hom_ext' Finsupp.mulHom_ext'ₓ'. -/
 @[ext]
 theorem mulHom_ext' [MulOneClass N] {f g : Multiplicative (α →₀ M) →* N}
Diff
@@ -454,6 +454,12 @@ theorem single_apply_left {f : α → β} (hf : Function.Injective f) (x z : α)
     single (f x) y (f z) = single x y z := by classical simp only [single_apply, hf.eq_iff]
 #align finsupp.single_apply_left Finsupp.single_apply_left
 
+/- warning: finsupp.single_eq_set_indicator -> Finsupp.single_eq_set_indicator is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {b : M}, Eq.{max (succ u1) (succ u2)} (α -> M) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a b)) (Set.indicator.{u1, u2} α M _inst_1 (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.hasSingleton.{u1} α) a) (fun (_x : α) => b))
+but is expected to have type
+  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {b : M}, Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a b)) (Set.indicator.{u2, u1} α M _inst_1 (Singleton.singleton.{u2, u2} α (Set.{u2} α) (Set.instSingletonSet.{u2} α) a) (fun (_x : α) => b))
+Case conversion may be inaccurate. Consider using '#align finsupp.single_eq_set_indicator Finsupp.single_eq_set_indicatorₓ'. -/
 theorem single_eq_set_indicator : ⇑(single a b) = Set.indicator {a} fun _ => b := by
   classical
     ext
Diff
@@ -804,7 +804,7 @@ theorem card_support_le_one' [Nonempty α] {f : α →₀ M} :
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] [_inst_3 : Finite.{succ u1} α] (x : α) (m : M), Eq.{max (succ u1) (succ u2)} (α -> M) (coeFn.{max 1 (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (α -> M)) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (α -> M)) => (Finsupp.{u1, u2} α M _inst_1) -> α -> M) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (α -> M)) (Finsupp.equivFunOnFinite.{u1, u2} α M _inst_1 _inst_3) (Finsupp.single.{u1, u2} α M _inst_1 x m)) (Pi.single.{u1, u2} α (fun (ᾰ : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)
 but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] [_inst_3 : Finite.{succ u2} α] (x : α) (m : M), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Finsupp.{u2, u1} α M _inst_1) => α -> M) (Finsupp.single.{u2, u1} α M _inst_1 x m)) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (α -> M)) (Finsupp.{u2, u1} α M _inst_1) (fun (_x : Finsupp.{u2, u1} α M _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Finsupp.{u2, u1} α M _inst_1) => α -> M) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1) (α -> M)) (Finsupp.equivFunOnFinite.{u2, u1} α M _inst_1 _inst_3) (Finsupp.single.{u2, u1} α M _inst_1 x m)) (Pi.single.{u2, u1} α (fun (ᾰ : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)
+  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] [_inst_3 : Finite.{succ u2} α] (x : α) (m : M), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Finsupp.{u2, u1} α M _inst_1) => α -> M) (Finsupp.single.{u2, u1} α M _inst_1 x m)) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (α -> M)) (Finsupp.{u2, u1} α M _inst_1) (fun (_x : Finsupp.{u2, u1} α M _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Finsupp.{u2, u1} α M _inst_1) => α -> M) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1) (α -> M)) (Finsupp.equivFunOnFinite.{u2, u1} α M _inst_1 _inst_3) (Finsupp.single.{u2, u1} α M _inst_1 x m)) (Pi.single.{u2, u1} α (fun (ᾰ : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)
 Case conversion may be inaccurate. Consider using '#align finsupp.equiv_fun_on_finite_single Finsupp.equivFunOnFinite_singleₓ'. -/
 @[simp]
 theorem equivFunOnFinite_single [DecidableEq α] [Finite α] (x : α) (m : M) :
@@ -818,7 +818,7 @@ theorem equivFunOnFinite_single [DecidableEq α] [Finite α] (x : α) (m : M) :
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] [_inst_3 : Finite.{succ u1} α] (x : α) (m : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (coeFn.{max 1 (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (Finsupp.{u1, u2} α M _inst_1)) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (Finsupp.{u1, u2} α M _inst_1)) => (α -> M) -> (Finsupp.{u1, u2} α M _inst_1)) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (Finsupp.{u1, u2} α M _inst_1)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (α -> M) (Finsupp.equivFunOnFinite.{u1, u2} α M _inst_1 _inst_3)) (Pi.single.{u1, u2} α (fun (x : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)) (Finsupp.single.{u1, u2} α M _inst_1 x m)
 but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] [_inst_3 : Finite.{succ u2} α] (x : α) (m : M), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => Finsupp.{u2, u1} α M _inst_1) (Pi.single.{u2, u1} α (fun (a._@.Mathlib.Data.Pi.Algebra._hyg.1846 : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (Finsupp.{u2, u1} α M _inst_1)) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => Finsupp.{u2, u1} α M _inst_1) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (Finsupp.{u2, u1} α M _inst_1)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1) (α -> M) (Finsupp.equivFunOnFinite.{u2, u1} α M _inst_1 _inst_3)) (Pi.single.{u2, u1} α (fun (x : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)) (Finsupp.single.{u2, u1} α M _inst_1 x m)
+  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] [_inst_3 : Finite.{succ u2} α] (x : α) (m : M), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => Finsupp.{u2, u1} α M _inst_1) (Pi.single.{u2, u1} α (fun (a._@.Mathlib.Data.Pi.Algebra._hyg.1846 : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (Finsupp.{u2, u1} α M _inst_1)) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => Finsupp.{u2, u1} α M _inst_1) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (Finsupp.{u2, u1} α M _inst_1)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1) (α -> M) (Finsupp.equivFunOnFinite.{u2, u1} α M _inst_1 _inst_3)) (Pi.single.{u2, u1} α (fun (x : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) x m)) (Finsupp.single.{u2, u1} α M _inst_1 x m)
 Case conversion may be inaccurate. Consider using '#align finsupp.equiv_fun_on_finite_symm_single Finsupp.equivFunOnFinite_symm_singleₓ'. -/
 @[simp]
 theorem equivFunOnFinite_symm_single [DecidableEq α] [Finite α] (x : α) (m : M) :
@@ -1730,7 +1730,7 @@ theorem add_closure_setOf_eq_single :
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : AddZeroClass.{u3} N] {{f : AddMonoidHom.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2}} {{g : AddMonoidHom.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2}}, (forall (x : α) (y : M), Eq.{succ u3} N (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ (max u1 u2)) (succ u3)} (AddMonoidHom.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (fun (_x : AddMonoidHom.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) => (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> N) (AddMonoidHom.hasCoeToFun.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) f (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) x y)) (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ (max u1 u2)) (succ u3)} (AddMonoidHom.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (fun (_x : AddMonoidHom.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) => (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> N) (AddMonoidHom.hasCoeToFun.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) g (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) x y))) -> (Eq.{max (succ u3) (succ (max u1 u2))} (AddMonoidHom.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) f g)
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : AddZeroClass.{u3} N] {{f : AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2}} {{g : AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2}}, (forall (x : α) (y : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => N) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y)) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => N) _x) (AddHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (AddZeroClass.toAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (AddZeroClass.toAdd.{u3} N _inst_2) (AddMonoidHomClass.toAddHomClass.{max (max u1 u2) u3, max u1 u2, u3} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2 (AddMonoidHom.addMonoidHomClass.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2))) f (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y)) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => N) _x) (AddHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (AddZeroClass.toAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (AddZeroClass.toAdd.{u3} N _inst_2) (AddMonoidHomClass.toAddHomClass.{max (max u1 u2) u3, max u1 u2, u3} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2 (AddMonoidHom.addMonoidHomClass.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2))) g (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y))) -> (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) f g)
+  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : AddZeroClass.{u3} N] {{f : AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2}} {{g : AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2}}, (forall (x : α) (y : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => N) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y)) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => N) _x) (AddHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (AddZeroClass.toAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (AddZeroClass.toAdd.{u3} N _inst_2) (AddMonoidHomClass.toAddHomClass.{max (max u1 u2) u3, max u1 u2, u3} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2 (AddMonoidHom.addMonoidHomClass.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2))) f (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y)) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => N) _x) (AddHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (AddZeroClass.toAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (AddZeroClass.toAdd.{u3} N _inst_2) (AddMonoidHomClass.toAddHomClass.{max (max u1 u2) u3, max u1 u2, u3} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2 (AddMonoidHom.addMonoidHomClass.{max u1 u2, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2))) g (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y))) -> (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (AddMonoidHom.{max u2 u1, u3} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) N (Finsupp.addZeroClass.{u1, u2} α M _inst_1) _inst_2) f g)
 Case conversion may be inaccurate. Consider using '#align finsupp.add_hom_ext Finsupp.addHom_extₓ'. -/
 /-- If two additive homomorphisms from `α →₀ M` are equal on each `single a b`,
 then they are equal. -/
@@ -1764,7 +1764,7 @@ theorem addHom_ext' [AddZeroClass N] ⦃f g : (α →₀ M) →+ N⦄
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] {{f : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}} {{g : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}}, (forall (x : α) (y : M), Eq.{succ u3} N (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ (max u1 u2)) (succ u3)} (MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (fun (_x : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) => (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) -> N) (MonoidHom.hasCoeToFun.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f (coeFn.{succ (max u1 u2), succ (max u1 u2)} (Equiv.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (fun (_x : Equiv.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) => (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (Equiv.hasCoeToFun.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) x y))) (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ (max u1 u2)) (succ u3)} (MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (fun (_x : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) => (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) -> N) (MonoidHom.hasCoeToFun.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) g (coeFn.{succ (max u1 u2), succ (max u1 u2)} (Equiv.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (fun (_x : Equiv.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) => (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (Equiv.hasCoeToFun.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) x y)))) -> (Eq.{max (succ u3) (succ (max u1 u2))} (MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f g)
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] {{f : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}} {{g : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}}, (forall (x : α) (y : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (a : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) a) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (fun (_x : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (MulOneClass.toMul.{max u1 u2} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) (MulOneClass.toMul.{u3} N _inst_2) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 (MonoidHom.monoidHomClass.{max u1 u2, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2))) f (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) _x) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (fun (_x : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (MulOneClass.toMul.{max u1 u2} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) (MulOneClass.toMul.{u3} N _inst_2) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 (MonoidHom.monoidHomClass.{max u1 u2, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2))) g (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) _x) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y)))) -> (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f g)
+  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] {{f : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}} {{g : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}}, (forall (x : α) (y : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (a : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) a) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (fun (_x : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (MulOneClass.toMul.{max u1 u2} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) (MulOneClass.toMul.{u3} N _inst_2) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 (MonoidHom.monoidHomClass.{max u1 u2, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2))) f (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) _x) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (fun (_x : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (MulOneClass.toMul.{max u1 u2} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) (MulOneClass.toMul.{u3} N _inst_2) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 (MonoidHom.monoidHomClass.{max u1 u2, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2))) g (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) _x) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y)))) -> (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f g)
 Case conversion may be inaccurate. Consider using '#align finsupp.mul_hom_ext Finsupp.mulHom_extₓ'. -/
 theorem mulHom_ext [MulOneClass N] ⦃f g : Multiplicative (α →₀ M) →* N⦄
     (H : ∀ x y, f (Multiplicative.ofAdd <| single x y) = g (Multiplicative.ofAdd <| single x y)) :
@@ -1777,7 +1777,7 @@ theorem mulHom_ext [MulOneClass N] ⦃f g : Multiplicative (α →₀ M) →* N
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] {f : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2} {g : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}, (forall (x : α), Eq.{max (succ u3) (succ u2)} (MonoidHom.{u2, u3} (Multiplicative.{u2} M) N (Multiplicative.mulOneClass.{u2} M _inst_1) _inst_2) (MonoidHom.comp.{u2, max u1 u2, u3} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 f (coeFn.{max 1 (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (Equiv.{max (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) => (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) -> (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.toMultiplicative.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x))) (MonoidHom.comp.{u2, max u1 u2, u3} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 g (coeFn.{max 1 (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (Equiv.{max (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) => (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) -> (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (AddMonoidHom.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u1 u2} (Multiplicative.{u2} M) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.toMultiplicative.{u2, max u1 u2} M (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x)))) -> (Eq.{max (succ u3) (succ (max u1 u2))} (MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f g)
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] {f : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2} {g : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}, (forall (x : α), Eq.{max (succ u2) (succ u3)} (MonoidHom.{u2, u3} (Multiplicative.{u2} M) N (Multiplicative.mulOneClass.{u2} M _inst_1) _inst_2) (MonoidHom.comp.{u2, max u1 u2, u3} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 f (FunLike.coe.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (Equiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (fun (_x : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) _x) (Equiv.instFunLikeEquiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.toMultiplicative.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x))) (MonoidHom.comp.{u2, max u1 u2, u3} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 g (FunLike.coe.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (Equiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (fun (_x : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) _x) (Equiv.instFunLikeEquiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.toMultiplicative.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x)))) -> (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f g)
+  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] {f : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2} {g : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}, (forall (x : α), Eq.{max (succ u2) (succ u3)} (MonoidHom.{u2, u3} (Multiplicative.{u2} M) N (Multiplicative.mulOneClass.{u2} M _inst_1) _inst_2) (MonoidHom.comp.{u2, max u1 u2, u3} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 f (FunLike.coe.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (Equiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (fun (_x : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) _x) (Equiv.instFunLikeEquiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.toMultiplicative.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x))) (MonoidHom.comp.{u2, max u1 u2, u3} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 g (FunLike.coe.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (Equiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (fun (_x : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) => MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) _x) (Equiv.instFunLikeEquiv.{max (succ (max u2 u1)) (succ u2), max (succ (max u2 u1)) (succ u2)} (AddMonoidHom.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (MonoidHom.{u2, max u2 u1} (Multiplicative.{u2} M) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{u2} M _inst_1) (Multiplicative.mulOneClass.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)))) (AddMonoidHom.toMultiplicative.{u2, max u2 u1} M (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) _inst_1 (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) (Finsupp.singleAddHom.{u1, u2} α M _inst_1 x)))) -> (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f g)
 Case conversion may be inaccurate. Consider using '#align finsupp.mul_hom_ext' Finsupp.mulHom_ext'ₓ'. -/
 @[ext]
 theorem mulHom_ext' [MulOneClass N] {f g : Multiplicative (α →₀ M) →* N}
@@ -1802,7 +1802,7 @@ theorem mapRange_add [AddZeroClass N] {f : M → N} {hf : f 0 = 0}
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddZeroClass.{u3} M] [_inst_2 : AddZeroClass.{u4} N] [_inst_3 : AddMonoidHomClass.{u2, u3, u4} β M N _inst_1 _inst_2] {f : β} (v₁ : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (v₂ : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => M -> N) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β M (fun (_x : M) => N) (AddHomClass.toFunLike.{u2, u3, u4} β M N (AddZeroClass.toHasAdd.{u3} M _inst_1) (AddZeroClass.toHasAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3))) f) (map_zero.{u3, u4, u2} M N β (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3) f) (HAdd.hAdd.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (instHAdd.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.add.{u1, u3} α M _inst_1)) v₁ v₂)) (HAdd.hAdd.{max u1 u4, max u1 u4, max u1 u4} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (instHAdd.{max u1 u4} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (Finsupp.add.{u1, u4} α N _inst_2)) (Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => M -> N) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β M (fun (_x : M) => N) (AddHomClass.toFunLike.{u2, u3, u4} β M N (AddZeroClass.toHasAdd.{u3} M _inst_1) (AddZeroClass.toHasAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3))) f) (map_zero.{u3, u4, u2} M N β (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3) f) v₁) (Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => M -> N) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β M (fun (_x : M) => N) (AddHomClass.toFunLike.{u2, u3, u4} β M N (AddZeroClass.toHasAdd.{u3} M _inst_1) (AddZeroClass.toHasAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3))) f) (map_zero.{u3, u4, u2} M N β (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3) f) v₂))
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u3}} {M : Type.{u2}} {N : Type.{u4}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : AddZeroClass.{u4} N] [_inst_3 : AddMonoidHomClass.{u3, u2, u4} β M N _inst_1 _inst_2] {f : β} (v₁ : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (v₂ : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (Finsupp.mapRange.{u1, u2, u4} α M N (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (FunLike.coe.{succ u3, succ u2, succ u4} β M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{u3, u2, u4} β M N (AddZeroClass.toAdd.{u2} M _inst_1) (AddZeroClass.toAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3)) f) (map_zero.{u4, u2, u3} M N β (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3) f) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) v₁ v₂)) (HAdd.hAdd.{max u1 u4, max u1 u4, max u1 u4} (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (instHAdd.{max u1 u4} (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (Finsupp.add.{u1, u4} α N _inst_2)) (Finsupp.mapRange.{u1, u2, u4} α M N (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (FunLike.coe.{succ u3, succ u2, succ u4} β M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{u3, u2, u4} β M N (AddZeroClass.toAdd.{u2} M _inst_1) (AddZeroClass.toAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3)) f) (map_zero.{u4, u2, u3} M N β (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3) f) v₁) (Finsupp.mapRange.{u1, u2, u4} α M N (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (FunLike.coe.{succ u3, succ u2, succ u4} β M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{u3, u2, u4} β M N (AddZeroClass.toAdd.{u2} M _inst_1) (AddZeroClass.toAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3)) f) (map_zero.{u4, u2, u3} M N β (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3) f) v₂))
+  forall {α : Type.{u1}} {β : Type.{u3}} {M : Type.{u2}} {N : Type.{u4}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : AddZeroClass.{u4} N] [_inst_3 : AddMonoidHomClass.{u3, u2, u4} β M N _inst_1 _inst_2] {f : β} (v₁ : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (v₂ : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (Finsupp.mapRange.{u1, u2, u4} α M N (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (FunLike.coe.{succ u3, succ u2, succ u4} β M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{u3, u2, u4} β M N (AddZeroClass.toAdd.{u2} M _inst_1) (AddZeroClass.toAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3)) f) (map_zero.{u4, u2, u3} M N β (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3) f) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) v₁ v₂)) (HAdd.hAdd.{max u1 u4, max u1 u4, max u1 u4} (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (instHAdd.{max u1 u4} (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (Finsupp.add.{u1, u4} α N _inst_2)) (Finsupp.mapRange.{u1, u2, u4} α M N (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (FunLike.coe.{succ u3, succ u2, succ u4} β M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{u3, u2, u4} β M N (AddZeroClass.toAdd.{u2} M _inst_1) (AddZeroClass.toAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3)) f) (map_zero.{u4, u2, u3} M N β (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3) f) v₁) (Finsupp.mapRange.{u1, u2, u4} α M N (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (FunLike.coe.{succ u3, succ u2, succ u4} β M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{u3, u2, u4} β M N (AddZeroClass.toAdd.{u2} M _inst_1) (AddZeroClass.toAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3)) f) (map_zero.{u4, u2, u3} M N β (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3) f) v₂))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range_add' Finsupp.mapRange_add'ₓ'. -/
 theorem mapRange_add' [AddZeroClass N] [AddMonoidHomClass β M N] {f : β} (v₁ v₂ : α →₀ M) :
     mapRange f (map_zero f) (v₁ + v₂) = mapRange f (map_zero f) v₁ + mapRange f (map_zero f) v₂ :=
@@ -1906,7 +1906,7 @@ theorem mapRange_neg [NegZeroClass G] [NegZeroClass H] {f : G → H} {hf : f 0 =
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u3}} {H : Type.{u4}} [_inst_1 : AddGroup.{u3} G] [_inst_2 : SubtractionMonoid.{u4} H] [_inst_3 : AddMonoidHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))] {f : β} (v : Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) (Neg.neg.{max u1 u3} (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (Finsupp.neg.{u1, u3} α G (SubNegZeroMonoid.toNegZeroClass.{u3} G (SubtractionMonoid.toSubNegZeroMonoid.{u3} G (AddGroup.toSubtractionMonoid.{u3} G _inst_1)))) v)) (Neg.neg.{max u1 u4} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.neg.{u1, u4} α H (SubNegZeroMonoid.toNegZeroClass.{u4} H (SubtractionMonoid.toSubNegZeroMonoid.{u4} H _inst_2))) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) v))
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u4}} {H : Type.{u3}} [_inst_1 : AddGroup.{u4} G] [_inst_2 : SubtractionMonoid.{u3} H] [_inst_3 : AddMonoidHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))] {f : β} (v : Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) (Neg.neg.{max u1 u4} (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.neg.{u1, u4} α G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1)))) v)) (Neg.neg.{max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.neg.{u1, u3} α H (SubNegZeroMonoid.toNegZeroClass.{u3} H (SubtractionMonoid.toSubNegZeroMonoid.{u3} H _inst_2))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) v))
+  forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u4}} {H : Type.{u3}} [_inst_1 : AddGroup.{u4} G] [_inst_2 : SubtractionMonoid.{u3} H] [_inst_3 : AddMonoidHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))] {f : β} (v : Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) (Neg.neg.{max u1 u4} (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.neg.{u1, u4} α G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1)))) v)) (Neg.neg.{max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.neg.{u1, u3} α H (SubNegZeroMonoid.toNegZeroClass.{u3} H (SubtractionMonoid.toSubNegZeroMonoid.{u3} H _inst_2))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) v))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range_neg' Finsupp.mapRange_neg'ₓ'. -/
 theorem mapRange_neg' [AddGroup G] [SubtractionMonoid H] [AddMonoidHomClass β G H] {f : β}
     (v : α →₀ G) : mapRange f (map_zero f) (-v) = -mapRange f (map_zero f) v :=
@@ -1953,7 +1953,7 @@ theorem mapRange_sub [SubNegZeroMonoid G] [SubNegZeroMonoid H] {f : G → H} {hf
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u3}} {H : Type.{u4}} [_inst_1 : AddGroup.{u3} G] [_inst_2 : SubtractionMonoid.{u4} H] [_inst_3 : AddMonoidHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))] {f : β} (v₁ : Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (v₂ : Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) (HSub.hSub.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (instHSub.{max u1 u3} (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (Finsupp.sub.{u1, u3} α G (SubtractionMonoid.toSubNegZeroMonoid.{u3} G (AddGroup.toSubtractionMonoid.{u3} G _inst_1)))) v₁ v₂)) (HSub.hSub.{max u1 u4, max u1 u4, max u1 u4} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (instHSub.{max u1 u4} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.sub.{u1, u4} α H (SubtractionMonoid.toSubNegZeroMonoid.{u4} H _inst_2))) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) v₁) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) v₂))
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u4}} {H : Type.{u3}} [_inst_1 : AddGroup.{u4} G] [_inst_2 : SubtractionMonoid.{u3} H] [_inst_3 : AddMonoidHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))] {f : β} (v₁ : Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (v₂ : Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) (HSub.hSub.{max u1 u4, max u1 u4, max u1 u4} (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (instHSub.{max u1 u4} (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.sub.{u1, u4} α G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1)))) v₁ v₂)) (HSub.hSub.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (instHSub.{max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.sub.{u1, u3} α H (SubtractionMonoid.toSubNegZeroMonoid.{u3} H _inst_2))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) v₁) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) v₂))
+  forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u4}} {H : Type.{u3}} [_inst_1 : AddGroup.{u4} G] [_inst_2 : SubtractionMonoid.{u3} H] [_inst_3 : AddMonoidHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))] {f : β} (v₁ : Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (v₂ : Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) (HSub.hSub.{max u1 u4, max u1 u4, max u1 u4} (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (instHSub.{max u1 u4} (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.sub.{u1, u4} α G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1)))) v₁ v₂)) (HSub.hSub.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (instHSub.{max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.sub.{u1, u3} α H (SubtractionMonoid.toSubNegZeroMonoid.{u3} H _inst_2))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) v₁) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) v₂))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range_sub' Finsupp.mapRange_sub'ₓ'. -/
 theorem mapRange_sub' [AddGroup G] [SubtractionMonoid H] [AddMonoidHomClass β G H] {f : β}
     (v₁ v₂ : α →₀ G) :
Diff
@@ -1764,7 +1764,7 @@ theorem addHom_ext' [AddZeroClass N] ⦃f g : (α →₀ M) →+ N⦄
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] {{f : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}} {{g : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}}, (forall (x : α) (y : M), Eq.{succ u3} N (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ (max u1 u2)) (succ u3)} (MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (fun (_x : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) => (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) -> N) (MonoidHom.hasCoeToFun.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f (coeFn.{succ (max u1 u2), succ (max u1 u2)} (Equiv.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (fun (_x : Equiv.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) => (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (Equiv.hasCoeToFun.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) x y))) (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ (max u1 u2)) (succ u3)} (MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (fun (_x : MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) => (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) -> N) (MonoidHom.hasCoeToFun.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) g (coeFn.{succ (max u1 u2), succ (max u1 u2)} (Equiv.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (fun (_x : Equiv.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) => (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (Equiv.hasCoeToFun.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) x y)))) -> (Eq.{max (succ u3) (succ (max u1 u2))} (MonoidHom.{max u1 u2, u3} (Multiplicative.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f g)
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] {{f : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}} {{g : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}}, (forall (x : α) (y : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (a : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) a) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (fun (_x : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (MulOneClass.toMul.{max u1 u2} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) (MulOneClass.toMul.{u3} N _inst_2) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 (MonoidHom.monoidHomClass.{max u1 u2, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2))) f (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) _x) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (fun (_x : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (MulOneClass.toMul.{max u1 u2} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) (MulOneClass.toMul.{u3} N _inst_2) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 (MonoidHom.monoidHomClass.{max u1 u2, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2))) g (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) _x) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y)))) -> (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f g)
+  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : MulOneClass.{u3} N] {{f : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}} {{g : MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2}}, (forall (x : α) (y : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (a : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) a) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (fun (_x : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (MulOneClass.toMul.{max u1 u2} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) (MulOneClass.toMul.{u3} N _inst_2) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 (MonoidHom.monoidHomClass.{max u1 u2, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2))) f (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) _x) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u1) (succ u2), succ u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (fun (_x : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) => N) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (MulOneClass.toMul.{max u1 u2} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1))) (MulOneClass.toMul.{u3} N _inst_2) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, max u1 u2, u3} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2 (MonoidHom.monoidHomClass.{max u1 u2, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2))) g (FunLike.coe.{succ (max u2 u1), succ (max u2 u1), succ (max u2 u1)} (Equiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) => Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) _x) (Equiv.instFunLikeEquiv.{succ (max u2 u1), succ (max u2 u1)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)))) (Multiplicative.ofAdd.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) x y)))) -> (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (MonoidHom.{max u2 u1, u3} (Multiplicative.{max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1))) N (Multiplicative.mulOneClass.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1)) _inst_2) f g)
 Case conversion may be inaccurate. Consider using '#align finsupp.mul_hom_ext Finsupp.mulHom_extₓ'. -/
 theorem mulHom_ext [MulOneClass N] ⦃f g : Multiplicative (α →₀ M) →* N⦄
     (H : ∀ x y, f (Multiplicative.ofAdd <| single x y) = g (Multiplicative.ofAdd <| single x y)) :
Diff
@@ -133,7 +133,7 @@ instance : CoeFun (α →₀ M) fun _ => α → M :=
 
 /- warning: finsupp.ext -> Finsupp.ext is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, (forall (a : α), Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) g a)) -> (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g)
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, (forall (a : α), Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) g a)) -> (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g)
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {g : Finsupp.{u2, u1} α M _inst_1}, (forall (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) g a)) -> (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f g)
 Case conversion may be inaccurate. Consider using '#align finsupp.ext Finsupp.extₓ'. -/
@@ -144,7 +144,7 @@ theorem ext {f g : α →₀ M} (h : ∀ a, f a = g a) : f = g :=
 
 /- warning: finsupp.ext_iff -> Finsupp.ext_iff is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g) (forall (a : α), Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) g a))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g) (forall (a : α), Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) g a))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {g : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f g) (forall (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) g a))
 Case conversion may be inaccurate. Consider using '#align finsupp.ext_iff Finsupp.ext_iffₓ'. -/
@@ -155,7 +155,7 @@ theorem ext_iff {f g : α →₀ M} : f = g ↔ ∀ a, f a = g a :=
 
 /- warning: finsupp.coe_fn_inj -> Finsupp.coeFn_inj is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{max (succ u1) (succ u2)} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) g)) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g)
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{max (succ u1) (succ u2)} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) g)) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g)
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {g : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{max (succ u2) (succ u1)} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) g)) (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f g)
 Case conversion may be inaccurate. Consider using '#align finsupp.coe_fn_inj Finsupp.coeFn_injₓ'. -/
@@ -173,7 +173,7 @@ theorem coeFn_injective : @Function.Injective (α →₀ M) (α → M) coeFn :=
 
 /- warning: finsupp.congr_fun -> Finsupp.congr_fun is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g) -> (forall (a : α), Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) g a))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g) -> (forall (a : α), Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) g a))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {g : Finsupp.{u2, u1} α M _inst_1}, (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f g) -> (forall (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) g a))
 Case conversion may be inaccurate. Consider using '#align finsupp.congr_fun Finsupp.congr_funₓ'. -/
@@ -184,7 +184,7 @@ theorem congr_fun {f g : α →₀ M} (h : f = g) (a : α) : f a = g a :=
 
 /- warning: finsupp.coe_mk -> Finsupp.coe_mk is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (f : α -> M) (s : Finset.{u1} α) (h : forall (a : α), Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) (Ne.{succ u2} M (f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))), Eq.{max (succ u1) (succ u2)} (α -> M) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) (Finsupp.mk.{u1, u2} α M _inst_1 s f h)) f
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (f : α -> M) (s : Finset.{u1} α) (h : forall (a : α), Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) (Ne.{succ u2} M (f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))), Eq.{max (succ u1) (succ u2)} (α -> M) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.mk.{u1, u2} α M _inst_1 s f h)) f
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : α -> M) (s : Finset.{u2} α) (h : forall (a : α), Iff (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) a s) (Ne.{succ u1} M (f a) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1)))), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.mk.{u2, u1} α M _inst_1 s f h)) f
 Case conversion may be inaccurate. Consider using '#align finsupp.coe_mk Finsupp.coe_mkₓ'. -/
@@ -198,7 +198,7 @@ instance : Zero (α →₀ M) :=
 
 /- warning: finsupp.coe_zero -> Finsupp.coe_zero is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M], Eq.{succ (max u1 u2)} (α -> M) (coeFn.{max (succ u1) (succ u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u2} α M _inst_1))))) (OfNat.ofNat.{max u1 u2} (α -> M) 0 (OfNat.mk.{max u1 u2} (α -> M) 0 (Zero.zero.{max u1 u2} (α -> M) (Pi.instZero.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1)))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M], Eq.{succ (max u1 u2)} (α -> M) (coeFn.{max (succ u1) (succ u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1))))) (OfNat.ofNat.{max u1 u2} (α -> M) 0 (OfNat.mk.{max u1 u2} (α -> M) 0 (Zero.zero.{max u1 u2} (α -> M) (Pi.instZero.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1)))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M], Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)))) (OfNat.ofNat.{max u2 u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) 0 (Zero.toOfNat0.{max u2 u1} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (Pi.instZero.{u2, u1} α (fun (a : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (fun (i : α) => _inst_1))))
 Case conversion may be inaccurate. Consider using '#align finsupp.coe_zero Finsupp.coe_zeroₓ'. -/
@@ -215,7 +215,7 @@ theorem zero_apply {a : α} : (0 : α →₀ M) a = 0 :=
 
 /- warning: finsupp.support_zero -> Finsupp.support_zero is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M], Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u2} α M _inst_1))))) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M], Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1))))) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M], Eq.{succ u2} (Finset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)))) (EmptyCollection.emptyCollection.{u2} (Finset.{u2} α) (Finset.instEmptyCollectionFinset.{u2} α))
 Case conversion may be inaccurate. Consider using '#align finsupp.support_zero Finsupp.support_zeroₓ'. -/
@@ -229,7 +229,7 @@ instance : Inhabited (α →₀ M) :=
 
 /- warning: finsupp.mem_support_iff -> Finsupp.mem_support_iff is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {a : α}, Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M _inst_1 f)) (Ne.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {a : α}, Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M _inst_1 f)) (Ne.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {a : α}, Iff (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) a (Finsupp.support.{u2, u1} α M _inst_1 f)) (Ne.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1)))
 Case conversion may be inaccurate. Consider using '#align finsupp.mem_support_iff Finsupp.mem_support_iffₓ'. -/
@@ -240,7 +240,7 @@ theorem mem_support_iff {f : α →₀ M} : ∀ {a : α}, a ∈ f.support ↔ f
 
 /- warning: finsupp.fun_support_eq -> Finsupp.fun_support_eq is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1), Eq.{succ u1} (Set.{u1} α) (Function.support.{u1, u2} α M _inst_1 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f)) ((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} α))) (Finsupp.support.{u1, u2} α M _inst_1 f))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1), Eq.{succ u1} (Set.{u1} α) (Function.support.{u1, u2} α M _inst_1 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f)) ((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} α))) (Finsupp.support.{u1, u2} α M _inst_1 f))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1), Eq.{succ u2} (Set.{u2} α) (Function.support.{u2, u1} α M _inst_1 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f)) (Finset.toSet.{u2} α (Finsupp.support.{u2, u1} α M _inst_1 f))
 Case conversion may be inaccurate. Consider using '#align finsupp.fun_support_eq Finsupp.fun_support_eqₓ'. -/
@@ -251,7 +251,7 @@ theorem fun_support_eq (f : α →₀ M) : Function.support f = f.support :=
 
 /- warning: finsupp.not_mem_support_iff -> Finsupp.not_mem_support_iff is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {a : α}, Iff (Not (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M _inst_1 f))) (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {a : α}, Iff (Not (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M _inst_1 f))) (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {a : α}, Iff (Not (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) a (Finsupp.support.{u2, u1} α M _inst_1 f))) (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1)))
 Case conversion may be inaccurate. Consider using '#align finsupp.not_mem_support_iff Finsupp.not_mem_support_iffₓ'. -/
@@ -261,7 +261,7 @@ theorem not_mem_support_iff {f : α →₀ M} {a} : a ∉ f.support ↔ f a = 0
 
 /- warning: finsupp.coe_eq_zero -> Finsupp.coe_eq_zero is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{max (succ u1) (succ u2)} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f) (OfNat.ofNat.{max u1 u2} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) f) 0 (OfNat.mk.{max u1 u2} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) f) 0 (Zero.zero.{max u1 u2} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) f) (Pi.instZero.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1)))))) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u2} α M _inst_1)))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{max (succ u1) (succ u2)} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f) (OfNat.ofNat.{max u1 u2} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) f) 0 (OfNat.mk.{max u1 u2} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) f) 0 (Zero.zero.{max u1 u2} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) f) (Pi.instZero.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => _inst_1)))))) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1)))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{max (succ u2) (succ u1)} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f) (OfNat.ofNat.{max u2 u1} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{max u2 u1} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (Pi.instZero.{u2, u1} α (fun (a : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (fun (i : α) => _inst_1))))) (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1))))
 Case conversion may be inaccurate. Consider using '#align finsupp.coe_eq_zero Finsupp.coe_eq_zeroₓ'. -/
@@ -271,7 +271,7 @@ theorem coe_eq_zero {f : α →₀ M} : (f : α → M) = 0 ↔ f = 0 := by rw [
 
 /- warning: finsupp.ext_iff' -> Finsupp.ext_iff' is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g) (And (Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 f) (Finsupp.support.{u1, u2} α M _inst_1 g)) (forall (x : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) x (Finsupp.support.{u1, u2} α M _inst_1 f)) -> (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) g x))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g) (And (Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 f) (Finsupp.support.{u1, u2} α M _inst_1 g)) (forall (x : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) x (Finsupp.support.{u1, u2} α M _inst_1 f)) -> (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) g x))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {g : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f g) (And (Eq.{succ u2} (Finset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 f) (Finsupp.support.{u2, u1} α M _inst_1 g)) (forall (x : α), (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) x (Finsupp.support.{u2, u1} α M _inst_1 f)) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) g x))))
 Case conversion may be inaccurate. Consider using '#align finsupp.ext_iff' Finsupp.ext_iff'ₓ'. -/
@@ -288,7 +288,7 @@ theorem ext_iff' {f g : α →₀ M} : f = g ↔ f.support = g.support ∧ ∀ x
 
 /- warning: finsupp.support_eq_empty -> Finsupp.support_eq_empty is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 f) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α))) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u2} α M _inst_1)))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 f) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α))) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1)))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{succ u2} (Finset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 f) (EmptyCollection.emptyCollection.{u2} (Finset.{u2} α) (Finset.instEmptyCollectionFinset.{u2} α))) (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1))))
 Case conversion may be inaccurate. Consider using '#align finsupp.support_eq_empty Finsupp.support_eq_emptyₓ'. -/
@@ -299,7 +299,7 @@ theorem support_eq_empty {f : α →₀ M} : f.support = ∅ ↔ f = 0 := by
 
 /- warning: finsupp.support_nonempty_iff -> Finsupp.support_nonempty_iff is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Finset.Nonempty.{u1} α (Finsupp.support.{u1, u2} α M _inst_1 f)) (Ne.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u2} α M _inst_1)))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Finset.Nonempty.{u1} α (Finsupp.support.{u1, u2} α M _inst_1 f)) (Ne.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1)))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Finset.Nonempty.{u2} α (Finsupp.support.{u2, u1} α M _inst_1 f)) (Ne.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1))))
 Case conversion may be inaccurate. Consider using '#align finsupp.support_nonempty_iff Finsupp.support_nonempty_iffₓ'. -/
@@ -309,7 +309,7 @@ theorem support_nonempty_iff {f : α →₀ M} : f.support.Nonempty ↔ f ≠ 0
 
 /- warning: finsupp.nonzero_iff_exists -> Finsupp.nonzero_iff_exists is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Ne.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u2} α M _inst_1))))) (Exists.{succ u1} α (fun (a : α) => Ne.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Ne.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1))))) (Exists.{succ u1} α (fun (a : α) => Ne.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Ne.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)))) (Exists.{succ u2} α (fun (a : α) => Ne.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1))))
 Case conversion may be inaccurate. Consider using '#align finsupp.nonzero_iff_exists Finsupp.nonzero_iff_existsₓ'. -/
@@ -319,7 +319,7 @@ theorem nonzero_iff_exists {f : α →₀ M} : f ≠ 0 ↔ ∃ a : α, f a ≠ 0
 
 /- warning: finsupp.card_support_eq_zero -> Finsupp.card_support_eq_zero is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{1} Nat (Finset.card.{u1} α (Finsupp.support.{u1, u2} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u2} α M _inst_1)))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{1} Nat (Finset.card.{u1} α (Finsupp.support.{u1, u2} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1)))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{1} Nat (Finset.card.{u2} α (Finsupp.support.{u2, u1} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1))))
 Case conversion may be inaccurate. Consider using '#align finsupp.card_support_eq_zero Finsupp.card_support_eq_zeroₓ'. -/
@@ -331,7 +331,7 @@ instance [DecidableEq α] [DecidableEq M] : DecidableEq (α →₀ M) := fun f g
 
 /- warning: finsupp.finite_support -> Finsupp.finite_support is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1), Set.Finite.{u1} α (Function.support.{u1, u2} α M _inst_1 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1), Set.Finite.{u1} α (Function.support.{u1, u2} α M _inst_1 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1), Set.Finite.{u2} α (Function.support.{u2, u1} α M _inst_1 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f))
 Case conversion may be inaccurate. Consider using '#align finsupp.finite_support Finsupp.finite_supportₓ'. -/
@@ -341,7 +341,7 @@ theorem finite_support (f : α →₀ M) : Set.Finite (Function.support f) :=
 
 /- warning: finsupp.support_subset_iff -> Finsupp.support_subset_iff is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {s : Set.{u1} α} {f : Finsupp.{u1, u2} α M _inst_1}, Iff (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) ((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} α))) (Finsupp.support.{u1, u2} α M _inst_1 f)) s) (forall (a : α), (Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s)) -> (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {s : Set.{u1} α} {f : Finsupp.{u1, u2} α M _inst_1}, Iff (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) ((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} α))) (Finsupp.support.{u1, u2} α M _inst_1 f)) s) (forall (a : α), (Not (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a s)) -> (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {s : Set.{u2} α} {f : Finsupp.{u2, u1} α M _inst_1}, Iff (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Finset.toSet.{u2} α (Finsupp.support.{u2, u1} α M _inst_1 f)) s) (forall (a : α), (Not (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s)) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1))))
 Case conversion may be inaccurate. Consider using '#align finsupp.support_subset_iff Finsupp.support_subset_iffₓ'. -/
@@ -383,7 +383,7 @@ noncomputable def Equiv.finsuppUnique {ι : Type _} [Unique ι] : (ι →₀ M)
 
 /- warning: finsupp.unique_ext -> Finsupp.unique_ext is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : Unique.{succ u1} α] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f (Inhabited.default.{succ u1} α (Unique.inhabited.{succ u1} α _inst_2))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) g (Inhabited.default.{succ u1} α (Unique.inhabited.{succ u1} α _inst_2)))) -> (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g)
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : Unique.{succ u1} α] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f (Inhabited.default.{succ u1} α (Unique.inhabited.{succ u1} α _inst_2))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) g (Inhabited.default.{succ u1} α (Unique.inhabited.{succ u1} α _inst_2)))) -> (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g)
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : Unique.{succ u2} α] {f : Finsupp.{u2, u1} α M _inst_1} {g : Finsupp.{u2, u1} α M _inst_1}, (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) (Inhabited.default.{succ u2} α (Unique.instInhabited.{succ u2} α _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f (Inhabited.default.{succ u2} α (Unique.instInhabited.{succ u2} α _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) g (Inhabited.default.{succ u2} α (Unique.instInhabited.{succ u2} α _inst_2)))) -> (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f g)
 Case conversion may be inaccurate. Consider using '#align finsupp.unique_ext Finsupp.unique_extₓ'. -/
@@ -394,7 +394,7 @@ theorem unique_ext [Unique α] {f g : α →₀ M} (h : f default = g default) :
 
 /- warning: finsupp.unique_ext_iff -> Finsupp.unique_ext_iff is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : Unique.{succ u1} α] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g) (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f (Inhabited.default.{succ u1} α (Unique.inhabited.{succ u1} α _inst_2))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) g (Inhabited.default.{succ u1} α (Unique.inhabited.{succ u1} α _inst_2))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : Unique.{succ u1} α] {f : Finsupp.{u1, u2} α M _inst_1} {g : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f g) (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f (Inhabited.default.{succ u1} α (Unique.inhabited.{succ u1} α _inst_2))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) g (Inhabited.default.{succ u1} α (Unique.inhabited.{succ u1} α _inst_2))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : Unique.{succ u2} α] {f : Finsupp.{u2, u1} α M _inst_1} {g : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f g) (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) (Inhabited.default.{succ u2} α (Unique.instInhabited.{succ u2} α _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f (Inhabited.default.{succ u2} α (Unique.instInhabited.{succ u2} α _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) g (Inhabited.default.{succ u2} α (Unique.instInhabited.{succ u2} α _inst_2))))
 Case conversion may be inaccurate. Consider using '#align finsupp.unique_ext_iff Finsupp.unique_ext_iffₓ'. -/
@@ -434,7 +434,7 @@ def single (a : α) (b : M) : α →₀ M
 
 /- warning: finsupp.single_apply -> Finsupp.single_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {a' : α} {b : M} [_inst_2 : Decidable (Eq.{succ u1} α a a')], Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a b) a') (ite.{succ u2} M (Eq.{succ u1} α a a') _inst_2 b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {a' : α} {b : M} [_inst_2 : Decidable (Eq.{succ u1} α a a')], Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a b) a') (ite.{succ u2} M (Eq.{succ u1} α a a') _inst_2 b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {a' : α} {b : M} [_inst_2 : Decidable (Eq.{succ u2} α a a')], Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a') (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a b) a') (ite.{succ u1} M (Eq.{succ u2} α a a') _inst_2 b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1)))
 Case conversion may be inaccurate. Consider using '#align finsupp.single_apply Finsupp.single_applyₓ'. -/
@@ -446,7 +446,7 @@ theorem single_apply [Decidable (a = a')] : single a b a' = if a = a' then b els
 
 /- warning: finsupp.single_apply_left -> Finsupp.single_apply_left is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] {f : α -> β}, (Function.Injective.{succ u1, succ u2} α β f) -> (forall (x : α) (z : α) (y : M), Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (fun (_x : Finsupp.{u2, u3} β M _inst_1) => β -> M) (Finsupp.hasCoeToFun.{u2, u3} β M _inst_1) (Finsupp.single.{u2, u3} β M _inst_1 (f x) y) (f z)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (fun (_x : Finsupp.{u1, u3} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u3} α M _inst_1) (Finsupp.single.{u1, u3} α M _inst_1 x y) z))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] {f : α -> β}, (Function.Injective.{succ u1, succ u2} α β f) -> (forall (x : α) (z : α) (y : M), Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (fun (_x : Finsupp.{u2, u3} β M _inst_1) => β -> M) (Finsupp.coeFun.{u2, u3} β M _inst_1) (Finsupp.single.{u2, u3} β M _inst_1 (f x) y) (f z)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (fun (_x : Finsupp.{u1, u3} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u3} α M _inst_1) (Finsupp.single.{u1, u3} α M _inst_1 x y) z))
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : α -> β}, (Function.Injective.{succ u3, succ u2} α β f) -> (forall (x : α) (z : α) (y : M), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) (f z)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M _inst_1) (Finsupp.single.{u2, u1} β M _inst_1 (f x) y) (f z)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M _inst_1) (Finsupp.single.{u3, u1} α M _inst_1 x y) z))
 Case conversion may be inaccurate. Consider using '#align finsupp.single_apply_left Finsupp.single_apply_leftₓ'. -/
@@ -468,7 +468,7 @@ theorem single_eq_same : (single a b : α →₀ M) a = b := by classical exact
 
 /- warning: finsupp.single_eq_of_ne -> Finsupp.single_eq_of_ne is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {a' : α} {b : M}, (Ne.{succ u1} α a a') -> (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a b) a') (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {a' : α} {b : M}, (Ne.{succ u1} α a a') -> (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a b) a') (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {a' : α} {b : M}, (Ne.{succ u2} α a a') -> (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a') (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a b) a') (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a') 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a') _inst_1)))
 Case conversion may be inaccurate. Consider using '#align finsupp.single_eq_of_ne Finsupp.single_eq_of_neₓ'. -/
@@ -479,7 +479,7 @@ theorem single_eq_of_ne (h : a ≠ a') : (single a b : α →₀ M) a' = 0 := by
 
 /- warning: finsupp.single_eq_update -> Finsupp.single_eq_update is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] (a : α) (b : M), Eq.{max (succ u1) (succ u2)} (α -> M) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a b)) (Function.update.{succ u1, succ u2} α (fun (a : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (OfNat.ofNat.{max u1 u2} (α -> M) 0 (OfNat.mk.{max u1 u2} (α -> M) 0 (Zero.zero.{max u1 u2} (α -> M) (Pi.instZero.{u1, u2} α (fun (a : α) => M) (fun (i : α) => _inst_1))))) a b)
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] (a : α) (b : M), Eq.{max (succ u1) (succ u2)} (α -> M) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a b)) (Function.update.{succ u1, succ u2} α (fun (a : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (OfNat.ofNat.{max u1 u2} (α -> M) 0 (OfNat.mk.{max u1 u2} (α -> M) 0 (Zero.zero.{max u1 u2} (α -> M) (Pi.instZero.{u1, u2} α (fun (a : α) => M) (fun (i : α) => _inst_1))))) a b)
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] (a : α) (b : M), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a b)) (Function.update.{succ u2, succ u1} α (fun (a : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (fun (a : α) (b : α) => _inst_2 a b) (OfNat.ofNat.{max u2 u1} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{max u2 u1} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (Pi.instZero.{u2, u1} α (fun (a : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (fun (i : α) => _inst_1)))) a b)
 Case conversion may be inaccurate. Consider using '#align finsupp.single_eq_update Finsupp.single_eq_updateₓ'. -/
@@ -489,7 +489,7 @@ theorem single_eq_update [DecidableEq α] (a : α) (b : M) : ⇑(single a b) = F
 
 /- warning: finsupp.single_eq_pi_single -> Finsupp.single_eq_pi_single is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] (a : α) (b : M), Eq.{max (succ u1) (succ u2)} (α -> M) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a b)) (Pi.single.{u1, u2} α (fun (a : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) a b)
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] (a : α) (b : M), Eq.{max (succ u1) (succ u2)} (α -> M) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a b)) (Pi.single.{u1, u2} α (fun (a : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) a b)
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] (a : α) (b : M), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a b)) (Pi.single.{u2, u1} α (fun (a : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (fun (a : α) (b : α) => _inst_2 a b) (fun (i : α) => _inst_1) a b)
 Case conversion may be inaccurate. Consider using '#align finsupp.single_eq_pi_single Finsupp.single_eq_pi_singleₓ'. -/
@@ -499,7 +499,7 @@ theorem single_eq_pi_single [DecidableEq α] (a : α) (b : M) : ⇑(single a b)
 
 /- warning: finsupp.single_zero -> Finsupp.single_zero is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (a : α), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u2} α M _inst_1))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (a : α), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (a : α), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)))
 Case conversion may be inaccurate. Consider using '#align finsupp.single_zero Finsupp.single_zeroₓ'. -/
@@ -511,7 +511,7 @@ theorem single_zero (a : α) : (single a 0 : α →₀ M) = 0 :=
 
 /- warning: finsupp.single_of_single_apply -> Finsupp.single_of_single_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (a : α) (a' : α) (b : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a' b) a)) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (Finsupp.{u1, max u1 u2} α (Finsupp.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u2} α M _inst_1)) (fun (_x : Finsupp.{u1, max u1 u2} α (Finsupp.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u2} α M _inst_1)) => α -> (Finsupp.{u1, u2} α M _inst_1)) (Finsupp.hasCoeToFun.{u1, max u1 u2} α (Finsupp.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u2} α M _inst_1)) (Finsupp.single.{u1, max u1 u2} α (Finsupp.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u2} α M _inst_1) a' (Finsupp.single.{u1, u2} α M _inst_1 a' b)) a)
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (a : α) (a' : α) (b : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a' b) a)) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (Finsupp.{u1, max u1 u2} α (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1)) (fun (_x : Finsupp.{u1, max u1 u2} α (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1)) => α -> (Finsupp.{u1, u2} α M _inst_1)) (Finsupp.coeFun.{u1, max u1 u2} α (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1)) (Finsupp.single.{u1, max u1 u2} α (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1) a' (Finsupp.single.{u1, u2} α M _inst_1 a' b)) a)
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (a : α) (a' : α) (b : M), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1) (Finsupp.single.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1 a (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a' b) a)) (FunLike.coe.{max (succ u2) (succ (max u2 u1)), succ u2, succ (max u2 u1)} (Finsupp.{u2, max u2 u1} α (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => Finsupp.{u2, u1} α M _inst_1) _x) (Finsupp.funLike.{u2, max u2 u1} α (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)) (Finsupp.single.{u2, max u1 u2} α (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1) a' (Finsupp.single.{u2, u1} α M _inst_1 a' b)) a)
 Case conversion may be inaccurate. Consider using '#align finsupp.single_of_single_apply Finsupp.single_of_single_applyₓ'. -/
@@ -589,7 +589,7 @@ theorem mem_support_single (a a' : α) (b : M) : a ∈ (single a' b).support ↔
 
 /- warning: finsupp.eq_single_iff -> Finsupp.eq_single_iff is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {a : α} {b : M}, Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (Finsupp.single.{u1, u2} α M _inst_1 a b)) (And (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 f) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a)) (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f a) b))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {a : α} {b : M}, Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (Finsupp.single.{u1, u2} α M _inst_1 a b)) (And (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 f) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a)) (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) b))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {a : α} {b : M}, Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (Finsupp.single.{u2, u1} α M _inst_1 a b)) (And (HasSubset.Subset.{u2} (Finset.{u2} α) (Finset.instHasSubsetFinset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 f) (Singleton.singleton.{u2, u2} α (Finset.{u2} α) (Finset.instSingletonFinset.{u2} α) a)) (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) b))
 Case conversion may be inaccurate. Consider using '#align finsupp.eq_single_iff Finsupp.eq_single_iffₓ'. -/
@@ -663,7 +663,7 @@ theorem support_single_disjoint {b' : M} (hb : b ≠ 0) (hb' : b' ≠ 0) {i j :
 
 /- warning: finsupp.single_eq_zero -> Finsupp.single_eq_zero is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {b : M}, Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a b) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u2} α M _inst_1))))) (Eq.{succ u2} M b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {b : M}, Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a b) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1))))) (Eq.{succ u2} M b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {b : M}, Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a b) (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)))) (Eq.{succ u1} M b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1)))
 Case conversion may be inaccurate. Consider using '#align finsupp.single_eq_zero Finsupp.single_eq_zeroₓ'. -/
@@ -687,7 +687,7 @@ instance [Nonempty α] [Nontrivial M] : Nontrivial (α →₀ M) :=
 
 /- warning: finsupp.unique_single -> Finsupp.unique_single is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : Unique.{succ u1} α] (x : Finsupp.{u1, u2} α M _inst_1), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) x (Finsupp.single.{u1, u2} α M _inst_1 (Inhabited.default.{succ u1} α (Unique.inhabited.{succ u1} α _inst_2)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) x (Inhabited.default.{succ u1} α (Unique.inhabited.{succ u1} α _inst_2))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : Unique.{succ u1} α] (x : Finsupp.{u1, u2} α M _inst_1), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) x (Finsupp.single.{u1, u2} α M _inst_1 (Inhabited.default.{succ u1} α (Unique.inhabited.{succ u1} α _inst_2)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) x (Inhabited.default.{succ u1} α (Unique.inhabited.{succ u1} α _inst_2))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : Unique.{succ u2} α] (x : Finsupp.{u2, u1} α M _inst_1), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) x (Finsupp.single.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) (Inhabited.default.{succ u2} α (Unique.instInhabited.{succ u2} α _inst_2))) _inst_1 (Inhabited.default.{succ u2} α (Unique.instInhabited.{succ u2} α _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) x (Inhabited.default.{succ u2} α (Unique.instInhabited.{succ u2} α _inst_2))))
 Case conversion may be inaccurate. Consider using '#align finsupp.unique_single Finsupp.unique_singleₓ'. -/
@@ -708,7 +708,7 @@ theorem unique_single_eq_iff [Unique α] {b' : M} : single a b = single a' b' 
 
 /- warning: finsupp.support_eq_singleton -> Finsupp.support_eq_singleton is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {a : α}, Iff (Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 f) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a)) (And (Ne.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (Finsupp.single.{u1, u2} α M _inst_1 a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f a))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {a : α}, Iff (Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 f) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a)) (And (Ne.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (Finsupp.single.{u1, u2} α M _inst_1 a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {a : α}, Iff (Eq.{succ u2} (Finset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 f) (Singleton.singleton.{u2, u2} α (Finset.{u2} α) (Finset.instSingletonFinset.{u2} α) a)) (And (Ne.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1))) (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (Finsupp.single.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1 a (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a))))
 Case conversion may be inaccurate. Consider using '#align finsupp.support_eq_singleton Finsupp.support_eq_singletonₓ'. -/
@@ -737,7 +737,7 @@ theorem support_eq_singleton' {f : α →₀ M} {a : α} :
 
 /- warning: finsupp.card_support_eq_one -> Finsupp.card_support_eq_one is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{1} Nat (Finset.card.{u1} α (Finsupp.support.{u1, u2} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) (Exists.{succ u1} α (fun (a : α) => And (Ne.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (Finsupp.single.{u1, u2} α M _inst_1 a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f a)))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{1} Nat (Finset.card.{u1} α (Finsupp.support.{u1, u2} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) (Exists.{succ u1} α (fun (a : α) => And (Ne.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (Finsupp.single.{u1, u2} α M _inst_1 a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a)))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{1} Nat (Finset.card.{u2} α (Finsupp.support.{u2, u1} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) (Exists.{succ u2} α (fun (a : α) => And (Ne.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1))) (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (Finsupp.single.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1 a (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a)))))
 Case conversion may be inaccurate. Consider using '#align finsupp.card_support_eq_one Finsupp.card_support_eq_oneₓ'. -/
@@ -759,7 +759,7 @@ theorem card_support_eq_one' {f : α →₀ M} :
 
 /- warning: finsupp.support_subset_singleton -> Finsupp.support_subset_singleton is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {a : α}, Iff (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 f) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a)) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (Finsupp.single.{u1, u2} α M _inst_1 a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f a)))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {a : α}, Iff (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 f) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a)) (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (Finsupp.single.{u1, u2} α M _inst_1 a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a)))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {a : α}, Iff (HasSubset.Subset.{u2} (Finset.{u2} α) (Finset.instHasSubsetFinset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 f) (Singleton.singleton.{u2, u2} α (Finset.{u2} α) (Finset.instSingletonFinset.{u2} α) a)) (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (Finsupp.single.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1 a (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a)))
 Case conversion may be inaccurate. Consider using '#align finsupp.support_subset_singleton Finsupp.support_subset_singletonₓ'. -/
@@ -780,7 +780,7 @@ theorem support_subset_singleton' {f : α →₀ M} {a : α} : f.support ⊆ {a}
 
 /- warning: finsupp.card_support_le_one -> Finsupp.card_support_le_one is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : Nonempty.{succ u1} α] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (LE.le.{0} Nat Nat.hasLe (Finset.card.{u1} α (Finsupp.support.{u1, u2} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) (Exists.{succ u1} α (fun (a : α) => Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (Finsupp.single.{u1, u2} α M _inst_1 a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f a))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : Nonempty.{succ u1} α] {f : Finsupp.{u1, u2} α M _inst_1}, Iff (LE.le.{0} Nat Nat.hasLe (Finset.card.{u1} α (Finsupp.support.{u1, u2} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) (Exists.{succ u1} α (fun (a : α) => Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) f (Finsupp.single.{u1, u2} α M _inst_1 a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : Nonempty.{succ u2} α] {f : Finsupp.{u2, u1} α M _inst_1}, Iff (LE.le.{0} Nat instLENat (Finset.card.{u2} α (Finsupp.support.{u2, u1} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) (Exists.{succ u2} α (fun (a : α) => Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (Finsupp.single.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1 a (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a))))
 Case conversion may be inaccurate. Consider using '#align finsupp.card_support_le_one Finsupp.card_support_le_oneₓ'. -/
@@ -857,7 +857,7 @@ def update (f : α →₀ M) (a : α) (b : M) : α →₀ M
 
 /- warning: finsupp.coe_update -> Finsupp.coe_update is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) (a : α) (b : M) [_inst_2 : DecidableEq.{succ u1} α], Eq.{max (succ u1) (succ u2)} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.update.{u1, u2} α M _inst_1 f a b)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) (Finsupp.update.{u1, u2} α M _inst_1 f a b)) (Function.update.{succ u1, succ u2} α (fun (ᾰ : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f) a b)
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) (a : α) (b : M) [_inst_2 : DecidableEq.{succ u1} α], Eq.{max (succ u1) (succ u2)} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.update.{u1, u2} α M _inst_1 f a b)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.update.{u1, u2} α M _inst_1 f a b)) (Function.update.{succ u1, succ u2} α (fun (ᾰ : α) => M) (fun (a : α) (b : α) => _inst_2 a b) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f) a b)
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) (a : α) (b : M) [_inst_2 : DecidableEq.{succ u2} α], Eq.{max (succ u2) (succ u1)} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.update.{u2, u1} α M _inst_1 f a b)) (Function.update.{succ u2, succ u1} α (fun (ᾰ : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (fun (a : α) (b : α) => _inst_2 a b) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f) a b)
 Case conversion may be inaccurate. Consider using '#align finsupp.coe_update Finsupp.coe_updateₓ'. -/
@@ -868,7 +868,7 @@ theorem coe_update [DecidableEq α] : (f.update a b : α → M) = Function.updat
 
 /- warning: finsupp.update_self -> Finsupp.update_self is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) (a : α), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.update.{u1, u2} α M _inst_1 f a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f a)) f
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) (a : α), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.update.{u1, u2} α M _inst_1 f a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a)) f
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) (a : α), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.update.{u2, u1} α M _inst_1 f a (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a)) f
 Case conversion may be inaccurate. Consider using '#align finsupp.update_self Finsupp.update_selfₓ'. -/
@@ -881,7 +881,7 @@ theorem update_self : f.update a (f a) = f := by
 
 /- warning: finsupp.zero_update -> Finsupp.zero_update is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (a : α) (b : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.update.{u1, u2} α M _inst_1 (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u2} α M _inst_1)))) a b) (Finsupp.single.{u1, u2} α M _inst_1 a b)
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (a : α) (b : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.update.{u1, u2} α M _inst_1 (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1)))) a b) (Finsupp.single.{u1, u2} α M _inst_1 a b)
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (a : α) (b : M), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.update.{u2, u1} α M _inst_1 (OfNat.ofNat.{max u1 u2} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u1 u2} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1))) a b) (Finsupp.single.{u2, u1} α M _inst_1 a b)
 Case conversion may be inaccurate. Consider using '#align finsupp.zero_update Finsupp.zero_updateₓ'. -/
@@ -968,7 +968,7 @@ theorem support_erase [DecidableEq α] {a : α} {f : α →₀ M} :
 
 /- warning: finsupp.erase_same -> Finsupp.erase_same is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {f : Finsupp.{u1, u2} α M _inst_1}, Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) (Finsupp.erase.{u1, u2} α M _inst_1 a f) a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {f : Finsupp.{u1, u2} α M _inst_1}, Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.erase.{u1, u2} α M _inst_1 a f) a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {f : Finsupp.{u2, u1} α M _inst_1}, Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.erase.{u2, u1} α M _inst_1 a f) a) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1))
 Case conversion may be inaccurate. Consider using '#align finsupp.erase_same Finsupp.erase_sameₓ'. -/
@@ -978,7 +978,7 @@ theorem erase_same {a : α} {f : α →₀ M} : (f.eraseₓ a) a = 0 := by conve
 
 /- warning: finsupp.erase_ne -> Finsupp.erase_ne is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {a' : α} {f : Finsupp.{u1, u2} α M _inst_1}, (Ne.{succ u1} α a' a) -> (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) (Finsupp.erase.{u1, u2} α M _inst_1 a f) a') (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) f a'))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {a' : α} {f : Finsupp.{u1, u2} α M _inst_1}, (Ne.{succ u1} α a' a) -> (Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.erase.{u1, u2} α M _inst_1 a f) a') (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) f a'))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {a' : α} {f : Finsupp.{u2, u1} α M _inst_1}, (Ne.{succ u2} α a' a) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a') (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.erase.{u2, u1} α M _inst_1 a f) a') (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a'))
 Case conversion may be inaccurate. Consider using '#align finsupp.erase_ne Finsupp.erase_neₓ'. -/
@@ -989,7 +989,7 @@ theorem erase_ne {a a' : α} {f : α →₀ M} (h : a' ≠ a) : (f.eraseₓ a) a
 
 /- warning: finsupp.erase_single -> Finsupp.erase_single is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {b : M}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.erase.{u1, u2} α M _inst_1 a (Finsupp.single.{u1, u2} α M _inst_1 a b)) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u2} α M _inst_1))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {b : M}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.erase.{u1, u2} α M _inst_1 a (Finsupp.single.{u1, u2} α M _inst_1 a b)) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {b : M}, Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.erase.{u2, u1} α M _inst_1 a (Finsupp.single.{u2, u1} α M _inst_1 a b)) (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)))
 Case conversion may be inaccurate. Consider using '#align finsupp.erase_single Finsupp.erase_singleₓ'. -/
@@ -1032,7 +1032,7 @@ theorem erase_of_not_mem_support {f : α →₀ M} {a} (haf : a ∉ f.support) :
 
 /- warning: finsupp.erase_zero -> Finsupp.erase_zero is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (a : α), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.erase.{u1, u2} α M _inst_1 a (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u2} α M _inst_1))))) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u2} α M _inst_1))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (a : α), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.erase.{u1, u2} α M _inst_1 a (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1))))) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (a : α), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.erase.{u2, u1} α M _inst_1 a (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)))) (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)))
 Case conversion may be inaccurate. Consider using '#align finsupp.erase_zero Finsupp.erase_zeroₓ'. -/
@@ -1066,7 +1066,7 @@ def onFinset (s : Finset α) (f : α → M) (hf : ∀ a, f a ≠ 0 → a ∈ s)
 
 /- warning: finsupp.on_finset_apply -> Finsupp.onFinset_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {s : Finset.{u1} α} {f : α -> M} {hf : forall (a : α), (Ne.{succ u2} M (f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s)} {a : α}, Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) (Finsupp.onFinset.{u1, u2} α M _inst_1 s f hf) a) (f a)
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {s : Finset.{u1} α} {f : α -> M} {hf : forall (a : α), (Ne.{succ u2} M (f a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s)} {a : α}, Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.onFinset.{u1, u2} α M _inst_1 s f hf) a) (f a)
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {s : Finset.{u2} α} {f : α -> M} {hf : forall (a : α), (Ne.{succ u1} M (f a) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) -> (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) a s)} {a : α}, Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.onFinset.{u2, u1} α M _inst_1 s f hf) a) (f a)
 Case conversion may be inaccurate. Consider using '#align finsupp.on_finset_apply Finsupp.onFinset_applyₓ'. -/
@@ -1123,7 +1123,7 @@ noncomputable def ofSupportFinite (f : α → M) (hf : (Function.support f).Fini
 
 /- warning: finsupp.of_support_finite_coe -> Finsupp.ofSupportFinite_coe is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : α -> M} {hf : Set.Finite.{u1} α (Function.support.{u1, u2} α M _inst_1 f)}, Eq.{max (succ u1) (succ u2)} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.ofSupportFinite.{u1, u2} α M _inst_1 f hf)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) (Finsupp.ofSupportFinite.{u1, u2} α M _inst_1 f hf)) f
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : α -> M} {hf : Set.Finite.{u1} α (Function.support.{u1, u2} α M _inst_1 f)}, Eq.{max (succ u1) (succ u2)} ((fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.ofSupportFinite.{u1, u2} α M _inst_1 f hf)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) (Finsupp.ofSupportFinite.{u1, u2} α M _inst_1 f hf)) f
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : α -> M} {hf : Set.Finite.{u2} α (Function.support.{u2, u1} α M _inst_1 f)}, Eq.{max (succ u2) (succ u1)} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.ofSupportFinite.{u2, u1} α M _inst_1 f hf)) f
 Case conversion may be inaccurate. Consider using '#align finsupp.of_support_finite_coe Finsupp.ofSupportFinite_coeₓ'. -/
@@ -1273,7 +1273,7 @@ theorem support_embDomain (f : α ↪ β) (v : α →₀ M) : (embDomain f v).su
 
 /- warning: finsupp.emb_domain_zero -> Finsupp.embDomain_zero is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Function.Embedding.{succ u1, succ u2} α β), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.embDomain.{u1, u2, u3} α β M _inst_1 f (OfNat.ofNat.{max u1 u3} (Finsupp.{u1, u3} α M _inst_1) 0 (OfNat.mk.{max u1 u3} (Finsupp.{u1, u3} α M _inst_1) 0 (Zero.zero.{max u1 u3} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.hasZero.{u1, u3} α M _inst_1))))) (OfNat.ofNat.{max u2 u3} (Finsupp.{u2, u3} β M _inst_1) 0 (OfNat.mk.{max u2 u3} (Finsupp.{u2, u3} β M _inst_1) 0 (Zero.zero.{max u2 u3} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.hasZero.{u2, u3} β M _inst_1))))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Function.Embedding.{succ u1, succ u2} α β), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.embDomain.{u1, u2, u3} α β M _inst_1 f (OfNat.ofNat.{max u1 u3} (Finsupp.{u1, u3} α M _inst_1) 0 (OfNat.mk.{max u1 u3} (Finsupp.{u1, u3} α M _inst_1) 0 (Zero.zero.{max u1 u3} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.zero.{u1, u3} α M _inst_1))))) (OfNat.ofNat.{max u2 u3} (Finsupp.{u2, u3} β M _inst_1) 0 (OfNat.mk.{max u2 u3} (Finsupp.{u2, u3} β M _inst_1) 0 (Zero.zero.{max u2 u3} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.zero.{u2, u3} β M _inst_1))))
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Function.Embedding.{succ u3, succ u2} α β), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} β M _inst_1) (Finsupp.embDomain.{u3, u2, u1} α β M _inst_1 f (OfNat.ofNat.{max u3 u1} (Finsupp.{u3, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u3 u1} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.zero.{u3, u1} α M _inst_1)))) (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} β M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} β M _inst_1) (Finsupp.zero.{u2, u1} β M _inst_1)))
 Case conversion may be inaccurate. Consider using '#align finsupp.emb_domain_zero Finsupp.embDomain_zeroₓ'. -/
@@ -1284,7 +1284,7 @@ theorem embDomain_zero (f : α ↪ β) : (embDomain f 0 : β →₀ M) = 0 :=
 
 /- warning: finsupp.emb_domain_apply -> Finsupp.embDomain_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Function.Embedding.{succ u1, succ u2} α β) (v : Finsupp.{u1, u3} α M _inst_1) (a : α), Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (fun (_x : Finsupp.{u2, u3} β M _inst_1) => β -> M) (Finsupp.hasCoeToFun.{u2, u3} β M _inst_1) (Finsupp.embDomain.{u1, u2, u3} α β M _inst_1 f v) (coeFn.{max 1 (succ u1) (succ u2), max (succ u1) (succ u2)} (Function.Embedding.{succ u1, succ u2} α β) (fun (_x : Function.Embedding.{succ u1, succ u2} α β) => α -> β) (Function.Embedding.hasCoeToFun.{succ u1, succ u2} α β) f a)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (fun (_x : Finsupp.{u1, u3} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u3} α M _inst_1) v a)
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Function.Embedding.{succ u1, succ u2} α β) (v : Finsupp.{u1, u3} α M _inst_1) (a : α), Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (fun (_x : Finsupp.{u2, u3} β M _inst_1) => β -> M) (Finsupp.coeFun.{u2, u3} β M _inst_1) (Finsupp.embDomain.{u1, u2, u3} α β M _inst_1 f v) (coeFn.{max 1 (succ u1) (succ u2), max (succ u1) (succ u2)} (Function.Embedding.{succ u1, succ u2} α β) (fun (_x : Function.Embedding.{succ u1, succ u2} α β) => α -> β) (Function.Embedding.hasCoeToFun.{succ u1, succ u2} α β) f a)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (fun (_x : Finsupp.{u1, u3} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u3} α M _inst_1) v a)
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Function.Embedding.{succ u3, succ u2} α β) (v : Finsupp.{u3, u1} α M _inst_1) (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Function.Embedding.{succ u3, succ u2} α β) α (fun (a : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) a) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Function.Embedding.{succ u3, succ u2} α β) α β (Function.instEmbeddingLikeEmbedding.{succ u3, succ u2} α β)) f a)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M _inst_1) (Finsupp.embDomain.{u3, u2, u1} α β M _inst_1 f v) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Function.Embedding.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Function.Embedding.{succ u3, succ u2} α β) α β (Function.instEmbeddingLikeEmbedding.{succ u3, succ u2} α β)) f a)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M _inst_1) v a)
 Case conversion may be inaccurate. Consider using '#align finsupp.emb_domain_apply Finsupp.embDomain_applyₓ'. -/
@@ -1300,7 +1300,7 @@ theorem embDomain_apply (f : α ↪ β) (v : α →₀ M) (a : α) : embDomain f
 
 /- warning: finsupp.emb_domain_notin_range -> Finsupp.embDomain_notin_range is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Function.Embedding.{succ u1, succ u2} α β) (v : Finsupp.{u1, u3} α M _inst_1) (a : β), (Not (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) a (Set.range.{u2, succ u1} β α (coeFn.{max 1 (succ u1) (succ u2), max (succ u1) (succ u2)} (Function.Embedding.{succ u1, succ u2} α β) (fun (_x : Function.Embedding.{succ u1, succ u2} α β) => α -> β) (Function.Embedding.hasCoeToFun.{succ u1, succ u2} α β) f)))) -> (Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (fun (_x : Finsupp.{u2, u3} β M _inst_1) => β -> M) (Finsupp.hasCoeToFun.{u2, u3} β M _inst_1) (Finsupp.embDomain.{u1, u2, u3} α β M _inst_1 f v) a) (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M _inst_1))))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Function.Embedding.{succ u1, succ u2} α β) (v : Finsupp.{u1, u3} α M _inst_1) (a : β), (Not (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) a (Set.range.{u2, succ u1} β α (coeFn.{max 1 (succ u1) (succ u2), max (succ u1) (succ u2)} (Function.Embedding.{succ u1, succ u2} α β) (fun (_x : Function.Embedding.{succ u1, succ u2} α β) => α -> β) (Function.Embedding.hasCoeToFun.{succ u1, succ u2} α β) f)))) -> (Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (fun (_x : Finsupp.{u2, u3} β M _inst_1) => β -> M) (Finsupp.coeFun.{u2, u3} β M _inst_1) (Finsupp.embDomain.{u1, u2, u3} α β M _inst_1 f v) a) (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M _inst_1))))
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Function.Embedding.{succ u3, succ u2} α β) (v : Finsupp.{u3, u1} α M _inst_1) (a : β), (Not (Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) a (Set.range.{u2, succ u3} β α (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Function.Embedding.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (Function.Embedding.{succ u3, succ u2} α β) α β (Function.instEmbeddingLikeEmbedding.{succ u3, succ u2} α β)) f)))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M _inst_1) (Finsupp.embDomain.{u3, u2, u1} α β M _inst_1 f v) a) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) a) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) a) _inst_1)))
 Case conversion may be inaccurate. Consider using '#align finsupp.emb_domain_notin_range Finsupp.embDomain_notin_rangeₓ'. -/
@@ -1335,7 +1335,7 @@ theorem embDomain_inj {f : α ↪ β} {l₁ l₂ : α →₀ M} : embDomain f l
 
 /- warning: finsupp.emb_domain_eq_zero -> Finsupp.embDomain_eq_zero is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] {f : Function.Embedding.{succ u1, succ u2} α β} {l : Finsupp.{u1, u3} α M _inst_1}, Iff (Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.embDomain.{u1, u2, u3} α β M _inst_1 f l) (OfNat.ofNat.{max u2 u3} (Finsupp.{u2, u3} β M _inst_1) 0 (OfNat.mk.{max u2 u3} (Finsupp.{u2, u3} β M _inst_1) 0 (Zero.zero.{max u2 u3} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.hasZero.{u2, u3} β M _inst_1))))) (Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) l (OfNat.ofNat.{max u1 u3} (Finsupp.{u1, u3} α M _inst_1) 0 (OfNat.mk.{max u1 u3} (Finsupp.{u1, u3} α M _inst_1) 0 (Zero.zero.{max u1 u3} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.hasZero.{u1, u3} α M _inst_1)))))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] {f : Function.Embedding.{succ u1, succ u2} α β} {l : Finsupp.{u1, u3} α M _inst_1}, Iff (Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.embDomain.{u1, u2, u3} α β M _inst_1 f l) (OfNat.ofNat.{max u2 u3} (Finsupp.{u2, u3} β M _inst_1) 0 (OfNat.mk.{max u2 u3} (Finsupp.{u2, u3} β M _inst_1) 0 (Zero.zero.{max u2 u3} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.zero.{u2, u3} β M _inst_1))))) (Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) l (OfNat.ofNat.{max u1 u3} (Finsupp.{u1, u3} α M _inst_1) 0 (OfNat.mk.{max u1 u3} (Finsupp.{u1, u3} α M _inst_1) 0 (Zero.zero.{max u1 u3} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.zero.{u1, u3} α M _inst_1)))))
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Function.Embedding.{succ u3, succ u2} α β} {l : Finsupp.{u3, u1} α M _inst_1}, Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} β M _inst_1) (Finsupp.embDomain.{u3, u2, u1} α β M _inst_1 f l) (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} β M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} β M _inst_1) (Finsupp.zero.{u2, u1} β M _inst_1)))) (Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) l (OfNat.ofNat.{max u3 u1} (Finsupp.{u3, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u3 u1} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.zero.{u3, u1} α M _inst_1))))
 Case conversion may be inaccurate. Consider using '#align finsupp.emb_domain_eq_zero Finsupp.embDomain_eq_zeroₓ'. -/
@@ -1431,7 +1431,7 @@ def zipWith (f : M → N → P) (hf : f 0 0 = 0) (g₁ : α →₀ M) (g₂ : α
 
 /- warning: finsupp.zip_with_apply -> Finsupp.zipWith_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {P : Type.{u4}} [_inst_1 : Zero.{u2} M] [_inst_2 : Zero.{u3} N] [_inst_3 : Zero.{u4} P] {f : M -> N -> P} {hf : Eq.{succ u4} P (f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))} {g₁ : Finsupp.{u1, u2} α M _inst_1} {g₂ : Finsupp.{u1, u3} α N _inst_2} {a : α}, Eq.{succ u4} P (coeFn.{max (succ u1) (succ u4), max (succ u1) (succ u4)} (Finsupp.{u1, u4} α P _inst_3) (fun (_x : Finsupp.{u1, u4} α P _inst_3) => α -> P) (Finsupp.hasCoeToFun.{u1, u4} α P _inst_3) (Finsupp.zipWith.{u1, u2, u3, u4} α M N P _inst_1 _inst_2 _inst_3 f hf g₁ g₂) a) (f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) g₁ a) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N _inst_2) (fun (_x : Finsupp.{u1, u3} α N _inst_2) => α -> N) (Finsupp.hasCoeToFun.{u1, u3} α N _inst_2) g₂ a))
+  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {P : Type.{u4}} [_inst_1 : Zero.{u2} M] [_inst_2 : Zero.{u3} N] [_inst_3 : Zero.{u4} P] {f : M -> N -> P} {hf : Eq.{succ u4} P (f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))} {g₁ : Finsupp.{u1, u2} α M _inst_1} {g₂ : Finsupp.{u1, u3} α N _inst_2} {a : α}, Eq.{succ u4} P (coeFn.{max (succ u1) (succ u4), max (succ u1) (succ u4)} (Finsupp.{u1, u4} α P _inst_3) (fun (_x : Finsupp.{u1, u4} α P _inst_3) => α -> P) (Finsupp.coeFun.{u1, u4} α P _inst_3) (Finsupp.zipWith.{u1, u2, u3, u4} α M N P _inst_1 _inst_2 _inst_3 f hf g₁ g₂) a) (f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.coeFun.{u1, u2} α M _inst_1) g₁ a) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N _inst_2) (fun (_x : Finsupp.{u1, u3} α N _inst_2) => α -> N) (Finsupp.coeFun.{u1, u3} α N _inst_2) g₂ a))
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} {P : Type.{u4}} [_inst_1 : Zero.{u3} M] [_inst_2 : Zero.{u2} N] [_inst_3 : Zero.{u4} P] {f : M -> N -> P} {hf : Eq.{succ u4} P (f (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1)) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) (OfNat.ofNat.{u4} P 0 (Zero.toOfNat0.{u4} P _inst_3))} {g₁ : Finsupp.{u1, u3} α M _inst_1} {g₂ : Finsupp.{u1, u2} α N _inst_2} {a : α}, Eq.{succ u4} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => P) a) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (Finsupp.{u1, u4} α P _inst_3) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => P) _x) (Finsupp.funLike.{u1, u4} α P _inst_3) (Finsupp.zipWith.{u1, u3, u2, u4} α M N P _inst_1 _inst_2 _inst_3 f hf g₁ g₂) a) (f (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u1, u3} α M _inst_1) g₁ a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α N _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => N) _x) (Finsupp.funLike.{u1, u2} α N _inst_2) g₂ a))
 Case conversion may be inaccurate. Consider using '#align finsupp.zip_with_apply Finsupp.zipWith_applyₓ'. -/
@@ -1466,7 +1466,7 @@ instance : Add (α →₀ M) :=
 
 /- warning: finsupp.coe_add -> Finsupp.coe_add is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), Eq.{succ (max u1 u2)} (α -> M) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.hasAdd.{u1, u2} α M _inst_1)) f g)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (α -> M) (α -> M) (α -> M) (instHAdd.{max u1 u2} (α -> M) (Pi.instAdd.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => AddZeroClass.toHasAdd.{u2} M _inst_1))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) g))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), Eq.{succ (max u1 u2)} (α -> M) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) f g)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (α -> M) (α -> M) (α -> M) (instHAdd.{max u1 u2} (α -> M) (Pi.instAdd.{u1, u2} α (fun (ᾰ : α) => M) (fun (i : α) => AddZeroClass.toHasAdd.{u2} M _inst_1))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) g))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (g : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) f g)) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (instHAdd.{max u2 u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (Pi.instAdd.{u2, u1} α (fun (ᾰ : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (fun (i : α) => AddZeroClass.toAdd.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) _inst_1))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) g))
 Case conversion may be inaccurate. Consider using '#align finsupp.coe_add Finsupp.coe_addₓ'. -/
@@ -1477,7 +1477,7 @@ theorem coe_add (f g : α →₀ M) : ⇑(f + g) = f + g :=
 
 /- warning: finsupp.add_apply -> Finsupp.add_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (g₁ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (g₂ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (a : α), Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.hasAdd.{u1, u2} α M _inst_1)) g₁ g₂) a) (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toHasAdd.{u2} M _inst_1)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) g₁ a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) g₂ a))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (g₁ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (g₂ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (a : α), Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) g₁ g₂) a) (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toHasAdd.{u2} M _inst_1)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) g₁ a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) g₂ a))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] (g₁ : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (g₂ : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) g₁ g₂) a) (HAdd.hAdd.{u1, u1, u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (instHAdd.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddZeroClass.toAdd.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) g₁ a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) g₂ a))
 Case conversion may be inaccurate. Consider using '#align finsupp.add_apply Finsupp.add_applyₓ'. -/
@@ -1487,7 +1487,7 @@ theorem add_apply (g₁ g₂ : α →₀ M) (a : α) : (g₁ + g₂) a = g₁ a
 
 /- warning: finsupp.support_add -> Finsupp.support_add is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] {g₁ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)} {g₂ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.hasAdd.{u1, u2} α M _inst_1)) g₁ g₂)) (Union.union.{u1} (Finset.{u1} α) (Finset.hasUnion.{u1} α (fun (a : α) (b : α) => _inst_2 a b)) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) g₁) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) g₂))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] {g₁ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)} {g₂ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) g₁ g₂)) (Union.union.{u1} (Finset.{u1} α) (Finset.hasUnion.{u1} α (fun (a : α) (b : α) => _inst_2 a b)) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) g₁) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) g₂))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] {g₁ : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)} {g₂ : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)}, HasSubset.Subset.{u2} (Finset.{u2} α) (Finset.instHasSubsetFinset.{u2} α) (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) g₁ g₂)) (Union.union.{u2} (Finset.{u2} α) (Finset.instUnionFinset.{u2} α (fun (a : α) (b : α) => _inst_2 a b)) (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) g₁) (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) g₂))
 Case conversion may be inaccurate. Consider using '#align finsupp.support_add Finsupp.support_addₓ'. -/
@@ -1498,7 +1498,7 @@ theorem support_add [DecidableEq α] {g₁ g₂ : α →₀ M} :
 
 /- warning: finsupp.support_add_eq -> Finsupp.support_add_eq is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] {g₁ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)} {g₂ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)}, (Disjoint.{u1} (Finset.{u1} α) (Finset.partialOrder.{u1} α) (Finset.orderBot.{u1} α) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) g₁) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) g₂)) -> (Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.hasAdd.{u1, u2} α M _inst_1)) g₁ g₂)) (Union.union.{u1} (Finset.{u1} α) (Finset.hasUnion.{u1} α (fun (a : α) (b : α) => _inst_2 a b)) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) g₁) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) g₂)))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] {g₁ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)} {g₂ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)}, (Disjoint.{u1} (Finset.{u1} α) (Finset.partialOrder.{u1} α) (Finset.orderBot.{u1} α) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) g₁) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) g₂)) -> (Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) g₁ g₂)) (Union.union.{u1} (Finset.{u1} α) (Finset.hasUnion.{u1} α (fun (a : α) (b : α) => _inst_2 a b)) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) g₁) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) g₂)))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] {g₁ : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)} {g₂ : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)}, (Disjoint.{u2} (Finset.{u2} α) (Finset.partialOrder.{u2} α) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u2} α) (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) g₁) (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) g₂)) -> (Eq.{succ u2} (Finset.{u2} α) (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) g₁ g₂)) (Union.union.{u2} (Finset.{u2} α) (Finset.instUnionFinset.{u2} α (fun (a : α) (b : α) => _inst_2 a b)) (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) g₁) (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) g₂)))
 Case conversion may be inaccurate. Consider using '#align finsupp.support_add_eq Finsupp.support_add_eqₓ'. -/
@@ -1517,7 +1517,7 @@ theorem support_add_eq [DecidableEq α] {g₁ g₂ : α →₀ M} (h : Disjoint
 
 /- warning: finsupp.single_add -> Finsupp.single_add is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (a : α) (b₁ : M) (b₂ : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toHasAdd.{u2} M _inst_1)) b₁ b₂)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.hasAdd.{u1, u2} α M _inst_1)) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b₁) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b₂))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (a : α) (b₁ : M) (b₂ : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toHasAdd.{u2} M _inst_1)) b₁ b₂)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b₁) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b₂))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] (a : α) (b₁ : M) (b₂ : M), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.single.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a (HAdd.hAdd.{u1, u1, u1} M M M (instHAdd.{u1} M (AddZeroClass.toAdd.{u1} M _inst_1)) b₁ b₂)) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) (Finsupp.single.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a b₁) (Finsupp.single.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a b₂))
 Case conversion may be inaccurate. Consider using '#align finsupp.single_add Finsupp.single_addₓ'. -/
@@ -1577,7 +1577,7 @@ noncomputable def coeFnAddHom : (α →₀ M) →+ α → M
 
 /- warning: finsupp.update_eq_single_add_erase -> Finsupp.update_eq_single_add_erase is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (a : α) (b : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.update.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) f a b) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.hasAdd.{u1, u2} α M _inst_1)) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a f))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (a : α) (b : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.update.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) f a b) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a f))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (a : α) (b : M), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.update.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) f a b) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) (Finsupp.single.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a b) (Finsupp.erase.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a f))
 Case conversion may be inaccurate. Consider using '#align finsupp.update_eq_single_add_erase Finsupp.update_eq_single_add_eraseₓ'. -/
@@ -1592,7 +1592,7 @@ theorem update_eq_single_add_erase (f : α →₀ M) (a : α) (b : M) :
 
 /- warning: finsupp.update_eq_erase_add_single -> Finsupp.update_eq_erase_add_single is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (a : α) (b : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.update.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) f a b) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.hasAdd.{u1, u2} α M _inst_1)) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a f) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (a : α) (b : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.update.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) f a b) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a f) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (a : α) (b : M), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.update.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) f a b) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) (Finsupp.erase.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a f) (Finsupp.single.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a b))
 Case conversion may be inaccurate. Consider using '#align finsupp.update_eq_erase_add_single Finsupp.update_eq_erase_add_singleₓ'. -/
@@ -1607,7 +1607,7 @@ theorem update_eq_erase_add_single (f : α →₀ M) (a : α) (b : M) :
 
 /- warning: finsupp.single_add_erase -> Finsupp.single_add_erase is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (a : α) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.hasAdd.{u1, u2} α M _inst_1)) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) f a)) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a f)) f
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (a : α) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) f a)) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a f)) f
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] (a : α) (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddZeroClass.toZero.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1)) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddZeroClass.toZero.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddZeroClass.toZero.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddZeroClass.toZero.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1)) (Finsupp.add.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1)) (Finsupp.single.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddZeroClass.toZero.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1) a (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) f a)) (Finsupp.erase.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a f)) f
 Case conversion may be inaccurate. Consider using '#align finsupp.single_add_erase Finsupp.single_add_eraseₓ'. -/
@@ -1617,7 +1617,7 @@ theorem single_add_erase (a : α) (f : α →₀ M) : single a (f a) + f.erase
 
 /- warning: finsupp.erase_add_single -> Finsupp.erase_add_single is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (a : α) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.hasAdd.{u1, u2} α M _inst_1)) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a f) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) f a))) f
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (a : α) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a f) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) f a))) f
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] (a : α) (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddZeroClass.toZero.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) (Finsupp.erase.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a f) (Finsupp.single.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddZeroClass.toZero.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1) a (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) f a))) f
 Case conversion may be inaccurate. Consider using '#align finsupp.erase_add_single Finsupp.erase_add_singleₓ'. -/
@@ -1627,7 +1627,7 @@ theorem erase_add_single (a : α) (f : α →₀ M) : f.eraseₓ a + single a (f
 
 /- warning: finsupp.erase_add -> Finsupp.erase_add is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (a : α) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (f' : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.hasAdd.{u1, u2} α M _inst_1)) f f')) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.hasAdd.{u1, u2} α M _inst_1)) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a f) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a f'))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (a : α) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (f' : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) f f')) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a f) (Finsupp.erase.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a f'))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] (a : α) (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (f' : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.erase.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) f f')) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) (Finsupp.erase.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a f) (Finsupp.erase.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a f'))
 Case conversion may be inaccurate. Consider using '#align finsupp.erase_add Finsupp.erase_addₓ'. -/
@@ -1656,7 +1656,7 @@ def eraseAddHom (a : α) : (α →₀ M) →+ α →₀ M
 
 /- warning: finsupp.induction -> Finsupp.induction is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] {p : (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> Prop} (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), (p (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.hasZero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))))) -> (forall (a : α) (b : M) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), (Not (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) f))) -> (Ne.{succ u2} M b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M _inst_1))))) -> (p f) -> (p (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.hasAdd.{u1, u2} α M _inst_1)) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b) f))) -> (p f)
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] {p : (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> Prop} (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), (p (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))))) -> (forall (a : α) (b : M) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), (Not (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) f))) -> (Ne.{succ u2} M b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M _inst_1))))) -> (p f) -> (p (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b) f))) -> (p f)
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] {p : (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) -> Prop} (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), (p (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.zero.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1))))) -> (forall (a : α) (b : M) (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), (Not (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) a (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) f))) -> (Ne.{succ u1} M b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M (AddZeroClass.toZero.{u1} M _inst_1)))) -> (p f) -> (p (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) (Finsupp.single.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a b) f))) -> (p f)
 Case conversion may be inaccurate. Consider using '#align finsupp.induction Finsupp.inductionₓ'. -/
@@ -1680,7 +1680,7 @@ protected theorem induction {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 :
 
 /- warning: finsupp.induction₂ -> Finsupp.induction₂ is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] {p : (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> Prop} (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), (p (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.hasZero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))))) -> (forall (a : α) (b : M) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), (Not (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) f))) -> (Ne.{succ u2} M b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M _inst_1))))) -> (p f) -> (p (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.hasAdd.{u1, u2} α M _inst_1)) f (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b)))) -> (p f)
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] {p : (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> Prop} (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), (p (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))))) -> (forall (a : α) (b : M) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), (Not (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) f))) -> (Ne.{succ u2} M b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M _inst_1))))) -> (p f) -> (p (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) f (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b)))) -> (p f)
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] {p : (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) -> Prop} (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), (p (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.zero.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1))))) -> (forall (a : α) (b : M) (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), (Not (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) a (Finsupp.support.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) f))) -> (Ne.{succ u1} M b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M (AddZeroClass.toZero.{u1} M _inst_1)))) -> (p f) -> (p (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) f (Finsupp.single.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a b)))) -> (p f)
 Case conversion may be inaccurate. Consider using '#align finsupp.induction₂ Finsupp.induction₂ₓ'. -/
@@ -1703,7 +1703,7 @@ theorem induction₂ {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 : p 0)
 
 /- warning: finsupp.induction_linear -> Finsupp.induction_linear is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] {p : (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> Prop} (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), (p (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.hasZero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))))) -> (forall (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), (p f) -> (p g) -> (p (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.hasAdd.{u1, u2} α M _inst_1)) f g))) -> (forall (a : α) (b : M), p (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b)) -> (p f)
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] {p : (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) -> Prop} (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), (p (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)))))) -> (forall (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), (p f) -> (p g) -> (p (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) f g))) -> (forall (a : α) (b : M), p (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) a b)) -> (p f)
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] {p : (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) -> Prop} (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), (p (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.zero.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1))))) -> (forall (f : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (g : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), (p f) -> (p g) -> (p (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M _inst_1)) f g))) -> (forall (a : α) (b : M), p (Finsupp.single.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) a b)) -> (p f)
 Case conversion may be inaccurate. Consider using '#align finsupp.induction_linear Finsupp.induction_linearₓ'. -/
@@ -1788,7 +1788,7 @@ theorem mulHom_ext' [MulOneClass N] {f g : Multiplicative (α →₀ M) →* N}
 
 /- warning: finsupp.map_range_add -> Finsupp.mapRange_add is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : AddZeroClass.{u3} N] {f : M -> N} {hf : Eq.{succ u3} N (f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M _inst_1))))) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N (AddZeroClass.toHasZero.{u3} N _inst_2))))}, (forall (x : M) (y : M), Eq.{succ u3} N (f (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toHasAdd.{u2} M _inst_1)) x y)) (HAdd.hAdd.{u3, u3, u3} N N N (instHAdd.{u3} N (AddZeroClass.toHasAdd.{u3} N _inst_2)) (f x) (f y))) -> (forall (v₁ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (v₂ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N _inst_2)) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M _inst_1) (AddZeroClass.toHasZero.{u3} N _inst_2) f hf (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.hasAdd.{u1, u2} α M _inst_1)) v₁ v₂)) (HAdd.hAdd.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N _inst_2)) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N _inst_2)) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N _inst_2)) (instHAdd.{max u1 u3} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N _inst_2)) (Finsupp.hasAdd.{u1, u3} α N _inst_2)) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M _inst_1) (AddZeroClass.toHasZero.{u3} N _inst_2) f hf v₁) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M _inst_1) (AddZeroClass.toHasZero.{u3} N _inst_2) f hf v₂)))
+  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : AddZeroClass.{u3} N] {f : M -> N} {hf : Eq.{succ u3} N (f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M _inst_1))))) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N (AddZeroClass.toHasZero.{u3} N _inst_2))))}, (forall (x : M) (y : M), Eq.{succ u3} N (f (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toHasAdd.{u2} M _inst_1)) x y)) (HAdd.hAdd.{u3, u3, u3} N N N (instHAdd.{u3} N (AddZeroClass.toHasAdd.{u3} N _inst_2)) (f x) (f y))) -> (forall (v₁ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (v₂ : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N _inst_2)) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M _inst_1) (AddZeroClass.toHasZero.{u3} N _inst_2) f hf (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) v₁ v₂)) (HAdd.hAdd.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N _inst_2)) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N _inst_2)) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N _inst_2)) (instHAdd.{max u1 u3} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N _inst_2)) (Finsupp.add.{u1, u3} α N _inst_2)) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M _inst_1) (AddZeroClass.toHasZero.{u3} N _inst_2) f hf v₁) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M _inst_1) (AddZeroClass.toHasZero.{u3} N _inst_2) f hf v₂)))
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : AddZeroClass.{u3} N] {f : M -> N} {hf : Eq.{succ u3} N (f (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (AddZeroClass.toZero.{u2} M _inst_1)))) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N (AddZeroClass.toZero.{u3} N _inst_2)))}, (forall (x : M) (y : M), Eq.{succ u3} N (f (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toAdd.{u2} M _inst_1)) x y)) (HAdd.hAdd.{u3, u3, u3} N N N (instHAdd.{u3} N (AddZeroClass.toAdd.{u3} N _inst_2)) (f x) (f y))) -> (forall (v₁ : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (v₂ : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} N _inst_2)) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u3} N _inst_2) f hf (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) v₁ v₂)) (HAdd.hAdd.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} N _inst_2)) (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} N _inst_2)) (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} N _inst_2)) (instHAdd.{max u1 u3} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} N _inst_2)) (Finsupp.add.{u1, u3} α N _inst_2)) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u3} N _inst_2) f hf v₁) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u3} N _inst_2) f hf v₂)))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range_add Finsupp.mapRange_addₓ'. -/
@@ -1800,7 +1800,7 @@ theorem mapRange_add [AddZeroClass N] {f : M → N} {hf : f 0 = 0}
 
 /- warning: finsupp.map_range_add' -> Finsupp.mapRange_add' is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddZeroClass.{u3} M] [_inst_2 : AddZeroClass.{u4} N] [_inst_3 : AddMonoidHomClass.{u2, u3, u4} β M N _inst_1 _inst_2] {f : β} (v₁ : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (v₂ : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => M -> N) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β M (fun (_x : M) => N) (AddHomClass.toFunLike.{u2, u3, u4} β M N (AddZeroClass.toHasAdd.{u3} M _inst_1) (AddZeroClass.toHasAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3))) f) (map_zero.{u3, u4, u2} M N β (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3) f) (HAdd.hAdd.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (instHAdd.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.hasAdd.{u1, u3} α M _inst_1)) v₁ v₂)) (HAdd.hAdd.{max u1 u4, max u1 u4, max u1 u4} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (instHAdd.{max u1 u4} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (Finsupp.hasAdd.{u1, u4} α N _inst_2)) (Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => M -> N) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β M (fun (_x : M) => N) (AddHomClass.toFunLike.{u2, u3, u4} β M N (AddZeroClass.toHasAdd.{u3} M _inst_1) (AddZeroClass.toHasAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3))) f) (map_zero.{u3, u4, u2} M N β (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3) f) v₁) (Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => M -> N) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β M (fun (_x : M) => N) (AddHomClass.toFunLike.{u2, u3, u4} β M N (AddZeroClass.toHasAdd.{u3} M _inst_1) (AddZeroClass.toHasAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3))) f) (map_zero.{u3, u4, u2} M N β (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3) f) v₂))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddZeroClass.{u3} M] [_inst_2 : AddZeroClass.{u4} N] [_inst_3 : AddMonoidHomClass.{u2, u3, u4} β M N _inst_1 _inst_2] {f : β} (v₁ : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (v₂ : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => M -> N) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β M (fun (_x : M) => N) (AddHomClass.toFunLike.{u2, u3, u4} β M N (AddZeroClass.toHasAdd.{u3} M _inst_1) (AddZeroClass.toHasAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3))) f) (map_zero.{u3, u4, u2} M N β (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3) f) (HAdd.hAdd.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (instHAdd.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.add.{u1, u3} α M _inst_1)) v₁ v₂)) (HAdd.hAdd.{max u1 u4, max u1 u4, max u1 u4} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (instHAdd.{max u1 u4} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N _inst_2)) (Finsupp.add.{u1, u4} α N _inst_2)) (Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => M -> N) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β M (fun (_x : M) => N) (AddHomClass.toFunLike.{u2, u3, u4} β M N (AddZeroClass.toHasAdd.{u3} M _inst_1) (AddZeroClass.toHasAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3))) f) (map_zero.{u3, u4, u2} M N β (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3) f) v₁) (Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => M -> N) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β M (fun (_x : M) => N) (AddHomClass.toFunLike.{u2, u3, u4} β M N (AddZeroClass.toHasAdd.{u3} M _inst_1) (AddZeroClass.toHasAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3))) f) (map_zero.{u3, u4, u2} M N β (AddZeroClass.toHasZero.{u3} M _inst_1) (AddZeroClass.toHasZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β M N _inst_1 _inst_2 _inst_3) f) v₂))
 but is expected to have type
   forall {α : Type.{u1}} {β : Type.{u3}} {M : Type.{u2}} {N : Type.{u4}} [_inst_1 : AddZeroClass.{u2} M] [_inst_2 : AddZeroClass.{u4} N] [_inst_3 : AddMonoidHomClass.{u3, u2, u4} β M N _inst_1 _inst_2] {f : β} (v₁ : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (v₂ : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (Finsupp.mapRange.{u1, u2, u4} α M N (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (FunLike.coe.{succ u3, succ u2, succ u4} β M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{u3, u2, u4} β M N (AddZeroClass.toAdd.{u2} M _inst_1) (AddZeroClass.toAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3)) f) (map_zero.{u4, u2, u3} M N β (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3) f) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} α M _inst_1)) v₁ v₂)) (HAdd.hAdd.{max u1 u4, max u1 u4, max u1 u4} (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (instHAdd.{max u1 u4} (Finsupp.{u1, u4} α N (AddZeroClass.toZero.{u4} N _inst_2)) (Finsupp.add.{u1, u4} α N _inst_2)) (Finsupp.mapRange.{u1, u2, u4} α M N (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (FunLike.coe.{succ u3, succ u2, succ u4} β M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{u3, u2, u4} β M N (AddZeroClass.toAdd.{u2} M _inst_1) (AddZeroClass.toAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3)) f) (map_zero.{u4, u2, u3} M N β (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3) f) v₁) (Finsupp.mapRange.{u1, u2, u4} α M N (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (FunLike.coe.{succ u3, succ u2, succ u4} β M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{u3, u2, u4} β M N (AddZeroClass.toAdd.{u2} M _inst_1) (AddZeroClass.toAdd.{u4} N _inst_2) (AddMonoidHomClass.toAddHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3)) f) (map_zero.{u4, u2, u3} M N β (AddZeroClass.toZero.{u2} M _inst_1) (AddZeroClass.toZero.{u4} N _inst_2) (AddMonoidHomClass.toZeroHomClass.{u3, u2, u4} β M N _inst_1 _inst_2 _inst_3) f) v₂))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range_add' Finsupp.mapRange_add'ₓ'. -/
@@ -1831,7 +1831,7 @@ def embDomain.addMonoidHom (f : α ↪ β) : (α →₀ M) →+ β →₀ M
 
 /- warning: finsupp.emb_domain_add -> Finsupp.embDomain_add is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddZeroClass.{u3} M] (f : Function.Embedding.{succ u1, succ u2} α β) (v : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (w : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.embDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f (HAdd.hAdd.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (instHAdd.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.hasAdd.{u1, u3} α M _inst_1)) v w)) (HAdd.hAdd.{max u2 u3, max u2 u3, max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (instHAdd.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.hasAdd.{u2, u3} β M _inst_1)) (Finsupp.embDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f v) (Finsupp.embDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f w))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddZeroClass.{u3} M] (f : Function.Embedding.{succ u1, succ u2} α β) (v : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (w : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.embDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f (HAdd.hAdd.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (instHAdd.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.add.{u1, u3} α M _inst_1)) v w)) (HAdd.hAdd.{max u2 u3, max u2 u3, max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (instHAdd.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.add.{u2, u3} β M _inst_1)) (Finsupp.embDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f v) (Finsupp.embDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f w))
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] (f : Function.Embedding.{succ u3, succ u2} α β) (v : Finsupp.{u3, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (w : Finsupp.{u3, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} β M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.embDomain.{u3, u2, u1} α β M (AddZeroClass.toZero.{u1} M _inst_1) f (HAdd.hAdd.{max u3 u1, max u3 u1, max u3 u1} (Finsupp.{u3, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u3, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u3, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u3 u1} (Finsupp.{u3, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M _inst_1)) v w)) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} β M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} β M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M _inst_1)) (Finsupp.embDomain.{u3, u2, u1} α β M (AddZeroClass.toZero.{u1} M _inst_1) f v) (Finsupp.embDomain.{u3, u2, u1} α β M (AddZeroClass.toZero.{u1} M _inst_1) f w))
 Case conversion may be inaccurate. Consider using '#align finsupp.emb_domain_add Finsupp.embDomain_addₓ'. -/
@@ -1872,9 +1872,9 @@ instance [NegZeroClass G] : Neg (α →₀ G) :=
 
 /- warning: finsupp.coe_neg -> Finsupp.coe_neg is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : NegZeroClass.{u2} G] (g : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)), Eq.{succ (max u1 u2)} (α -> G) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (fun (_x : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) => α -> G) (Finsupp.hasCoeToFun.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (Finsupp.hasNeg.{u1, u2} α G _inst_1) g)) (Neg.neg.{max u1 u2} (α -> G) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => G) (fun (i : α) => NegZeroClass.toHasNeg.{u2} G _inst_1)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (fun (_x : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) => α -> G) (Finsupp.hasCoeToFun.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) g))
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : NegZeroClass.{u2} G] (g : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)), Eq.{succ (max u1 u2)} (α -> G) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (fun (_x : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) => α -> G) (Finsupp.coeFun.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (Finsupp.neg.{u1, u2} α G _inst_1) g)) (Neg.neg.{max u1 u2} (α -> G) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => G) (fun (i : α) => NegZeroClass.toHasNeg.{u2} G _inst_1)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (fun (_x : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) => α -> G) (Finsupp.coeFun.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) g))
 but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : NegZeroClass.{u2} G] (g : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)), Eq.{max (succ u1) (succ u2)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) (Finsupp.instNegFinsuppToZero.{u1, u2} α G _inst_1) g)) (Neg.neg.{max u1 u2} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (fun (i : α) => NegZeroClass.toNeg.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) i) _inst_1)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) g))
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : NegZeroClass.{u2} G] (g : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)), Eq.{max (succ u1) (succ u2)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) (Finsupp.neg.{u1, u2} α G _inst_1) g)) (Neg.neg.{max u1 u2} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (Pi.instNeg.{u1, u2} α (fun (ᾰ : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (fun (i : α) => NegZeroClass.toNeg.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) i) _inst_1)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) g))
 Case conversion may be inaccurate. Consider using '#align finsupp.coe_neg Finsupp.coe_negₓ'. -/
 @[simp]
 theorem coe_neg [NegZeroClass G] (g : α →₀ G) : ⇑(-g) = -g :=
@@ -1883,9 +1883,9 @@ theorem coe_neg [NegZeroClass G] (g : α →₀ G) : ⇑(-g) = -g :=
 
 /- warning: finsupp.neg_apply -> Finsupp.neg_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : NegZeroClass.{u2} G] (g : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (a : α), Eq.{succ u2} G (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (fun (_x : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) => α -> G) (Finsupp.hasCoeToFun.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (Finsupp.hasNeg.{u1, u2} α G _inst_1) g) a) (Neg.neg.{u2} G (NegZeroClass.toHasNeg.{u2} G _inst_1) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (fun (_x : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) => α -> G) (Finsupp.hasCoeToFun.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) g a))
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : NegZeroClass.{u2} G] (g : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (a : α), Eq.{succ u2} G (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (fun (_x : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) => α -> G) (Finsupp.coeFun.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (Finsupp.neg.{u1, u2} α G _inst_1) g) a) (Neg.neg.{u2} G (NegZeroClass.toHasNeg.{u2} G _inst_1) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (fun (_x : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) => α -> G) (Finsupp.coeFun.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) g a))
 but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : NegZeroClass.{u2} G] (g : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) (Finsupp.instNegFinsuppToZero.{u1, u2} α G _inst_1) g) a) (Neg.neg.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (NegZeroClass.toNeg.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) _inst_1) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) g a))
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : NegZeroClass.{u2} G] (g : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) (Finsupp.neg.{u1, u2} α G _inst_1) g) a) (Neg.neg.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (NegZeroClass.toNeg.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) _inst_1) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G _inst_1)) g a))
 Case conversion may be inaccurate. Consider using '#align finsupp.neg_apply Finsupp.neg_applyₓ'. -/
 theorem neg_apply [NegZeroClass G] (g : α →₀ G) (a : α) : (-g) a = -g a :=
   rfl
@@ -1893,9 +1893,9 @@ theorem neg_apply [NegZeroClass G] (g : α →₀ G) (a : α) : (-g) a = -g a :=
 
 /- warning: finsupp.map_range_neg -> Finsupp.mapRange_neg is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} {H : Type.{u3}} [_inst_1 : NegZeroClass.{u2} G] [_inst_2 : NegZeroClass.{u3} H] {f : G -> H} {hf : Eq.{succ u3} H (f (OfNat.ofNat.{u2} G 0 (OfNat.mk.{u2} G 0 (Zero.zero.{u2} G (NegZeroClass.toHasZero.{u2} G _inst_1))))) (OfNat.ofNat.{u3} H 0 (OfNat.mk.{u3} H 0 (Zero.zero.{u3} H (NegZeroClass.toHasZero.{u3} H _inst_2))))}, (forall (x : G), Eq.{succ u3} H (f (Neg.neg.{u2} G (NegZeroClass.toHasNeg.{u2} G _inst_1) x)) (Neg.neg.{u3} H (NegZeroClass.toHasNeg.{u3} H _inst_2) (f x))) -> (forall (v : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α H (NegZeroClass.toHasZero.{u3} H _inst_2)) (Finsupp.mapRange.{u1, u2, u3} α G H (NegZeroClass.toHasZero.{u2} G _inst_1) (NegZeroClass.toHasZero.{u3} H _inst_2) f hf (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (Finsupp.hasNeg.{u1, u2} α G _inst_1) v)) (Neg.neg.{max u1 u3} (Finsupp.{u1, u3} α H (NegZeroClass.toHasZero.{u3} H _inst_2)) (Finsupp.hasNeg.{u1, u3} α H _inst_2) (Finsupp.mapRange.{u1, u2, u3} α G H (NegZeroClass.toHasZero.{u2} G _inst_1) (NegZeroClass.toHasZero.{u3} H _inst_2) f hf v)))
+  forall {α : Type.{u1}} {G : Type.{u2}} {H : Type.{u3}} [_inst_1 : NegZeroClass.{u2} G] [_inst_2 : NegZeroClass.{u3} H] {f : G -> H} {hf : Eq.{succ u3} H (f (OfNat.ofNat.{u2} G 0 (OfNat.mk.{u2} G 0 (Zero.zero.{u2} G (NegZeroClass.toHasZero.{u2} G _inst_1))))) (OfNat.ofNat.{u3} H 0 (OfNat.mk.{u3} H 0 (Zero.zero.{u3} H (NegZeroClass.toHasZero.{u3} H _inst_2))))}, (forall (x : G), Eq.{succ u3} H (f (Neg.neg.{u2} G (NegZeroClass.toHasNeg.{u2} G _inst_1) x)) (Neg.neg.{u3} H (NegZeroClass.toHasNeg.{u3} H _inst_2) (f x))) -> (forall (v : Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α H (NegZeroClass.toHasZero.{u3} H _inst_2)) (Finsupp.mapRange.{u1, u2, u3} α G H (NegZeroClass.toHasZero.{u2} G _inst_1) (NegZeroClass.toHasZero.{u3} H _inst_2) f hf (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toHasZero.{u2} G _inst_1)) (Finsupp.neg.{u1, u2} α G _inst_1) v)) (Neg.neg.{max u1 u3} (Finsupp.{u1, u3} α H (NegZeroClass.toHasZero.{u3} H _inst_2)) (Finsupp.neg.{u1, u3} α H _inst_2) (Finsupp.mapRange.{u1, u2, u3} α G H (NegZeroClass.toHasZero.{u2} G _inst_1) (NegZeroClass.toHasZero.{u3} H _inst_2) f hf v)))
 but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u3}} {H : Type.{u2}} [_inst_1 : NegZeroClass.{u3} G] [_inst_2 : NegZeroClass.{u2} H] {f : G -> H} {hf : Eq.{succ u2} H (f (OfNat.ofNat.{u3} G 0 (Zero.toOfNat0.{u3} G (NegZeroClass.toZero.{u3} G _inst_1)))) (OfNat.ofNat.{u2} H 0 (Zero.toOfNat0.{u2} H (NegZeroClass.toZero.{u2} H _inst_2)))}, (forall (x : G), Eq.{succ u2} H (f (Neg.neg.{u3} G (NegZeroClass.toNeg.{u3} G _inst_1) x)) (Neg.neg.{u2} H (NegZeroClass.toNeg.{u2} H _inst_2) (f x))) -> (forall (v : Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G _inst_1)), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H _inst_2)) (Finsupp.mapRange.{u1, u3, u2} α G H (NegZeroClass.toZero.{u3} G _inst_1) (NegZeroClass.toZero.{u2} H _inst_2) f hf (Neg.neg.{max u1 u3} (Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G _inst_1)) (Finsupp.instNegFinsuppToZero.{u1, u3} α G _inst_1) v)) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H _inst_2)) (Finsupp.instNegFinsuppToZero.{u1, u2} α H _inst_2) (Finsupp.mapRange.{u1, u3, u2} α G H (NegZeroClass.toZero.{u3} G _inst_1) (NegZeroClass.toZero.{u2} H _inst_2) f hf v)))
+  forall {α : Type.{u1}} {G : Type.{u3}} {H : Type.{u2}} [_inst_1 : NegZeroClass.{u3} G] [_inst_2 : NegZeroClass.{u2} H] {f : G -> H} {hf : Eq.{succ u2} H (f (OfNat.ofNat.{u3} G 0 (Zero.toOfNat0.{u3} G (NegZeroClass.toZero.{u3} G _inst_1)))) (OfNat.ofNat.{u2} H 0 (Zero.toOfNat0.{u2} H (NegZeroClass.toZero.{u2} H _inst_2)))}, (forall (x : G), Eq.{succ u2} H (f (Neg.neg.{u3} G (NegZeroClass.toNeg.{u3} G _inst_1) x)) (Neg.neg.{u2} H (NegZeroClass.toNeg.{u2} H _inst_2) (f x))) -> (forall (v : Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G _inst_1)), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H _inst_2)) (Finsupp.mapRange.{u1, u3, u2} α G H (NegZeroClass.toZero.{u3} G _inst_1) (NegZeroClass.toZero.{u2} H _inst_2) f hf (Neg.neg.{max u1 u3} (Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G _inst_1)) (Finsupp.neg.{u1, u3} α G _inst_1) v)) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H _inst_2)) (Finsupp.neg.{u1, u2} α H _inst_2) (Finsupp.mapRange.{u1, u3, u2} α G H (NegZeroClass.toZero.{u3} G _inst_1) (NegZeroClass.toZero.{u2} H _inst_2) f hf v)))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range_neg Finsupp.mapRange_negₓ'. -/
 theorem mapRange_neg [NegZeroClass G] [NegZeroClass H] {f : G → H} {hf : f 0 = 0}
     (hf' : ∀ x, f (-x) = -f x) (v : α →₀ G) : mapRange f hf (-v) = -mapRange f hf v :=
@@ -1904,9 +1904,9 @@ theorem mapRange_neg [NegZeroClass G] [NegZeroClass H] {f : G → H} {hf : f 0 =
 
 /- warning: finsupp.map_range_neg' -> Finsupp.mapRange_neg' is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u3}} {H : Type.{u4}} [_inst_1 : AddGroup.{u3} G] [_inst_2 : SubtractionMonoid.{u4} H] [_inst_3 : AddMonoidHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))] {f : β} (v : Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) (Neg.neg.{max u1 u3} (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (Finsupp.hasNeg.{u1, u3} α G (SubNegZeroMonoid.toNegZeroClass.{u3} G (SubtractionMonoid.toSubNegZeroMonoid.{u3} G (AddGroup.toSubtractionMonoid.{u3} G _inst_1)))) v)) (Neg.neg.{max u1 u4} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.hasNeg.{u1, u4} α H (SubNegZeroMonoid.toNegZeroClass.{u4} H (SubtractionMonoid.toSubNegZeroMonoid.{u4} H _inst_2))) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) v))
+  forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u3}} {H : Type.{u4}} [_inst_1 : AddGroup.{u3} G] [_inst_2 : SubtractionMonoid.{u4} H] [_inst_3 : AddMonoidHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))] {f : β} (v : Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) (Neg.neg.{max u1 u3} (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (Finsupp.neg.{u1, u3} α G (SubNegZeroMonoid.toNegZeroClass.{u3} G (SubtractionMonoid.toSubNegZeroMonoid.{u3} G (AddGroup.toSubtractionMonoid.{u3} G _inst_1)))) v)) (Neg.neg.{max u1 u4} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.neg.{u1, u4} α H (SubNegZeroMonoid.toNegZeroClass.{u4} H (SubtractionMonoid.toSubNegZeroMonoid.{u4} H _inst_2))) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) v))
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u4}} {H : Type.{u3}} [_inst_1 : AddGroup.{u4} G] [_inst_2 : SubtractionMonoid.{u3} H] [_inst_3 : AddMonoidHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))] {f : β} (v : Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) (Neg.neg.{max u1 u4} (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.instNegFinsuppToZero.{u1, u4} α G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1)))) v)) (Neg.neg.{max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.instNegFinsuppToZero.{u1, u3} α H (SubNegZeroMonoid.toNegZeroClass.{u3} H (SubtractionMonoid.toSubNegZeroMonoid.{u3} H _inst_2))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) v))
+  forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u4}} {H : Type.{u3}} [_inst_1 : AddGroup.{u4} G] [_inst_2 : SubtractionMonoid.{u3} H] [_inst_3 : AddMonoidHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))] {f : β} (v : Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) (Neg.neg.{max u1 u4} (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.neg.{u1, u4} α G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1)))) v)) (Neg.neg.{max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.neg.{u1, u3} α H (SubNegZeroMonoid.toNegZeroClass.{u3} H (SubtractionMonoid.toSubNegZeroMonoid.{u3} H _inst_2))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) v))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range_neg' Finsupp.mapRange_neg'ₓ'. -/
 theorem mapRange_neg' [AddGroup G] [SubtractionMonoid H] [AddMonoidHomClass β G H] {f : β}
     (v : α →₀ G) : mapRange f (map_zero f) (-v) = -mapRange f (map_zero f) v :=
@@ -1918,9 +1918,9 @@ instance [SubNegZeroMonoid G] : Sub (α →₀ G) :=
 
 /- warning: finsupp.coe_sub -> Finsupp.coe_sub is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : SubNegZeroMonoid.{u2} G] (g₁ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (g₂ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))), Eq.{succ (max u1 u2)} (α -> G) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.hasCoeToFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.hasSub.{u1, u2} α G _inst_1)) g₁ g₂)) (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 (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1)))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.hasCoeToFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) g₁) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.hasCoeToFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) g₂))
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : SubNegZeroMonoid.{u2} G] (g₁ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (g₂ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))), Eq.{succ (max u1 u2)} (α -> G) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.coeFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.sub.{u1, u2} α G _inst_1)) g₁ g₂)) (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 (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1)))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.coeFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) g₁) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.coeFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) g₂))
 but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : SubNegZeroMonoid.{u2} G] (g₁ : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (g₂ : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))), Eq.{max (succ u1) (succ u2)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (Finsupp.instSubFinsuppToZeroToNegZeroClass.{u1, u2} α G _inst_1)) g₁ g₂)) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (instHSub.{max u1 u2} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (Pi.instSub.{u1, u2} α (fun (ᾰ : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (fun (i : α) => SubNegMonoid.toSub.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) i) (SubNegZeroMonoid.toSubNegMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) i) _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) g₁) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) g₂))
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : SubNegZeroMonoid.{u2} G] (g₁ : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (g₂ : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))), Eq.{max (succ u1) (succ u2)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (Finsupp.sub.{u1, u2} α G _inst_1)) g₁ g₂)) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (instHSub.{max u1 u2} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (Pi.instSub.{u1, u2} α (fun (ᾰ : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) ᾰ) (fun (i : α) => SubNegMonoid.toSub.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) i) (SubNegZeroMonoid.toSubNegMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) i) _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) g₁) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) g₂))
 Case conversion may be inaccurate. Consider using '#align finsupp.coe_sub Finsupp.coe_subₓ'. -/
 @[simp]
 theorem coe_sub [SubNegZeroMonoid G] (g₁ g₂ : α →₀ G) : ⇑(g₁ - g₂) = g₁ - g₂ :=
@@ -1929,9 +1929,9 @@ theorem coe_sub [SubNegZeroMonoid G] (g₁ g₂ : α →₀ G) : ⇑(g₁ - g₂
 
 /- warning: finsupp.sub_apply -> Finsupp.sub_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : SubNegZeroMonoid.{u2} G] (g₁ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (g₂ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (a : α), Eq.{succ u2} G (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.hasCoeToFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.hasSub.{u1, u2} α G _inst_1)) g₁ g₂) a) (HSub.hSub.{u2, u2, u2} G G G (instHSub.{u2} G (SubNegMonoid.toHasSub.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.hasCoeToFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) g₁ a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.hasCoeToFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) g₂ a))
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : SubNegZeroMonoid.{u2} G] (g₁ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (g₂ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (a : α), Eq.{succ u2} G (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.coeFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.sub.{u1, u2} α G _inst_1)) g₁ g₂) a) (HSub.hSub.{u2, u2, u2} G G G (instHSub.{u2} G (SubNegMonoid.toHasSub.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.coeFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) g₁ a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.coeFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) g₂ a))
 but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : SubNegZeroMonoid.{u2} G] (g₁ : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (g₂ : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (Finsupp.instSubFinsuppToZeroToNegZeroClass.{u1, u2} α G _inst_1)) g₁ g₂) a) (HSub.hSub.{u2, u2, u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (instHSub.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubNegMonoid.toSub.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubNegZeroMonoid.toSubNegMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) _inst_1))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) g₁ a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) g₂ a))
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : SubNegZeroMonoid.{u2} G] (g₁ : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (g₂ : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) (Finsupp.sub.{u1, u2} α G _inst_1)) g₁ g₂) a) (HSub.hSub.{u2, u2, u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (instHSub.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubNegMonoid.toSub.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubNegZeroMonoid.toSubNegMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) _inst_1))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) g₁ a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G _inst_1))) g₂ a))
 Case conversion may be inaccurate. Consider using '#align finsupp.sub_apply Finsupp.sub_applyₓ'. -/
 theorem sub_apply [SubNegZeroMonoid G] (g₁ g₂ : α →₀ G) (a : α) : (g₁ - g₂) a = g₁ a - g₂ a :=
   rfl
@@ -1939,9 +1939,9 @@ theorem sub_apply [SubNegZeroMonoid G] (g₁ g₂ : α →₀ G) (a : α) : (g
 
 /- warning: finsupp.map_range_sub -> Finsupp.mapRange_sub is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} {H : Type.{u3}} [_inst_1 : SubNegZeroMonoid.{u2} G] [_inst_2 : SubNegZeroMonoid.{u3} H] {f : G -> H} {hf : Eq.{succ u3} H (f (OfNat.ofNat.{u2} G 0 (OfNat.mk.{u2} G 0 (Zero.zero.{u2} G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1)))))))) (OfNat.ofNat.{u3} H 0 (OfNat.mk.{u3} H 0 (Zero.zero.{u3} H (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2)))))))}, (forall (x : G) (y : G), Eq.{succ u3} H (f (HSub.hSub.{u2, u2, u2} G G G (instHSub.{u2} G (SubNegMonoid.toHasSub.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))) x y)) (HSub.hSub.{u3, u3, u3} H H H (instHSub.{u3} H (SubNegMonoid.toHasSub.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2))) (f x) (f y))) -> (forall (v₁ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (v₂ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α H (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.mapRange.{u1, u2, u3} α G H (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1)))) (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2)))) f hf (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.hasSub.{u1, u2} α G _inst_1)) v₁ v₂)) (HSub.hSub.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.{u1, u3} α H (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.{u1, u3} α H (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2))))) (instHSub.{max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.hasSub.{u1, u3} α H _inst_2)) (Finsupp.mapRange.{u1, u2, u3} α G H (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1)))) (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2)))) f hf v₁) (Finsupp.mapRange.{u1, u2, u3} α G H (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1)))) (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2)))) f hf v₂)))
+  forall {α : Type.{u1}} {G : Type.{u2}} {H : Type.{u3}} [_inst_1 : SubNegZeroMonoid.{u2} G] [_inst_2 : SubNegZeroMonoid.{u3} H] {f : G -> H} {hf : Eq.{succ u3} H (f (OfNat.ofNat.{u2} G 0 (OfNat.mk.{u2} G 0 (Zero.zero.{u2} G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1)))))))) (OfNat.ofNat.{u3} H 0 (OfNat.mk.{u3} H 0 (Zero.zero.{u3} H (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2)))))))}, (forall (x : G) (y : G), Eq.{succ u3} H (f (HSub.hSub.{u2, u2, u2} G G G (instHSub.{u2} G (SubNegMonoid.toHasSub.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))) x y)) (HSub.hSub.{u3, u3, u3} H H H (instHSub.{u3} H (SubNegMonoid.toHasSub.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2))) (f x) (f y))) -> (forall (v₁ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (v₂ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α H (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.mapRange.{u1, u2, u3} α G H (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1)))) (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2)))) f hf (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.sub.{u1, u2} α G _inst_1)) v₁ v₂)) (HSub.hSub.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.{u1, u3} α H (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.{u1, u3} α H (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2))))) (instHSub.{max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.sub.{u1, u3} α H _inst_2)) (Finsupp.mapRange.{u1, u2, u3} α G H (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1)))) (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2)))) f hf v₁) (Finsupp.mapRange.{u1, u2, u3} α G H (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (SubNegZeroMonoid.toSubNegMonoid.{u2} G _inst_1)))) (AddZeroClass.toHasZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubNegZeroMonoid.toSubNegMonoid.{u3} H _inst_2)))) f hf v₂)))
 but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u3}} {H : Type.{u2}} [_inst_1 : SubNegZeroMonoid.{u3} G] [_inst_2 : SubNegZeroMonoid.{u2} H] {f : G -> H} {hf : Eq.{succ u2} H (f (OfNat.ofNat.{u3} G 0 (Zero.toOfNat0.{u3} G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))))) (OfNat.ofNat.{u2} H 0 (Zero.toOfNat0.{u2} H (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2))))}, (forall (x : G) (y : G), Eq.{succ u2} H (f (HSub.hSub.{u3, u3, u3} G G G (instHSub.{u3} G (SubNegMonoid.toSub.{u3} G (SubNegZeroMonoid.toSubNegMonoid.{u3} G _inst_1))) x y)) (HSub.hSub.{u2, u2, u2} H H H (instHSub.{u2} H (SubNegMonoid.toSub.{u2} H (SubNegZeroMonoid.toSubNegMonoid.{u2} H _inst_2))) (f x) (f y))) -> (forall (v₁ : Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))) (v₂ : Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2))) (Finsupp.mapRange.{u1, u3, u2} α G H (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1)) (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2)) f hf (HSub.hSub.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))) (Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))) (Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))) (instHSub.{max u1 u3} (Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))) (Finsupp.instSubFinsuppToZeroToNegZeroClass.{u1, u3} α G _inst_1)) v₁ v₂)) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2))) (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2))) (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2))) (Finsupp.instSubFinsuppToZeroToNegZeroClass.{u1, u2} α H _inst_2)) (Finsupp.mapRange.{u1, u3, u2} α G H (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1)) (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2)) f hf v₁) (Finsupp.mapRange.{u1, u3, u2} α G H (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1)) (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2)) f hf v₂)))
+  forall {α : Type.{u1}} {G : Type.{u3}} {H : Type.{u2}} [_inst_1 : SubNegZeroMonoid.{u3} G] [_inst_2 : SubNegZeroMonoid.{u2} H] {f : G -> H} {hf : Eq.{succ u2} H (f (OfNat.ofNat.{u3} G 0 (Zero.toOfNat0.{u3} G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))))) (OfNat.ofNat.{u2} H 0 (Zero.toOfNat0.{u2} H (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2))))}, (forall (x : G) (y : G), Eq.{succ u2} H (f (HSub.hSub.{u3, u3, u3} G G G (instHSub.{u3} G (SubNegMonoid.toSub.{u3} G (SubNegZeroMonoid.toSubNegMonoid.{u3} G _inst_1))) x y)) (HSub.hSub.{u2, u2, u2} H H H (instHSub.{u2} H (SubNegMonoid.toSub.{u2} H (SubNegZeroMonoid.toSubNegMonoid.{u2} H _inst_2))) (f x) (f y))) -> (forall (v₁ : Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))) (v₂ : Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2))) (Finsupp.mapRange.{u1, u3, u2} α G H (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1)) (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2)) f hf (HSub.hSub.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))) (Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))) (Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))) (instHSub.{max u1 u3} (Finsupp.{u1, u3} α G (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1))) (Finsupp.sub.{u1, u3} α G _inst_1)) v₁ v₂)) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2))) (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2))) (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α H (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2))) (Finsupp.sub.{u1, u2} α H _inst_2)) (Finsupp.mapRange.{u1, u3, u2} α G H (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1)) (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2)) f hf v₁) (Finsupp.mapRange.{u1, u3, u2} α G H (NegZeroClass.toZero.{u3} G (SubNegZeroMonoid.toNegZeroClass.{u3} G _inst_1)) (NegZeroClass.toZero.{u2} H (SubNegZeroMonoid.toNegZeroClass.{u2} H _inst_2)) f hf v₂)))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range_sub Finsupp.mapRange_subₓ'. -/
 theorem mapRange_sub [SubNegZeroMonoid G] [SubNegZeroMonoid H] {f : G → H} {hf : f 0 = 0}
     (hf' : ∀ x y, f (x - y) = f x - f y) (v₁ v₂ : α →₀ G) :
@@ -1951,9 +1951,9 @@ theorem mapRange_sub [SubNegZeroMonoid G] [SubNegZeroMonoid H] {f : G → H} {hf
 
 /- warning: finsupp.map_range_sub' -> Finsupp.mapRange_sub' is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u3}} {H : Type.{u4}} [_inst_1 : AddGroup.{u3} G] [_inst_2 : SubtractionMonoid.{u4} H] [_inst_3 : AddMonoidHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))] {f : β} (v₁ : Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (v₂ : Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) (HSub.hSub.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (instHSub.{max u1 u3} (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (Finsupp.hasSub.{u1, u3} α G (SubtractionMonoid.toSubNegZeroMonoid.{u3} G (AddGroup.toSubtractionMonoid.{u3} G _inst_1)))) v₁ v₂)) (HSub.hSub.{max u1 u4, max u1 u4, max u1 u4} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (instHSub.{max u1 u4} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.hasSub.{u1, u4} α H (SubtractionMonoid.toSubNegZeroMonoid.{u4} H _inst_2))) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) v₁) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) v₂))
+  forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u3}} {H : Type.{u4}} [_inst_1 : AddGroup.{u3} G] [_inst_2 : SubtractionMonoid.{u4} H] [_inst_3 : AddMonoidHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))] {f : β} (v₁ : Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (v₂ : Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) (HSub.hSub.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (instHSub.{max u1 u3} (Finsupp.{u1, u3} α G (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))))) (Finsupp.sub.{u1, u3} α G (SubtractionMonoid.toSubNegZeroMonoid.{u3} G (AddGroup.toSubtractionMonoid.{u3} G _inst_1)))) v₁ v₂)) (HSub.hSub.{max u1 u4, max u1 u4, max u1 u4} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (instHSub.{max u1 u4} (Finsupp.{u1, u4} α H (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))))) (Finsupp.sub.{u1, u4} α H (SubtractionMonoid.toSubNegZeroMonoid.{u4} H _inst_2))) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) v₁) (Finsupp.mapRange.{u1, u3, u4} α G H (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (coeFn.{succ u2, max (succ u3) (succ u4)} β (fun (_x : β) => G -> H) (FunLike.hasCoeToFun.{succ u2, succ u3, succ u4} β G (fun (_x : G) => H) (AddHomClass.toFunLike.{u2, u3, u4} β G H (AddZeroClass.toHasAdd.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasAdd.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3))) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toHasZero.{u3} G (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1)))) (AddZeroClass.toHasZero.{u4} H (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u3, u4} β G H (AddMonoid.toAddZeroClass.{u3} G (SubNegMonoid.toAddMonoid.{u3} G (AddGroup.toSubNegMonoid.{u3} G _inst_1))) (AddMonoid.toAddZeroClass.{u4} H (SubNegMonoid.toAddMonoid.{u4} H (SubtractionMonoid.toSubNegMonoid.{u4} H _inst_2))) _inst_3) f) v₂))
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u4}} {H : Type.{u3}} [_inst_1 : AddGroup.{u4} G] [_inst_2 : SubtractionMonoid.{u3} H] [_inst_3 : AddMonoidHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))] {f : β} (v₁ : Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (v₂ : Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) (HSub.hSub.{max u1 u4, max u1 u4, max u1 u4} (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (instHSub.{max u1 u4} (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.instSubFinsuppToZeroToNegZeroClass.{u1, u4} α G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1)))) v₁ v₂)) (HSub.hSub.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (instHSub.{max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.instSubFinsuppToZeroToNegZeroClass.{u1, u3} α H (SubtractionMonoid.toSubNegZeroMonoid.{u3} H _inst_2))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) v₁) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) v₂))
+  forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u4}} {H : Type.{u3}} [_inst_1 : AddGroup.{u4} G] [_inst_2 : SubtractionMonoid.{u3} H] [_inst_3 : AddMonoidHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))] {f : β} (v₁ : Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (v₂ : Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) (HSub.hSub.{max u1 u4, max u1 u4, max u1 u4} (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (instHSub.{max u1 u4} (Finsupp.{u1, u4} α G (NegZeroClass.toZero.{u4} G (SubNegZeroMonoid.toNegZeroClass.{u4} G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1))))) (Finsupp.sub.{u1, u4} α G (SubtractionMonoid.toSubNegZeroMonoid.{u4} G (AddGroup.toSubtractionMonoid.{u4} G _inst_1)))) v₁ v₂)) (HSub.hSub.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (instHSub.{max u1 u3} (Finsupp.{u1, u3} α H (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))))) (Finsupp.sub.{u1, u3} α H (SubtractionMonoid.toSubNegZeroMonoid.{u3} H _inst_2))) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) v₁) (Finsupp.mapRange.{u1, u4, u3} α G H (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (FunLike.coe.{succ u2, succ u4, succ u3} β G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : G) => H) _x) (AddHomClass.toFunLike.{u2, u4, u3} β G H (AddZeroClass.toAdd.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toAdd.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3)) f) (map_zero.{u3, u4, u2} G H β (AddZeroClass.toZero.{u4} G (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1)))) (AddZeroClass.toZero.{u3} H (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2)))) (AddMonoidHomClass.toZeroHomClass.{u2, u4, u3} β G H (AddMonoid.toAddZeroClass.{u4} G (SubNegMonoid.toAddMonoid.{u4} G (AddGroup.toSubNegMonoid.{u4} G _inst_1))) (AddMonoid.toAddZeroClass.{u3} H (SubNegMonoid.toAddMonoid.{u3} H (SubtractionMonoid.toSubNegMonoid.{u3} H _inst_2))) _inst_3) f) v₂))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range_sub' Finsupp.mapRange_sub'ₓ'. -/
 theorem mapRange_sub' [AddGroup G] [SubtractionMonoid H] [AddMonoidHomClass β G H] {f : β}
     (v₁ v₂ : α →₀ G) :
@@ -1982,7 +1982,7 @@ instance [AddCommGroup G] : AddCommGroup (α →₀ G) :=
 
 /- warning: finsupp.single_add_single_eq_single_add_single -> Finsupp.single_add_single_eq_single_add_single is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] {k : α} {l : α} {m : α} {n : α} {u : M} {v : M}, (Ne.{succ u2} M u (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))))) -> (Ne.{succ u2} M v (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))))) -> (Iff (Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.hasAdd.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) k u) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) l v)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.hasAdd.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) m u) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) n v))) (Or (And (Eq.{succ u1} α k m) (Eq.{succ u1} α l n)) (Or (And (Eq.{succ u2} M u v) (And (Eq.{succ u1} α k n) (Eq.{succ u1} α l m))) (And (Eq.{succ u2} M (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) u v) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))))) (And (Eq.{succ u1} α k l) (Eq.{succ u1} α m n))))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] {k : α} {l : α} {m : α} {n : α} {u : M} {v : M}, (Ne.{succ u2} M u (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))))) -> (Ne.{succ u2} M v (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))))) -> (Iff (Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) k u) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) l v)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) m u) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) n v))) (Or (And (Eq.{succ u1} α k m) (Eq.{succ u1} α l n)) (Or (And (Eq.{succ u2} M u v) (And (Eq.{succ u1} α k n) (Eq.{succ u1} α l m))) (And (Eq.{succ u2} M (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) u v) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))))) (And (Eq.{succ u1} α k l) (Eq.{succ u1} α m n))))))
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] {k : α} {l : α} {m : α} {n : α} {u : M} {v : M}, (Ne.{succ u2} M u (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))) -> (Ne.{succ u2} M v (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))) -> (Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.single.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) k u) (Finsupp.single.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) l v)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.single.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) m u) (Finsupp.single.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) n v))) (Or (And (Eq.{succ u1} α k m) (Eq.{succ u1} α l n)) (Or (And (Eq.{succ u2} M u v) (And (Eq.{succ u1} α k n) (Eq.{succ u1} α l m))) (And (Eq.{succ u2} M (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) u v) (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))) (And (Eq.{succ u1} α k l) (Eq.{succ u1} α m n))))))
 Case conversion may be inaccurate. Consider using '#align finsupp.single_add_single_eq_single_add_single Finsupp.single_add_single_eq_single_add_singleₓ'. -/
@@ -1998,9 +1998,9 @@ theorem single_add_single_eq_single_add_single [AddCommMonoid M] {k l m n : α}
 
 /- warning: finsupp.support_neg -> Finsupp.support_neg is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (f : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))), Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.hasNeg.{u1, u2} α G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f)) (Finsupp.support.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) f)
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (f : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))), Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.neg.{u1, u2} α G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f)) (Finsupp.support.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) f)
 but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (f : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))), Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.instNegFinsuppToZero.{u1, u2} α G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f)) (Finsupp.support.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f)
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (f : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))), Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.neg.{u1, u2} α G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f)) (Finsupp.support.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f)
 Case conversion may be inaccurate. Consider using '#align finsupp.support_neg Finsupp.support_negₓ'. -/
 @[simp]
 theorem support_neg [AddGroup G] (f : α →₀ G) : support (-f) = support f :=
@@ -2013,9 +2013,9 @@ theorem support_neg [AddGroup G] (f : α →₀ G) : support (-f) = support f :=
 
 /- warning: finsupp.support_sub -> Finsupp.support_sub is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : AddGroup.{u2} G] {f : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2))))} {g : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2))))}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2)))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2))))) (Finsupp.hasSub.{u1, u2} α G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_2)))) f g)) (Union.union.{u1} (Finset.{u1} α) (Finset.hasUnion.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finsupp.support.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2)))) f) (Finsupp.support.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2)))) g))
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : AddGroup.{u2} G] {f : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2))))} {g : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2))))}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2)))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2))))) (Finsupp.sub.{u1, u2} α G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_2)))) f g)) (Union.union.{u1} (Finset.{u1} α) (Finset.hasUnion.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finsupp.support.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2)))) f) (Finsupp.support.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_2)))) g))
 but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} α] [_inst_2 : AddGroup.{u1} G] {f : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2))))} {g : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2))))}, HasSubset.Subset.{u2} (Finset.{u2} α) (Finset.instHasSubsetFinset.{u2} α) (Finsupp.support.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2)))) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2))))) (instHSub.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2))))) (Finsupp.instSubFinsuppToZeroToNegZeroClass.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2)))) f g)) (Union.union.{u2} (Finset.{u2} α) (Finset.instUnionFinset.{u2} α (fun (a : α) (b : α) => _inst_1 a b)) (Finsupp.support.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2)))) f) (Finsupp.support.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2)))) g))
+  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} α] [_inst_2 : AddGroup.{u1} G] {f : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2))))} {g : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2))))}, HasSubset.Subset.{u2} (Finset.{u2} α) (Finset.instHasSubsetFinset.{u2} α) (Finsupp.support.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2)))) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2))))) (instHSub.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2))))) (Finsupp.sub.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2)))) f g)) (Union.union.{u2} (Finset.{u2} α) (Finset.instUnionFinset.{u2} α (fun (a : α) (b : α) => _inst_1 a b)) (Finsupp.support.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2)))) f) (Finsupp.support.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_2)))) g))
 Case conversion may be inaccurate. Consider using '#align finsupp.support_sub Finsupp.support_subₓ'. -/
 theorem support_sub [DecidableEq α] [AddGroup G] {f g : α →₀ G} :
     support (f - g) ⊆ support f ∪ support g :=
@@ -2026,9 +2026,9 @@ theorem support_sub [DecidableEq α] [AddGroup G] {f g : α →₀ G} :
 
 /- warning: finsupp.erase_eq_sub_single -> Finsupp.erase_eq_sub_single is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (f : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (a : α), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.erase.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) a f) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.hasSub.{u1, u2} α G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f (Finsupp.single.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.hasCoeToFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) f a)))
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (f : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (a : α), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.erase.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) a f) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.sub.{u1, u2} α G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f (Finsupp.single.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.coeFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) f a)))
 but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (f : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (a : α), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.erase.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) a f) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (NegZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubNegZeroMonoid.toNegZeroClass.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubtractionMonoid.toSubNegZeroMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (AddGroup.toSubtractionMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) _inst_1))))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.instSubFinsuppToZeroToNegZeroClass.{u1, u2} α G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f (Finsupp.single.{u1, u2} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (NegZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubNegZeroMonoid.toNegZeroClass.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubtractionMonoid.toSubNegZeroMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (AddGroup.toSubtractionMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) _inst_1)))) a (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) f a)))
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (f : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (a : α), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.erase.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) a f) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (NegZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubNegZeroMonoid.toNegZeroClass.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubtractionMonoid.toSubNegZeroMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (AddGroup.toSubtractionMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) _inst_1))))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.sub.{u1, u2} α G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f (Finsupp.single.{u1, u2} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (NegZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubNegZeroMonoid.toNegZeroClass.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubtractionMonoid.toSubNegZeroMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (AddGroup.toSubtractionMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) _inst_1)))) a (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) f a)))
 Case conversion may be inaccurate. Consider using '#align finsupp.erase_eq_sub_single Finsupp.erase_eq_sub_singleₓ'. -/
 theorem erase_eq_sub_single [AddGroup G] (f : α →₀ G) (a : α) : f.eraseₓ a = f - single a (f a) :=
   by
@@ -2040,9 +2040,9 @@ theorem erase_eq_sub_single [AddGroup G] (f : α →₀ G) (a : α) : f.eraseₓ
 
 /- warning: finsupp.update_eq_sub_add_single -> Finsupp.update_eq_sub_add_single is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (f : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (a : α) (b : G), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.update.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) f a b) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.hasAdd.{u1, u2} α G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.hasSub.{u1, u2} α G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f (Finsupp.single.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.hasCoeToFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) f a))) (Finsupp.single.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) a b))
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (f : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (a : α) (b : G), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.update.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) f a b) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.add.{u1, u2} α G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.sub.{u1, u2} α G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f (Finsupp.single.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) a (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (fun (_x : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) => α -> G) (Finsupp.coeFun.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) f a))) (Finsupp.single.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) a b))
 but is expected to have type
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (f : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (a : α) (b : G), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.update.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f a b) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.add.{u1, u2} α G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (NegZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubNegZeroMonoid.toNegZeroClass.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubtractionMonoid.toSubNegZeroMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (AddGroup.toSubtractionMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) _inst_1))))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.instSubFinsuppToZeroToNegZeroClass.{u1, u2} α G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f (Finsupp.single.{u1, u2} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (NegZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubNegZeroMonoid.toNegZeroClass.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubtractionMonoid.toSubNegZeroMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (AddGroup.toSubtractionMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) _inst_1)))) a (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) f a))) (Finsupp.single.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) a b))
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (f : Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (a : α) (b : G), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.update.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f a b) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.add.{u1, u2} α G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (NegZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubNegZeroMonoid.toNegZeroClass.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubtractionMonoid.toSubNegZeroMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (AddGroup.toSubtractionMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) _inst_1))))) (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (instHSub.{max u1 u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) (Finsupp.sub.{u1, u2} α G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) f (Finsupp.single.{u1, u2} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (NegZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubNegZeroMonoid.toNegZeroClass.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (SubtractionMonoid.toSubNegZeroMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) (AddGroup.toSubtractionMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) a) _inst_1)))) a (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => G) _x) (Finsupp.funLike.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1))))) f a))) (Finsupp.single.{u1, u2} α G (NegZeroClass.toZero.{u2} G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) a b))
 Case conversion may be inaccurate. Consider using '#align finsupp.update_eq_sub_add_single Finsupp.update_eq_sub_add_singleₓ'. -/
 theorem update_eq_sub_add_single [AddGroup G] (f : α →₀ G) (a : α) (b : G) :
     f.update a b = f - single a (f a) + single a b := by
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Scott Morrison
 
 ! This file was ported from Lean 3 source module data.finsupp.defs
-! leanprover-community/mathlib commit fac369018417f980cec5fcdafc766a69f88d8cfe
+! leanprover-community/mathlib commit 842328d9df7e96fd90fc424e115679c15fb23a71
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -454,17 +454,11 @@ theorem single_apply_left {f : α → β} (hf : Function.Injective f) (x z : α)
     single (f x) y (f z) = single x y z := by classical simp only [single_apply, hf.eq_iff]
 #align finsupp.single_apply_left Finsupp.single_apply_left
 
-/- warning: finsupp.single_eq_indicator -> Finsupp.single_eq_indicator is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {b : M}, Eq.{max (succ u1) (succ u2)} (α -> M) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (fun (_x : Finsupp.{u1, u2} α M _inst_1) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M _inst_1) (Finsupp.single.{u1, u2} α M _inst_1 a b)) (Set.indicator.{u1, u2} α M _inst_1 (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.hasSingleton.{u1} α) a) (fun (_x : α) => b))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {b : M}, Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a b)) (Set.indicator.{u2, u1} α M _inst_1 (Singleton.singleton.{u2, u2} α (Set.{u2} α) (Set.instSingletonSet.{u2} α) a) (fun (_x : α) => b))
-Case conversion may be inaccurate. Consider using '#align finsupp.single_eq_indicator Finsupp.single_eq_indicatorₓ'. -/
-theorem single_eq_indicator : ⇑(single a b) = Set.indicator {a} fun _ => b := by
+theorem single_eq_set_indicator : ⇑(single a b) = Set.indicator {a} fun _ => b := by
   classical
     ext
     simp [single_apply, Set.indicator, @eq_comm _ a]
-#align finsupp.single_eq_indicator Finsupp.single_eq_indicator
+#align finsupp.single_eq_set_indicator Finsupp.single_eq_set_indicator
 
 #print Finsupp.single_eq_same /-
 @[simp]
@@ -490,7 +484,7 @@ but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] [_inst_2 : DecidableEq.{succ u2} α] (a : α) (b : M), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a b)) (Function.update.{succ u2, succ u1} α (fun (a : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (fun (a : α) (b : α) => _inst_2 a b) (OfNat.ofNat.{max u2 u1} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{max u2 u1} (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (Pi.instZero.{u2, u1} α (fun (a : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (fun (i : α) => _inst_1)))) a b)
 Case conversion may be inaccurate. Consider using '#align finsupp.single_eq_update Finsupp.single_eq_updateₓ'. -/
 theorem single_eq_update [DecidableEq α] (a : α) (b : M) : ⇑(single a b) = Function.update 0 a b :=
-  by rw [single_eq_indicator, ← Set.piecewise_eq_indicator, Set.piecewise_singleton]
+  by rw [single_eq_set_indicator, ← Set.piecewise_eq_indicator, Set.piecewise_singleton]
 #align finsupp.single_eq_update Finsupp.single_eq_update
 
 /- warning: finsupp.single_eq_pi_single -> Finsupp.single_eq_pi_single is a dubious translation:
@@ -573,7 +567,7 @@ theorem single_injective (a : α) : Function.Injective (single a : M → α →
 
 #print Finsupp.single_apply_eq_zero /-
 theorem single_apply_eq_zero {a x : α} {b : M} : single a b x = 0 ↔ x = a → b = 0 := by
-  simp [single_eq_indicator]
+  simp [single_eq_set_indicator]
 #align finsupp.single_apply_eq_zero Finsupp.single_apply_eq_zero
 -/
 
@@ -674,7 +668,7 @@ but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {b : M}, Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.single.{u2, u1} α M _inst_1 a b) (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)))) (Eq.{succ u1} M b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1)))
 Case conversion may be inaccurate. Consider using '#align finsupp.single_eq_zero Finsupp.single_eq_zeroₓ'. -/
 @[simp]
-theorem single_eq_zero : single a b = 0 ↔ b = 0 := by simp [ext_iff, single_eq_indicator]
+theorem single_eq_zero : single a b = 0 ↔ b = 0 := by simp [ext_iff, single_eq_set_indicator]
 #align finsupp.single_eq_zero Finsupp.single_eq_zero
 
 #print Finsupp.single_swap /-
Diff
@@ -345,7 +345,7 @@ lean 3 declaration is
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {s : Set.{u2} α} {f : Finsupp.{u2, u1} α M _inst_1}, Iff (HasSubset.Subset.{u2} (Set.{u2} α) (Set.instHasSubsetSet.{u2} α) (Finset.toSet.{u2} α (Finsupp.support.{u2, u1} α M _inst_1 f)) s) (forall (a : α), (Not (Membership.mem.{u2, u2} α (Set.{u2} α) (Set.instMembershipSet.{u2} α) a s)) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M _inst_1) f a) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1))))
 Case conversion may be inaccurate. Consider using '#align finsupp.support_subset_iff Finsupp.support_subset_iffₓ'. -/
-/- ./././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) -/
 theorem support_subset_iff {s : Set α} {f : α →₀ M} : ↑f.support ⊆ s ↔ ∀ (a) (_ : a ∉ s), f a = 0 :=
   by
   simp only [Set.subset_def, mem_coe, mem_support_iff] <;> exact forall_congr' fun a => not_imp_comm
@@ -732,7 +732,7 @@ lean 3 declaration is
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {a : α}, Iff (Eq.{succ u2} (Finset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 f) (Singleton.singleton.{u2, u2} α (Finset.{u2} α) (Finset.instSingletonFinset.{u2} α) a)) (Exists.{succ u1} M (fun (b : M) => Exists.{0} (Ne.{succ u1} M b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (fun (H : Ne.{succ u1} M b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) => Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (Finsupp.single.{u2, u1} α M _inst_1 a b))))
 Case conversion may be inaccurate. Consider using '#align finsupp.support_eq_singleton' Finsupp.support_eq_singleton'ₓ'. -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (b «expr ≠ » 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b «expr ≠ » 0) -/
 theorem support_eq_singleton' {f : α →₀ M} {a : α} :
     f.support = {a} ↔ ∃ (b : _)(_ : b ≠ 0), f = single a b :=
   ⟨fun h =>
@@ -757,7 +757,7 @@ lean 3 declaration is
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{1} Nat (Finset.card.{u2} α (Finsupp.support.{u2, u1} α M _inst_1 f)) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) (Exists.{succ u2} α (fun (a : α) => Exists.{succ u1} M (fun (b : M) => Exists.{0} (Ne.{succ u1} M b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (fun (H : Ne.{succ u1} M b (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) => Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) f (Finsupp.single.{u2, u1} α M _inst_1 a b)))))
 Case conversion may be inaccurate. Consider using '#align finsupp.card_support_eq_one' Finsupp.card_support_eq_one'ₓ'. -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (b «expr ≠ » 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b «expr ≠ » 0) -/
 theorem card_support_eq_one' {f : α →₀ M} :
     card f.support = 1 ↔ ∃ (a : _)(b : _)(_ : b ≠ 0), f = single a b := by
   simp only [card_eq_one, support_eq_singleton']

Changes in mathlib4

mathlib3
mathlib4
chore: adapt to multiple goal linter 1 (#12338)

A PR accompanying #12339.

Zulip discussion

Diff
@@ -633,8 +633,8 @@ def erase (a : α) (f : α →₀ M) : α →₀ M where
     classical
     rw [mem_erase, mem_support_iff]; dsimp
     split_ifs with h
-    exact ⟨fun H _ => H.1 h, fun H => (H rfl).elim⟩
-    exact and_iff_right h
+    · exact ⟨fun H _ => H.1 h, fun H => (H rfl).elim⟩
+    · exact and_iff_right h
 #align finsupp.erase Finsupp.erase
 
 @[simp]
chore: tidy various files (#12316)
Diff
@@ -1061,10 +1061,10 @@ noncomputable def _root_.AddEquiv.finsuppUnique {ι : Type*} [Unique ι] :
   __ := Equiv.finsuppUnique
   map_add' _ _ := rfl
 
-  lemma _root_.AddEquiv.finsuppUnique_symm {M : Type*} [AddZeroClass M] (d : M) :
-      AddEquiv.finsuppUnique.symm d = single () d := by
+lemma _root_.AddEquiv.finsuppUnique_symm {M : Type*} [AddZeroClass M] (d : M) :
+    AddEquiv.finsuppUnique.symm d = single () d := by
   rw [Finsupp.unique_single (AddEquiv.finsuppUnique.symm d), Finsupp.unique_single_eq_iff]
-  rfl
+  simp [AddEquiv.finsuppUnique]
 
 instance instIsRightCancelAdd [IsRightCancelAdd M] : IsRightCancelAdd (α →₀ M) where
   add_right_cancel _ _ _ h := ext fun x => add_right_cancel <| DFunLike.congr_fun h x
chore: tidy various files (#12213)
Diff
@@ -231,8 +231,6 @@ theorem finite_support (f : α →₀ M) : Set.Finite (Function.support f) :=
   f.fun_support_eq.symm ▸ f.support.finite_toSet
 #align finsupp.finite_support Finsupp.finite_support
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:632:2:
-  warning: expanding binder collection (a «expr ∉ » s) -/
 theorem support_subset_iff {s : Set α} {f : α →₀ M} :
     ↑f.support ⊆ s ↔ ∀ a ∉ s, f a = 0 := by
   simp only [Set.subset_def, mem_coe, mem_support_iff]; exact forall_congr' fun a => not_imp_comm
@@ -463,8 +461,6 @@ theorem support_eq_singleton {f : α →₀ M} {a : α} :
     fun h => h.2.symm ▸ support_single_ne_zero _ h.1⟩
 #align finsupp.support_eq_singleton Finsupp.support_eq_singleton
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:632:2:
-  warning: expanding binder collection (b «expr ≠ » 0) -/
 theorem support_eq_singleton' {f : α →₀ M} {a : α} :
     f.support = {a} ↔ ∃ b ≠ 0, f = single a b :=
   ⟨fun h =>
@@ -477,8 +473,6 @@ theorem card_support_eq_one {f : α →₀ M} : card f.support = 1 ↔ ∃ a, f
   by simp only [card_eq_one, support_eq_singleton]
 #align finsupp.card_support_eq_one Finsupp.card_support_eq_one
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:632:2:
-  warning: expanding binder collection (b «expr ≠ » 0) -/
 theorem card_support_eq_one' {f : α →₀ M} :
     card f.support = 1 ↔ ∃ a, ∃ b ≠ 0, f = single a b := by
   simp only [card_eq_one, support_eq_singleton']
chore: avoid Ne.def (adaptation for nightly-2024-03-27) (#11801)
Diff
@@ -215,7 +215,7 @@ theorem support_eq_empty {f : α →₀ M} : f.support = ∅ ↔ f = 0 :=
 #align finsupp.support_eq_empty Finsupp.support_eq_empty
 
 theorem support_nonempty_iff {f : α →₀ M} : f.support.Nonempty ↔ f ≠ 0 := by
-  simp only [Finsupp.support_eq_empty, Finset.nonempty_iff_ne_empty, Ne.def]
+  simp only [Finsupp.support_eq_empty, Finset.nonempty_iff_ne_empty, Ne]
 #align finsupp.support_nonempty_iff Finsupp.support_nonempty_iff
 
 #align finsupp.nonzero_iff_exists Finsupp.ne_iff
@@ -391,7 +391,7 @@ theorem eq_single_iff {f : α →₀ M} {a b} : f = single a b ↔ f.support ⊆
   refine' ⟨fun h => h.symm ▸ ⟨support_single_subset, single_eq_same⟩, _⟩
   rintro ⟨h, rfl⟩
   ext x
-  by_cases hx : a = x <;> simp only [hx, single_eq_same, single_eq_of_ne, Ne.def, not_false_iff]
+  by_cases hx : a = x <;> simp only [hx, single_eq_same, single_eq_of_ne, Ne, not_false_iff]
   exact not_mem_support_iff.1 (mt (fun hx => (mem_singleton.1 (h hx)).symm) hx)
 #align finsupp.eq_single_iff Finsupp.eq_single_iff
 
@@ -843,7 +843,7 @@ theorem mapRange_single {f : M → N} {hf : f 0 = 0} {a : α} {b : M} :
 theorem support_mapRange_of_injective {e : M → N} (he0 : e 0 = 0) (f : ι →₀ M)
     (he : Function.Injective e) : (Finsupp.mapRange e he0 f).support = f.support := by
   ext
-  simp only [Finsupp.mem_support_iff, Ne.def, Finsupp.mapRange_apply]
+  simp only [Finsupp.mem_support_iff, Ne, Finsupp.mapRange_apply]
   exact he.ne_iff' he0
 #align finsupp.support_map_range_of_injective Finsupp.support_mapRange_of_injective
 
@@ -873,10 +873,10 @@ def embDomain (f : α ↪ β) (v : α →₀ M) : β →₀ M where
   mem_support_toFun a₂ := by
     dsimp
     split_ifs with h
-    · simp only [h, true_iff_iff, Ne.def]
+    · simp only [h, true_iff_iff, Ne]
       rw [← not_mem_support_iff, not_not]
       classical apply Finset.choose_mem
-    · simp only [h, Ne.def, ne_self_iff_false, not_true_eq_false]
+    · simp only [h, Ne, ne_self_iff_false, not_true_eq_false]
 #align finsupp.emb_domain Finsupp.embDomain
 
 @[simp]
chore: replace λ by fun (#11301)

Per the style guidelines, λ is disallowed in mathlib. This is close to exhaustive; I left some tactic code alone when it seemed to me that tactic could be upstreamed soon.

Notes

  • In lines I was modifying anyway, I also converted => to .
  • Also contains some mild in-passing indentation fixes in Mathlib/Order/SupClosed.
  • Some doc comments still contained Lean 3 syntax λ x, , which I also replaced.
Diff
@@ -319,7 +319,7 @@ theorem single_eq_set_indicator : ⇑(single a b) = Set.indicator {a} fun _ => b
 
 @[simp]
 theorem single_eq_same : (single a b : α →₀ M) a = b := by
-  classical exact Pi.single_eq_same (f := λ _ => M) a b
+  classical exact Pi.single_eq_same (f := fun _ ↦ M) a b
 #align finsupp.single_eq_same Finsupp.single_eq_same
 
 @[simp]
feat: add lemma Finsupp.erase_apply (#11242)

Adds a lemma

Diff
@@ -661,6 +661,11 @@ theorem erase_ne {a a' : α} {f : α →₀ M} (h : a' ≠ a) : (f.erase a) a' =
   classical simp only [erase, coe_mk, h, ite_false]
 #align finsupp.erase_ne Finsupp.erase_ne
 
+theorem erase_apply [DecidableEq α] {a a' : α} {f : α →₀ M} :
+    f.erase a a' = if a' = a then 0 else f a' := by
+  rw [erase, coe_mk]
+  convert rfl
+
 @[simp]
 theorem erase_single {a : α} {b : M} : erase a (single a b) = 0 := by
   ext s; by_cases hs : s = a
chore(Data/Finsupp/Defs): rename instances (#10976)

This adds the inst prefix that is expected in Lean 4.

Performed using the F2 shortcut (renaming foo to Finsupp.instFoo, then deleting the redundant Finsupp)

All the changes to downstream files are fallout, no names have been changed there.

Diff
@@ -125,9 +125,9 @@ instance instFunLike : FunLike (α →₀ M) α M :=
 
 /-- Helper instance for when there are too many metavariables to apply the `DFunLike` instance
 directly. -/
-instance coeFun : CoeFun (α →₀ M) fun _ => α → M :=
+instance instCoeFun : CoeFun (α →₀ M) fun _ => α → M :=
   inferInstance
-#align finsupp.has_coe_to_fun Finsupp.coeFun
+#align finsupp.has_coe_to_fun Finsupp.instCoeFun
 
 @[ext]
 theorem ext {f g : α →₀ M} (h : ∀ a, f a = g a) : f = g :=
@@ -161,9 +161,9 @@ theorem coe_mk (f : α → M) (s : Finset α) (h : ∀ a, a ∈ s ↔ f a ≠ 0)
   rfl
 #align finsupp.coe_mk Finsupp.coe_mk
 
-instance zero : Zero (α →₀ M) :=
+instance instZero : Zero (α →₀ M) :=
   ⟨⟨∅, 0, fun _ => ⟨fun h ↦ (not_mem_empty _ h).elim, fun H => (H rfl).elim⟩⟩⟩
-#align finsupp.has_zero Finsupp.zero
+#align finsupp.has_zero Finsupp.instZero
 
 @[simp, norm_cast] lemma coe_zero : ⇑(0 : α →₀ M) = 0 := rfl
 #align finsupp.coe_zero Finsupp.coe_zero
@@ -177,9 +177,9 @@ theorem support_zero : (0 : α →₀ M).support = ∅ :=
   rfl
 #align finsupp.support_zero Finsupp.support_zero
 
-instance inhabited : Inhabited (α →₀ M) :=
+instance instInhabited : Inhabited (α →₀ M) :=
   ⟨0⟩
-#align finsupp.inhabited Finsupp.inhabited
+#align finsupp.inhabited Finsupp.instInhabited
 
 @[simp]
 theorem mem_support_iff {f : α →₀ M} : ∀ {a : α}, a ∈ f.support ↔ f a ≠ 0 :=
@@ -223,9 +223,9 @@ theorem support_nonempty_iff {f : α →₀ M} : f.support.Nonempty ↔ f ≠ 0
 theorem card_support_eq_zero {f : α →₀ M} : card f.support = 0 ↔ f = 0 := by simp
 #align finsupp.card_support_eq_zero Finsupp.card_support_eq_zero
 
-instance decidableEq [DecidableEq α] [DecidableEq M] : DecidableEq (α →₀ M) := fun f g =>
+instance instDecidableEq [DecidableEq α] [DecidableEq M] : DecidableEq (α →₀ M) := fun f g =>
   decidable_of_iff (f.support = g.support ∧ ∀ a ∈ f.support, f a = g a) ext_iff'.symm
-#align finsupp.decidable_eq Finsupp.decidableEq
+#align finsupp.decidable_eq Finsupp.instDecidableEq
 
 theorem finite_support (f : α →₀ M) : Set.Finite (Function.support f) :=
   f.fun_support_eq.symm ▸ f.support.finite_toSet
@@ -440,11 +440,11 @@ theorem single_swap (a₁ a₂ : α) (b : M) : single a₁ b a₂ = single a₂
   classical simp only [single_apply, eq_comm]
 #align finsupp.single_swap Finsupp.single_swap
 
-instance nontrivial [Nonempty α] [Nontrivial M] : Nontrivial (α →₀ M) := by
+instance instNontrivial [Nonempty α] [Nontrivial M] : Nontrivial (α →₀ M) := by
   inhabit α
   rcases exists_ne (0 : M) with ⟨x, hx⟩
   exact nontrivial_of_ne (single default x) 0 (mt single_eq_zero.1 hx)
-#align finsupp.nontrivial Finsupp.nontrivial
+#align finsupp.nontrivial Finsupp.instNontrivial
 
 theorem unique_single [Unique α] (x : α →₀ M) : x = single default (x default) :=
   ext <| Unique.forall_iff.2 single_eq_same.symm
@@ -771,9 +771,9 @@ theorem ofSupportFinite_coe {f : α → M} {hf : (Function.support f).Finite} :
   rfl
 #align finsupp.of_support_finite_coe Finsupp.ofSupportFinite_coe
 
-instance canLift : CanLift (α → M) (α →₀ M) (⇑) fun f => (Function.support f).Finite where
+instance instCanLift : CanLift (α → M) (α →₀ M) (⇑) fun f => (Function.support f).Finite where
   prf f hf := ⟨ofSupportFinite f hf, rfl⟩
-#align finsupp.can_lift Finsupp.canLift
+#align finsupp.can_lift Finsupp.instCanLift
 
 end OfSupportFinite
 
@@ -1009,9 +1009,9 @@ section AddZeroClass
 
 variable [AddZeroClass M]
 
-instance add : Add (α →₀ M) :=
+instance instAdd : Add (α →₀ M) :=
   ⟨zipWith (· + ·) (add_zero 0)⟩
-#align finsupp.has_add Finsupp.add
+#align finsupp.has_add Finsupp.instAdd
 
 @[simp, norm_cast] lemma coe_add (f g : α →₀ M) : ⇑(f + g) = f + g := rfl
 #align finsupp.coe_add Finsupp.coe_add
@@ -1042,9 +1042,9 @@ theorem single_add (a : α) (b₁ b₂ : M) : single a (b₁ + b₂) = single a
   (zipWith_single_single _ _ _ _ _).symm
 #align finsupp.single_add Finsupp.single_add
 
-instance addZeroClass : AddZeroClass (α →₀ M) :=
+instance instAddZeroClass : AddZeroClass (α →₀ M) :=
   DFunLike.coe_injective.addZeroClass _ coe_zero coe_add
-#align finsupp.add_zero_class Finsupp.addZeroClass
+#align finsupp.add_zero_class Finsupp.instAddZeroClass
 
 instance instIsLeftCancelAdd [IsLeftCancelAdd M] : IsLeftCancelAdd (α →₀ M) where
   add_left_cancel _ _ _ h := ext fun x => add_left_cancel <| DFunLike.congr_fun h x
@@ -1270,25 +1270,25 @@ variable [AddMonoid M]
 
 /-- Note the general `SMul` instance for `Finsupp` doesn't apply as `ℕ` is not distributive
 unless `β i`'s addition is commutative. -/
-instance hasNatScalar : SMul ℕ (α →₀ M) :=
+instance instNatSMul : SMul ℕ (α →₀ M) :=
   ⟨fun n v => v.mapRange (n • ·) (nsmul_zero _)⟩
-#align finsupp.has_nat_scalar Finsupp.hasNatScalar
+#align finsupp.has_nat_scalar Finsupp.instNatSMul
 
-instance addMonoid : AddMonoid (α →₀ M) :=
+instance instAddMonoid : AddMonoid (α →₀ M) :=
   DFunLike.coe_injective.addMonoid _ coe_zero coe_add fun _ _ => rfl
-#align finsupp.add_monoid Finsupp.addMonoid
+#align finsupp.add_monoid Finsupp.instAddMonoid
 
 end AddMonoid
 
-instance addCommMonoid [AddCommMonoid M] : AddCommMonoid (α →₀ M) :=
+instance instAddCommMonoid [AddCommMonoid M] : AddCommMonoid (α →₀ M) :=
   --TODO: add reference to library note in PR #7432
   { DFunLike.coe_injective.addCommMonoid (↑) coe_zero coe_add (fun _ _ => rfl) with
-    toAddMonoid := Finsupp.addMonoid }
-#align finsupp.add_comm_monoid Finsupp.addCommMonoid
+    toAddMonoid := Finsupp.instAddMonoid }
+#align finsupp.add_comm_monoid Finsupp.instAddCommMonoid
 
-instance neg [NegZeroClass G] : Neg (α →₀ G) :=
+instance instNeg [NegZeroClass G] : Neg (α →₀ G) :=
   ⟨mapRange Neg.neg neg_zero⟩
-#align finsupp.has_neg Finsupp.neg
+#align finsupp.has_neg Finsupp.instNeg
 
 @[simp, norm_cast] lemma coe_neg [NegZeroClass G] (g : α →₀ G) : ⇑(-g) = -g := rfl
 #align finsupp.coe_neg Finsupp.coe_neg
@@ -1308,9 +1308,9 @@ theorem mapRange_neg' [AddGroup G] [SubtractionMonoid H] [FunLike β G H] [AddMo
   mapRange_neg (map_neg f) v
 #align finsupp.map_range_neg' Finsupp.mapRange_neg'
 
-instance sub [SubNegZeroMonoid G] : Sub (α →₀ G) :=
+instance instSub [SubNegZeroMonoid G] : Sub (α →₀ G) :=
   ⟨zipWith Sub.sub (sub_zero _)⟩
-#align finsupp.has_sub Finsupp.sub
+#align finsupp.has_sub Finsupp.instSub
 
 @[simp, norm_cast] lemma coe_sub [SubNegZeroMonoid G] (g₁ g₂ : α →₀ G) : ⇑(g₁ - g₂) = g₁ - g₂ := rfl
 #align finsupp.coe_sub Finsupp.coe_sub
@@ -1333,23 +1333,23 @@ theorem mapRange_sub' [AddGroup G] [SubtractionMonoid H] [FunLike β G H] [AddMo
 
 /-- Note the general `SMul` instance for `Finsupp` doesn't apply as `ℤ` is not distributive
 unless `β i`'s addition is commutative. -/
-instance hasIntScalar [AddGroup G] : SMul ℤ (α →₀ G) :=
+instance instIntSMul [AddGroup G] : SMul ℤ (α →₀ G) :=
   ⟨fun n v => v.mapRange (n • ·) (zsmul_zero _)⟩
-#align finsupp.has_int_scalar Finsupp.hasIntScalar
+#align finsupp.has_int_scalar Finsupp.instIntSMul
 
-instance addGroup [AddGroup G] : AddGroup (α →₀ G) :=
+instance instAddGroup [AddGroup G] : AddGroup (α →₀ G) :=
   --TODO: add reference to library note in PR #7432
   { DFunLike.coe_injective.addGroup (↑) coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl)
       fun _ _ => rfl with
-    toAddMonoid := Finsupp.addMonoid }
-#align finsupp.add_group Finsupp.addGroup
+    toAddMonoid := Finsupp.instAddMonoid }
+#align finsupp.add_group Finsupp.instAddGroup
 
-instance addCommGroup [AddCommGroup G] : AddCommGroup (α →₀ G) :=
+instance instAddCommGroup [AddCommGroup G] : AddCommGroup (α →₀ G) :=
   --TODO: add reference to library note in PR #7432
   { DFunLike.coe_injective.addCommGroup (↑) coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl)
       fun _ _ => rfl with
-    toAddGroup := Finsupp.addGroup }
-#align finsupp.add_comm_group Finsupp.addCommGroup
+    toAddGroup := Finsupp.instAddGroup }
+#align finsupp.add_comm_group Finsupp.instAddCommGroup
 
 theorem single_add_single_eq_single_add_single [AddCommMonoid M] {k l m n : α} {u v : M}
     (hu : u ≠ 0) (hv : v ≠ 0) :
chore: classify simp can do this porting notes (#10619)

Classify by adding issue number (#10618) to porting notes claiming anything semantically equivalent to simp can prove this or simp can simplify this.

Diff
@@ -741,7 +741,7 @@ theorem support_onFinset_subset {s : Finset α} {f : α → M} {hf} :
   classical convert filter_subset (f · ≠ 0) s
 #align finsupp.support_on_finset_subset Finsupp.support_onFinset_subset
 
--- @[simp] -- Porting note: simp can prove this
+-- @[simp] -- Porting note (#10618): simp can prove this
 theorem mem_support_onFinset {s : Finset α} {f : α → M} (hf : ∀ a : α, f a ≠ 0 → a ∈ s) {a : α} :
     a ∈ (Finsupp.onFinset s f hf).support ↔ f a ≠ 0 := by
   rw [Finsupp.mem_support_iff, Finsupp.onFinset_apply]
feat(RingTheory/PowerSeries/Basic): coeff of products (#9309)
  • Use the class HasPiAntidiagonal defined in PR #7904 to compute the coefficients of products of power series (in several or one variable) : MvPowerSeries.coeff_prod and PowerSeries.coeff_prod
  • Update the file Archive/Partition.lean accordingly

Co-author : Maria Ines de Frutos Fernandez

Based on work of Bhavik Mehta in Archive/Partition.lean

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Antoine Chambert-Loir <antoine.chambert-loir@math.univ-paris-diderot.fr> Co-authored-by: mariainesdff <mariaines.dff@gmail.com>

Diff
@@ -1062,6 +1062,11 @@ noncomputable def _root_.AddEquiv.finsuppUnique {ι : Type*} [Unique ι] :
   __ := Equiv.finsuppUnique
   map_add' _ _ := rfl
 
+  lemma _root_.AddEquiv.finsuppUnique_symm {M : Type*} [AddZeroClass M] (d : M) :
+      AddEquiv.finsuppUnique.symm d = single () d := by
+  rw [Finsupp.unique_single (AddEquiv.finsuppUnique.symm d), Finsupp.unique_single_eq_iff]
+  rfl
+
 instance instIsRightCancelAdd [IsRightCancelAdd M] : IsRightCancelAdd (α →₀ M) where
   add_right_cancel _ _ _ h := ext fun x => add_right_cancel <| DFunLike.congr_fun h x
 
refactor(Data/FunLike): use unbundled inheritance from FunLike (#8386)

The FunLike hierarchy is very big and gets scanned through each time we need a coercion (via the CoeFun instance). It looks like unbundled inheritance suits Lean 4 better here. The only class that still extends FunLike is EquivLike, since that has a custom coe_injective' field that is easier to implement. All other classes should take FunLike or EquivLike as a parameter.

Zulip thread

Important changes

Previously, morphism classes would be Type-valued and extend FunLike:

/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
  extends FunLike F A B :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))

After this PR, they should be Prop-valued and take FunLike as a parameter:

/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
  [FunLike F A B] : Prop :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))

(Note that A B stay marked as outParam even though they are not purely required to be so due to the FunLike parameter already filling them in. This is required to see through type synonyms, which is important in the category theory library. Also, I think keeping them as outParam is slightly faster.)

Similarly, MyEquivClass should take EquivLike as a parameter.

As a result, every mention of [MyHomClass F A B] should become [FunLike F A B] [MyHomClass F A B].

Remaining issues

Slower (failing) search

While overall this gives some great speedups, there are some cases that are noticeably slower. In particular, a failing application of a lemma such as map_mul is more expensive. This is due to suboptimal processing of arguments. For example:

variable [FunLike F M N] [Mul M] [Mul N] (f : F) (x : M) (y : M)

theorem map_mul [MulHomClass F M N] : f (x * y) = f x * f y

example [AddHomClass F A B] : f (x * y) = f x * f y := map_mul f _ _

Before this PR, applying map_mul f gives the goals [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]. Since M and N are out_params, [MulHomClass F ?M ?N] is synthesized first, supplies values for ?M and ?N and then the Mul M and Mul N instances can be found.

After this PR, the goals become [FunLike F ?M ?N] [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]. Now [FunLike F ?M ?N] is synthesized first, supplies values for ?M and ?N and then the Mul M and Mul N instances can be found, before trying MulHomClass F M N which fails. Since the Mul hierarchy is very big, this can be slow to fail, especially when there is no such Mul instance.

A long-term but harder to achieve solution would be to specify the order in which instance goals get solved. For example, we'd like to change the arguments to map_mul to look like [FunLike F M N] [Mul M] [Mul N] [highPriority <| MulHomClass F M N] because MulHomClass fails or succeeds much faster than the others.

As a consequence, the simpNF linter is much slower since by design it tries and fails to apply many map_ lemmas. The same issue occurs a few times in existing calls to simp [map_mul], where map_mul is tried "too soon" and fails. Thanks to the speedup of leanprover/lean4#2478 the impact is very limited, only in files that already were close to the timeout.

simp not firing sometimes

This affects map_smulₛₗ and related definitions. For simp lemmas Lean apparently uses a slightly different mechanism to find instances, so that rw can find every argument to map_smulₛₗ successfully but simp can't: leanprover/lean4#3701.

Missing instances due to unification failing

Especially in the category theory library, we might sometimes have a type A which is also accessible as a synonym (Bundled A hA).1. Instance synthesis doesn't always work if we have f : A →* B but x * y : (Bundled A hA).1 or vice versa. This seems to be mostly fixed by keeping A B as outParams in MulHomClass F A B. (Presumably because Lean will do a definitional check A =?= (Bundled A hA).1 instead of using the syntax in the discrimination tree.)

Workaround for issues

The timeouts can be worked around for now by specifying which map_mul we mean, either as map_mul f for some explicit f, or as e.g. MonoidHomClass.map_mul.

map_smulₛₗ not firing as simp lemma can be worked around by going back to the pre-FunLike situation and making LinearMap.map_smulₛₗ a simp lemma instead of the generic map_smulₛₗ. Writing simp [map_smulₛₗ _] also works.

Co-authored-by: Matthew Ballard <matt@mrb.email> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott@tqft.net> Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>

Diff
@@ -1231,7 +1231,8 @@ theorem mapRange_add [AddZeroClass N] {f : M → N} {hf : f 0 = 0}
   ext fun _ => by simp only [hf', add_apply, mapRange_apply]
 #align finsupp.map_range_add Finsupp.mapRange_add
 
-theorem mapRange_add' [AddZeroClass N] [AddMonoidHomClass β M N] {f : β} (v₁ v₂ : α →₀ M) :
+theorem mapRange_add' [AddZeroClass N] [FunLike β M N] [AddMonoidHomClass β M N]
+    {f : β} (v₁ v₂ : α →₀ M) :
     mapRange f (map_zero f) (v₁ + v₂) = mapRange f (map_zero f) v₁ + mapRange f (map_zero f) v₂ :=
   mapRange_add (map_add f) v₁ v₂
 #align finsupp.map_range_add' Finsupp.mapRange_add'
@@ -1296,8 +1297,9 @@ theorem mapRange_neg [NegZeroClass G] [NegZeroClass H] {f : G → H} {hf : f 0 =
   ext fun _ => by simp only [hf', neg_apply, mapRange_apply]
 #align finsupp.map_range_neg Finsupp.mapRange_neg
 
-theorem mapRange_neg' [AddGroup G] [SubtractionMonoid H] [AddMonoidHomClass β G H] {f : β}
-    (v : α →₀ G) : mapRange f (map_zero f) (-v) = -mapRange f (map_zero f) v :=
+theorem mapRange_neg' [AddGroup G] [SubtractionMonoid H] [FunLike β G H] [AddMonoidHomClass β G H]
+    {f : β} (v : α →₀ G) :
+    mapRange f (map_zero f) (-v) = -mapRange f (map_zero f) v :=
   mapRange_neg (map_neg f) v
 #align finsupp.map_range_neg' Finsupp.mapRange_neg'
 
@@ -1318,8 +1320,8 @@ theorem mapRange_sub [SubNegZeroMonoid G] [SubNegZeroMonoid H] {f : G → H} {hf
   ext fun _ => by simp only [hf', sub_apply, mapRange_apply]
 #align finsupp.map_range_sub Finsupp.mapRange_sub
 
-theorem mapRange_sub' [AddGroup G] [SubtractionMonoid H] [AddMonoidHomClass β G H] {f : β}
-    (v₁ v₂ : α →₀ G) :
+theorem mapRange_sub' [AddGroup G] [SubtractionMonoid H] [FunLike β G H] [AddMonoidHomClass β G H]
+    {f : β} (v₁ v₂ : α →₀ G) :
     mapRange f (map_zero f) (v₁ - v₂) = mapRange f (map_zero f) v₁ - mapRange f (map_zero f) v₂ :=
   mapRange_sub (map_sub f) v₁ v₂
 #align finsupp.map_range_sub' Finsupp.mapRange_sub'
chore: reduce imports (#9830)

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

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

Diff
@@ -3,7 +3,7 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Scott Morrison
 -/
-import Mathlib.Algebra.BigOperators.Basic
+import Mathlib.Algebra.Function.Indicator
 import Mathlib.Data.Set.Finite
 import Mathlib.GroupTheory.Submonoid.Basic
 
@@ -86,8 +86,6 @@ noncomputable section
 
 open Finset Function
 
-open BigOperators
-
 variable {α β γ ι M M' N P G H R S : Type*}
 
 /-- `Finsupp α M`, denoted `α →₀ M`, is the type of functions `f : α → M` such that
refactor(*): abbreviation for non-dependent FunLike (#9833)

This follows up from #9785, which renamed FunLike to DFunLike, by introducing a new abbreviation FunLike F α β := DFunLike F α (fun _ => β), to make the non-dependent use of FunLike easier.

I searched for the pattern DFunLike.*fun and DFunLike.*λ in all files to replace expressions of the form DFunLike F α (fun _ => β) with FunLike F α β. I did this everywhere except for extends clauses for two reasons: it would conflict with #8386, and more importantly extends must directly refer to a structure with no unfolding of defs or abbrevs.

Diff
@@ -117,13 +117,13 @@ section Basic
 
 variable [Zero M]
 
-instance instDFunLike : DFunLike (α →₀ M) α fun _ => M :=
+instance instFunLike : FunLike (α →₀ M) α M :=
   ⟨toFun, by
     rintro ⟨s, f, hf⟩ ⟨t, g, hg⟩ (rfl : f = g)
     congr
     ext a
     exact (hf _).trans (hg _).symm⟩
-#align finsupp.fun_like Finsupp.instDFunLike
+#align finsupp.fun_like Finsupp.instFunLike
 
 /-- Helper instance for when there are too many metavariables to apply the `DFunLike` instance
 directly. -/
chore(*): rename FunLike to DFunLike (#9785)

This prepares for the introduction of a non-dependent synonym of FunLike, which helps a lot with keeping #8386 readable.

This is entirely search-and-replace in 680197f combined with manual fixes in 4145626, e900597 and b8428f8. The commands that generated this change:

sed -i 's/\bFunLike\b/DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoFunLike\b/toDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/import Mathlib.Data.DFunLike/import Mathlib.Data.FunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bHom_FunLike\b/Hom_DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean     
sed -i 's/\binstFunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bfunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoo many metavariables to apply `fun_like.has_coe_to_fun`/too many metavariables to apply `DFunLike.hasCoeToFun`/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean

Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>

Diff
@@ -117,15 +117,15 @@ section Basic
 
 variable [Zero M]
 
-instance funLike : FunLike (α →₀ M) α fun _ => M :=
+instance instDFunLike : DFunLike (α →₀ M) α fun _ => M :=
   ⟨toFun, by
     rintro ⟨s, f, hf⟩ ⟨t, g, hg⟩ (rfl : f = g)
     congr
     ext a
     exact (hf _).trans (hg _).symm⟩
-#align finsupp.fun_like Finsupp.funLike
+#align finsupp.fun_like Finsupp.instDFunLike
 
-/-- Helper instance for when there are too many metavariables to apply the `FunLike` instance
+/-- Helper instance for when there are too many metavariables to apply the `DFunLike` instance
 directly. -/
 instance coeFun : CoeFun (α →₀ M) fun _ => α → M :=
   inferInstance
@@ -133,29 +133,29 @@ instance coeFun : CoeFun (α →₀ M) fun _ => α → M :=
 
 @[ext]
 theorem ext {f g : α →₀ M} (h : ∀ a, f a = g a) : f = g :=
-  FunLike.ext _ _ h
+  DFunLike.ext _ _ h
 #align finsupp.ext Finsupp.ext
 
-@[deprecated FunLike.ext_iff]
+@[deprecated DFunLike.ext_iff]
 theorem ext_iff {f g : α →₀ M} : f = g ↔ ∀ a, f a = g a :=
-  FunLike.ext_iff
+  DFunLike.ext_iff
 #align finsupp.ext_iff Finsupp.ext_iff
 
-lemma ne_iff {f g : α →₀ M} : f ≠ g ↔ ∃ a, f a ≠ g a := FunLike.ne_iff
+lemma ne_iff {f g : α →₀ M} : f ≠ g ↔ ∃ a, f a ≠ g a := DFunLike.ne_iff
 
-@[deprecated FunLike.coe_fn_eq]
+@[deprecated DFunLike.coe_fn_eq]
 theorem coeFn_inj {f g : α →₀ M} : (f : α → M) = g ↔ f = g :=
-  FunLike.coe_fn_eq
+  DFunLike.coe_fn_eq
 #align finsupp.coe_fn_inj Finsupp.coeFn_inj
 
-@[deprecated FunLike.coe_injective]
+@[deprecated DFunLike.coe_injective]
 theorem coeFn_injective : @Function.Injective (α →₀ M) (α → M) (⇑) :=
-  FunLike.coe_injective
+  DFunLike.coe_injective
 #align finsupp.coe_fn_injective Finsupp.coeFn_injective
 
-@[deprecated FunLike.congr_fun]
+@[deprecated DFunLike.congr_fun]
 theorem congr_fun {f g : α →₀ M} (h : f = g) (a : α) : f a = g a :=
-  FunLike.congr_fun h _
+  DFunLike.congr_fun h _
 #align finsupp.congr_fun Finsupp.congr_fun
 
 @[simp, norm_cast]
@@ -198,7 +198,7 @@ theorem not_mem_support_iff {f : α →₀ M} {a} : a ∉ f.support ↔ f a = 0
 #align finsupp.not_mem_support_iff Finsupp.not_mem_support_iff
 
 @[simp, norm_cast]
-theorem coe_eq_zero {f : α →₀ M} : (f : α → M) = 0 ↔ f = 0 := by rw [← coe_zero, FunLike.coe_fn_eq]
+theorem coe_eq_zero {f : α →₀ M} : (f : α → M) = 0 ↔ f = 0 := by rw [← coe_zero, DFunLike.coe_fn_eq]
 #align finsupp.coe_eq_zero Finsupp.coe_eq_zero
 
 theorem ext_iff' {f g : α →₀ M} : f = g ↔ f.support = g.support ∧ ∀ x ∈ f.support, f x = g x :=
@@ -340,7 +340,7 @@ theorem single_eq_pi_single [DecidableEq α] (a : α) (b : M) : ⇑(single a b)
 
 @[simp]
 theorem single_zero (a : α) : (single a 0 : α →₀ M) = 0 :=
-  FunLike.coe_injective <| by
+  DFunLike.coe_injective <| by
     classical simpa only [single_eq_update, coe_zero] using Function.update_eq_self a (0 : α → M)
 #align finsupp.single_zero Finsupp.single_zero
 
@@ -404,7 +404,7 @@ theorem single_eq_single_iff (a₁ a₂ : α) (b₁ b₂ : M) :
     by_cases h : a₁ = a₂
     · refine' Or.inl ⟨h, _⟩
       rwa [h, (single_injective a₂).eq_iff] at eq
-    · rw [FunLike.ext_iff] at eq
+    · rw [DFunLike.ext_iff] at eq
       have h₁ := eq a₁
       have h₂ := eq a₂
       simp only [single_eq_same, single_eq_of_ne h, single_eq_of_ne (Ne.symm h)] at h₁ h₂
@@ -435,7 +435,7 @@ theorem support_single_disjoint {b' : M} (hb : b ≠ 0) (hb' : b' ≠ 0) {i j :
 
 @[simp]
 theorem single_eq_zero : single a b = 0 ↔ b = 0 := by
-  simp [FunLike.ext_iff, single_eq_set_indicator]
+  simp [DFunLike.ext_iff, single_eq_set_indicator]
 #align finsupp.single_eq_zero Finsupp.single_eq_zero
 
 theorem single_swap (a₁ a₂ : α) (b : M) : single a₁ b a₂ = single a₂ b a₁ := by
@@ -610,12 +610,12 @@ theorem support_update_subset [DecidableEq α] [DecidableEq M] :
 theorem update_comm (f : α →₀ M) {a₁ a₂ : α} (h : a₁ ≠ a₂) (m₁ m₂ : M) :
     update (update f a₁ m₁) a₂ m₂ = update (update f a₂ m₂) a₁ m₁ :=
   letI := Classical.decEq α
-  FunLike.coe_injective <| Function.update_comm h _ _ _
+  DFunLike.coe_injective <| Function.update_comm h _ _ _
 
 @[simp] theorem update_idem (f : α →₀ M) (a : α) (b c : M) :
     update (update f a b) a c = update f a c :=
   letI := Classical.decEq α
-  FunLike.coe_injective <| Function.update_idem _ _ _
+  DFunLike.coe_injective <| Function.update_idem _ _ _
 
 end Update
 
@@ -905,7 +905,7 @@ theorem embDomain_notin_range (f : α ↪ β) (v : α →₀ M) (a : β) (h : a
 #align finsupp.emb_domain_notin_range Finsupp.embDomain_notin_range
 
 theorem embDomain_injective (f : α ↪ β) : Function.Injective (embDomain f : (α →₀ M) → β →₀ M) :=
-  fun l₁ l₂ h => ext fun a => by simpa only [embDomain_apply] using FunLike.ext_iff.1 h (f a)
+  fun l₁ l₂ h => ext fun a => by simpa only [embDomain_apply] using DFunLike.ext_iff.1 h (f a)
 #align finsupp.emb_domain_injective Finsupp.embDomain_injective
 
 @[simp]
@@ -1045,11 +1045,11 @@ theorem single_add (a : α) (b₁ b₂ : M) : single a (b₁ + b₂) = single a
 #align finsupp.single_add Finsupp.single_add
 
 instance addZeroClass : AddZeroClass (α →₀ M) :=
-  FunLike.coe_injective.addZeroClass _ coe_zero coe_add
+  DFunLike.coe_injective.addZeroClass _ coe_zero coe_add
 #align finsupp.add_zero_class Finsupp.addZeroClass
 
 instance instIsLeftCancelAdd [IsLeftCancelAdd M] : IsLeftCancelAdd (α →₀ M) where
-  add_left_cancel _ _ _ h := ext fun x => add_left_cancel <| FunLike.congr_fun h x
+  add_left_cancel _ _ _ h := ext fun x => add_left_cancel <| DFunLike.congr_fun h x
 
 /-- When ι is finite and M is an AddMonoid,
   then Finsupp.equivFunOnFinite gives an AddEquiv -/
@@ -1065,7 +1065,7 @@ noncomputable def _root_.AddEquiv.finsuppUnique {ι : Type*} [Unique ι] :
   map_add' _ _ := rfl
 
 instance instIsRightCancelAdd [IsRightCancelAdd M] : IsRightCancelAdd (α →₀ M) where
-  add_right_cancel _ _ _ h := ext fun x => add_right_cancel <| FunLike.congr_fun h x
+  add_right_cancel _ _ _ h := ext fun x => add_right_cancel <| DFunLike.congr_fun h x
 
 instance instIsCancelAdd [IsCancelAdd M] : IsCancelAdd (α →₀ M) where
 
@@ -1204,18 +1204,18 @@ verify `f (single a 1) = g (single a 1)`. -/
 @[ext high]
 theorem addHom_ext' [AddZeroClass N] ⦃f g : (α →₀ M) →+ N⦄
     (H : ∀ x, f.comp (singleAddHom x) = g.comp (singleAddHom x)) : f = g :=
-  addHom_ext fun x => FunLike.congr_fun (H x)
+  addHom_ext fun x => DFunLike.congr_fun (H x)
 #align finsupp.add_hom_ext' Finsupp.addHom_ext'
 
 theorem mulHom_ext [MulOneClass N] ⦃f g : Multiplicative (α →₀ M) →* N⦄
     (H : ∀ x y, f (Multiplicative.ofAdd <| single x y) = g (Multiplicative.ofAdd <| single x y)) :
     f = g :=
   MonoidHom.ext <|
-    FunLike.congr_fun <| by
+    DFunLike.congr_fun <| by
       have := @addHom_ext α M (Additive N) _ _
         (MonoidHom.toAdditive'' f) (MonoidHom.toAdditive'' g) H
       ext
-      rw [FunLike.ext_iff] at this
+      rw [DFunLike.ext_iff] at this
       apply this
 #align finsupp.mul_hom_ext Finsupp.mulHom_ext
 
@@ -1224,7 +1224,7 @@ theorem mulHom_ext' [MulOneClass N] {f g : Multiplicative (α →₀ M) →* N}
     (H : ∀ x, f.comp (AddMonoidHom.toMultiplicative (singleAddHom x)) =
               g.comp (AddMonoidHom.toMultiplicative (singleAddHom x))) :
     f = g :=
-  mulHom_ext fun x => FunLike.congr_fun (H x)
+  mulHom_ext fun x => DFunLike.congr_fun (H x)
 #align finsupp.mul_hom_ext' Finsupp.mulHom_ext'
 
 theorem mapRange_add [AddZeroClass N] {f : M → N} {hf : f 0 = 0}
@@ -1271,14 +1271,14 @@ instance hasNatScalar : SMul ℕ (α →₀ M) :=
 #align finsupp.has_nat_scalar Finsupp.hasNatScalar
 
 instance addMonoid : AddMonoid (α →₀ M) :=
-  FunLike.coe_injective.addMonoid _ coe_zero coe_add fun _ _ => rfl
+  DFunLike.coe_injective.addMonoid _ coe_zero coe_add fun _ _ => rfl
 #align finsupp.add_monoid Finsupp.addMonoid
 
 end AddMonoid
 
 instance addCommMonoid [AddCommMonoid M] : AddCommMonoid (α →₀ M) :=
   --TODO: add reference to library note in PR #7432
-  { FunLike.coe_injective.addCommMonoid (↑) coe_zero coe_add (fun _ _ => rfl) with
+  { DFunLike.coe_injective.addCommMonoid (↑) coe_zero coe_add (fun _ _ => rfl) with
     toAddMonoid := Finsupp.addMonoid }
 #align finsupp.add_comm_monoid Finsupp.addCommMonoid
 
@@ -1334,14 +1334,14 @@ instance hasIntScalar [AddGroup G] : SMul ℤ (α →₀ G) :=
 
 instance addGroup [AddGroup G] : AddGroup (α →₀ G) :=
   --TODO: add reference to library note in PR #7432
-  { FunLike.coe_injective.addGroup (↑) coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl)
+  { DFunLike.coe_injective.addGroup (↑) coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl)
       fun _ _ => rfl with
     toAddMonoid := Finsupp.addMonoid }
 #align finsupp.add_group Finsupp.addGroup
 
 instance addCommGroup [AddCommGroup G] : AddCommGroup (α →₀ G) :=
   --TODO: add reference to library note in PR #7432
-  { FunLike.coe_injective.addCommGroup (↑) coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl)
+  { DFunLike.coe_injective.addCommGroup (↑) coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl)
       fun _ _ => rfl with
     toAddGroup := Finsupp.addGroup }
 #align finsupp.add_comm_group Finsupp.addCommGroup
@@ -1351,7 +1351,7 @@ theorem single_add_single_eq_single_add_single [AddCommMonoid M] {k l m n : α}
     single k u + single l v = single m u + single n v ↔
       (k = m ∧ l = n) ∨ (u = v ∧ k = n ∧ l = m) ∨ (u + v = 0 ∧ k = l ∧ m = n) := by
   classical
-    simp_rw [FunLike.ext_iff, coe_add, single_eq_pi_single, ← funext_iff]
+    simp_rw [DFunLike.ext_iff, coe_add, single_eq_pi_single, ← funext_iff]
     exact Pi.single_add_single_eq_single_add_single hu hv
 #align finsupp.single_add_single_eq_single_add_single Finsupp.single_add_single_eq_single_add_single
 
feat: add Finset.piAntidiagonal (#7904)

This is defined in terms of Finset.HasAntidiagonal.

A subsequent PR #9309 uses this to compute coefficients of products of power series.

Co-author : Maria Ines de Frutos Fernandez

Based on work of Bhavik Mehta in Archive/Partition.lean

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Antoine Chambert-Loir <antoine.chambert-loir@math.univ-paris-diderot.fr> Co-authored-by: Johan Commelin <johan@commelin.net>

Diff
@@ -1051,6 +1051,19 @@ instance addZeroClass : AddZeroClass (α →₀ M) :=
 instance instIsLeftCancelAdd [IsLeftCancelAdd M] : IsLeftCancelAdd (α →₀ M) where
   add_left_cancel _ _ _ h := ext fun x => add_left_cancel <| FunLike.congr_fun h x
 
+/-- When ι is finite and M is an AddMonoid,
+  then Finsupp.equivFunOnFinite gives an AddEquiv -/
+noncomputable def addEquivFunOnFinite {ι : Type*} [Finite ι] :
+    (ι →₀ M) ≃+ (ι → M) where
+  __ := Finsupp.equivFunOnFinite
+  map_add' _ _ := rfl
+
+/-- AddEquiv between (ι →₀ M) and M, when ι has a unique element -/
+noncomputable def _root_.AddEquiv.finsuppUnique {ι : Type*} [Unique ι] :
+    (ι →₀ M) ≃+ M where
+  __ := Equiv.finsuppUnique
+  map_add' _ _ := rfl
+
 instance instIsRightCancelAdd [IsRightCancelAdd M] : IsRightCancelAdd (α →₀ M) where
   add_right_cancel _ _ _ h := ext fun x => add_right_cancel <| FunLike.congr_fun h x
 
feat: missing lemmas about Finsupp.update (#9316)
Diff
@@ -600,6 +600,23 @@ theorem support_update_ne_zero [DecidableEq α] (h : b ≠ 0) :
   congr; apply Subsingleton.elim
 #align finsupp.support_update_ne_zero Finsupp.support_update_ne_zero
 
+theorem support_update_subset [DecidableEq α] [DecidableEq M] :
+    support (f.update a b) ⊆ insert a f.support := by
+  rw [support_update]
+  split_ifs
+  · exact (erase_subset _ _).trans (subset_insert _ _)
+  · rfl
+
+theorem update_comm (f : α →₀ M) {a₁ a₂ : α} (h : a₁ ≠ a₂) (m₁ m₂ : M) :
+    update (update f a₁ m₁) a₂ m₂ = update (update f a₂ m₂) a₁ m₁ :=
+  letI := Classical.decEq α
+  FunLike.coe_injective <| Function.update_comm h _ _ _
+
+@[simp] theorem update_idem (f : α →₀ M) (a : α) (b c : M) :
+    update (update f a b) a c = update f a c :=
+  letI := Classical.decEq α
+  FunLike.coe_injective <| Function.update_idem _ _ _
+
 end Update
 
 /-! ### Declarations about `erase` -/
@@ -673,6 +690,28 @@ theorem erase_zero (a : α) : erase a (0 : α →₀ M) = 0 := by
   classical rw [← support_eq_empty, support_erase, support_zero, erase_empty]
 #align finsupp.erase_zero Finsupp.erase_zero
 
+theorem erase_eq_update_zero (f : α →₀ M) (a : α) : f.erase a = update f a 0 :=
+  letI := Classical.decEq α
+  ext fun _ => (Function.update_apply _ _ _ _).symm
+
+-- The name matches `Finset.erase_insert_of_ne`
+theorem erase_update_of_ne (f : α →₀ M) {a a' : α} (ha : a ≠ a') (b : M) :
+    erase a (update f a' b) = update (erase a f) a' b := by
+  rw [erase_eq_update_zero, erase_eq_update_zero, update_comm _ ha]
+
+-- not `simp` as `erase_of_not_mem_support` can prove this
+theorem erase_idem (f : α →₀ M) (a : α) :
+    erase a (erase a f) = erase a f := by
+  rw [erase_eq_update_zero, erase_eq_update_zero, update_idem]
+
+@[simp] theorem update_erase_eq_update (f : α →₀ M) (a : α) (b : M) :
+    update (erase a f) a b = update f a b := by
+  rw [erase_eq_update_zero, update_idem]
+
+@[simp] theorem erase_update_eq_erase (f : α →₀ M) (a : α) (b : M) :
+    erase a (update f a b) = erase a f := by
+  rw [erase_eq_update_zero, erase_eq_update_zero, update_idem]
+
 end Erase
 
 /-! ### Declarations about `onFinset` -/
chore(*): use ∃ x ∈ s, _ instead of ∃ (x) (_ : x ∈ s), _ (#9215)

Follow-up #9184

Diff
@@ -236,7 +236,7 @@ theorem finite_support (f : α →₀ M) : Set.Finite (Function.support f) :=
 /- ./././Mathport/Syntax/Translate/Basic.lean:632:2:
   warning: expanding binder collection (a «expr ∉ » s) -/
 theorem support_subset_iff {s : Set α} {f : α →₀ M} :
-    ↑f.support ⊆ s ↔ ∀ (a) (_ : a ∉ s), f a = 0 := by
+    ↑f.support ⊆ s ↔ ∀ a ∉ s, f a = 0 := by
   simp only [Set.subset_def, mem_coe, mem_support_iff]; exact forall_congr' fun a => not_imp_comm
 #align finsupp.support_subset_iff Finsupp.support_subset_iff
 
@@ -468,7 +468,7 @@ theorem support_eq_singleton {f : α →₀ M} {a : α} :
 /- ./././Mathport/Syntax/Translate/Basic.lean:632:2:
   warning: expanding binder collection (b «expr ≠ » 0) -/
 theorem support_eq_singleton' {f : α →₀ M} {a : α} :
-    f.support = {a} ↔ ∃ (b : _) (_ : b ≠ 0), f = single a b :=
+    f.support = {a} ↔ ∃ b ≠ 0, f = single a b :=
   ⟨fun h =>
     let h := support_eq_singleton.1 h
     ⟨_, h.1, h.2⟩,
@@ -482,7 +482,7 @@ theorem card_support_eq_one {f : α →₀ M} : card f.support = 1 ↔ ∃ a, f
 /- ./././Mathport/Syntax/Translate/Basic.lean:632:2:
   warning: expanding binder collection (b «expr ≠ » 0) -/
 theorem card_support_eq_one' {f : α →₀ M} :
-    card f.support = 1 ↔ ∃ (a : _) (b : _) (_ : b ≠ 0), f = single a b := by
+    card f.support = 1 ↔ ∃ a, ∃ b ≠ 0, f = single a b := by
   simp only [card_eq_one, support_eq_singleton']
 #align finsupp.card_support_eq_one' Finsupp.card_support_eq_one'
 
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,8 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Scott Morrison
 -/
-import Mathlib.Algebra.IndicatorFunction
+import Mathlib.Algebra.BigOperators.Basic
+import Mathlib.Data.Set.Finite
 import Mathlib.GroupTheory.Submonoid.Basic
 
 #align_import data.finsupp.defs from "leanprover-community/mathlib"@"842328d9df7e96fd90fc424e115679c15fb23a71"
chore: Replace (· op ·) a by (a op ·) (#8843)

I used the regex \(\(· (.) ·\) (.)\), replacing with ($2 $1 ·).

Diff
@@ -1214,7 +1214,7 @@ variable [AddMonoid M]
 /-- Note the general `SMul` instance for `Finsupp` doesn't apply as `ℕ` is not distributive
 unless `β i`'s addition is commutative. -/
 instance hasNatScalar : SMul ℕ (α →₀ M) :=
-  ⟨fun n v => v.mapRange ((· • ·) n) (nsmul_zero _)⟩
+  ⟨fun n v => v.mapRange (n • ·) (nsmul_zero _)⟩
 #align finsupp.has_nat_scalar Finsupp.hasNatScalar
 
 instance addMonoid : AddMonoid (α →₀ M) :=
@@ -1276,7 +1276,7 @@ theorem mapRange_sub' [AddGroup G] [SubtractionMonoid H] [AddMonoidHomClass β G
 /-- Note the general `SMul` instance for `Finsupp` doesn't apply as `ℤ` is not distributive
 unless `β i`'s addition is commutative. -/
 instance hasIntScalar [AddGroup G] : SMul ℤ (α →₀ G) :=
-  ⟨fun n v => v.mapRange ((· • ·) n) (zsmul_zero _)⟩
+  ⟨fun n v => v.mapRange (n • ·) (zsmul_zero _)⟩
 #align finsupp.has_int_scalar Finsupp.hasIntScalar
 
 instance addGroup [AddGroup G] : AddGroup (α →₀ G) :=
feat: When Finsupp.prod is nonzero (#8844)

Also replace Finsupp.nonzero_iff_exists by a more general lemma.

Diff
@@ -140,6 +140,8 @@ theorem ext_iff {f g : α →₀ M} : f = g ↔ ∀ a, f a = g a :=
   FunLike.ext_iff
 #align finsupp.ext_iff Finsupp.ext_iff
 
+lemma ne_iff {f g : α →₀ M} : f ≠ g ↔ ∃ a, f a ≠ g a := FunLike.ne_iff
+
 @[deprecated FunLike.coe_fn_eq]
 theorem coeFn_inj {f g : α →₀ M} : (f : α → M) = g ↔ f = g :=
   FunLike.coe_fn_eq
@@ -155,7 +157,7 @@ theorem congr_fun {f g : α →₀ M} (h : f = g) (a : α) : f a = g a :=
   FunLike.congr_fun h _
 #align finsupp.congr_fun Finsupp.congr_fun
 
-@[simp]
+@[simp, norm_cast]
 theorem coe_mk (f : α → M) (s : Finset α) (h : ∀ a, a ∈ s ↔ f a ≠ 0) : ⇑(⟨s, f, h⟩ : α →₀ M) = f :=
   rfl
 #align finsupp.coe_mk Finsupp.coe_mk
@@ -164,9 +166,7 @@ instance zero : Zero (α →₀ M) :=
   ⟨⟨∅, 0, fun _ => ⟨fun h ↦ (not_mem_empty _ h).elim, fun H => (H rfl).elim⟩⟩⟩
 #align finsupp.has_zero Finsupp.zero
 
-@[simp]
-theorem coe_zero : ⇑(0 : α →₀ M) = 0 :=
-  rfl
+@[simp, norm_cast] lemma coe_zero : ⇑(0 : α →₀ M) = 0 := rfl
 #align finsupp.coe_zero Finsupp.coe_zero
 
 theorem zero_apply {a : α} : (0 : α →₀ M) a = 0 :=
@@ -219,9 +219,7 @@ theorem support_nonempty_iff {f : α →₀ M} : f.support.Nonempty ↔ f ≠ 0
   simp only [Finsupp.support_eq_empty, Finset.nonempty_iff_ne_empty, Ne.def]
 #align finsupp.support_nonempty_iff Finsupp.support_nonempty_iff
 
-theorem nonzero_iff_exists {f : α →₀ M} : f ≠ 0 ↔ ∃ a : α, f a ≠ 0 := by
-  simp [← Finsupp.support_eq_empty, Finset.eq_empty_iff_forall_not_mem]
-#align finsupp.nonzero_iff_exists Finsupp.nonzero_iff_exists
+#align finsupp.nonzero_iff_exists Finsupp.ne_iff
 
 theorem card_support_eq_zero {f : α →₀ M} : card f.support = 0 ↔ f = 0 := by simp
 #align finsupp.card_support_eq_zero Finsupp.card_support_eq_zero
@@ -556,7 +554,7 @@ def update (f : α →₀ M) (a : α) (b : M) : α →₀ M where
       simp [ha]
 #align finsupp.update Finsupp.update
 
-@[simp]
+@[simp, norm_cast]
 theorem coe_update [DecidableEq α] : (f.update a b : α → M) = Function.update f a b := by
   delta update Function.update
   ext
@@ -977,9 +975,7 @@ instance add : Add (α →₀ M) :=
   ⟨zipWith (· + ·) (add_zero 0)⟩
 #align finsupp.has_add Finsupp.add
 
-@[simp]
-theorem coe_add (f g : α →₀ M) : ⇑(f + g) = f + g :=
-  rfl
+@[simp, norm_cast] lemma coe_add (f g : α →₀ M) : ⇑(f + g) = f + g := rfl
 #align finsupp.coe_add Finsupp.coe_add
 
 theorem add_apply (g₁ g₂ : α →₀ M) (a : α) : (g₁ + g₂) a = g₁ a + g₂ a :=
@@ -1237,9 +1233,7 @@ instance neg [NegZeroClass G] : Neg (α →₀ G) :=
   ⟨mapRange Neg.neg neg_zero⟩
 #align finsupp.has_neg Finsupp.neg
 
-@[simp]
-theorem coe_neg [NegZeroClass G] (g : α →₀ G) : ⇑(-g) = -g :=
-  rfl
+@[simp, norm_cast] lemma coe_neg [NegZeroClass G] (g : α →₀ G) : ⇑(-g) = -g := rfl
 #align finsupp.coe_neg Finsupp.coe_neg
 
 theorem neg_apply [NegZeroClass G] (g : α →₀ G) (a : α) : (-g) a = -g a :=
@@ -1260,9 +1254,7 @@ instance sub [SubNegZeroMonoid G] : Sub (α →₀ G) :=
   ⟨zipWith Sub.sub (sub_zero _)⟩
 #align finsupp.has_sub Finsupp.sub
 
-@[simp]
-theorem coe_sub [SubNegZeroMonoid G] (g₁ g₂ : α →₀ G) : ⇑(g₁ - g₂) = g₁ - g₂ :=
-  rfl
+@[simp, norm_cast] lemma coe_sub [SubNegZeroMonoid G] (g₁ g₂ : α →₀ G) : ⇑(g₁ - g₂) = g₁ - g₂ := rfl
 #align finsupp.coe_sub Finsupp.coe_sub
 
 theorem sub_apply [SubNegZeroMonoid G] (g₁ g₂ : α →₀ G) (a : α) : (g₁ - g₂) a = g₁ a - g₂ a :=
chore: replace exact_mod_cast tactic with mod_cast elaborator where possible (#8404)

We still have the exact_mod_cast tactic, used in a few places, which somehow (?) works a little bit harder to prevent the expected type influencing the elaboration of the term. I would like to get to the bottom of this, and it will be easier once the only usages of exact_mod_cast are the ones that don't work using the term elaborator by itself.

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

Diff
@@ -211,8 +211,8 @@ theorem ext_iff' {f g : α →₀ M} : f = g ↔ f.support = g.support ∧ ∀ x
 #align finsupp.ext_iff' Finsupp.ext_iff'
 
 @[simp]
-theorem support_eq_empty {f : α →₀ M} : f.support = ∅ ↔ f = 0 := by
-  exact_mod_cast @Function.support_eq_empty_iff _ _ _ f
+theorem support_eq_empty {f : α →₀ M} : f.support = ∅ ↔ f = 0 :=
+  mod_cast @Function.support_eq_empty_iff _ _ _ f
 #align finsupp.support_eq_empty Finsupp.support_eq_empty
 
 theorem support_nonempty_iff {f : α →₀ M} : f.support.Nonempty ↔ f ≠ 0 := by
chore: bump to v4.3.0-rc2 (#8366)

PR contents

This is the supremum of

along with some minor fixes from failures on nightly-testing as Mathlib master is merged into it.

Note that some PRs for changes that are already compatible with the current toolchain and will be necessary have already been split out: #8380.

I am hopeful that in future we will be able to progressively merge adaptation PRs into a bump/v4.X.0 branch, so we never end up with a "big merge" like this. However one of these adaptation PRs (#8056) predates my new scheme for combined CI, and it wasn't possible to keep that PR viable in the meantime.

Lean PRs involved in this bump

In particular this includes adjustments for the Lean PRs

leanprover/lean4#2778

We can get rid of all the

local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue [lean4#2220](https://github.com/leanprover/lean4/pull/2220)

macros across Mathlib (and in any projects that want to write natural number powers of reals).

leanprover/lean4#2722

Changes the default behaviour of simp to (config := {decide := false}). This makes simp (and consequentially norm_num) less powerful, but also more consistent, and less likely to blow up in long failures. This requires a variety of changes: changing some previously by simp or norm_num to decide or rfl, or adding (config := {decide := true}).

leanprover/lean4#2783

This changed the behaviour of simp so that simp [f] will only unfold "fully applied" occurrences of f. The old behaviour can be recovered with simp (config := { unfoldPartialApp := true }). We may in future add a syntax for this, e.g. simp [!f]; please provide feedback! In the meantime, we have made the following changes:

  • switching to using explicit lemmas that have the intended level of application
  • (config := { unfoldPartialApp := true }) in some places, to recover the old behaviour
  • Using @[eqns] to manually adjust the equation lemmas for a particular definition, recovering the old behaviour just for that definition. See #8371, where we do this for Function.comp and Function.flip.

This change in Lean may require further changes down the line (e.g. adding the !f syntax, and/or upstreaming the special treatment for Function.comp and Function.flip, and/or removing this special treatment). Please keep an open and skeptical mind about these changes!

Co-authored-by: leanprover-community-mathlib4-bot <leanprover-community-mathlib4-bot@users.noreply.github.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Mauricio Collares <mauricio@collares.org>

Diff
@@ -835,7 +835,7 @@ def embDomain (f : α ↪ β) (v : α →₀ M) : β →₀ M where
     · simp only [h, true_iff_iff, Ne.def]
       rw [← not_mem_support_iff, not_not]
       classical apply Finset.choose_mem
-    · simp only [h, Ne.def, ne_self_iff_false]
+    · simp only [h, Ne.def, ne_self_iff_false, not_true_eq_false]
 #align finsupp.emb_domain Finsupp.embDomain
 
 @[simp]
perf(FunLike.Basic): beta reduce CoeFun.coe (#7905)

This eliminates (fun a ↦ β) α in the type when applying a FunLike.

Co-authored-by: Matthew Ballard <matt@mrb.email> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -774,7 +774,7 @@ theorem mapRange_apply {f : M → N} {hf : f 0 = 0} {g : α →₀ M} {a : α} :
 
 @[simp]
 theorem mapRange_zero {f : M → N} {hf : f 0 = 0} : mapRange f hf (0 : α →₀ M) = 0 :=
-  ext fun a => by simp only [hf, zero_apply, mapRange_apply]
+  ext fun _ => by simp only [hf, zero_apply, mapRange_apply]
 #align finsupp.map_range_zero Finsupp.mapRange_zero
 
 @[simp]
fix(Mathlib/Algebra/Lie/DirectSum): remove unused R argument from lemmas (#8388)

This made them not actually work as a simp lemma.

Also extracts a common result that can be used to prove single_add for DFinsupp and Finsupp, and a new Finsupp.single_mul lemma.

Diff
@@ -955,6 +955,15 @@ theorem support_zipWith [D : DecidableEq α] {f : M → N → P} {hf : f 0 0 = 0
   rw [Subsingleton.elim D] <;> exact support_onFinset_subset
 #align finsupp.support_zip_with Finsupp.support_zipWith
 
+@[simp]
+theorem zipWith_single_single (f : M → N → P) (hf : f 0 0 = 0) (a : α) (m : M) (n : N) :
+    zipWith f hf (single a m) (single a n) = single a (f m n) := by
+  ext a'
+  rw [zipWith_apply]
+  obtain rfl | ha' := eq_or_ne a a'
+  · rw [single_eq_same, single_eq_same, single_eq_same]
+  · rw [single_eq_of_ne ha', single_eq_of_ne ha', single_eq_of_ne ha', hf]
+
 end ZipWith
 
 /-! ### Additive monoid structure on `α →₀ M` -/
@@ -996,10 +1005,7 @@ theorem support_add_eq [DecidableEq α] {g₁ g₂ : α →₀ M} (h : Disjoint
 
 @[simp]
 theorem single_add (a : α) (b₁ b₂ : M) : single a (b₁ + b₂) = single a b₁ + single a b₂ :=
-  ext fun a' => by
-    by_cases h : a = a'
-    · rw [h, add_apply, single_eq_same, single_eq_same, single_eq_same]
-    · rw [add_apply, single_eq_of_ne h, single_eq_of_ne h, single_eq_of_ne h, zero_add]
+  (zipWith_single_single _ _ _ _ _).symm
 #align finsupp.single_add Finsupp.single_add
 
 instance addZeroClass : AddZeroClass (α →₀ M) :=
chore: remove nonterminal simp (#7580)

Removes nonterminal simps on lines looking like simp [...]

Diff
@@ -542,7 +542,8 @@ def update (f : α →₀ M) (a : α) (b : M) : α →₀ M where
     Function.update f a b
   mem_support_toFun i := by
     classical
-    simp [Function.update, Ne.def]
+    rw [Function.update]
+    simp only [eq_rec_constant, dite_eq_ite, ne_eq]
     split_ifs with hb ha ha <;>
       try simp only [*, not_false_iff, iff_true, not_true, iff_false]
     · rw [Finset.mem_erase]
feat: IsCancelAdd instances for (d)finsupp and monoid algebra (#7582)

The left and right versions would be pointless on AddMonoidAlgebra as addition is commutative.

Diff
@@ -1005,6 +1005,14 @@ instance addZeroClass : AddZeroClass (α →₀ M) :=
   FunLike.coe_injective.addZeroClass _ coe_zero coe_add
 #align finsupp.add_zero_class Finsupp.addZeroClass
 
+instance instIsLeftCancelAdd [IsLeftCancelAdd M] : IsLeftCancelAdd (α →₀ M) where
+  add_left_cancel _ _ _ h := ext fun x => add_left_cancel <| FunLike.congr_fun h x
+
+instance instIsRightCancelAdd [IsRightCancelAdd M] : IsRightCancelAdd (α →₀ M) where
+  add_right_cancel _ _ _ h := ext fun x => add_right_cancel <| FunLike.congr_fun h x
+
+instance instIsCancelAdd [IsCancelAdd M] : IsCancelAdd (α →₀ M) where
+
 /-- `Finsupp.single` as an `AddMonoidHom`.
 
 See `Finsupp.lsingle` in `LinearAlgebra/Finsupp` for the stronger version as a linear map. -/
perf: improve some instances in Finsupp (#7430)
Diff
@@ -1213,7 +1213,9 @@ instance addMonoid : AddMonoid (α →₀ M) :=
 end AddMonoid
 
 instance addCommMonoid [AddCommMonoid M] : AddCommMonoid (α →₀ M) :=
-  FunLike.coe_injective.addCommMonoid _ coe_zero coe_add fun _ _ => rfl
+  --TODO: add reference to library note in PR #7432
+  { FunLike.coe_injective.addCommMonoid (↑) coe_zero coe_add (fun _ _ => rfl) with
+    toAddMonoid := Finsupp.addMonoid }
 #align finsupp.add_comm_monoid Finsupp.addCommMonoid
 
 instance neg [NegZeroClass G] : Neg (α →₀ G) :=
@@ -1271,12 +1273,17 @@ instance hasIntScalar [AddGroup G] : SMul ℤ (α →₀ G) :=
 #align finsupp.has_int_scalar Finsupp.hasIntScalar
 
 instance addGroup [AddGroup G] : AddGroup (α →₀ G) :=
-  FunLike.coe_injective.addGroup _ coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl) fun _ _ => rfl
+  --TODO: add reference to library note in PR #7432
+  { FunLike.coe_injective.addGroup (↑) coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl)
+      fun _ _ => rfl with
+    toAddMonoid := Finsupp.addMonoid }
 #align finsupp.add_group Finsupp.addGroup
 
 instance addCommGroup [AddCommGroup G] : AddCommGroup (α →₀ G) :=
-  FunLike.coe_injective.addCommGroup _ coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl) fun _ _ =>
-    rfl
+  --TODO: add reference to library note in PR #7432
+  { FunLike.coe_injective.addCommGroup (↑) coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl)
+      fun _ _ => rfl with
+    toAddGroup := Finsupp.addGroup }
 #align finsupp.add_comm_group Finsupp.addCommGroup
 
 theorem single_add_single_eq_single_add_single [AddCommMonoid M] {k l m n : α} {u v : M}
style: fix wrapping of where (#7149)
Diff
@@ -734,8 +734,8 @@ theorem ofSupportFinite_coe {f : α → M} {hf : (Function.support f).Finite} :
   rfl
 #align finsupp.of_support_finite_coe Finsupp.ofSupportFinite_coe
 
-instance canLift : CanLift (α → M) (α →₀ M) (⇑) fun f => (Function.support f).Finite
-    where prf f hf := ⟨ofSupportFinite f hf, rfl⟩
+instance canLift : CanLift (α → M) (α →₀ M) (⇑) fun f => (Function.support f).Finite where
+  prf f hf := ⟨ofSupportFinite f hf, rfl⟩
 #align finsupp.can_lift Finsupp.canLift
 
 end OfSupportFinite
chore: bump to nightly-2023-08-17 (#6019)

The major change here is adapting to simp failing if it makes no progress. The vast majority of the redundant simps found due to this change were extracted to #6632.

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

Diff
@@ -544,7 +544,7 @@ def update (f : α →₀ M) (a : α) (b : M) : α →₀ M where
     classical
     simp [Function.update, Ne.def]
     split_ifs with hb ha ha <;>
-    simp only [*, not_false_iff, iff_true, not_true, iff_false]
+      try simp only [*, not_false_iff, iff_true, not_true, iff_false]
     · rw [Finset.mem_erase]
       simp
     · rw [Finset.mem_erase]
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
@@ -87,11 +87,11 @@ open Finset Function
 
 open BigOperators
 
-variable {α β γ ι M M' N P G H R S : Type _}
+variable {α β γ ι M M' N P G H R S : Type*}
 
 /-- `Finsupp α M`, denoted `α →₀ M`, is the type of functions `f : α → M` such that
   `f x = 0` for all but finitely many `x`. -/
-structure Finsupp (α : Type _) (M : Type _) [Zero M] where
+structure Finsupp (α : Type*) (M : Type*) [Zero M] where
   /-- The support of a finitely supported function (aka `Finsupp`). -/
   support : Finset α
   /-- The underlying function of a bundled finitely supported function (aka `Finsupp`). -/
@@ -260,7 +260,7 @@ theorem equivFunOnFinite_symm_coe {α} [Finite α] (f : α →₀ M) : equivFunO
 If `α` has a unique term, the type of finitely supported functions `α →₀ β` is equivalent to `β`.
 -/
 @[simps!]
-noncomputable def _root_.Equiv.finsuppUnique {ι : Type _} [Unique ι] : (ι →₀ M) ≃ M :=
+noncomputable def _root_.Equiv.finsuppUnique {ι : Type*} [Unique ι] : (ι →₀ M) ≃ M :=
   Finsupp.equivFunOnFinite.trans (Equiv.funUnique ι M)
 #align equiv.finsupp_unique Equiv.finsuppUnique
 #align equiv.finsupp_unique_symm_apply_support_val Equiv.finsuppUnique_symm_apply_support_val
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,15 +2,12 @@
 Copyright (c) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Scott Morrison
-
-! This file was ported from Lean 3 source module data.finsupp.defs
-! leanprover-community/mathlib commit 842328d9df7e96fd90fc424e115679c15fb23a71
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.IndicatorFunction
 import Mathlib.GroupTheory.Submonoid.Basic
 
+#align_import data.finsupp.defs from "leanprover-community/mathlib"@"842328d9df7e96fd90fc424e115679c15fb23a71"
+
 /-!
 # Type of functions with finite support
 
chore: formatting issues (#4947)

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -472,7 +472,7 @@ theorem support_eq_singleton {f : α →₀ M} {a : α} :
 /- ./././Mathport/Syntax/Translate/Basic.lean:632:2:
   warning: expanding binder collection (b «expr ≠ » 0) -/
 theorem support_eq_singleton' {f : α →₀ M} {a : α} :
-    f.support = {a} ↔ ∃ (b : _)(_ : b ≠ 0), f = single a b :=
+    f.support = {a} ↔ ∃ (b : _) (_ : b ≠ 0), f = single a b :=
   ⟨fun h =>
     let h := support_eq_singleton.1 h
     ⟨_, h.1, h.2⟩,
@@ -486,7 +486,7 @@ theorem card_support_eq_one {f : α →₀ M} : card f.support = 1 ↔ ∃ a, f
 /- ./././Mathport/Syntax/Translate/Basic.lean:632:2:
   warning: expanding binder collection (b «expr ≠ » 0) -/
 theorem card_support_eq_one' {f : α →₀ M} :
-    card f.support = 1 ↔ ∃ (a : _)(b : _)(_ : b ≠ 0), f = single a b := by
+    card f.support = 1 ↔ ∃ (a : _) (b : _) (_ : b ≠ 0), f = single a b := by
   simp only [card_eq_one, support_eq_singleton']
 #align finsupp.card_support_eq_one' Finsupp.card_support_eq_one'
 
chore: update std 05-22 (#4248)

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

Diff
@@ -363,11 +363,11 @@ theorem support_single_ne_zero (a : α) (hb : b ≠ 0) : (single a b).support =
 #align finsupp.support_single_ne_zero Finsupp.support_single_ne_zero
 
 theorem support_single_subset : (single a b).support ⊆ {a} := by
-  classical show ite _ _ _ ⊆ _; split_ifs <;> [exact empty_subset _, exact Subset.refl _]
+  classical show ite _ _ _ ⊆ _; split_ifs <;> [exact empty_subset _; exact Subset.refl _]
 #align finsupp.support_single_subset Finsupp.support_single_subset
 
 theorem single_apply_mem (x) : single a b x ∈ ({0, b} : Set M) := by
-  rcases em (a = x) with (rfl | hx) <;> [simp, simp [single_eq_of_ne hx]]
+  rcases em (a = x) with (rfl | hx) <;> [simp; simp [single_eq_of_ne hx]]
 #align finsupp.single_apply_mem Finsupp.single_apply_mem
 
 theorem range_single_subset : Set.range (single a b) ⊆ {0, b} :=
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
@@ -239,8 +239,8 @@ theorem finite_support (f : α →₀ M) : Set.Finite (Function.support f) :=
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:632:2:
   warning: expanding binder collection (a «expr ∉ » s) -/
-theorem support_subset_iff {s : Set α} {f : α →₀ M} : ↑f.support ⊆ s ↔ ∀ (a) (_ : a ∉ s), f a = 0 :=
-  by
+theorem support_subset_iff {s : Set α} {f : α →₀ M} :
+    ↑f.support ⊆ s ↔ ∀ (a) (_ : a ∉ s), f a = 0 := by
   simp only [Set.subset_def, mem_coe, mem_support_iff]; exact forall_congr' fun a => not_imp_comm
 #align finsupp.support_subset_iff Finsupp.support_subset_iff
 
@@ -911,8 +911,8 @@ theorem single_of_embDomain_single (l : α →₀ M) (f : α ↪ β) (a : β) (b
 #align finsupp.single_of_emb_domain_single Finsupp.single_of_embDomain_single
 
 @[simp]
-theorem embDomain_single (f : α ↪ β) (a : α) (m : M) : embDomain f (single a m) = single (f a) m :=
-  by
+theorem embDomain_single (f : α ↪ β) (a : α) (m : M) :
+    embDomain f (single a m) = single (f a) m := by
   classical
     ext b
     by_cases h : b ∈ Set.range f
feat: port GroupTheory.FreeAbelianGroupFinsupp (#3441)

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

Diff
@@ -1140,7 +1140,7 @@ then they are equal.
 We formulate this using equality of `AddMonoidHom`s so that `ext` tactic can apply a type-specific
 extensionality lemma after this one.  E.g., if the fiber `M` is `ℕ` or `ℤ`, then it suffices to
 verify `f (single a 1) = g (single a 1)`. -/
-@[ext]
+@[ext high]
 theorem addHom_ext' [AddZeroClass N] ⦃f g : (α →₀ M) →+ N⦄
     (H : ∀ x, f.comp (singleAddHom x) = g.comp (singleAddHom x)) : f = g :=
   addHom_ext fun x => FunLike.congr_fun (H x)
feat: add some lemmas about Finsupp.indicator (#2258)

mathlib3 PR: https://github.com/leanprover-community/mathlib/pull/17413

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

Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Scott Morrison
 
 ! This file was ported from Lean 3 source module data.finsupp.defs
-! leanprover-community/mathlib commit 6623e6af705e97002a9054c1c05a980180276fc1
+! leanprover-community/mathlib commit 842328d9df7e96fd90fc424e115679c15fb23a71
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -317,11 +317,11 @@ theorem single_apply_left {f : α → β} (hf : Function.Injective f) (x z : α)
     single (f x) y (f z) = single x y z := by classical simp only [single_apply, hf.eq_iff]
 #align finsupp.single_apply_left Finsupp.single_apply_left
 
-theorem single_eq_indicator : ⇑(single a b) = Set.indicator {a} fun _ => b := by
+theorem single_eq_set_indicator : ⇑(single a b) = Set.indicator {a} fun _ => b := by
   classical
   ext
   simp [single_apply, Set.indicator, @eq_comm _ a]
-#align finsupp.single_eq_indicator Finsupp.single_eq_indicator
+#align finsupp.single_eq_set_indicator Finsupp.single_eq_set_indicator
 
 @[simp]
 theorem single_eq_same : (single a b : α →₀ M) a = b := by
@@ -335,7 +335,7 @@ theorem single_eq_of_ne (h : a ≠ a') : (single a b : α →₀ M) a' = 0 := by
 
 theorem single_eq_update [DecidableEq α] (a : α) (b : M) :
     ⇑(single a b) = Function.update (0 : _) a b :=
-  by classical rw [single_eq_indicator, ← Set.piecewise_eq_indicator, Set.piecewise_singleton]
+  by classical rw [single_eq_set_indicator, ← Set.piecewise_eq_indicator, Set.piecewise_singleton]
 #align finsupp.single_eq_update Finsupp.single_eq_update
 
 theorem single_eq_pi_single [DecidableEq α] (a : α) (b : M) : ⇑(single a b) = Pi.single a b :=
@@ -382,7 +382,7 @@ theorem single_injective (a : α) : Function.Injective (single a : M → α →
 #align finsupp.single_injective Finsupp.single_injective
 
 theorem single_apply_eq_zero {a x : α} {b : M} : single a b x = 0 ↔ x = a → b = 0 := by
-  simp [single_eq_indicator]
+  simp [single_eq_set_indicator]
 #align finsupp.single_apply_eq_zero Finsupp.single_apply_eq_zero
 
 theorem single_apply_ne_zero {a x : α} {b : M} : single a b x ≠ 0 ↔ x = a ∧ b ≠ 0 := by
@@ -438,7 +438,8 @@ theorem support_single_disjoint {b' : M} (hb : b ≠ 0) (hb' : b' ≠ 0) {i j :
 #align finsupp.support_single_disjoint Finsupp.support_single_disjoint
 
 @[simp]
-theorem single_eq_zero : single a b = 0 ↔ b = 0 := by simp [FunLike.ext_iff, single_eq_indicator]
+theorem single_eq_zero : single a b = 0 ↔ b = 0 := by
+  simp [FunLike.ext_iff, single_eq_set_indicator]
 #align finsupp.single_eq_zero Finsupp.single_eq_zero
 
 theorem single_swap (a₁ a₂ : α) (b : M) : single a₁ b a₂ = single a₂ b a₁ := by
chore: add missing hypothesis names to by_cases (#2679)
Diff
@@ -405,7 +405,7 @@ theorem single_eq_single_iff (a₁ a₂ : α) (b₁ b₂ : M) :
     single a₁ b₁ = single a₂ b₂ ↔ a₁ = a₂ ∧ b₁ = b₂ ∨ b₁ = 0 ∧ b₂ = 0 := by
   constructor
   · intro eq
-    by_cases a₁ = a₂
+    by_cases h : a₁ = a₂
     · refine' Or.inl ⟨h, _⟩
       rwa [h, (single_injective a₂).eq_iff] at eq
     · rw [FunLike.ext_iff] at eq
feat: update SHA from #18277 (#2653)

leanprover-community/mathlib#18277 backported a bug about classical which is already fixed in mathlib4, so these diffs simpy need a SHA update.

(Comment: This might not be the full PR #18277 yet, as I worked on a file-by-file base)

Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Scott Morrison
 
 ! This file was ported from Lean 3 source module data.finsupp.defs
-! leanprover-community/mathlib commit 8631e2d5ea77f6c13054d9151d82b83069680cb1
+! leanprover-community/mathlib commit 6623e6af705e97002a9054c1c05a980180276fc1
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
refactor: Rename instances in Finsupp.{Defs, Basic} (#2600)
Diff
@@ -129,8 +129,9 @@ instance funLike : FunLike (α →₀ M) α fun _ => M :=
 
 /-- Helper instance for when there are too many metavariables to apply the `FunLike` instance
 directly. -/
-instance : CoeFun (α →₀ M) fun _ => α → M :=
+instance coeFun : CoeFun (α →₀ M) fun _ => α → M :=
   inferInstance
+#align finsupp.has_coe_to_fun Finsupp.coeFun
 
 @[ext]
 theorem ext {f g : α →₀ M} (h : ∀ a, f a = g a) : f = g :=
@@ -164,6 +165,7 @@ theorem coe_mk (f : α → M) (s : Finset α) (h : ∀ a, a ∈ s ↔ f a ≠ 0)
 
 instance zero : Zero (α →₀ M) :=
   ⟨⟨∅, 0, fun _ => ⟨fun h ↦ (not_mem_empty _ h).elim, fun H => (H rfl).elim⟩⟩⟩
+#align finsupp.has_zero Finsupp.zero
 
 @[simp]
 theorem coe_zero : ⇑(0 : α →₀ M) = 0 :=
@@ -179,8 +181,9 @@ theorem support_zero : (0 : α →₀ M).support = ∅ :=
   rfl
 #align finsupp.support_zero Finsupp.support_zero
 
-instance : Inhabited (α →₀ M) :=
+instance inhabited : Inhabited (α →₀ M) :=
   ⟨0⟩
+#align finsupp.inhabited Finsupp.inhabited
 
 @[simp]
 theorem mem_support_iff {f : α →₀ M} : ∀ {a : α}, a ∈ f.support ↔ f a ≠ 0 :=
@@ -226,8 +229,9 @@ theorem nonzero_iff_exists {f : α →₀ M} : f ≠ 0 ↔ ∃ a : α, f a ≠ 0
 theorem card_support_eq_zero {f : α →₀ M} : card f.support = 0 ↔ f = 0 := by simp
 #align finsupp.card_support_eq_zero Finsupp.card_support_eq_zero
 
-instance [DecidableEq α] [DecidableEq M] : DecidableEq (α →₀ M) := fun f g =>
+instance decidableEq [DecidableEq α] [DecidableEq M] : DecidableEq (α →₀ M) := fun f g =>
   decidable_of_iff (f.support = g.support ∧ ∀ a ∈ f.support, f a = g a) ext_iff'.symm
+#align finsupp.decidable_eq Finsupp.decidableEq
 
 theorem finite_support (f : α →₀ M) : Set.Finite (Function.support f) :=
   f.fun_support_eq.symm ▸ f.support.finite_toSet
@@ -441,10 +445,11 @@ theorem single_swap (a₁ a₂ : α) (b : M) : single a₁ b a₂ = single a₂
   classical simp only [single_apply, eq_comm]
 #align finsupp.single_swap Finsupp.single_swap
 
-instance [Nonempty α] [Nontrivial M] : Nontrivial (α →₀ M) := by
+instance nontrivial [Nonempty α] [Nontrivial M] : Nontrivial (α →₀ M) := by
   inhabit α
   rcases exists_ne (0 : M) with ⟨x, hx⟩
   exact nontrivial_of_ne (single default x) 0 (mt single_eq_zero.1 hx)
+#align finsupp.nontrivial Finsupp.nontrivial
 
 theorem unique_single [Unique α] (x : α →₀ M) : x = single default (x default) :=
   ext <| Unique.forall_iff.2 single_eq_same.symm
@@ -962,6 +967,7 @@ variable [AddZeroClass M]
 
 instance add : Add (α →₀ M) :=
   ⟨zipWith (· + ·) (add_zero 0)⟩
+#align finsupp.has_add Finsupp.add
 
 @[simp]
 theorem coe_add (f g : α →₀ M) : ⇑(f + g) = f + g :=
@@ -999,6 +1005,7 @@ theorem single_add (a : α) (b₁ b₂ : M) : single a (b₁ + b₂) = single a
 
 instance addZeroClass : AddZeroClass (α →₀ M) :=
   FunLike.coe_injective.addZeroClass _ coe_zero coe_add
+#align finsupp.add_zero_class Finsupp.addZeroClass
 
 /-- `Finsupp.single` as an `AddMonoidHom`.
 
@@ -1203,14 +1210,17 @@ instance hasNatScalar : SMul ℕ (α →₀ M) :=
 
 instance addMonoid : AddMonoid (α →₀ M) :=
   FunLike.coe_injective.addMonoid _ coe_zero coe_add fun _ _ => rfl
+#align finsupp.add_monoid Finsupp.addMonoid
 
 end AddMonoid
 
 instance addCommMonoid [AddCommMonoid M] : AddCommMonoid (α →₀ M) :=
   FunLike.coe_injective.addCommMonoid _ coe_zero coe_add fun _ _ => rfl
+#align finsupp.add_comm_monoid Finsupp.addCommMonoid
 
-instance [NegZeroClass G] : Neg (α →₀ G) :=
+instance neg [NegZeroClass G] : Neg (α →₀ G) :=
   ⟨mapRange Neg.neg neg_zero⟩
+#align finsupp.has_neg Finsupp.neg
 
 @[simp]
 theorem coe_neg [NegZeroClass G] (g : α →₀ G) : ⇑(-g) = -g :=
@@ -1231,8 +1241,9 @@ theorem mapRange_neg' [AddGroup G] [SubtractionMonoid H] [AddMonoidHomClass β G
   mapRange_neg (map_neg f) v
 #align finsupp.map_range_neg' Finsupp.mapRange_neg'
 
-instance [SubNegZeroMonoid G] : Sub (α →₀ G) :=
+instance sub [SubNegZeroMonoid G] : Sub (α →₀ G) :=
   ⟨zipWith Sub.sub (sub_zero _)⟩
+#align finsupp.has_sub Finsupp.sub
 
 @[simp]
 theorem coe_sub [SubNegZeroMonoid G] (g₁ g₂ : α →₀ G) : ⇑(g₁ - g₂) = g₁ - g₂ :=
@@ -1261,12 +1272,14 @@ instance hasIntScalar [AddGroup G] : SMul ℤ (α →₀ G) :=
   ⟨fun n v => v.mapRange ((· • ·) n) (zsmul_zero _)⟩
 #align finsupp.has_int_scalar Finsupp.hasIntScalar
 
-instance [AddGroup G] : AddGroup (α →₀ G) :=
+instance addGroup [AddGroup G] : AddGroup (α →₀ G) :=
   FunLike.coe_injective.addGroup _ coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl) fun _ _ => rfl
+#align finsupp.add_group Finsupp.addGroup
 
-instance [AddCommGroup G] : AddCommGroup (α →₀ G) :=
+instance addCommGroup [AddCommGroup G] : AddCommGroup (α →₀ G) :=
   FunLike.coe_injective.addCommGroup _ coe_zero coe_add coe_neg coe_sub (fun _ _ => rfl) fun _ _ =>
     rfl
+#align finsupp.add_comm_group Finsupp.addCommGroup
 
 theorem single_add_single_eq_single_add_single [AddCommMonoid M] {k l m n : α} {u v : M}
     (hu : u ≠ 0) (hv : v ≠ 0) :
feat: require @[simps!] if simps runs in expensive mode (#1885)
  • This does not change the behavior of simps, just raises a linter error if you run simps in a more expensive mode without writing !.
  • Fixed some incorrect occurrences of to_additive, simps. Will do that systematically in future PR.
  • Fix port of OmegaCompletePartialOrder.ContinuousHom.ofMono a bit

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

Diff
@@ -258,7 +258,7 @@ theorem equivFunOnFinite_symm_coe {α} [Finite α] (f : α →₀ M) : equivFunO
 /--
 If `α` has a unique term, the type of finitely supported functions `α →₀ β` is equivalent to `β`.
 -/
-@[simps]
+@[simps!]
 noncomputable def _root_.Equiv.finsuppUnique {ι : Type _} [Unique ι] : (ι →₀ M) ≃ M :=
   Finsupp.equivFunOnFinite.trans (Equiv.funUnique ι M)
 #align equiv.finsupp_unique Equiv.finsuppUnique
chore: tidy various files (#2056)
Diff
@@ -107,7 +107,6 @@ structure Finsupp (α : Type _) (M : Type _) [Zero M] where
 #align finsupp.to_fun Finsupp.toFun
 #align finsupp.mem_support_to_fun Finsupp.mem_support_toFun
 
--- mathport name: «expr →₀ »
 @[inherit_doc]
 infixr:25 " →₀ " => Finsupp
 
@@ -163,7 +162,7 @@ theorem coe_mk (f : α → M) (s : Finset α) (h : ∀ a, a ∈ s ↔ f a ≠ 0)
   rfl
 #align finsupp.coe_mk Finsupp.coe_mk
 
-instance hasZero: Zero (α →₀ M) :=
+instance zero : Zero (α →₀ M) :=
   ⟨⟨∅, 0, fun _ => ⟨fun h ↦ (not_mem_empty _ h).elim, fun H => (H rfl).elim⟩⟩⟩
 
 @[simp]
@@ -244,8 +243,7 @@ theorem support_subset_iff {s : Set α} {f : α →₀ M} : ↑f.support ⊆ s 
 /-- Given `Finite α`, `equivFunOnFinite` is the `Equiv` between `α →₀ β` and `α → β`.
   (All functions on a finite type are finitely supported.) -/
 @[simps]
-def equivFunOnFinite [Finite α] : (α →₀ M) ≃ (α → M)
-    where
+def equivFunOnFinite [Finite α] : (α →₀ M) ≃ (α → M) where
   toFun := (⇑)
   invFun f := mk (Function.support f).toFinite.toFinset f fun _a => Set.Finite.mem_toFinset _
   left_inv _f := ext fun _x => rfl
@@ -532,11 +530,10 @@ If `b = 0`, this amounts to removing `a` from the `Finsupp.support`.
 Otherwise, if `a` was not in the `Finsupp.support`, it is added to it.
 
 This is the finitely-supported version of `Function.update`. -/
-def update (f : α →₀ M) (a : α) (b : M) : α →₀ M
-    where
+def update (f : α →₀ M) (a : α) (b : M) : α →₀ M where
   support := by
-    haveI := Classical.decEq α; haveI := Classical.decEq M;
-      exact if b = 0 then f.support.erase a else insert a f.support
+    haveI := Classical.decEq α; haveI := Classical.decEq M
+    exact if b = 0 then f.support.erase a else insert a f.support
   toFun :=
     haveI := Classical.decEq α
     Function.update f a b
@@ -544,15 +541,15 @@ def update (f : α →₀ M) (a : α) (b : M) : α →₀ M
     classical
     simp [Function.update, Ne.def]
     split_ifs with hb ha ha <;>
-    simp [*, Finset.mem_erase]
-    rw [Finset.mem_erase]
-    simp
-    rw [Finset.mem_erase]
-    simp [ha]
-    rw [Finset.mem_insert]
-    simp [ha]
-    rw [Finset.mem_insert]
-    simp [ha]
+    simp only [*, not_false_iff, iff_true, not_true, iff_false]
+    · rw [Finset.mem_erase]
+      simp
+    · rw [Finset.mem_erase]
+      simp [ha]
+    · rw [Finset.mem_insert]
+      simp [ha]
+    · rw [Finset.mem_insert]
+      simp [ha]
 #align finsupp.update Finsupp.update
 
 @[simp]
@@ -675,7 +672,7 @@ theorem erase_zero (a : α) : erase a (0 : α →₀ M) = 0 := by
 
 end Erase
 
-/-! ### Declarations about `on_finset` -/
+/-! ### Declarations about `onFinset` -/
 
 
 section OnFinset
@@ -723,8 +720,7 @@ section OfSupportFinite
 variable [Zero M]
 
 /-- The natural `Finsupp` induced by the function `f` given that it has finite support. -/
-noncomputable def ofSupportFinite (f : α → M) (hf : (Function.support f).Finite) : α →₀ M
-    where
+noncomputable def ofSupportFinite (f : α → M) (hf : (Function.support f).Finite) : α →₀ M where
   support := hf.toFinset
   toFun := f
   mem_support_toFun _ := hf.mem_toFinset
@@ -741,14 +737,14 @@ instance canLift : CanLift (α → M) (α →₀ M) (⇑) fun f => (Function.sup
 
 end OfSupportFinite
 
-/-! ### Declarations about `map_range` -/
+/-! ### Declarations about `mapRange` -/
 
 
 section MapRange
 
 variable [Zero M] [Zero N] [Zero P]
 
-/-- The composition of `f : M → N` and `g : α →₀ M` is `map_range f hf g : α →₀ N`,
+/-- The composition of `f : M → N` and `g : α →₀ M` is `mapRange f hf g : α →₀ N`,
 which is well-defined when `f 0 = 0`.
 
 This preserves the structure on `f`, and exists in various bundled forms for when `f` is itself
@@ -808,7 +804,7 @@ theorem support_mapRange_of_injective {e : M → N} (he0 : e 0 = 0) (f : ι →
 
 end MapRange
 
-/-! ### Declarations about `emb_domain` -/
+/-! ### Declarations about `embDomain` -/
 
 
 section EmbDomain
@@ -818,8 +814,7 @@ variable [Zero M] [Zero N]
 /-- Given `f : α ↪ β` and `v : α →₀ M`, `Finsupp.embDomain f v : β →₀ M`
 is the finitely supported function whose value at `f a : β` is `v a`.
 For a `b : β` outside the range of `f`, it is zero. -/
-def embDomain (f : α ↪ β) (v : α →₀ M) : β →₀ M
-    where
+def embDomain (f : α ↪ β) (v : α →₀ M) : β →₀ M where
   support := v.support.map f
   toFun a₂ :=
     haveI := Classical.decEq β
@@ -884,7 +879,7 @@ theorem embDomain_eq_zero {f : α ↪ β} {l : α →₀ M} : embDomain f l = 0
 theorem embDomain_mapRange (f : α ↪ β) (g : M → N) (p : α →₀ M) (hg : g 0 = 0) :
     embDomain f (mapRange g hg p) = mapRange g hg (embDomain f p) := by
   ext a
-  by_cases a ∈ Set.range f
+  by_cases h : a ∈ Set.range f
   · rcases h with ⟨a', rfl⟩
     rw [mapRange_apply, embDomain_apply, embDomain_apply, mapRange_apply]
   · rw [mapRange_apply, embDomain_notin_range, embDomain_notin_range, ← hg] <;> assumption
@@ -925,7 +920,7 @@ theorem embDomain_single (f : α ↪ β) (a : α) (m : M) : embDomain f (single
 
 end EmbDomain
 
-/-! ### Declarations about `zip_with` -/
+/-! ### Declarations about `zipWith` -/
 
 
 section ZipWith
@@ -937,12 +932,12 @@ variable [Zero M] [Zero N] [Zero P]
 `zipWith f hf g₁ g₂ a = f (g₁ a) (g₂ a)`, which is well-defined when `f 0 0 = 0`. -/
 def zipWith (f : M → N → P) (hf : f 0 0 = 0) (g₁ : α →₀ M) (g₂ : α →₀ N) : α →₀ P :=
   onFinset
-    (haveI := Classical.decEq α
-    g₁.support ∪ g₂.support)
-    (fun a => f (g₁ a) (g₂ a)) fun a (H : f _ _ ≠ 0) => by
-    classical
-    rw [mem_union, mem_support_iff, mem_support_iff, ← not_and_or]
-    rintro ⟨h₁, h₂⟩; rw [h₁, h₂] at H; exact H hf
+    (haveI := Classical.decEq α; g₁.support ∪ g₂.support)
+    (fun a => f (g₁ a) (g₂ a))
+    fun a (H : f _ _ ≠ 0) => by
+      classical
+      rw [mem_union, mem_support_iff, mem_support_iff, ← not_and_or]
+      rintro ⟨h₁, h₂⟩; rw [h₁, h₂] at H; exact H hf
 #align finsupp.zip_with Finsupp.zipWith
 
 @[simp]
@@ -965,7 +960,7 @@ section AddZeroClass
 
 variable [AddZeroClass M]
 
-instance : Add (α →₀ M) :=
+instance add : Add (α →₀ M) :=
   ⟨zipWith (· + ·) (add_zero 0)⟩
 
 @[simp]
@@ -1002,7 +997,7 @@ theorem single_add (a : α) (b₁ b₂ : M) : single a (b₁ + b₂) = single a
     · rw [add_apply, single_eq_of_ne h, single_eq_of_ne h, single_eq_of_ne h, zero_add]
 #align finsupp.single_add Finsupp.single_add
 
-instance addZeroClass: AddZeroClass (α →₀ M) :=
+instance addZeroClass : AddZeroClass (α →₀ M) :=
   FunLike.coe_injective.addZeroClass _ coe_zero coe_add
 
 /-- `Finsupp.single` as an `AddMonoidHom`.
@@ -1020,7 +1015,7 @@ def singleAddHom (a : α) : M →+ α →₀ M where
 See `Finsupp.lapply` in `LinearAlgebra/Finsupp` for the stronger version as a linear map. -/
 @[simps apply]
 def applyAddHom (a : α) : (α →₀ M) →+ M where
-  toFun := fun g => g a
+  toFun g := g a
   map_zero' := zero_apply
   map_add' _ _ := add_apply _ _ _
 #align finsupp.apply_add_hom Finsupp.applyAddHom
@@ -1028,8 +1023,7 @@ def applyAddHom (a : α) : (α →₀ M) →+ M where
 
 /-- Coercion from a `Finsupp` to a function type is an `AddMonoidHom`. -/
 @[simps]
-noncomputable def coeFnAddHom : (α →₀ M) →+ α → M
-    where
+noncomputable def coeFnAddHom : (α →₀ M) →+ α → M where
   toFun := (⇑)
   map_zero' := coe_zero
   map_add' := coe_add
@@ -1071,8 +1065,7 @@ theorem erase_add (a : α) (f f' : α →₀ M) : erase a (f + f') = erase a f +
 
 /-- `Finsupp.erase` as an `AddMonoidHom`. -/
 @[simps]
-def eraseAddHom (a : α) : (α →₀ M) →+ α →₀ M
-    where
+def eraseAddHom (a : α) : (α →₀ M) →+ α →₀ M where
   toFun := erase a
   map_zero' := erase_zero a
   map_add' := erase_add a
@@ -1083,8 +1076,7 @@ protected theorem induction {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 :
     (ha : ∀ (a b) (f : α →₀ M), a ∉ f.support → b ≠ 0 → p f → p (single a b + f)) : p f :=
   suffices ∀ (s) (f : α →₀ M), f.support = s → p f from this _ _ rfl
   fun s =>
-  Finset.cons_induction_on s (fun f hf => by rwa [support_eq_empty.1 hf]) fun a s has ih f hf =>
-    by
+  Finset.cons_induction_on s (fun f hf => by rwa [support_eq_empty.1 hf]) fun a s has ih f hf => by
     suffices p (single a (f a) + f.erase a) by rwa [single_add_erase] at this
     classical
       apply ha
@@ -1100,8 +1092,7 @@ theorem induction₂ {p : (α →₀ M) → Prop} (f : α →₀ M) (h0 : p 0)
     (ha : ∀ (a b) (f : α →₀ M), a ∉ f.support → b ≠ 0 → p f → p (f + single a b)) : p f :=
   suffices ∀ (s) (f : α →₀ M), f.support = s → p f from this _ _ rfl
   fun s =>
-  Finset.cons_induction_on s (fun f hf => by rwa [support_eq_empty.1 hf]) fun a s has ih f hf =>
-    by
+  Finset.cons_induction_on s (fun f hf => by rwa [support_eq_empty.1 hf]) fun a s has ih f hf => by
     suffices p (f.erase a + single a (f a)) by rwa [erase_add_single] at this
     classical
       apply ha
@@ -1180,8 +1171,7 @@ theorem mapRange_add' [AddZeroClass N] [AddMonoidHomClass β M N] {f : β} (v₁
 
 /-- Bundle `Finsupp.embDomain f` as an additive map from `α →₀ M` to `β →₀ M`. -/
 @[simps]
-def embDomain.addMonoidHom (f : α ↪ β) : (α →₀ M) →+ β →₀ M
-    where
+def embDomain.addMonoidHom (f : α ↪ β) : (α →₀ M) →+ β →₀ M where
   toFun v := embDomain f v
   map_zero' := by simp
   map_add' v w := by
@@ -1211,7 +1201,7 @@ instance hasNatScalar : SMul ℕ (α →₀ M) :=
   ⟨fun n v => v.mapRange ((· • ·) n) (nsmul_zero _)⟩
 #align finsupp.has_nat_scalar Finsupp.hasNatScalar
 
-instance addMonoid: AddMonoid (α →₀ M) :=
+instance addMonoid : AddMonoid (α →₀ M) :=
   FunLike.coe_injective.addMonoid _ coe_zero coe_add fun _ _ => rfl
 
 end AddMonoid
@@ -1281,7 +1271,7 @@ instance [AddCommGroup G] : AddCommGroup (α →₀ G) :=
 theorem single_add_single_eq_single_add_single [AddCommMonoid M] {k l m n : α} {u v : M}
     (hu : u ≠ 0) (hv : v ≠ 0) :
     single k u + single l v = single m u + single n v ↔
-      k = m ∧ l = n ∨ u = v ∧ k = n ∧ l = m ∨ u + v = 0 ∧ k = l ∧ m = n := by
+      (k = m ∧ l = n) ∨ (u = v ∧ k = n ∧ l = m) ∨ (u + v = 0 ∧ k = l ∧ m = n) := by
   classical
     simp_rw [FunLike.ext_iff, coe_add, single_eq_pi_single, ← funext_iff]
     exact Pi.single_add_single_eq_single_add_single hu hv
feat: Port/Data.Finsupp.ToDfinsupp (#1995)

port of data.finsup.to_dfinsupp

includes naming of instances in Data.Finsupp.Defs

Had to unroll the instance defs for sigmaFinsuppLequivDfinsupp (duplicating defs) to address a timeout issue.

Co-authored-by: ChrisHughes24 <chrishughes24@gmail.com> Co-authored-by: Johan Commelin <johan@commelin.net>

Diff
@@ -163,7 +163,7 @@ theorem coe_mk (f : α → M) (s : Finset α) (h : ∀ a, a ∈ s ↔ f a ≠ 0)
   rfl
 #align finsupp.coe_mk Finsupp.coe_mk
 
-instance : Zero (α →₀ M) :=
+instance hasZero: Zero (α →₀ M) :=
   ⟨⟨∅, 0, fun _ => ⟨fun h ↦ (not_mem_empty _ h).elim, fun H => (H rfl).elim⟩⟩⟩
 
 @[simp]
@@ -1002,7 +1002,7 @@ theorem single_add (a : α) (b₁ b₂ : M) : single a (b₁ + b₂) = single a
     · rw [add_apply, single_eq_of_ne h, single_eq_of_ne h, single_eq_of_ne h, zero_add]
 #align finsupp.single_add Finsupp.single_add
 
-instance : AddZeroClass (α →₀ M) :=
+instance addZeroClass: AddZeroClass (α →₀ M) :=
   FunLike.coe_injective.addZeroClass _ coe_zero coe_add
 
 /-- `Finsupp.single` as an `AddMonoidHom`.
@@ -1211,7 +1211,7 @@ instance hasNatScalar : SMul ℕ (α →₀ M) :=
   ⟨fun n v => v.mapRange ((· • ·) n) (nsmul_zero _)⟩
 #align finsupp.has_nat_scalar Finsupp.hasNatScalar
 
-instance : AddMonoid (α →₀ M) :=
+instance addMonoid: AddMonoid (α →₀ M) :=
   FunLike.coe_injective.addMonoid _ coe_zero coe_add fun _ _ => rfl
 
 end AddMonoid
chore: scoped BigOperators notation (#1952)
Diff
@@ -88,7 +88,7 @@ noncomputable section
 
 open Finset Function
 
--- open BigOperators -- Porting note: notation is global for now
+open BigOperators
 
 variable {α β γ ι M M' N P G H R S : Type _}
 
chore: add missing #align statements (#1902)

This PR is the result of a slight variant on the following "algorithm"

  • take all mathlib 3 names, remove _ and make all uppercase letters into lowercase
  • take all mathlib 4 names, remove _ and make all uppercase letters into lowercase
  • look for matches, and create pairs (original_lean3_name, OriginalLean4Name)
  • for pairs that do not have an align statement:
    • use Lean 4 to lookup the file + position of the Lean 4 name
    • add an #align statement just before the next empty line
  • manually fix some tiny mistakes (e.g., empty lines in proofs might cause the #align statement to have been inserted too early)
Diff
@@ -264,6 +264,9 @@ If `α` has a unique term, the type of finitely supported functions `α →₀ 
 noncomputable def _root_.Equiv.finsuppUnique {ι : Type _} [Unique ι] : (ι →₀ M) ≃ M :=
   Finsupp.equivFunOnFinite.trans (Equiv.funUnique ι M)
 #align equiv.finsupp_unique Equiv.finsuppUnique
+#align equiv.finsupp_unique_symm_apply_support_val Equiv.finsuppUnique_symm_apply_support_val
+#align equiv.finsupp_unique_symm_apply_to_fun Equiv.finsuppUnique_symm_apply_toFun
+#align equiv.finsupp_unique_apply Equiv.finsuppUnique_apply
 
 @[ext]
 theorem unique_ext [Unique α] {f g : α →₀ M} (h : f default = g default) : f = g :=
@@ -1021,6 +1024,7 @@ def applyAddHom (a : α) : (α →₀ M) →+ M where
   map_zero' := zero_apply
   map_add' _ _ := add_apply _ _ _
 #align finsupp.apply_add_hom Finsupp.applyAddHom
+#align finsupp.apply_add_hom_apply Finsupp.applyAddHom_apply
 
 /-- Coercion from a `Finsupp` to a function type is an `AddMonoidHom`. -/
 @[simps]
@@ -1030,6 +1034,7 @@ noncomputable def coeFnAddHom : (α →₀ M) →+ α → M
   map_zero' := coe_zero
   map_add' := coe_add
 #align finsupp.coe_fn_add_hom Finsupp.coeFnAddHom
+#align finsupp.coe_fn_add_hom_apply Finsupp.coeFnAddHom_apply
 
 theorem update_eq_single_add_erase (f : α →₀ M) (a : α) (b : M) :
     f.update a b = single a b + f.erase a := by
feat: Port/Data.Finsupp.Order (#1891)

port of data.finsupp.order

needs explicit naming of instances in Data.Finsupp.Order.Defs

Diff
@@ -1211,7 +1211,7 @@ instance : AddMonoid (α →₀ M) :=
 
 end AddMonoid
 
-instance [AddCommMonoid M] : AddCommMonoid (α →₀ M) :=
+instance addCommMonoid [AddCommMonoid M] : AddCommMonoid (α →₀ M) :=
   FunLike.coe_injective.addCommMonoid _ coe_zero coe_add fun _ _ => rfl
 
 instance [NegZeroClass G] : Neg (α →₀ G) :=
feat: port Data.Finsupp.Defs (#1807)

Co-authored-by: ChrisHughes24 <chrishughes24@gmail.com>

Dependencies 7 + 239

240 files ported (97.2%)
105746 lines ported (97.2%)
Show graph

The unported dependencies are