data.finsupp.basicMathlib.Data.Finsupp.Basic

This file has been ported!

Changes since the initial port

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

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

feat(data/mv_polynomial/basic): add and generalize some lemmas from finsupp and monoid_algebra (#18855)

Most of these changes generalize from distrib_mul_action to smul_zero_class. The new lemmas are all just proved using corresponding lemmas on the underlying types.

Co-authored-by: Hagb (Junyu Guo 郭俊余) <hagb_green@qq.com>

Diff
@@ -1306,7 +1306,7 @@ instance [semiring R] [add_comm_monoid M] [module R M] : module R (α →₀ M)
 
 variables {α M} {R}
 
-lemma support_smul {_ : monoid R} [add_monoid M] [distrib_mul_action R M] {b : R} {g : α →₀ M} :
+lemma support_smul [add_monoid M] [smul_zero_class R M] {b : R} {g : α →₀ M} :
   (b • g).support ⊆ g.support :=
 λ a, by { simp only [smul_apply, mem_support_iff, ne.def], exact mt (λ h, h.symm ▸ smul_zero _) }
 

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

chore(finsupp/basic): weaken hypotheses (#18874)

these are already in mathlib4, I just missed them in mathlib3.

Diff
@@ -1259,16 +1259,16 @@ Throughout this section, some `monoid` and `semiring` arguments are specified wi
 `[]`. See note [implicit instance arguments].
 -/
 
-@[simp] lemma coe_smul [add_monoid M] [smul_zero_class R M]
+@[simp] lemma coe_smul [has_zero M] [smul_zero_class R M]
   (b : R) (v : α →₀ M) : ⇑(b • v) = b • v := rfl
-lemma smul_apply [add_monoid M] [smul_zero_class R M]
+lemma smul_apply [has_zero M] [smul_zero_class R M]
   (b : R) (v : α →₀ M) (a : α) : (b • v) a = b • (v a) := rfl
 
-lemma _root_.is_smul_regular.finsupp [add_monoid M] [smul_zero_class R M] {k : R}
+lemma _root_.is_smul_regular.finsupp [has_zero M] [smul_zero_class R M] {k : R}
   (hk : is_smul_regular M k) : is_smul_regular (α →₀ M) k :=
 λ _ _ h, ext $ λ i, hk (congr_fun h i)
 
-instance [nonempty α] [add_monoid M] [smul_zero_class R M] [has_faithful_smul R M] :
+instance [nonempty α] [has_zero M] [smul_zero_class R M] [has_faithful_smul R M] :
   has_faithful_smul R (α →₀ M) :=
 { eq_of_smul_eq_smul := λ r₁ r₂ h, let ⟨a⟩ := ‹nonempty α› in eq_of_smul_eq_smul $ λ m : M,
     by simpa using congr_fun (h (single a m)) a }

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

feat(algebra & polynomial): some (q)smul lemmas+generalisations (#18852)

There is many generalisations around these areas too, but I am specifically not doing them as it will be easier done after the port. I am only doing what I need for merging in the splitting field diamond fix.

Co-authored-by: Eric Rodriguez <37984851+ericrbg@users.noreply.github.com>

Diff
@@ -1259,16 +1259,16 @@ Throughout this section, some `monoid` and `semiring` arguments are specified wi
 `[]`. See note [implicit instance arguments].
 -/
 
-@[simp] lemma coe_smul [add_monoid M] [distrib_smul R M]
+@[simp] lemma coe_smul [add_monoid M] [smul_zero_class R M]
   (b : R) (v : α →₀ M) : ⇑(b • v) = b • v := rfl
-lemma smul_apply [add_monoid M] [distrib_smul R M]
+lemma smul_apply [add_monoid M] [smul_zero_class R M]
   (b : R) (v : α →₀ M) (a : α) : (b • v) a = b • (v a) := rfl
 
-lemma _root_.is_smul_regular.finsupp [add_monoid M] [distrib_smul R M] {k : R}
+lemma _root_.is_smul_regular.finsupp [add_monoid M] [smul_zero_class R M] {k : R}
   (hk : is_smul_regular M k) : is_smul_regular (α →₀ M) k :=
 λ _ _ h, ext $ λ i, hk (congr_fun h i)
 
-instance [nonempty α] [add_monoid M] [distrib_smul R M] [has_faithful_smul R M] :
+instance [nonempty α] [add_monoid M] [smul_zero_class R M] [has_faithful_smul R M] :
   has_faithful_smul R (α →₀ M) :=
 { eq_of_smul_eq_smul := λ r₁ r₂ h, let ⟨a⟩ := ‹nonempty α› in eq_of_smul_eq_smul $ λ m : M,
     by simpa using congr_fun (h (single a m)) a }
@@ -1286,18 +1286,16 @@ instance [monoid R] [add_monoid M] [distrib_mul_action R M] : distrib_mul_action
   mul_smul  := λ r s x, ext $ λ _, mul_smul _ _ _,
   ..finsupp.distrib_smul _ _ }
 
-instance [monoid R] [monoid S] [add_monoid M] [distrib_mul_action R M] [distrib_mul_action S M]
-  [has_smul R S] [is_scalar_tower R S M] :
-  is_scalar_tower R S (α →₀ M) :=
+instance [has_zero M] [smul_zero_class R M] [smul_zero_class S M] [has_smul R S]
+  [is_scalar_tower R S M] : is_scalar_tower R S (α →₀ M) :=
 { smul_assoc := λ r s a, ext $ λ _, smul_assoc _ _ _ }
 
-instance [monoid R] [monoid S] [add_monoid M] [distrib_mul_action R M] [distrib_mul_action S M]
-  [smul_comm_class R S M] :
-  smul_comm_class R S (α →₀ M) :=
+instance [has_zero M] [smul_zero_class R M] [smul_zero_class S M]
+  [smul_comm_class R S M] : smul_comm_class R S (α →₀ M) :=
 { smul_comm := λ r s a, ext $ λ _, smul_comm _ _ _ }
 
-instance [monoid R] [add_monoid M] [distrib_mul_action R M] [distrib_mul_action Rᵐᵒᵖ M]
-  [is_central_scalar R M] : is_central_scalar R (α →₀ M) :=
+instance [has_zero M] [smul_zero_class R M] [smul_zero_class Rᵐᵒᵖ M] [is_central_scalar R M] :
+  is_central_scalar R (α →₀ M) :=
 { op_smul_eq_smul := λ r a, ext $ λ _, op_smul_eq_smul _ _ }
 
 instance [semiring R] [add_comm_monoid M] [module R M] : module R (α →₀ M) :=
@@ -1332,7 +1330,7 @@ lemma map_domain_smul {_ : monoid R} [add_comm_monoid M] [distrib_mul_action R M
    {f : α → β} (b : R) (v : α →₀ M) : map_domain f (b • v) = b • map_domain f v :=
 map_domain_map_range _ _ _ _ (smul_add b)
 
-@[simp] lemma smul_single {_ : monoid R} [add_monoid M] [distrib_mul_action R M]
+@[simp] lemma smul_single [has_zero M] [smul_zero_class R M]
   (c : R) (a : α) (b : M) : c • finsupp.single a b = finsupp.single a (c • b) :=
 map_range_single
 

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(first ported)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -4,8 +4,8 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Scott Morrison
 -/
 import Algebra.BigOperators.Finsupp
-import Algebra.Hom.GroupAction
-import Algebra.Regular.Smul
+import GroupTheory.GroupAction.Hom
+import Algebra.Regular.SMul
 import Data.Finset.Preimage
 import Data.Rat.BigOperators
 
Diff
@@ -696,7 +696,7 @@ theorem mapDomain_support_of_injOn [DecidableEq β] {f : α → β} (s : α →
   Finset.Subset.antisymm mapDomain_support <|
     by
     intro x hx
-    simp only [mem_image, exists_prop, mem_support_iff, Ne.def] at hx 
+    simp only [mem_image, exists_prop, mem_support_iff, Ne.def] at hx
     rcases hx with ⟨hx_w, hx_h_left, rfl⟩
     simp only [mem_support_iff, Ne.def]
     rw [map_domain_apply' (↑s.support : Set _) _ _ hf]
@@ -764,7 +764,7 @@ theorem mapDomain_injective {f : α → β} (hf : Function.Injective f) :
   by
   intro v₁ v₂ eq; ext a
   have : map_domain f v₁ (f a) = map_domain f v₂ (f a) := by rw [Eq]
-  rwa [map_domain_apply hf, map_domain_apply hf] at this 
+  rwa [map_domain_apply hf, map_domain_apply hf] at this
 #align finsupp.map_domain_injective Finsupp.mapDomain_injective
 -/
 
@@ -823,7 +823,7 @@ theorem mapDomain_injOn (S : Set α) {f : α → β} (hf : Set.InjOn f S) :
     rw [← map_domain_apply' S _ hv₁ hf _, ← map_domain_apply' S _ hv₂ hf _, Eq] <;>
       · apply Set.union_subset hv₁ hv₂
         exact_mod_cast h
-  · simp only [Decidable.not_or_iff_and_not, mem_union, Classical.not_not, mem_support_iff] at h 
+  · simp only [Decidable.not_or_iff_and_not, mem_union, Classical.not_not, mem_support_iff] at h
     simp [h]
 #align finsupp.map_domain_inj_on Finsupp.mapDomain_injOn
 -/
@@ -912,7 +912,7 @@ theorem comapDomain_single (f : α → β) (a : α) (m : M)
   · simp only [single_zero, comap_domain_zero]
   · rw [eq_single_iff, comap_domain_apply, comap_domain_support, ← Finset.coe_subset, coe_preimage,
       support_single_ne_zero _ hm, coe_singleton, coe_singleton, single_eq_same]
-    rw [support_single_ne_zero _ hm, coe_singleton] at hif 
+    rw [support_single_ne_zero _ hm, coe_singleton] at hif
     exact ⟨fun x hx => hif hx rfl hx, rfl⟩
 #align finsupp.comap_domain_single Finsupp.comapDomain_single
 -/
@@ -1146,7 +1146,7 @@ theorem prod_filter_index [CommMonoid N] (g : α → M → N) :
     (f.filterₓ p).Prod g = ∏ x in (f.filterₓ p).support, g x (f x) := by
   classical
   refine' Finset.prod_congr rfl fun x hx => _
-  rw [support_filter, Finset.mem_filter] at hx 
+  rw [support_filter, Finset.mem_filter] at hx
   rw [filter_apply_pos _ _ hx.2]
 #align finsupp.prod_filter_index Finsupp.prod_filter_index
 #align finsupp.sum_filter_index Finsupp.sum_filter_index
@@ -1449,7 +1449,7 @@ theorem mem_support_multiset_sum [AddCommMonoid M] {s : Multiset (α →₀ M)}
       by_cases a ∈ f.support
       · exact ⟨f, Multiset.mem_cons_self _ _, h⟩
       · simp only [Multiset.sum_cons, mem_support_iff, add_apply, not_mem_support_iff.1 h,
-          zero_add] at ha 
+          zero_add] at ha
         rcases ih (mem_support_iff.2 ha) with ⟨f', h₀, h₁⟩
         exact ⟨f', Multiset.mem_cons_of_mem h₀, h₁⟩)
 #align finsupp.mem_support_multiset_sum Finsupp.mem_support_multiset_sum
@@ -1581,7 +1581,7 @@ def sumElim {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →₀ γ)
       haveI := Classical.decEq α <;> haveI := Classical.decEq β <;>
         exact f.support.map ⟨_, Sum.inl_injective⟩ ∪ g.support.map ⟨_, Sum.inr_injective⟩)
     (Sum.elim f g) fun ab h => by
-    cases' ab with a b <;> simp only [Sum.elim_inl, Sum.elim_inr] at h  <;> simpa
+    cases' ab with a b <;> simp only [Sum.elim_inl, Sum.elim_inr] at h <;> simpa
 #align finsupp.sum_elim Finsupp.sumElim
 -/
 
Diff
@@ -111,7 +111,7 @@ theorem not_mem_graph_snd_zero (a : α) (f : α →₀ M) : (a, (0 : M)) ∉ f.g
 #print Finsupp.image_fst_graph /-
 @[simp]
 theorem image_fst_graph [DecidableEq α] (f : α →₀ M) : f.graph.image Prod.fst = f.support := by
-  classical
+  classical simp only [graph, map_eq_image, image_image, embedding.coe_fn_mk, (· ∘ ·), image_id']
 #align finsupp.image_fst_graph Finsupp.image_fst_graph
 -/
 
@@ -120,6 +120,9 @@ theorem graph_injective (α M) [Zero M] : Injective (@graph α M _) :=
   by
   intro f g h
   classical
+  have hsup : f.support = g.support := by rw [← image_fst_graph, h, image_fst_graph]
+  refine' ext_iff'.2 ⟨hsup, fun x hx => apply_eq_of_mem_graph <| h.symm ▸ _⟩
+  exact mk_mem_graph _ (hsup ▸ hx)
 #align finsupp.graph_injective Finsupp.graph_injective
 -/
 
@@ -419,7 +422,10 @@ theorem equivMapDomain_trans' (f : α ≃ β) (g : β ≃ γ) :
 #print Finsupp.equivMapDomain_single /-
 @[simp]
 theorem equivMapDomain_single (f : α ≃ β) (a : α) (b : M) :
-    equivMapDomain f (single a b) = single (f a) b := by classical
+    equivMapDomain f (single a b) = single (f a) b := by
+  classical
+  ext x
+  simp only [single_apply, Equiv.apply_eq_iff_eq_symm_apply, equiv_map_domain_apply]
 #align finsupp.equiv_map_domain_single Finsupp.equivMapDomain_single
 -/
 
@@ -669,7 +675,18 @@ theorem mapDomain_support [DecidableEq β] {f : α → β} {s : α →₀ M} :
 
 #print Finsupp.mapDomain_apply' /-
 theorem mapDomain_apply' (S : Set α) {f : α → β} (x : α →₀ M) (hS : (x.support : Set α) ⊆ S)
-    (hf : Set.InjOn f S) {a : α} (ha : a ∈ S) : mapDomain f x (f a) = x a := by classical
+    (hf : Set.InjOn f S) {a : α} (ha : a ∈ S) : mapDomain f x (f a) = x a := by
+  classical
+  rw [map_domain, sum_apply, Sum]
+  simp_rw [single_apply]
+  by_cases hax : a ∈ x.support
+  · rw [← Finset.add_sum_erase _ _ hax, if_pos rfl]
+    convert add_zero _
+    refine' Finset.sum_eq_zero fun i hi => if_neg _
+    exact (hf.mono hS).Ne (Finset.mem_of_mem_erase hi) hax (Finset.ne_of_mem_erase hi)
+  · rw [not_mem_support_iff.1 hax]
+    refine' Finset.sum_eq_zero fun i hi => if_neg _
+    exact hf.ne (hS hi) ha (ne_of_mem_of_not_mem hi hax)
 #align finsupp.map_domain_apply' Finsupp.mapDomain_apply'
 -/
 
@@ -801,6 +818,13 @@ theorem mapDomain_injOn (S : Set α) {f : α → β} (hf : Set.InjOn f S) :
   intro v₁ hv₁ v₂ hv₂ eq
   ext a
   classical
+  by_cases h : a ∈ v₁.support ∪ v₂.support
+  ·
+    rw [← map_domain_apply' S _ hv₁ hf _, ← map_domain_apply' S _ hv₂ hf _, Eq] <;>
+      · apply Set.union_subset hv₁ hv₂
+        exact_mod_cast h
+  · simp only [Decidable.not_or_iff_and_not, mem_union, Classical.not_not, mem_support_iff] at h 
+    simp [h]
 #align finsupp.map_domain_inj_on Finsupp.mapDomain_injOn
 -/
 
@@ -990,7 +1014,10 @@ theorem some_single_none [Zero M] (m : M) : (single none m : Option α →₀ M)
 #print Finsupp.some_single_some /-
 @[simp]
 theorem some_single_some [Zero M] (a : α) (m : M) :
-    (single (Option.some a) m : Option α →₀ M).some = single a m := by classical
+    (single (Option.some a) m : Option α →₀ M).some = single a m := by
+  classical
+  ext b
+  simp [single_apply]
 #align finsupp.some_single_some Finsupp.some_single_some
 -/
 
@@ -999,7 +1026,16 @@ theorem some_single_some [Zero M] (a : α) (m : M) :
 theorem prod_option_index [AddCommMonoid M] [CommMonoid N] (f : Option α →₀ M)
     (b : Option α → M → N) (h_zero : ∀ o, b o 0 = 1)
     (h_add : ∀ o m₁ m₂, b o (m₁ + m₂) = b o m₁ * b o m₂) :
-    f.Prod b = b none (f none) * f.some.Prod fun a => b (Option.some a) := by classical
+    f.Prod b = b none (f none) * f.some.Prod fun a => b (Option.some a) := by
+  classical
+  apply induction_linear f
+  · simp [some_zero, h_zero]
+  · intro f₁ f₂ h₁ h₂
+    rw [Finsupp.prod_add_index, h₁, h₂, some_add, Finsupp.prod_add_index]
+    simp only [h_add, Pi.add_apply, Finsupp.coe_add]
+    rw [mul_mul_mul_comm]
+    all_goals simp [h_zero, h_add]
+  · rintro (_ | a) m <;> simp [h_zero, h_add]
 #align finsupp.prod_option_index Finsupp.prod_option_index
 #align finsupp.sum_option_index Finsupp.sum_option_index
 -/
@@ -1066,13 +1102,13 @@ theorem filter_eq_self_iff : f.filterₓ p = f ↔ ∀ x, f x ≠ 0 → p x := b
 
 #print Finsupp.filter_apply_pos /-
 @[simp]
-theorem filter_apply_pos {a : α} (h : p a) : f.filterₓ p a = f a := by classical
+theorem filter_apply_pos {a : α} (h : p a) : f.filterₓ p a = f a := by classical convert if_pos h
 #align finsupp.filter_apply_pos Finsupp.filter_apply_pos
 -/
 
 #print Finsupp.filter_apply_neg /-
 @[simp]
-theorem filter_apply_neg {a : α} (h : ¬p a) : f.filterₓ p a = 0 := by classical
+theorem filter_apply_neg {a : α} (h : ¬p a) : f.filterₓ p a = 0 := by classical convert if_neg h
 #align finsupp.filter_apply_neg Finsupp.filter_apply_neg
 -/
 
@@ -1084,7 +1120,8 @@ theorem support_filter [D : DecidablePred p] : (f.filterₓ p).support = f.suppo
 -/
 
 #print Finsupp.filter_zero /-
-theorem filter_zero : (0 : α →₀ M).filterₓ p = 0 := by classical
+theorem filter_zero : (0 : α →₀ M).filterₓ p = 0 := by
+  classical rw [← support_eq_empty, support_filter, support_zero, Finset.filter_empty]
 #align finsupp.filter_zero Finsupp.filter_zero
 -/
 
@@ -1106,7 +1143,11 @@ theorem filter_single_of_neg {a : α} {b : M} (h : ¬p a) : (single a b).filter
 #print Finsupp.prod_filter_index /-
 @[to_additive]
 theorem prod_filter_index [CommMonoid N] (g : α → M → N) :
-    (f.filterₓ p).Prod g = ∏ x in (f.filterₓ p).support, g x (f x) := by classical
+    (f.filterₓ p).Prod g = ∏ x in (f.filterₓ p).support, g x (f x) := by
+  classical
+  refine' Finset.prod_congr rfl fun x hx => _
+  rw [support_filter, Finset.mem_filter] at hx 
+  rw [filter_apply_pos _ _ hx.2]
 #align finsupp.prod_filter_index Finsupp.prod_filter_index
 #align finsupp.sum_filter_index Finsupp.sum_filter_index
 -/
@@ -1114,7 +1155,9 @@ theorem prod_filter_index [CommMonoid N] (g : α → M → N) :
 #print Finsupp.prod_filter_mul_prod_filter_not /-
 @[simp, to_additive]
 theorem prod_filter_mul_prod_filter_not [CommMonoid N] (g : α → M → N) :
-    (f.filterₓ p).Prod g * (f.filterₓ fun a => ¬p a).Prod g = f.Prod g := by classical
+    (f.filterₓ p).Prod g * (f.filterₓ fun a => ¬p a).Prod g = f.Prod g := by
+  classical simp_rw [prod_filter_index, support_filter, prod_filter_mul_prod_filter_not,
+    Finsupp.prod]
 #align finsupp.prod_filter_mul_prod_filter_not Finsupp.prod_filter_mul_prod_filter_not
 #align finsupp.sum_filter_add_sum_filter_not Finsupp.sum_filter_add_sum_filter_not
 -/
@@ -1155,7 +1198,11 @@ def frange (f : α →₀ M) : Finset M :=
 -/
 
 #print Finsupp.mem_frange /-
-theorem mem_frange {f : α →₀ M} {y : M} : y ∈ f.frange ↔ y ≠ 0 ∧ ∃ x, f x = y := by classical
+theorem mem_frange {f : α →₀ M} {y : M} : y ∈ f.frange ↔ y ≠ 0 ∧ ∃ x, f x = y := by
+  classical exact
+    finset.mem_image.trans
+      ⟨fun ⟨x, hx1, hx2⟩ => ⟨hx2 ▸ mem_support_iff.1 hx1, x, hx2⟩, fun ⟨hy, x, hx⟩ =>
+        ⟨x, mem_support_iff.2 (hx.symm ▸ hy), hx⟩⟩
 #align finsupp.mem_frange Finsupp.mem_frange
 -/
 
@@ -1167,7 +1214,12 @@ theorem zero_not_mem_frange {f : α →₀ M} : (0 : M) ∉ f.frange := fun H =>
 #print Finsupp.frange_single /-
 theorem frange_single {x : α} {y : M} : frange (single x y) ⊆ {y} := fun r hr =>
   let ⟨t, ht1, ht2⟩ := mem_frange.1 hr
-  ht2 ▸ by classical
+  ht2 ▸ by
+    classical
+    rw [single_apply] at ht2 ⊢
+    split_ifs at ht2 ⊢
+    · exact Finset.mem_singleton_self _
+    · exact (t ht2.symm).elim
 #align finsupp.frange_single Finsupp.frange_single
 -/
 
@@ -1218,14 +1270,19 @@ theorem subtypeDomain_zero : subtypeDomain p (0 : α →₀ M) = 0 :=
 
 #print Finsupp.subtypeDomain_eq_zero_iff' /-
 theorem subtypeDomain_eq_zero_iff' {f : α →₀ M} : f.subtypeDomain p = 0 ↔ ∀ x, p x → f x = 0 := by
-  classical
+  classical simp_rw [← support_eq_empty, support_subtype_domain, subtype_eq_empty,
+    not_mem_support_iff]
 #align finsupp.subtype_domain_eq_zero_iff' Finsupp.subtypeDomain_eq_zero_iff'
 -/
 
 #print Finsupp.subtypeDomain_eq_zero_iff /-
 theorem subtypeDomain_eq_zero_iff {f : α →₀ M} (hf : ∀ x ∈ f.support, p x) :
     f.subtypeDomain p = 0 ↔ f = 0 :=
-  subtypeDomain_eq_zero_iff'.trans ⟨fun H => ext fun x => by classical, fun H x _ => by simp [H]⟩
+  subtypeDomain_eq_zero_iff'.trans
+    ⟨fun H =>
+      ext fun x => by
+        classical exact if hx : p x then H x hx else not_mem_support_iff.1 <| mt (hf x) hx,
+      fun H x _ => by simp [H]⟩
 #align finsupp.subtype_domain_eq_zero_iff Finsupp.subtypeDomain_eq_zero_iff
 -/
 
@@ -1233,8 +1290,8 @@ theorem subtypeDomain_eq_zero_iff {f : α →₀ M} (hf : ∀ x ∈ f.support, p
 @[to_additive]
 theorem prod_subtypeDomain_index [CommMonoid N] {v : α →₀ M} {h : α → M → N}
     (hp : ∀ x ∈ v.support, p x) : ((v.subtypeDomain p).Prod fun a b => h a b) = v.Prod h :=
-  prod_bij (fun p _ => p.val) (fun _ => by classical) (fun _ _ => rfl) (fun _ _ _ _ => Subtype.eq)
-    fun b hb => ⟨⟨b, hp b hb⟩, by classical, rfl⟩
+  prod_bij (fun p _ => p.val) (fun _ => by classical exact mem_subtype.1) (fun _ _ => rfl)
+    (fun _ _ _ _ => Subtype.eq) fun b hb => ⟨⟨b, hp b hb⟩, by classical exact mem_subtype.2 hb, rfl⟩
 #align finsupp.prod_subtype_domain_index Finsupp.prod_subtypeDomain_index
 #align finsupp.sum_subtype_domain_index Finsupp.sum_subtypeDomain_index
 -/
@@ -1425,7 +1482,16 @@ protected def curry (f : α × β →₀ M) : α →₀ β →₀ M :=
 
 #print Finsupp.curry_apply /-
 @[simp]
-theorem curry_apply (f : α × β →₀ M) (x : α) (y : β) : f.curry x y = f (x, y) := by classical
+theorem curry_apply (f : α × β →₀ M) (x : α) (y : β) : f.curry x y = f (x, y) := by
+  classical
+  have : ∀ b : α × β, single b.fst (single b.snd (f b)) x y = if b = (x, y) then f b else 0 :=
+    by
+    rintro ⟨b₁, b₂⟩
+    simp [single_apply, ite_apply, Prod.ext_iff, ite_and]
+    split_ifs <;> simp [single_apply, *]
+  rw [Finsupp.curry, sum_apply, sum_apply, Finsupp.sum, Finset.sum_eq_single, this, if_pos rfl]
+  · intro b hb b_ne; rw [this b, if_neg b_ne]
+  · intro hxy; rw [this (x, y), if_pos rfl, not_mem_support_iff.mp hxy]
 #align finsupp.curry_apply Finsupp.curry_apply
 -/
 
@@ -1477,7 +1543,16 @@ def finsuppProdEquiv : (α × β →₀ M) ≃ (α →₀ β →₀ M)
 
 #print Finsupp.filter_curry /-
 theorem filter_curry (f : α × β →₀ M) (p : α → Prop) :
-    (f.filterₓ fun a : α × β => p a.1).curry = f.curry.filterₓ p := by classical
+    (f.filterₓ fun a : α × β => p a.1).curry = f.curry.filterₓ p := by
+  classical
+  rw [Finsupp.curry, Finsupp.curry, Finsupp.sum, Finsupp.sum, filter_sum, support_filter,
+    sum_filter]
+  refine' Finset.sum_congr rfl _
+  rintro ⟨a₁, a₂⟩ ha
+  dsimp only
+  split_ifs
+  · rw [filter_apply_pos, filter_single_of_pos] <;> exact h
+  · rwa [filter_single_of_neg]
 #align finsupp.filter_curry Finsupp.filter_curry
 -/
 
@@ -1967,7 +2042,12 @@ def restrictSupportEquiv (s : Set α) (M : Type _) [AddCommMonoid M] :
     { f : α →₀ M // ↑f.support ⊆ s } ≃ (s →₀ M)
     where
   toFun f := subtypeDomain (fun x => x ∈ s) f.1
-  invFun f := ⟨f.mapDomain Subtype.val, by classical⟩
+  invFun f :=
+    ⟨f.mapDomain Subtype.val, by
+      classical
+      refine' Set.Subset.trans (Finset.coe_subset.2 map_domain_support) _
+      rw [Finset.coe_image, Set.image_subset_iff]
+      exact fun x hx => x.2⟩
   left_inv := by
     rintro ⟨f, hf⟩
     apply Subtype.eq
Diff
@@ -111,7 +111,7 @@ theorem not_mem_graph_snd_zero (a : α) (f : α →₀ M) : (a, (0 : M)) ∉ f.g
 #print Finsupp.image_fst_graph /-
 @[simp]
 theorem image_fst_graph [DecidableEq α] (f : α →₀ M) : f.graph.image Prod.fst = f.support := by
-  classical simp only [graph, map_eq_image, image_image, embedding.coe_fn_mk, (· ∘ ·), image_id']
+  classical
 #align finsupp.image_fst_graph Finsupp.image_fst_graph
 -/
 
@@ -120,9 +120,6 @@ theorem graph_injective (α M) [Zero M] : Injective (@graph α M _) :=
   by
   intro f g h
   classical
-  have hsup : f.support = g.support := by rw [← image_fst_graph, h, image_fst_graph]
-  refine' ext_iff'.2 ⟨hsup, fun x hx => apply_eq_of_mem_graph <| h.symm ▸ _⟩
-  exact mk_mem_graph _ (hsup ▸ hx)
 #align finsupp.graph_injective Finsupp.graph_injective
 -/
 
@@ -422,10 +419,7 @@ theorem equivMapDomain_trans' (f : α ≃ β) (g : β ≃ γ) :
 #print Finsupp.equivMapDomain_single /-
 @[simp]
 theorem equivMapDomain_single (f : α ≃ β) (a : α) (b : M) :
-    equivMapDomain f (single a b) = single (f a) b := by
-  classical
-  ext x
-  simp only [single_apply, Equiv.apply_eq_iff_eq_symm_apply, equiv_map_domain_apply]
+    equivMapDomain f (single a b) = single (f a) b := by classical
 #align finsupp.equiv_map_domain_single Finsupp.equivMapDomain_single
 -/
 
@@ -675,18 +669,7 @@ theorem mapDomain_support [DecidableEq β] {f : α → β} {s : α →₀ M} :
 
 #print Finsupp.mapDomain_apply' /-
 theorem mapDomain_apply' (S : Set α) {f : α → β} (x : α →₀ M) (hS : (x.support : Set α) ⊆ S)
-    (hf : Set.InjOn f S) {a : α} (ha : a ∈ S) : mapDomain f x (f a) = x a := by
-  classical
-  rw [map_domain, sum_apply, Sum]
-  simp_rw [single_apply]
-  by_cases hax : a ∈ x.support
-  · rw [← Finset.add_sum_erase _ _ hax, if_pos rfl]
-    convert add_zero _
-    refine' Finset.sum_eq_zero fun i hi => if_neg _
-    exact (hf.mono hS).Ne (Finset.mem_of_mem_erase hi) hax (Finset.ne_of_mem_erase hi)
-  · rw [not_mem_support_iff.1 hax]
-    refine' Finset.sum_eq_zero fun i hi => if_neg _
-    exact hf.ne (hS hi) ha (ne_of_mem_of_not_mem hi hax)
+    (hf : Set.InjOn f S) {a : α} (ha : a ∈ S) : mapDomain f x (f a) = x a := by classical
 #align finsupp.map_domain_apply' Finsupp.mapDomain_apply'
 -/
 
@@ -818,13 +801,6 @@ theorem mapDomain_injOn (S : Set α) {f : α → β} (hf : Set.InjOn f S) :
   intro v₁ hv₁ v₂ hv₂ eq
   ext a
   classical
-  by_cases h : a ∈ v₁.support ∪ v₂.support
-  ·
-    rw [← map_domain_apply' S _ hv₁ hf _, ← map_domain_apply' S _ hv₂ hf _, Eq] <;>
-      · apply Set.union_subset hv₁ hv₂
-        exact_mod_cast h
-  · simp only [Decidable.not_or_iff_and_not, mem_union, Classical.not_not, mem_support_iff] at h 
-    simp [h]
 #align finsupp.map_domain_inj_on Finsupp.mapDomain_injOn
 -/
 
@@ -1014,10 +990,7 @@ theorem some_single_none [Zero M] (m : M) : (single none m : Option α →₀ M)
 #print Finsupp.some_single_some /-
 @[simp]
 theorem some_single_some [Zero M] (a : α) (m : M) :
-    (single (Option.some a) m : Option α →₀ M).some = single a m := by
-  classical
-  ext b
-  simp [single_apply]
+    (single (Option.some a) m : Option α →₀ M).some = single a m := by classical
 #align finsupp.some_single_some Finsupp.some_single_some
 -/
 
@@ -1026,16 +999,7 @@ theorem some_single_some [Zero M] (a : α) (m : M) :
 theorem prod_option_index [AddCommMonoid M] [CommMonoid N] (f : Option α →₀ M)
     (b : Option α → M → N) (h_zero : ∀ o, b o 0 = 1)
     (h_add : ∀ o m₁ m₂, b o (m₁ + m₂) = b o m₁ * b o m₂) :
-    f.Prod b = b none (f none) * f.some.Prod fun a => b (Option.some a) := by
-  classical
-  apply induction_linear f
-  · simp [some_zero, h_zero]
-  · intro f₁ f₂ h₁ h₂
-    rw [Finsupp.prod_add_index, h₁, h₂, some_add, Finsupp.prod_add_index]
-    simp only [h_add, Pi.add_apply, Finsupp.coe_add]
-    rw [mul_mul_mul_comm]
-    all_goals simp [h_zero, h_add]
-  · rintro (_ | a) m <;> simp [h_zero, h_add]
+    f.Prod b = b none (f none) * f.some.Prod fun a => b (Option.some a) := by classical
 #align finsupp.prod_option_index Finsupp.prod_option_index
 #align finsupp.sum_option_index Finsupp.sum_option_index
 -/
@@ -1102,13 +1066,13 @@ theorem filter_eq_self_iff : f.filterₓ p = f ↔ ∀ x, f x ≠ 0 → p x := b
 
 #print Finsupp.filter_apply_pos /-
 @[simp]
-theorem filter_apply_pos {a : α} (h : p a) : f.filterₓ p a = f a := by classical convert if_pos h
+theorem filter_apply_pos {a : α} (h : p a) : f.filterₓ p a = f a := by classical
 #align finsupp.filter_apply_pos Finsupp.filter_apply_pos
 -/
 
 #print Finsupp.filter_apply_neg /-
 @[simp]
-theorem filter_apply_neg {a : α} (h : ¬p a) : f.filterₓ p a = 0 := by classical convert if_neg h
+theorem filter_apply_neg {a : α} (h : ¬p a) : f.filterₓ p a = 0 := by classical
 #align finsupp.filter_apply_neg Finsupp.filter_apply_neg
 -/
 
@@ -1120,8 +1084,7 @@ theorem support_filter [D : DecidablePred p] : (f.filterₓ p).support = f.suppo
 -/
 
 #print Finsupp.filter_zero /-
-theorem filter_zero : (0 : α →₀ M).filterₓ p = 0 := by
-  classical rw [← support_eq_empty, support_filter, support_zero, Finset.filter_empty]
+theorem filter_zero : (0 : α →₀ M).filterₓ p = 0 := by classical
 #align finsupp.filter_zero Finsupp.filter_zero
 -/
 
@@ -1143,11 +1106,7 @@ theorem filter_single_of_neg {a : α} {b : M} (h : ¬p a) : (single a b).filter
 #print Finsupp.prod_filter_index /-
 @[to_additive]
 theorem prod_filter_index [CommMonoid N] (g : α → M → N) :
-    (f.filterₓ p).Prod g = ∏ x in (f.filterₓ p).support, g x (f x) := by
-  classical
-  refine' Finset.prod_congr rfl fun x hx => _
-  rw [support_filter, Finset.mem_filter] at hx 
-  rw [filter_apply_pos _ _ hx.2]
+    (f.filterₓ p).Prod g = ∏ x in (f.filterₓ p).support, g x (f x) := by classical
 #align finsupp.prod_filter_index Finsupp.prod_filter_index
 #align finsupp.sum_filter_index Finsupp.sum_filter_index
 -/
@@ -1155,9 +1114,7 @@ theorem prod_filter_index [CommMonoid N] (g : α → M → N) :
 #print Finsupp.prod_filter_mul_prod_filter_not /-
 @[simp, to_additive]
 theorem prod_filter_mul_prod_filter_not [CommMonoid N] (g : α → M → N) :
-    (f.filterₓ p).Prod g * (f.filterₓ fun a => ¬p a).Prod g = f.Prod g := by
-  classical simp_rw [prod_filter_index, support_filter, prod_filter_mul_prod_filter_not,
-    Finsupp.prod]
+    (f.filterₓ p).Prod g * (f.filterₓ fun a => ¬p a).Prod g = f.Prod g := by classical
 #align finsupp.prod_filter_mul_prod_filter_not Finsupp.prod_filter_mul_prod_filter_not
 #align finsupp.sum_filter_add_sum_filter_not Finsupp.sum_filter_add_sum_filter_not
 -/
@@ -1198,11 +1155,7 @@ def frange (f : α →₀ M) : Finset M :=
 -/
 
 #print Finsupp.mem_frange /-
-theorem mem_frange {f : α →₀ M} {y : M} : y ∈ f.frange ↔ y ≠ 0 ∧ ∃ x, f x = y := by
-  classical exact
-    finset.mem_image.trans
-      ⟨fun ⟨x, hx1, hx2⟩ => ⟨hx2 ▸ mem_support_iff.1 hx1, x, hx2⟩, fun ⟨hy, x, hx⟩ =>
-        ⟨x, mem_support_iff.2 (hx.symm ▸ hy), hx⟩⟩
+theorem mem_frange {f : α →₀ M} {y : M} : y ∈ f.frange ↔ y ≠ 0 ∧ ∃ x, f x = y := by classical
 #align finsupp.mem_frange Finsupp.mem_frange
 -/
 
@@ -1214,12 +1167,7 @@ theorem zero_not_mem_frange {f : α →₀ M} : (0 : M) ∉ f.frange := fun H =>
 #print Finsupp.frange_single /-
 theorem frange_single {x : α} {y : M} : frange (single x y) ⊆ {y} := fun r hr =>
   let ⟨t, ht1, ht2⟩ := mem_frange.1 hr
-  ht2 ▸ by
-    classical
-    rw [single_apply] at ht2 ⊢
-    split_ifs at ht2 ⊢
-    · exact Finset.mem_singleton_self _
-    · exact (t ht2.symm).elim
+  ht2 ▸ by classical
 #align finsupp.frange_single Finsupp.frange_single
 -/
 
@@ -1270,19 +1218,14 @@ theorem subtypeDomain_zero : subtypeDomain p (0 : α →₀ M) = 0 :=
 
 #print Finsupp.subtypeDomain_eq_zero_iff' /-
 theorem subtypeDomain_eq_zero_iff' {f : α →₀ M} : f.subtypeDomain p = 0 ↔ ∀ x, p x → f x = 0 := by
-  classical simp_rw [← support_eq_empty, support_subtype_domain, subtype_eq_empty,
-    not_mem_support_iff]
+  classical
 #align finsupp.subtype_domain_eq_zero_iff' Finsupp.subtypeDomain_eq_zero_iff'
 -/
 
 #print Finsupp.subtypeDomain_eq_zero_iff /-
 theorem subtypeDomain_eq_zero_iff {f : α →₀ M} (hf : ∀ x ∈ f.support, p x) :
     f.subtypeDomain p = 0 ↔ f = 0 :=
-  subtypeDomain_eq_zero_iff'.trans
-    ⟨fun H =>
-      ext fun x => by
-        classical exact if hx : p x then H x hx else not_mem_support_iff.1 <| mt (hf x) hx,
-      fun H x _ => by simp [H]⟩
+  subtypeDomain_eq_zero_iff'.trans ⟨fun H => ext fun x => by classical, fun H x _ => by simp [H]⟩
 #align finsupp.subtype_domain_eq_zero_iff Finsupp.subtypeDomain_eq_zero_iff
 -/
 
@@ -1290,8 +1233,8 @@ theorem subtypeDomain_eq_zero_iff {f : α →₀ M} (hf : ∀ x ∈ f.support, p
 @[to_additive]
 theorem prod_subtypeDomain_index [CommMonoid N] {v : α →₀ M} {h : α → M → N}
     (hp : ∀ x ∈ v.support, p x) : ((v.subtypeDomain p).Prod fun a b => h a b) = v.Prod h :=
-  prod_bij (fun p _ => p.val) (fun _ => by classical exact mem_subtype.1) (fun _ _ => rfl)
-    (fun _ _ _ _ => Subtype.eq) fun b hb => ⟨⟨b, hp b hb⟩, by classical exact mem_subtype.2 hb, rfl⟩
+  prod_bij (fun p _ => p.val) (fun _ => by classical) (fun _ _ => rfl) (fun _ _ _ _ => Subtype.eq)
+    fun b hb => ⟨⟨b, hp b hb⟩, by classical, rfl⟩
 #align finsupp.prod_subtype_domain_index Finsupp.prod_subtypeDomain_index
 #align finsupp.sum_subtype_domain_index Finsupp.sum_subtypeDomain_index
 -/
@@ -1482,16 +1425,7 @@ protected def curry (f : α × β →₀ M) : α →₀ β →₀ M :=
 
 #print Finsupp.curry_apply /-
 @[simp]
-theorem curry_apply (f : α × β →₀ M) (x : α) (y : β) : f.curry x y = f (x, y) := by
-  classical
-  have : ∀ b : α × β, single b.fst (single b.snd (f b)) x y = if b = (x, y) then f b else 0 :=
-    by
-    rintro ⟨b₁, b₂⟩
-    simp [single_apply, ite_apply, Prod.ext_iff, ite_and]
-    split_ifs <;> simp [single_apply, *]
-  rw [Finsupp.curry, sum_apply, sum_apply, Finsupp.sum, Finset.sum_eq_single, this, if_pos rfl]
-  · intro b hb b_ne; rw [this b, if_neg b_ne]
-  · intro hxy; rw [this (x, y), if_pos rfl, not_mem_support_iff.mp hxy]
+theorem curry_apply (f : α × β →₀ M) (x : α) (y : β) : f.curry x y = f (x, y) := by classical
 #align finsupp.curry_apply Finsupp.curry_apply
 -/
 
@@ -1543,16 +1477,7 @@ def finsuppProdEquiv : (α × β →₀ M) ≃ (α →₀ β →₀ M)
 
 #print Finsupp.filter_curry /-
 theorem filter_curry (f : α × β →₀ M) (p : α → Prop) :
-    (f.filterₓ fun a : α × β => p a.1).curry = f.curry.filterₓ p := by
-  classical
-  rw [Finsupp.curry, Finsupp.curry, Finsupp.sum, Finsupp.sum, filter_sum, support_filter,
-    sum_filter]
-  refine' Finset.sum_congr rfl _
-  rintro ⟨a₁, a₂⟩ ha
-  dsimp only
-  split_ifs
-  · rw [filter_apply_pos, filter_single_of_pos] <;> exact h
-  · rwa [filter_single_of_neg]
+    (f.filterₓ fun a : α × β => p a.1).curry = f.curry.filterₓ p := by classical
 #align finsupp.filter_curry Finsupp.filter_curry
 -/
 
@@ -2042,12 +1967,7 @@ def restrictSupportEquiv (s : Set α) (M : Type _) [AddCommMonoid M] :
     { f : α →₀ M // ↑f.support ⊆ s } ≃ (s →₀ M)
     where
   toFun f := subtypeDomain (fun x => x ∈ s) f.1
-  invFun f :=
-    ⟨f.mapDomain Subtype.val, by
-      classical
-      refine' Set.Subset.trans (Finset.coe_subset.2 map_domain_support) _
-      rw [Finset.coe_image, Set.image_subset_iff]
-      exact fun x hx => x.2⟩
+  invFun f := ⟨f.mapDomain Subtype.val, by classical⟩
   left_inv := by
     rintro ⟨f, hf⟩
     apply Subtype.eq
Diff
@@ -1088,14 +1088,14 @@ theorem filter_eq_indicator : ⇑(f.filterₓ p) = Set.indicator {x | p x} f :=
 
 #print Finsupp.filter_eq_zero_iff /-
 theorem filter_eq_zero_iff : f.filterₓ p = 0 ↔ ∀ x, p x → f x = 0 := by
-  simp only [FunLike.ext_iff, filter_eq_indicator, zero_apply, Set.indicator_apply_eq_zero,
+  simp only [DFunLike.ext_iff, filter_eq_indicator, zero_apply, Set.indicator_apply_eq_zero,
     Set.mem_setOf_eq]
 #align finsupp.filter_eq_zero_iff Finsupp.filter_eq_zero_iff
 -/
 
 #print Finsupp.filter_eq_self_iff /-
 theorem filter_eq_self_iff : f.filterₓ p = f ↔ ∀ x, f x ≠ 0 → p x := by
-  simp only [FunLike.ext_iff, filter_eq_indicator, Set.indicator_apply_eq_self, Set.mem_setOf_eq,
+  simp only [DFunLike.ext_iff, filter_eq_indicator, Set.indicator_apply_eq_self, Set.mem_setOf_eq,
     not_imp_comm]
 #align finsupp.filter_eq_self_iff Finsupp.filter_eq_self_iff
 -/
@@ -2021,14 +2021,14 @@ variable [Zero R]
 #print Finsupp.uniqueOfRight /-
 /-- The `finsupp` version of `pi.unique`. -/
 instance uniqueOfRight [Subsingleton R] : Unique (α →₀ R) :=
-  FunLike.coe_injective.unique
+  DFunLike.coe_injective.unique
 #align finsupp.unique_of_right Finsupp.uniqueOfRight
 -/
 
 #print Finsupp.uniqueOfLeft /-
 /-- The `finsupp` version of `pi.unique_of_is_empty`. -/
 instance uniqueOfLeft [IsEmpty α] : Unique (α →₀ R) :=
-  FunLike.coe_injective.unique
+  DFunLike.coe_injective.unique
 #align finsupp.unique_of_left Finsupp.uniqueOfLeft
 -/
 
Diff
@@ -1975,7 +1975,7 @@ theorem sum_smul_index_addMonoidHom [AddMonoid M] [AddCommMonoid N] [DistribSMul
 instance [Semiring R] [AddCommMonoid M] [Module R M] {ι : Type _} [NoZeroSMulDivisors R M] :
     NoZeroSMulDivisors R (ι →₀ M) :=
   ⟨fun c f h =>
-    or_iff_not_imp_left.mpr fun hc =>
+    Classical.or_iff_not_imp_left.mpr fun hc =>
       Finsupp.ext fun i => (smul_eq_zero.mp (Finsupp.ext_iff.mp h i)).resolve_left hc⟩
 
 section DistribMulActionHom
Diff
@@ -3,11 +3,11 @@ 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.BigOperators.Finsupp
-import Mathbin.Algebra.Hom.GroupAction
-import Mathbin.Algebra.Regular.Smul
-import Mathbin.Data.Finset.Preimage
-import Mathbin.Data.Rat.BigOperators
+import Algebra.BigOperators.Finsupp
+import Algebra.Hom.GroupAction
+import Algebra.Regular.Smul
+import Data.Finset.Preimage
+import Data.Rat.BigOperators
 
 #align_import data.finsupp.basic from "leanprover-community/mathlib"@"f69db8cecc668e2d5894d7e9bfc491da60db3b9f"
 
Diff
@@ -1753,7 +1753,7 @@ theorem comapSMul_single (g : G) (a : α) (b : M) : g • single a b = single (g
 def comapMulAction : MulAction G (α →₀ M)
     where
   one_smul f := by rw [comap_smul_def, one_smul_eq_id, map_domain_id]
-  mul_smul g g' f := by
+  hMul_smul g g' f := by
     rw [comap_smul_def, comap_smul_def, comap_smul_def, ← comp_smul_left, map_domain_comp]
 #align finsupp.comap_mul_action Finsupp.comapMulAction
 -/
@@ -1840,7 +1840,7 @@ instance [Monoid R] [AddMonoid M] [DistribMulAction R M] : DistribMulAction R (
   { Finsupp.distribSMul _ _ with
     smul := (· • ·)
     one_smul := fun x => ext fun _ => one_smul _ _
-    mul_smul := fun r s x => ext fun _ => mul_smul _ _ _ }
+    hMul_smul := fun r s x => ext fun _ => hMul_smul _ _ _ }
 
 instance [Zero M] [SMulZeroClass R M] [SMulZeroClass S M] [SMul R S] [IsScalarTower R S M] :
     IsScalarTower R S (α →₀ M) where smul_assoc r s a := ext fun _ => smul_assoc _ _ _
Diff
@@ -2,11 +2,6 @@
 Copyright (c) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Scott Morrison
-
-! This file was ported from Lean 3 source module data.finsupp.basic
-! leanprover-community/mathlib commit f69db8cecc668e2d5894d7e9bfc491da60db3b9f
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Algebra.BigOperators.Finsupp
 import Mathbin.Algebra.Hom.GroupAction
@@ -14,6 +9,8 @@ import Mathbin.Algebra.Regular.Smul
 import Mathbin.Data.Finset.Preimage
 import Mathbin.Data.Rat.BigOperators
 
+#align_import data.finsupp.basic from "leanprover-community/mathlib"@"f69db8cecc668e2d5894d7e9bfc491da60db3b9f"
+
 /-!
 # Miscellaneous definitions, lemmas, and constructions using finsupp
 
Diff
@@ -73,6 +73,7 @@ def graph (f : α →₀ M) : Finset (α × M) :=
 #align finsupp.graph Finsupp.graph
 -/
 
+#print Finsupp.mk_mem_graph_iff /-
 theorem mk_mem_graph_iff {a : α} {m : M} {f : α →₀ M} : (a, m) ∈ f.graph ↔ f a = m ∧ m ≠ 0 :=
   by
   simp_rw [graph, mem_map, mem_support_iff]
@@ -82,30 +83,42 @@ theorem mk_mem_graph_iff {a : α} {m : M} {f : α →₀ M} : (a, m) ∈ f.graph
   · rintro ⟨rfl, ha⟩
     exact ⟨a, ha, rfl⟩
 #align finsupp.mk_mem_graph_iff Finsupp.mk_mem_graph_iff
+-/
 
+#print Finsupp.mem_graph_iff /-
 @[simp]
 theorem mem_graph_iff {c : α × M} {f : α →₀ M} : c ∈ f.graph ↔ f c.1 = c.2 ∧ c.2 ≠ 0 := by cases c;
   exact mk_mem_graph_iff
 #align finsupp.mem_graph_iff Finsupp.mem_graph_iff
+-/
 
+#print Finsupp.mk_mem_graph /-
 theorem mk_mem_graph (f : α →₀ M) {a : α} (ha : a ∈ f.support) : (a, f a) ∈ f.graph :=
   mk_mem_graph_iff.2 ⟨rfl, mem_support_iff.1 ha⟩
 #align finsupp.mk_mem_graph Finsupp.mk_mem_graph
+-/
 
+#print Finsupp.apply_eq_of_mem_graph /-
 theorem apply_eq_of_mem_graph {a : α} {m : M} {f : α →₀ M} (h : (a, m) ∈ f.graph) : f a = m :=
   (mem_graph_iff.1 h).1
 #align finsupp.apply_eq_of_mem_graph Finsupp.apply_eq_of_mem_graph
+-/
 
+#print Finsupp.not_mem_graph_snd_zero /-
 @[simp]
 theorem not_mem_graph_snd_zero (a : α) (f : α →₀ M) : (a, (0 : M)) ∉ f.graph := fun h =>
   (mem_graph_iff.1 h).2.irrefl
 #align finsupp.not_mem_graph_snd_zero Finsupp.not_mem_graph_snd_zero
+-/
 
+#print Finsupp.image_fst_graph /-
 @[simp]
 theorem image_fst_graph [DecidableEq α] (f : α →₀ M) : f.graph.image Prod.fst = f.support := by
   classical simp only [graph, map_eq_image, image_image, embedding.coe_fn_mk, (· ∘ ·), image_id']
 #align finsupp.image_fst_graph Finsupp.image_fst_graph
+-/
 
+#print Finsupp.graph_injective /-
 theorem graph_injective (α M) [Zero M] : Injective (@graph α M _) :=
   by
   intro f g h
@@ -114,20 +127,27 @@ theorem graph_injective (α M) [Zero M] : Injective (@graph α M _) :=
   refine' ext_iff'.2 ⟨hsup, fun x hx => apply_eq_of_mem_graph <| h.symm ▸ _⟩
   exact mk_mem_graph _ (hsup ▸ hx)
 #align finsupp.graph_injective Finsupp.graph_injective
+-/
 
+#print Finsupp.graph_inj /-
 @[simp]
 theorem graph_inj {f g : α →₀ M} : f.graph = g.graph ↔ f = g :=
   (graph_injective α M).eq_iff
 #align finsupp.graph_inj Finsupp.graph_inj
+-/
 
+#print Finsupp.graph_zero /-
 @[simp]
 theorem graph_zero : graph (0 : α →₀ M) = ∅ := by simp [graph]
 #align finsupp.graph_zero Finsupp.graph_zero
+-/
 
+#print Finsupp.graph_eq_empty /-
 @[simp]
 theorem graph_eq_empty {f : α →₀ M} : f.graph = ∅ ↔ f = 0 :=
   (graph_injective α M).eq_iff' graph_zero
 #align finsupp.graph_eq_empty Finsupp.graph_eq_empty
+-/
 
 end Graph
 
@@ -162,11 +182,14 @@ def mapRange.equiv (f : M ≃ N) (hf : f 0 = 0) (hf' : f.symm 0 = 0) : (α →
 #align finsupp.map_range.equiv Finsupp.mapRange.equiv
 -/
 
+#print Finsupp.mapRange.equiv_refl /-
 @[simp]
 theorem mapRange.equiv_refl : mapRange.equiv (Equiv.refl M) rfl rfl = Equiv.refl (α →₀ M) :=
   Equiv.ext mapRange_id
 #align finsupp.map_range.equiv_refl Finsupp.mapRange.equiv_refl
+-/
 
+#print Finsupp.mapRange.equiv_trans /-
 theorem mapRange.equiv_trans (f : M ≃ N) (hf : f 0 = 0) (hf') (f₂ : N ≃ P) (hf₂ : f₂ 0 = 0) (hf₂') :
     (mapRange.equiv (f.trans f₂) (by rw [Equiv.trans_apply, hf, hf₂])
           (by rw [Equiv.symm_trans_apply, hf₂', hf']) :
@@ -174,12 +197,15 @@ theorem mapRange.equiv_trans (f : M ≃ N) (hf : f 0 = 0) (hf') (f₂ : N ≃ P)
       (mapRange.equiv f hf hf').trans (mapRange.equiv f₂ hf₂ hf₂') :=
   Equiv.ext <| mapRange_comp _ _ _ _ _
 #align finsupp.map_range.equiv_trans Finsupp.mapRange.equiv_trans
+-/
 
+#print Finsupp.mapRange.equiv_symm /-
 @[simp]
 theorem mapRange.equiv_symm (f : M ≃ N) (hf hf') :
     ((mapRange.equiv f hf hf').symm : (α →₀ _) ≃ _) = mapRange.equiv f.symm hf' hf :=
   Equiv.ext fun x => rfl
 #align finsupp.map_range.equiv_symm Finsupp.mapRange.equiv_symm
+-/
 
 end Equiv
 
@@ -198,16 +224,20 @@ def mapRange.zeroHom (f : ZeroHom M N) : ZeroHom (α →₀ M) (α →₀ N)
 #align finsupp.map_range.zero_hom Finsupp.mapRange.zeroHom
 -/
 
+#print Finsupp.mapRange.zeroHom_id /-
 @[simp]
 theorem mapRange.zeroHom_id : mapRange.zeroHom (ZeroHom.id M) = ZeroHom.id (α →₀ M) :=
   ZeroHom.ext mapRange_id
 #align finsupp.map_range.zero_hom_id Finsupp.mapRange.zeroHom_id
+-/
 
+#print Finsupp.mapRange.zeroHom_comp /-
 theorem mapRange.zeroHom_comp (f : ZeroHom N P) (f₂ : ZeroHom M N) :
     (mapRange.zeroHom (f.comp f₂) : ZeroHom (α →₀ _) _) =
       (mapRange.zeroHom f).comp (mapRange.zeroHom f₂) :=
   ZeroHom.ext <| mapRange_comp _ _ _ _ _
 #align finsupp.map_range.zero_hom_comp Finsupp.mapRange.zeroHom_comp
+-/
 
 end ZeroHom
 
@@ -215,6 +245,7 @@ section AddMonoidHom
 
 variable [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P]
 
+#print Finsupp.mapRange.addMonoidHom /-
 /-- Composition with a fixed additive homomorphism is itself an additive homomorphism on functions.
 -/
 @[simps]
@@ -224,35 +255,47 @@ def mapRange.addMonoidHom (f : M →+ N) : (α →₀ M) →+ α →₀ N
   map_zero' := mapRange_zero
   map_add' a b := mapRange_add f.map_add _ _
 #align finsupp.map_range.add_monoid_hom Finsupp.mapRange.addMonoidHom
+-/
 
+#print Finsupp.mapRange.addMonoidHom_id /-
 @[simp]
 theorem mapRange.addMonoidHom_id :
     mapRange.addMonoidHom (AddMonoidHom.id M) = AddMonoidHom.id (α →₀ M) :=
   AddMonoidHom.ext mapRange_id
 #align finsupp.map_range.add_monoid_hom_id Finsupp.mapRange.addMonoidHom_id
+-/
 
+#print Finsupp.mapRange.addMonoidHom_comp /-
 theorem mapRange.addMonoidHom_comp (f : N →+ P) (f₂ : M →+ N) :
     (mapRange.addMonoidHom (f.comp f₂) : (α →₀ _) →+ _) =
       (mapRange.addMonoidHom f).comp (mapRange.addMonoidHom f₂) :=
   AddMonoidHom.ext <| mapRange_comp _ _ _ _ _
 #align finsupp.map_range.add_monoid_hom_comp Finsupp.mapRange.addMonoidHom_comp
+-/
 
+#print Finsupp.mapRange.addMonoidHom_toZeroHom /-
 @[simp]
 theorem mapRange.addMonoidHom_toZeroHom (f : M →+ N) :
     (mapRange.addMonoidHom f).toZeroHom = (mapRange.zeroHom f.toZeroHom : ZeroHom (α →₀ _) _) :=
   ZeroHom.ext fun _ => rfl
 #align finsupp.map_range.add_monoid_hom_to_zero_hom Finsupp.mapRange.addMonoidHom_toZeroHom
+-/
 
+#print Finsupp.mapRange_multiset_sum /-
 theorem mapRange_multiset_sum (f : M →+ N) (m : Multiset (α →₀ M)) :
     mapRange f f.map_zero m.Sum = (m.map fun x => mapRange f f.map_zero x).Sum :=
   (mapRange.addMonoidHom f : (α →₀ _) →+ _).map_multiset_sum _
 #align finsupp.map_range_multiset_sum Finsupp.mapRange_multiset_sum
+-/
 
+#print Finsupp.mapRange_finset_sum /-
 theorem mapRange_finset_sum (f : M →+ N) (s : Finset ι) (g : ι → α →₀ M) :
     mapRange f f.map_zero (∑ x in s, g x) = ∑ x in s, mapRange f f.map_zero (g x) :=
   (mapRange.addMonoidHom f : (α →₀ _) →+ _).map_sum _ _
 #align finsupp.map_range_finset_sum Finsupp.mapRange_finset_sum
+-/
 
+#print Finsupp.mapRange.addEquiv /-
 /-- `finsupp.map_range.add_monoid_hom` as an equiv. -/
 @[simps apply]
 def mapRange.addEquiv (f : M ≃+ N) : (α →₀ M) ≃+ (α →₀ N) :=
@@ -272,37 +315,48 @@ def mapRange.addEquiv (f : M ≃+ N) : (α →₀ M) ≃+ (α →₀ N) :=
       · exact map_range_id _
       · rfl }
 #align finsupp.map_range.add_equiv Finsupp.mapRange.addEquiv
+-/
 
+#print Finsupp.mapRange.addEquiv_refl /-
 @[simp]
 theorem mapRange.addEquiv_refl : mapRange.addEquiv (AddEquiv.refl M) = AddEquiv.refl (α →₀ M) :=
   AddEquiv.ext mapRange_id
 #align finsupp.map_range.add_equiv_refl Finsupp.mapRange.addEquiv_refl
+-/
 
+#print Finsupp.mapRange.addEquiv_trans /-
 theorem mapRange.addEquiv_trans (f : M ≃+ N) (f₂ : N ≃+ P) :
     (mapRange.addEquiv (f.trans f₂) : (α →₀ _) ≃+ _) =
       (mapRange.addEquiv f).trans (mapRange.addEquiv f₂) :=
   AddEquiv.ext <| mapRange_comp _ _ _ _ _
 #align finsupp.map_range.add_equiv_trans Finsupp.mapRange.addEquiv_trans
+-/
 
+#print Finsupp.mapRange.addEquiv_symm /-
 @[simp]
 theorem mapRange.addEquiv_symm (f : M ≃+ N) :
     ((mapRange.addEquiv f).symm : (α →₀ _) ≃+ _) = mapRange.addEquiv f.symm :=
   AddEquiv.ext fun x => rfl
 #align finsupp.map_range.add_equiv_symm Finsupp.mapRange.addEquiv_symm
+-/
 
+#print Finsupp.mapRange.addEquiv_toAddMonoidHom /-
 @[simp]
 theorem mapRange.addEquiv_toAddMonoidHom (f : M ≃+ N) :
     (mapRange.addEquiv f : (α →₀ _) ≃+ _).toAddMonoidHom =
       (mapRange.addMonoidHom f.toAddMonoidHom : (α →₀ _) →+ _) :=
   AddMonoidHom.ext fun _ => rfl
 #align finsupp.map_range.add_equiv_to_add_monoid_hom Finsupp.mapRange.addEquiv_toAddMonoidHom
+-/
 
+#print Finsupp.mapRange.addEquiv_toEquiv /-
 @[simp]
 theorem mapRange.addEquiv_toEquiv (f : M ≃+ N) :
     (mapRange.addEquiv f).toEquiv =
       (mapRange.equiv f.toEquiv f.map_zero f.symm.map_zero : (α →₀ _) ≃ _) :=
   Equiv.ext fun _ => rfl
 #align finsupp.map_range.add_equiv_to_equiv Finsupp.mapRange.addEquiv_toEquiv
+-/
 
 end AddMonoidHom
 
@@ -330,32 +384,45 @@ def equivMapDomain (f : α ≃ β) (l : α →₀ M) : β →₀ M
 #align finsupp.equiv_map_domain Finsupp.equivMapDomain
 -/
 
+#print Finsupp.equivMapDomain_apply /-
 @[simp]
 theorem equivMapDomain_apply (f : α ≃ β) (l : α →₀ M) (b : β) :
     equivMapDomain f l b = l (f.symm b) :=
   rfl
 #align finsupp.equiv_map_domain_apply Finsupp.equivMapDomain_apply
+-/
 
+#print Finsupp.equivMapDomain_symm_apply /-
 theorem equivMapDomain_symm_apply (f : α ≃ β) (l : β →₀ M) (a : α) :
     equivMapDomain f.symm l a = l (f a) :=
   rfl
 #align finsupp.equiv_map_domain_symm_apply Finsupp.equivMapDomain_symm_apply
+-/
 
+#print Finsupp.equivMapDomain_refl /-
 @[simp]
 theorem equivMapDomain_refl (l : α →₀ M) : equivMapDomain (Equiv.refl _) l = l := by ext x <;> rfl
 #align finsupp.equiv_map_domain_refl Finsupp.equivMapDomain_refl
+-/
 
+#print Finsupp.equivMapDomain_refl' /-
 theorem equivMapDomain_refl' : equivMapDomain (Equiv.refl _) = @id (α →₀ M) := by ext x <;> rfl
 #align finsupp.equiv_map_domain_refl' Finsupp.equivMapDomain_refl'
+-/
 
+#print Finsupp.equivMapDomain_trans /-
 theorem equivMapDomain_trans (f : α ≃ β) (g : β ≃ γ) (l : α →₀ M) :
     equivMapDomain (f.trans g) l = equivMapDomain g (equivMapDomain f l) := by ext x <;> rfl
 #align finsupp.equiv_map_domain_trans Finsupp.equivMapDomain_trans
+-/
 
+#print Finsupp.equivMapDomain_trans' /-
 theorem equivMapDomain_trans' (f : α ≃ β) (g : β ≃ γ) :
     @equivMapDomain _ _ M _ (f.trans g) = equivMapDomain g ∘ equivMapDomain f := by ext x <;> rfl
 #align finsupp.equiv_map_domain_trans' Finsupp.equivMapDomain_trans'
+-/
 
+#print Finsupp.equivMapDomain_single /-
 @[simp]
 theorem equivMapDomain_single (f : α ≃ β) (a : α) (b : M) :
     equivMapDomain f (single a b) = single (f a) b := by
@@ -363,11 +430,14 @@ theorem equivMapDomain_single (f : α ≃ β) (a : α) (b : M) :
   ext x
   simp only [single_apply, Equiv.apply_eq_iff_eq_symm_apply, equiv_map_domain_apply]
 #align finsupp.equiv_map_domain_single Finsupp.equivMapDomain_single
+-/
 
+#print Finsupp.equivMapDomain_zero /-
 @[simp]
 theorem equivMapDomain_zero {f : α ≃ β} : equivMapDomain f (0 : α →₀ M) = (0 : β →₀ M) := by
   ext x <;> simp only [equiv_map_domain_apply, coe_zero, Pi.zero_apply]
 #align finsupp.equiv_map_domain_zero Finsupp.equivMapDomain_zero
+-/
 
 #print Finsupp.equivCongrLeft /-
 /-- Given `f : α ≃ β`, the finitely supported function spaces are also in bijection:
@@ -381,16 +451,20 @@ def equivCongrLeft (f : α ≃ β) : (α →₀ M) ≃ (β →₀ M) := by
 #align finsupp.equiv_congr_left Finsupp.equivCongrLeft
 -/
 
+#print Finsupp.equivCongrLeft_apply /-
 @[simp]
 theorem equivCongrLeft_apply (f : α ≃ β) (l : α →₀ M) : equivCongrLeft f l = equivMapDomain f l :=
   rfl
 #align finsupp.equiv_congr_left_apply Finsupp.equivCongrLeft_apply
+-/
 
+#print Finsupp.equivCongrLeft_symm /-
 @[simp]
 theorem equivCongrLeft_symm (f : α ≃ β) :
     (@equivCongrLeft _ _ M _ f).symm = equivCongrLeft f.symm :=
   rfl
 #align finsupp.equiv_congr_left_symm Finsupp.equivCongrLeft_symm
+-/
 
 end Finsupp
 
@@ -402,49 +476,61 @@ variable [Zero M] (f : α →₀ M)
 
 namespace Nat
 
+#print Nat.cast_finsupp_prod /-
 @[simp, norm_cast]
 theorem cast_finsupp_prod [CommSemiring R] (g : α → M → ℕ) :
     (↑(f.Prod g) : R) = f.Prod fun a b => ↑(g a b) :=
   Nat.cast_prod _ _
 #align nat.cast_finsupp_prod Nat.cast_finsupp_prod
+-/
 
+#print Nat.cast_finsupp_sum /-
 @[simp, norm_cast]
 theorem cast_finsupp_sum [CommSemiring R] (g : α → M → ℕ) :
     (↑(f.Sum g) : R) = f.Sum fun a b => ↑(g a b) :=
   Nat.cast_sum _ _
 #align nat.cast_finsupp_sum Nat.cast_finsupp_sum
+-/
 
 end Nat
 
 namespace Int
 
+#print Int.cast_finsupp_prod /-
 @[simp, norm_cast]
 theorem cast_finsupp_prod [CommRing R] (g : α → M → ℤ) :
     (↑(f.Prod g) : R) = f.Prod fun a b => ↑(g a b) :=
   Int.cast_prod _ _
 #align int.cast_finsupp_prod Int.cast_finsupp_prod
+-/
 
+#print Int.cast_finsupp_sum /-
 @[simp, norm_cast]
 theorem cast_finsupp_sum [CommRing R] (g : α → M → ℤ) :
     (↑(f.Sum g) : R) = f.Sum fun a b => ↑(g a b) :=
   Int.cast_sum _ _
 #align int.cast_finsupp_sum Int.cast_finsupp_sum
+-/
 
 end Int
 
 namespace Rat
 
+#print Rat.cast_finsupp_sum /-
 @[simp, norm_cast]
 theorem cast_finsupp_sum [DivisionRing R] [CharZero R] (g : α → M → ℚ) :
     (↑(f.Sum g) : R) = f.Sum fun a b => g a b :=
   cast_sum _ _
 #align rat.cast_finsupp_sum Rat.cast_finsupp_sum
+-/
 
+#print Rat.cast_finsupp_prod /-
 @[simp, norm_cast]
 theorem cast_finsupp_prod [Field R] [CharZero R] (g : α → M → ℚ) :
     (↑(f.Prod g) : R) = f.Prod fun a b => g a b :=
   cast_prod _ _
 #align rat.cast_finsupp_prod Rat.cast_finsupp_prod
+-/
 
 end Rat
 
@@ -459,13 +545,16 @@ section MapDomain
 
 variable [AddCommMonoid M] {v v₁ v₂ : α →₀ M}
 
+#print Finsupp.mapDomain /-
 /-- Given `f : α → β` and `v : α →₀ M`, `map_domain f v : β →₀ M`
   is the finitely supported function whose value at `a : β` is the sum
   of `v x` over all `x` such that `f x = a`. -/
 def mapDomain (f : α → β) (v : α →₀ M) : β →₀ M :=
   v.Sum fun a => single (f a)
 #align finsupp.map_domain Finsupp.mapDomain
+-/
 
+#print Finsupp.mapDomain_apply /-
 theorem mapDomain_apply {f : α → β} (hf : Function.Injective f) (x : α →₀ M) (a : α) :
     mapDomain f x (f a) = x a :=
   by
@@ -473,18 +562,24 @@ theorem mapDomain_apply {f : α → β} (hf : Function.Injective f) (x : α →
   · intro b _ hba; exact single_eq_of_ne (hf.ne hba)
   · intro h; rw [not_mem_support_iff.1 h, single_zero, zero_apply]
 #align finsupp.map_domain_apply Finsupp.mapDomain_apply
+-/
 
+#print Finsupp.mapDomain_notin_range /-
 theorem mapDomain_notin_range {f : α → β} (x : α →₀ M) (a : β) (h : a ∉ Set.range f) :
     mapDomain f x a = 0 := by
   rw [map_domain, sum_apply, Sum]
   exact Finset.sum_eq_zero fun a' h' => single_eq_of_ne fun eq => h <| Eq ▸ Set.mem_range_self _
 #align finsupp.map_domain_notin_range Finsupp.mapDomain_notin_range
+-/
 
+#print Finsupp.mapDomain_id /-
 @[simp]
 theorem mapDomain_id : mapDomain id v = v :=
   sum_single _
 #align finsupp.map_domain_id Finsupp.mapDomain_id
+-/
 
+#print Finsupp.mapDomain_comp /-
 theorem mapDomain_comp {f : α → β} {g : β → γ} :
     mapDomain (g ∘ f) v = mapDomain g (mapDomain f v) :=
   by
@@ -494,33 +589,45 @@ theorem mapDomain_comp {f : α → β} {g : β → γ} :
   refine' sum_congr fun _ _ => sum_single_index _
   · exact single_zero _
 #align finsupp.map_domain_comp Finsupp.mapDomain_comp
+-/
 
+#print Finsupp.mapDomain_single /-
 @[simp]
 theorem mapDomain_single {f : α → β} {a : α} {b : M} : mapDomain f (single a b) = single (f a) b :=
   sum_single_index <| single_zero _
 #align finsupp.map_domain_single Finsupp.mapDomain_single
+-/
 
+#print Finsupp.mapDomain_zero /-
 @[simp]
 theorem mapDomain_zero {f : α → β} : mapDomain f (0 : α →₀ M) = (0 : β →₀ M) :=
   sum_zero_index
 #align finsupp.map_domain_zero Finsupp.mapDomain_zero
+-/
 
+#print Finsupp.mapDomain_congr /-
 theorem mapDomain_congr {f g : α → β} (h : ∀ x ∈ v.support, f x = g x) :
     v.mapDomain f = v.mapDomain g :=
   Finset.sum_congr rfl fun _ H => by simp only [h _ H]
 #align finsupp.map_domain_congr Finsupp.mapDomain_congr
+-/
 
+#print Finsupp.mapDomain_add /-
 theorem mapDomain_add {f : α → β} : mapDomain f (v₁ + v₂) = mapDomain f v₁ + mapDomain f v₂ :=
   sum_add_index' (fun _ => single_zero _) fun _ => single_add _
 #align finsupp.map_domain_add Finsupp.mapDomain_add
+-/
 
+#print Finsupp.mapDomain_equiv_apply /-
 @[simp]
 theorem mapDomain_equiv_apply {f : α ≃ β} (x : α →₀ M) (a : β) : mapDomain f x a = x (f.symm a) :=
   by
   conv_lhs => rw [← f.apply_symm_apply a]
   exact map_domain_apply f.injective _ _
 #align finsupp.map_domain_equiv_apply Finsupp.mapDomain_equiv_apply
+-/
 
+#print Finsupp.mapDomain.addMonoidHom /-
 /-- `finsupp.map_domain` is an `add_monoid_hom`. -/
 @[simps]
 def mapDomain.addMonoidHom (f : α → β) : (α →₀ M) →+ β →₀ M
@@ -529,35 +636,47 @@ def mapDomain.addMonoidHom (f : α → β) : (α →₀ M) →+ β →₀ M
   map_zero' := mapDomain_zero
   map_add' _ _ := mapDomain_add
 #align finsupp.map_domain.add_monoid_hom Finsupp.mapDomain.addMonoidHom
+-/
 
+#print Finsupp.mapDomain.addMonoidHom_id /-
 @[simp]
 theorem mapDomain.addMonoidHom_id : mapDomain.addMonoidHom id = AddMonoidHom.id (α →₀ M) :=
   AddMonoidHom.ext fun _ => mapDomain_id
 #align finsupp.map_domain.add_monoid_hom_id Finsupp.mapDomain.addMonoidHom_id
+-/
 
+#print Finsupp.mapDomain.addMonoidHom_comp /-
 theorem mapDomain.addMonoidHom_comp (f : β → γ) (g : α → β) :
     (mapDomain.addMonoidHom (f ∘ g) : (α →₀ M) →+ γ →₀ M) =
       (mapDomain.addMonoidHom f).comp (mapDomain.addMonoidHom g) :=
   AddMonoidHom.ext fun _ => mapDomain_comp
 #align finsupp.map_domain.add_monoid_hom_comp Finsupp.mapDomain.addMonoidHom_comp
+-/
 
+#print Finsupp.mapDomain_finset_sum /-
 theorem mapDomain_finset_sum {f : α → β} {s : Finset ι} {v : ι → α →₀ M} :
     mapDomain f (∑ i in s, v i) = ∑ i in s, mapDomain f (v i) :=
   (mapDomain.addMonoidHom f : (α →₀ M) →+ β →₀ M).map_sum _ _
 #align finsupp.map_domain_finset_sum Finsupp.mapDomain_finset_sum
+-/
 
+#print Finsupp.mapDomain_sum /-
 theorem mapDomain_sum [Zero N] {f : α → β} {s : α →₀ N} {v : α → N → α →₀ M} :
     mapDomain f (s.Sum v) = s.Sum fun a b => mapDomain f (v a b) :=
   (mapDomain.addMonoidHom f : (α →₀ M) →+ β →₀ M).map_finsupp_sum _ _
 #align finsupp.map_domain_sum Finsupp.mapDomain_sum
+-/
 
+#print Finsupp.mapDomain_support /-
 theorem mapDomain_support [DecidableEq β] {f : α → β} {s : α →₀ M} :
     (s.mapDomain f).support ⊆ s.support.image f :=
   Finset.Subset.trans support_sum <|
     Finset.Subset.trans (Finset.biUnion_mono fun a ha => support_single_subset) <| by
       rw [Finset.biUnion_singleton] <;> exact subset.refl _
 #align finsupp.map_domain_support Finsupp.mapDomain_support
+-/
 
+#print Finsupp.mapDomain_apply' /-
 theorem mapDomain_apply' (S : Set α) {f : α → β} (x : α →₀ M) (hS : (x.support : Set α) ⊆ S)
     (hf : Set.InjOn f S) {a : α} (ha : a ∈ S) : mapDomain f x (f a) = x a := by
   classical
@@ -572,7 +691,9 @@ theorem mapDomain_apply' (S : Set α) {f : α → β} (x : α →₀ M) (hS : (x
     refine' Finset.sum_eq_zero fun i hi => if_neg _
     exact hf.ne (hS hi) ha (ne_of_mem_of_not_mem hi hax)
 #align finsupp.map_domain_apply' Finsupp.mapDomain_apply'
+-/
 
+#print Finsupp.mapDomain_support_of_injOn /-
 theorem mapDomain_support_of_injOn [DecidableEq β] {f : α → β} (s : α →₀ M)
     (hf : Set.InjOn f s.support) : (mapDomain f s).support = Finset.image f s.support :=
   Finset.Subset.antisymm mapDomain_support <|
@@ -587,12 +708,16 @@ theorem mapDomain_support_of_injOn [DecidableEq β] {f : α → β} (s : α →
       exact hx_h_left
     · exact subset.refl _
 #align finsupp.map_domain_support_of_inj_on Finsupp.mapDomain_support_of_injOn
+-/
 
+#print Finsupp.mapDomain_support_of_injective /-
 theorem mapDomain_support_of_injective [DecidableEq β] {f : α → β} (hf : Function.Injective f)
     (s : α →₀ M) : (mapDomain f s).support = Finset.image f s.support :=
   mapDomain_support_of_injOn s (hf.InjOn _)
 #align finsupp.map_domain_support_of_injective Finsupp.mapDomain_support_of_injective
+-/
 
+#print Finsupp.prod_mapDomain_index /-
 @[to_additive]
 theorem prod_mapDomain_index [CommMonoid N] {f : α → β} {s : α →₀ M} {h : β → M → N}
     (h_zero : ∀ b, h b 0 = 1) (h_add : ∀ b m₁ m₂, h b (m₁ + m₂) = h b m₁ * h b m₂) :
@@ -600,7 +725,9 @@ theorem prod_mapDomain_index [CommMonoid N] {f : α → β} {s : α →₀ M} {h
   (prod_sum_index h_zero h_add).trans <| prod_congr fun _ _ => prod_single_index (h_zero _)
 #align finsupp.prod_map_domain_index Finsupp.prod_mapDomain_index
 #align finsupp.sum_map_domain_index Finsupp.sum_mapDomain_index
+-/
 
+#print Finsupp.sum_mapDomain_index_addMonoidHom /-
 -- Note that in `prod_map_domain_index`, `M` is still an additive monoid,
 -- so there is no analogous version in terms of `monoid_hom`.
 /-- A version of `sum_map_domain_index` that takes a bundled `add_monoid_hom`,
@@ -612,7 +739,9 @@ theorem sum_mapDomain_index_addMonoidHom [AddCommMonoid N] {f : α → β} {s :
   @sum_mapDomain_index _ _ _ _ _ _ _ _ (fun b m => h b m) (fun b => (h b).map_zero) fun b m₁ m₂ =>
     (h b).map_add _ _
 #align finsupp.sum_map_domain_index_add_monoid_hom Finsupp.sum_mapDomain_index_addMonoidHom
+-/
 
+#print Finsupp.embDomain_eq_mapDomain /-
 theorem embDomain_eq_mapDomain (f : α ↪ β) (v : α →₀ M) : embDomain f v = mapDomain f v :=
   by
   ext a
@@ -621,14 +750,18 @@ theorem embDomain_eq_mapDomain (f : α ↪ β) (v : α →₀ M) : embDomain f v
     rw [map_domain_apply f.injective, emb_domain_apply]
   · rw [map_domain_notin_range, emb_domain_notin_range] <;> assumption
 #align finsupp.emb_domain_eq_map_domain Finsupp.embDomain_eq_mapDomain
+-/
 
+#print Finsupp.prod_mapDomain_index_inj /-
 @[to_additive]
 theorem prod_mapDomain_index_inj [CommMonoid N] {f : α → β} {s : α →₀ M} {h : β → M → N}
     (hf : Function.Injective f) : (s.mapDomain f).Prod h = s.Prod fun a b => h (f a) b := by
   rw [← Function.Embedding.coeFn_mk f hf, ← emb_domain_eq_map_domain, prod_emb_domain]
 #align finsupp.prod_map_domain_index_inj Finsupp.prod_mapDomain_index_inj
 #align finsupp.sum_map_domain_index_inj Finsupp.sum_mapDomain_index_inj
+-/
 
+#print Finsupp.mapDomain_injective /-
 theorem mapDomain_injective {f : α → β} (hf : Function.Injective f) :
     Function.Injective (mapDomain f : (α →₀ M) → β →₀ M) :=
   by
@@ -636,6 +769,7 @@ theorem mapDomain_injective {f : α → β} (hf : Function.Injective f) :
   have : map_domain f v₁ (f a) = map_domain f v₂ (f a) := by rw [Eq]
   rwa [map_domain_apply hf, map_domain_apply hf] at this 
 #align finsupp.map_domain_injective Finsupp.mapDomain_injective
+-/
 
 #print Finsupp.mapDomainEmbedding /-
 /-- When `f` is an embedding we have an embedding `(α →₀ ℕ)  ↪ (β →₀ ℕ)` given by `map_domain`. -/
@@ -645,12 +779,15 @@ def mapDomainEmbedding {α β : Type _} (f : α ↪ β) : (α →₀ ℕ) ↪ β
 #align finsupp.map_domain_embedding Finsupp.mapDomainEmbedding
 -/
 
+#print Finsupp.mapDomain.addMonoidHom_comp_mapRange /-
 theorem mapDomain.addMonoidHom_comp_mapRange [AddCommMonoid N] (f : α → β) (g : M →+ N) :
     (mapDomain.addMonoidHom f).comp (mapRange.addMonoidHom g) =
       (mapRange.addMonoidHom g).comp (mapDomain.addMonoidHom f) :=
   by ext; simp
 #align finsupp.map_domain.add_monoid_hom_comp_map_range Finsupp.mapDomain.addMonoidHom_comp_mapRange
+-/
 
+#print Finsupp.mapDomain_mapRange /-
 /-- When `g` preserves addition, `map_range` and `map_domain` commute. -/
 theorem mapDomain_mapRange [AddCommMonoid N] (f : α → β) (v : α →₀ M) (g : M → N) (h0 : g 0 = 0)
     (hadd : ∀ x y, g (x + y) = g x + g y) :
@@ -661,7 +798,9 @@ theorem mapDomain_mapRange [AddCommMonoid N] (f : α → β) (v : α →₀ M) (
       map_add' := hadd }
   AddMonoidHom.congr_fun (mapDomain.addMonoidHom_comp_mapRange f g') v
 #align finsupp.map_domain_map_range Finsupp.mapDomain_mapRange
+-/
 
+#print Finsupp.sum_update_add /-
 theorem sum_update_add [AddCommMonoid α] [AddCommMonoid β] (f : ι →₀ α) (i : ι) (a : α)
     (g : ι → α → β) (hg : ∀ i, g i 0 = 0)
     (hgg : ∀ (j : ι) (a₁ a₂ : α), g j (a₁ + a₂) = g j a₁ + g j a₂) :
@@ -673,7 +812,9 @@ theorem sum_update_add [AddCommMonoid α] [AddCommMonoid β] (f : ι →₀ α)
   congr 1
   rw [add_comm, sum_single_index (hg _), sum_single_index (hg _)]
 #align finsupp.sum_update_add Finsupp.sum_update_add
+-/
 
+#print Finsupp.mapDomain_injOn /-
 theorem mapDomain_injOn (S : Set α) {f : α → β} (hf : Set.InjOn f S) :
     Set.InjOn (mapDomain f : (α →₀ M) → β →₀ M) {w | (w.support : Set α) ⊆ S} :=
   by
@@ -688,10 +829,13 @@ theorem mapDomain_injOn (S : Set α) {f : α → β} (hf : Set.InjOn f S) :
   · simp only [Decidable.not_or_iff_and_not, mem_union, Classical.not_not, mem_support_iff] at h 
     simp [h]
 #align finsupp.map_domain_inj_on Finsupp.mapDomain_injOn
+-/
 
+#print Finsupp.equivMapDomain_eq_mapDomain /-
 theorem equivMapDomain_eq_mapDomain {M} [AddCommMonoid M] (f : α ≃ β) (l : α →₀ M) :
     equivMapDomain f l = mapDomain f l := by ext x <;> simp [map_domain_equiv_apply]
 #align finsupp.equiv_map_domain_eq_map_domain Finsupp.equivMapDomain_eq_mapDomain
+-/
 
 end MapDomain
 
@@ -724,6 +868,7 @@ theorem comapDomain_apply [Zero M] (f : α → β) (l : β →₀ M) (hf : Set.I
 #align finsupp.comap_domain_apply Finsupp.comapDomain_apply
 -/
 
+#print Finsupp.sum_comapDomain /-
 theorem sum_comapDomain [Zero M] [AddCommMonoid N] (f : α → β) (l : β →₀ M) (g : β → M → N)
     (hf : Set.BijOn f (f ⁻¹' ↑l.support) ↑l.support) :
     (comapDomain f l hf.InjOn).Sum (g ∘ f) = l.Sum g :=
@@ -731,7 +876,9 @@ theorem sum_comapDomain [Zero M] [AddCommMonoid N] (f : α → β) (l : β →
   simp only [Sum, comap_domain_apply, (· ∘ ·)]
   simp [comap_domain, Finset.sum_preimage_of_bij f _ _ fun x => g x (l x)]
 #align finsupp.sum_comap_domain Finsupp.sum_comapDomain
+-/
 
+#print Finsupp.eq_zero_of_comapDomain_eq_zero /-
 theorem eq_zero_of_comapDomain_eq_zero [AddCommMonoid M] (f : α → β) (l : β →₀ M)
     (hf : Set.BijOn f (f ⁻¹' ↑l.support) ↑l.support) : comapDomain f l hf.InjOn = 0 → l = 0 :=
   by
@@ -741,6 +888,7 @@ theorem eq_zero_of_comapDomain_eq_zero [AddCommMonoid M] (f : α → β) (l : β
   cases' hf.2.2 ha with b hb
   exact h b (hb.2.symm ▸ ha)
 #align finsupp.eq_zero_of_comap_domain_eq_zero Finsupp.eq_zero_of_comapDomain_eq_zero
+-/
 
 section FInjective
 
@@ -748,13 +896,16 @@ section Zero
 
 variable [Zero M]
 
+#print Finsupp.comapDomain_zero /-
 /-- Note the `hif` argument is needed for this to work in `rw`. -/
 @[simp]
 theorem comapDomain_zero (f : α → β)
     (hif : Set.InjOn f (f ⁻¹' ↑(0 : β →₀ M).support) := Set.injOn_empty _) :
     comapDomain f (0 : β →₀ M) hif = (0 : α →₀ M) := by ext; rfl
 #align finsupp.comap_domain_zero Finsupp.comapDomain_zero
+-/
 
+#print Finsupp.comapDomain_single /-
 @[simp]
 theorem comapDomain_single (f : α → β) (a : α) (m : M)
     (hif : Set.InjOn f (f ⁻¹' (single (f a) m).support)) :
@@ -767,6 +918,7 @@ theorem comapDomain_single (f : α → β) (a : α) (m : M)
     rw [support_single_ne_zero _ hm, coe_singleton] at hif 
     exact ⟨fun x hx => hif hx rfl hx, rfl⟩
 #align finsupp.comap_domain_single Finsupp.comapDomain_single
+-/
 
 end Zero
 
@@ -774,19 +926,24 @@ section AddZeroClass
 
 variable [AddZeroClass M] {f : α → β}
 
+#print Finsupp.comapDomain_add /-
 theorem comapDomain_add (v₁ v₂ : β →₀ M) (hv₁ : Set.InjOn f (f ⁻¹' ↑v₁.support))
     (hv₂ : Set.InjOn f (f ⁻¹' ↑v₂.support)) (hv₁₂ : Set.InjOn f (f ⁻¹' ↑(v₁ + v₂).support)) :
     comapDomain f (v₁ + v₂) hv₁₂ = comapDomain f v₁ hv₁ + comapDomain f v₂ hv₂ := by ext;
   simp only [comap_domain_apply, coe_add, Pi.add_apply]
 #align finsupp.comap_domain_add Finsupp.comapDomain_add
+-/
 
+#print Finsupp.comapDomain_add_of_injective /-
 /-- A version of `finsupp.comap_domain_add` that's easier to use. -/
 theorem comapDomain_add_of_injective (hf : Function.Injective f) (v₁ v₂ : β →₀ M) :
     comapDomain f (v₁ + v₂) (hf.InjOn _) =
       comapDomain f v₁ (hf.InjOn _) + comapDomain f v₂ (hf.InjOn _) :=
   comapDomain_add _ _ _ _ _
 #align finsupp.comap_domain_add_of_injective Finsupp.comapDomain_add_of_injective
+-/
 
+#print Finsupp.comapDomain.addMonoidHom /-
 /-- `finsupp.comap_domain` is an `add_monoid_hom`. -/
 @[simps]
 def comapDomain.addMonoidHom (hf : Function.Injective f) : (β →₀ M) →+ α →₀ M
@@ -795,11 +952,13 @@ def comapDomain.addMonoidHom (hf : Function.Injective f) : (β →₀ M) →+ α
   map_zero' := comapDomain_zero f
   map_add' := comapDomain_add_of_injective hf
 #align finsupp.comap_domain.add_monoid_hom Finsupp.comapDomain.addMonoidHom
+-/
 
 end AddZeroClass
 
 variable [AddCommMonoid M] (f : α → β)
 
+#print Finsupp.mapDomain_comapDomain /-
 theorem mapDomain_comapDomain (hf : Function.Injective f) (l : β →₀ M)
     (hl : ↑l.support ⊆ Set.range f) : mapDomain f (comapDomain f l (hf.InjOn _)) = l :=
   by
@@ -811,6 +970,7 @@ theorem mapDomain_comapDomain (hf : Function.Injective f) (l : β →₀ M)
     by_contra h_contr
     apply h_cases (hl <| Finset.mem_coe.2 <| mem_support_iff.2 fun h => h_contr h.symm)
 #align finsupp.map_domain_comap_domain Finsupp.mapDomain_comapDomain
+-/
 
 end FInjective
 
@@ -841,10 +1001,12 @@ theorem some_zero [Zero M] : (0 : Option α →₀ M).some = 0 := by ext; simp
 #align finsupp.some_zero Finsupp.some_zero
 -/
 
+#print Finsupp.some_add /-
 @[simp]
 theorem some_add [AddCommMonoid M] (f g : Option α →₀ M) : (f + g).some = f.some + g.some := by ext;
   simp
 #align finsupp.some_add Finsupp.some_add
+-/
 
 #print Finsupp.some_single_none /-
 @[simp]
@@ -862,6 +1024,7 @@ theorem some_single_some [Zero M] (a : α) (m : M) :
 #align finsupp.some_single_some Finsupp.some_single_some
 -/
 
+#print Finsupp.prod_option_index /-
 @[to_additive]
 theorem prod_option_index [AddCommMonoid M] [CommMonoid N] (f : Option α →₀ M)
     (b : Option α → M → N) (h_zero : ∀ o, b o 0 = 1)
@@ -878,12 +1041,15 @@ theorem prod_option_index [AddCommMonoid M] [CommMonoid N] (f : Option α →₀
   · rintro (_ | a) m <;> simp [h_zero, h_add]
 #align finsupp.prod_option_index Finsupp.prod_option_index
 #align finsupp.sum_option_index Finsupp.sum_option_index
+-/
 
+#print Finsupp.sum_option_index_smul /-
 theorem sum_option_index_smul [Semiring R] [AddCommMonoid M] [Module R M] (f : Option α →₀ R)
     (b : Option α → M) :
     (f.Sum fun o r => r • b o) = f none • b none + f.some.Sum fun a r => r • b (Option.some a) :=
   f.sum_option_index _ (fun _ => zero_smul _ _) fun _ _ _ => add_smul _ _ _
 #align finsupp.sum_option_index_smul Finsupp.sum_option_index_smul
+-/
 
 end Option
 
@@ -917,19 +1083,25 @@ theorem filter_apply (a : α) [D : Decidable (p a)] : f.filterₓ p a = if p a t
 #align finsupp.filter_apply Finsupp.filter_apply
 -/
 
+#print Finsupp.filter_eq_indicator /-
 theorem filter_eq_indicator : ⇑(f.filterₓ p) = Set.indicator {x | p x} f :=
   rfl
 #align finsupp.filter_eq_indicator Finsupp.filter_eq_indicator
+-/
 
+#print Finsupp.filter_eq_zero_iff /-
 theorem filter_eq_zero_iff : f.filterₓ p = 0 ↔ ∀ x, p x → f x = 0 := by
   simp only [FunLike.ext_iff, filter_eq_indicator, zero_apply, Set.indicator_apply_eq_zero,
     Set.mem_setOf_eq]
 #align finsupp.filter_eq_zero_iff Finsupp.filter_eq_zero_iff
+-/
 
+#print Finsupp.filter_eq_self_iff /-
 theorem filter_eq_self_iff : f.filterₓ p = f ↔ ∀ x, f x ≠ 0 → p x := by
   simp only [FunLike.ext_iff, filter_eq_indicator, Set.indicator_apply_eq_self, Set.mem_setOf_eq,
     not_imp_comm]
 #align finsupp.filter_eq_self_iff Finsupp.filter_eq_self_iff
+-/
 
 #print Finsupp.filter_apply_pos /-
 @[simp]
@@ -943,26 +1115,35 @@ theorem filter_apply_neg {a : α} (h : ¬p a) : f.filterₓ p a = 0 := by classi
 #align finsupp.filter_apply_neg Finsupp.filter_apply_neg
 -/
 
+#print Finsupp.support_filter /-
 @[simp]
 theorem support_filter [D : DecidablePred p] : (f.filterₓ p).support = f.support.filterₓ p := by
   rw [Subsingleton.elim D] <;> rfl
 #align finsupp.support_filter Finsupp.support_filter
+-/
 
+#print Finsupp.filter_zero /-
 theorem filter_zero : (0 : α →₀ M).filterₓ p = 0 := by
   classical rw [← support_eq_empty, support_filter, support_zero, Finset.filter_empty]
 #align finsupp.filter_zero Finsupp.filter_zero
+-/
 
+#print Finsupp.filter_single_of_pos /-
 @[simp]
 theorem filter_single_of_pos {a : α} {b : M} (h : p a) : (single a b).filterₓ p = single a b :=
   (filter_eq_self_iff _ _).2 fun x hx => (single_apply_ne_zero.1 hx).1.symm ▸ h
 #align finsupp.filter_single_of_pos Finsupp.filter_single_of_pos
+-/
 
+#print Finsupp.filter_single_of_neg /-
 @[simp]
 theorem filter_single_of_neg {a : α} {b : M} (h : ¬p a) : (single a b).filterₓ p = 0 :=
   (filter_eq_zero_iff _ _).2 fun x hpx =>
     single_apply_eq_zero.2 fun hxa => absurd hpx (hxa.symm ▸ h)
 #align finsupp.filter_single_of_neg Finsupp.filter_single_of_neg
+-/
 
+#print Finsupp.prod_filter_index /-
 @[to_additive]
 theorem prod_filter_index [CommMonoid N] (g : α → M → N) :
     (f.filterₓ p).Prod g = ∏ x in (f.filterₓ p).support, g x (f x) := by
@@ -972,7 +1153,9 @@ theorem prod_filter_index [CommMonoid N] (g : α → M → N) :
   rw [filter_apply_pos _ _ hx.2]
 #align finsupp.prod_filter_index Finsupp.prod_filter_index
 #align finsupp.sum_filter_index Finsupp.sum_filter_index
+-/
 
+#print Finsupp.prod_filter_mul_prod_filter_not /-
 @[simp, to_additive]
 theorem prod_filter_mul_prod_filter_not [CommMonoid N] (g : α → M → N) :
     (f.filterₓ p).Prod g * (f.filterₓ fun a => ¬p a).Prod g = f.Prod g := by
@@ -980,20 +1163,25 @@ theorem prod_filter_mul_prod_filter_not [CommMonoid N] (g : α → M → N) :
     Finsupp.prod]
 #align finsupp.prod_filter_mul_prod_filter_not Finsupp.prod_filter_mul_prod_filter_not
 #align finsupp.sum_filter_add_sum_filter_not Finsupp.sum_filter_add_sum_filter_not
+-/
 
+#print Finsupp.prod_div_prod_filter /-
 @[simp, to_additive]
 theorem prod_div_prod_filter [CommGroup G] (g : α → M → G) :
     f.Prod g / (f.filterₓ p).Prod g = (f.filterₓ fun a => ¬p a).Prod g :=
   div_eq_of_eq_mul' (prod_filter_mul_prod_filter_not _ _ _).symm
 #align finsupp.prod_div_prod_filter Finsupp.prod_div_prod_filter
 #align finsupp.sum_sub_sum_filter Finsupp.sum_sub_sum_filter
+-/
 
 end Zero
 
+#print Finsupp.filter_pos_add_filter_neg /-
 theorem filter_pos_add_filter_neg [AddZeroClass M] (f : α →₀ M) (p : α → Prop) :
     (f.filterₓ p + f.filterₓ fun a => ¬p a) = f :=
   coeFn_injective <| Set.indicator_self_add_compl {x | p x} f
 #align finsupp.filter_pos_add_filter_neg Finsupp.filter_pos_add_filter_neg
+-/
 
 end Filter
 
@@ -1012,15 +1200,19 @@ def frange (f : α →₀ M) : Finset M :=
 #align finsupp.frange Finsupp.frange
 -/
 
+#print Finsupp.mem_frange /-
 theorem mem_frange {f : α →₀ M} {y : M} : y ∈ f.frange ↔ y ≠ 0 ∧ ∃ x, f x = y := by
   classical exact
     finset.mem_image.trans
       ⟨fun ⟨x, hx1, hx2⟩ => ⟨hx2 ▸ mem_support_iff.1 hx1, x, hx2⟩, fun ⟨hy, x, hx⟩ =>
         ⟨x, mem_support_iff.2 (hx.symm ▸ hy), hx⟩⟩
 #align finsupp.mem_frange Finsupp.mem_frange
+-/
 
+#print Finsupp.zero_not_mem_frange /-
 theorem zero_not_mem_frange {f : α →₀ M} : (0 : M) ∉ f.frange := fun H => (mem_frange.1 H).1 rfl
 #align finsupp.zero_not_mem_frange Finsupp.zero_not_mem_frange
+-/
 
 #print Finsupp.frange_single /-
 theorem frange_single {x : α} {y : M} : frange (single x y) ⊆ {y} := fun r hr =>
@@ -1058,26 +1250,35 @@ def subtypeDomain (p : α → Prop) (f : α →₀ M) : Subtype p →₀ M
 #align finsupp.subtype_domain Finsupp.subtypeDomain
 -/
 
+#print Finsupp.support_subtypeDomain /-
 @[simp]
 theorem support_subtypeDomain [D : DecidablePred p] {f : α →₀ M} :
     (subtypeDomain p f).support = f.support.Subtype p := by rw [Subsingleton.elim D] <;> rfl
 #align finsupp.support_subtype_domain Finsupp.support_subtypeDomain
+-/
 
+#print Finsupp.subtypeDomain_apply /-
 @[simp]
 theorem subtypeDomain_apply {a : Subtype p} {v : α →₀ M} : (subtypeDomain p v) a = v a.val :=
   rfl
 #align finsupp.subtype_domain_apply Finsupp.subtypeDomain_apply
+-/
 
+#print Finsupp.subtypeDomain_zero /-
 @[simp]
 theorem subtypeDomain_zero : subtypeDomain p (0 : α →₀ M) = 0 :=
   rfl
 #align finsupp.subtype_domain_zero Finsupp.subtypeDomain_zero
+-/
 
+#print Finsupp.subtypeDomain_eq_zero_iff' /-
 theorem subtypeDomain_eq_zero_iff' {f : α →₀ M} : f.subtypeDomain p = 0 ↔ ∀ x, p x → f x = 0 := by
   classical simp_rw [← support_eq_empty, support_subtype_domain, subtype_eq_empty,
     not_mem_support_iff]
 #align finsupp.subtype_domain_eq_zero_iff' Finsupp.subtypeDomain_eq_zero_iff'
+-/
 
+#print Finsupp.subtypeDomain_eq_zero_iff /-
 theorem subtypeDomain_eq_zero_iff {f : α →₀ M} (hf : ∀ x ∈ f.support, p x) :
     f.subtypeDomain p = 0 ↔ f = 0 :=
   subtypeDomain_eq_zero_iff'.trans
@@ -1086,7 +1287,9 @@ theorem subtypeDomain_eq_zero_iff {f : α →₀ M} (hf : ∀ x ∈ f.support, p
         classical exact if hx : p x then H x hx else not_mem_support_iff.1 <| mt (hf x) hx,
       fun H x _ => by simp [H]⟩
 #align finsupp.subtype_domain_eq_zero_iff Finsupp.subtypeDomain_eq_zero_iff
+-/
 
+#print Finsupp.prod_subtypeDomain_index /-
 @[to_additive]
 theorem prod_subtypeDomain_index [CommMonoid N] {v : α →₀ M} {h : α → M → N}
     (hp : ∀ x ∈ v.support, p x) : ((v.subtypeDomain p).Prod fun a b => h a b) = v.Prod h :=
@@ -1094,6 +1297,7 @@ theorem prod_subtypeDomain_index [CommMonoid N] {v : α →₀ M} {h : α → M
     (fun _ _ _ _ => Subtype.eq) fun b hb => ⟨⟨b, hp b hb⟩, by classical exact mem_subtype.2 hb, rfl⟩
 #align finsupp.prod_subtype_domain_index Finsupp.prod_subtypeDomain_index
 #align finsupp.sum_subtype_domain_index Finsupp.sum_subtypeDomain_index
+-/
 
 end Zero
 
@@ -1101,12 +1305,15 @@ section AddZeroClass
 
 variable [AddZeroClass M] {p : α → Prop} {v v' : α →₀ M}
 
+#print Finsupp.subtypeDomain_add /-
 @[simp]
 theorem subtypeDomain_add {v v' : α →₀ M} :
     (v + v').subtypeDomain p = v.subtypeDomain p + v'.subtypeDomain p :=
   ext fun _ => rfl
 #align finsupp.subtype_domain_add Finsupp.subtypeDomain_add
+-/
 
+#print Finsupp.subtypeDomainAddMonoidHom /-
 /-- `subtype_domain` but as an `add_monoid_hom`. -/
 def subtypeDomainAddMonoidHom : (α →₀ M) →+ Subtype p →₀ M
     where
@@ -1114,7 +1321,9 @@ def subtypeDomainAddMonoidHom : (α →₀ M) →+ Subtype p →₀ M
   map_zero' := subtypeDomain_zero
   map_add' _ _ := subtypeDomain_add
 #align finsupp.subtype_domain_add_monoid_hom Finsupp.subtypeDomainAddMonoidHom
+-/
 
+#print Finsupp.filterAddHom /-
 /-- `finsupp.filter` as an `add_monoid_hom`. -/
 def filterAddHom (p : α → Prop) : (α →₀ M) →+ α →₀ M
     where
@@ -1122,11 +1331,14 @@ def filterAddHom (p : α → Prop) : (α →₀ M) →+ α →₀ M
   map_zero' := filter_zero p
   map_add' f g := coeFn_injective <| Set.indicator_add {x | p x} f g
 #align finsupp.filter_add_hom Finsupp.filterAddHom
+-/
 
+#print Finsupp.filter_add /-
 @[simp]
 theorem filter_add {v v' : α →₀ M} : (v + v').filterₓ p = v.filterₓ p + v'.filterₓ p :=
   (filterAddHom p).map_add v v'
 #align finsupp.filter_add Finsupp.filter_add
+-/
 
 end AddZeroClass
 
@@ -1134,27 +1346,35 @@ section CommMonoid
 
 variable [AddCommMonoid M] {p : α → Prop}
 
+#print Finsupp.subtypeDomain_sum /-
 theorem subtypeDomain_sum {s : Finset ι} {h : ι → α →₀ M} :
     (∑ c in s, h c).subtypeDomain p = ∑ c in s, (h c).subtypeDomain p :=
   (subtypeDomainAddMonoidHom : _ →+ Subtype p →₀ M).map_sum _ s
 #align finsupp.subtype_domain_sum Finsupp.subtypeDomain_sum
+-/
 
+#print Finsupp.subtypeDomain_finsupp_sum /-
 theorem subtypeDomain_finsupp_sum [Zero N] {s : β →₀ N} {h : β → N → α →₀ M} :
     (s.Sum h).subtypeDomain p = s.Sum fun c d => (h c d).subtypeDomain p :=
   subtypeDomain_sum
 #align finsupp.subtype_domain_finsupp_sum Finsupp.subtypeDomain_finsupp_sum
+-/
 
+#print Finsupp.filter_sum /-
 theorem filter_sum (s : Finset ι) (f : ι → α →₀ M) :
     (∑ a in s, f a).filterₓ p = ∑ a in s, filter p (f a) :=
   (filterAddHom p : (α →₀ M) →+ _).map_sum f s
 #align finsupp.filter_sum Finsupp.filter_sum
+-/
 
+#print Finsupp.filter_eq_sum /-
 theorem filter_eq_sum (p : α → Prop) [D : DecidablePred p] (f : α →₀ M) :
     f.filterₓ p = ∑ i in f.support.filterₓ p, single i (f i) :=
   (f.filterₓ p).sum_single.symm.trans <|
     Finset.sum_congr (by rw [Subsingleton.elim D] <;> rfl) fun x hx => by
       rw [filter_apply_pos _ _ (mem_filter.1 hx).2]
 #align finsupp.filter_eq_sum Finsupp.filter_eq_sum
+-/
 
 end CommMonoid
 
@@ -1162,51 +1382,68 @@ section Group
 
 variable [AddGroup G] {p : α → Prop} {v v' : α →₀ G}
 
+#print Finsupp.subtypeDomain_neg /-
 @[simp]
 theorem subtypeDomain_neg : (-v).subtypeDomain p = -v.subtypeDomain p :=
   ext fun _ => rfl
 #align finsupp.subtype_domain_neg Finsupp.subtypeDomain_neg
+-/
 
+#print Finsupp.subtypeDomain_sub /-
 @[simp]
 theorem subtypeDomain_sub : (v - v').subtypeDomain p = v.subtypeDomain p - v'.subtypeDomain p :=
   ext fun _ => rfl
 #align finsupp.subtype_domain_sub Finsupp.subtypeDomain_sub
+-/
 
+#print Finsupp.single_neg /-
 @[simp]
 theorem single_neg (a : α) (b : G) : single a (-b) = -single a b :=
   (singleAddHom a : G →+ _).map_neg b
 #align finsupp.single_neg Finsupp.single_neg
+-/
 
+#print Finsupp.single_sub /-
 @[simp]
 theorem single_sub (a : α) (b₁ b₂ : G) : single a (b₁ - b₂) = single a b₁ - single a b₂ :=
   (singleAddHom a : G →+ _).map_sub b₁ b₂
 #align finsupp.single_sub Finsupp.single_sub
+-/
 
+#print Finsupp.erase_neg /-
 @[simp]
 theorem erase_neg (a : α) (f : α →₀ G) : erase a (-f) = -erase a f :=
   (eraseAddHom a : (_ →₀ G) →+ _).map_neg f
 #align finsupp.erase_neg Finsupp.erase_neg
+-/
 
+#print Finsupp.erase_sub /-
 @[simp]
 theorem erase_sub (a : α) (f₁ f₂ : α →₀ G) : erase a (f₁ - f₂) = erase a f₁ - erase a f₂ :=
   (eraseAddHom a : (_ →₀ G) →+ _).map_sub f₁ f₂
 #align finsupp.erase_sub Finsupp.erase_sub
+-/
 
+#print Finsupp.filter_neg /-
 @[simp]
 theorem filter_neg (p : α → Prop) (f : α →₀ G) : filter p (-f) = -filter p f :=
   (filterAddHom p : (_ →₀ G) →+ _).map_neg f
 #align finsupp.filter_neg Finsupp.filter_neg
+-/
 
+#print Finsupp.filter_sub /-
 @[simp]
 theorem filter_sub (p : α → Prop) (f₁ f₂ : α →₀ G) :
     filter p (f₁ - f₂) = filter p f₁ - filter p f₂ :=
   (filterAddHom p : (_ →₀ G) →+ _).map_sub f₁ f₂
 #align finsupp.filter_sub Finsupp.filter_sub
+-/
 
 end Group
 
 end SubtypeDomain
 
+#print Finsupp.mem_support_multiset_sum /-
 theorem mem_support_multiset_sum [AddCommMonoid M] {s : Multiset (α →₀ M)} (a : α) :
     a ∈ s.Sum.support → ∃ f ∈ s, a ∈ (f : α →₀ M).support :=
   Multiset.induction_on s False.elim
@@ -1219,13 +1456,16 @@ theorem mem_support_multiset_sum [AddCommMonoid M] {s : Multiset (α →₀ M)}
         rcases ih (mem_support_iff.2 ha) with ⟨f', h₀, h₁⟩
         exact ⟨f', Multiset.mem_cons_of_mem h₀, h₁⟩)
 #align finsupp.mem_support_multiset_sum Finsupp.mem_support_multiset_sum
+-/
 
+#print Finsupp.mem_support_finset_sum /-
 theorem mem_support_finset_sum [AddCommMonoid M] {s : Finset ι} {h : ι → α →₀ M} (a : α)
     (ha : a ∈ (∑ c in s, h c).support) : ∃ c ∈ s, a ∈ (h c).support :=
   let ⟨f, hf, hfa⟩ := mem_support_multiset_sum a ha
   let ⟨c, hc, Eq⟩ := Multiset.mem_map.1 hf
   ⟨c, hc, Eq.symm ▸ hfa⟩
 #align finsupp.mem_support_finset_sum Finsupp.mem_support_finset_sum
+-/
 
 /-! ### Declarations about `curry` and `uncurry` -/
 
@@ -1234,13 +1474,16 @@ section CurryUncurry
 
 variable [AddCommMonoid M] [AddCommMonoid N]
 
+#print Finsupp.curry /-
 /-- Given a finitely supported function `f` from a product type `α × β` to `γ`,
 `curry f` is the "curried" finitely supported function from `α` to the type of
 finitely supported functions from `β` to `γ`. -/
 protected def curry (f : α × β →₀ M) : α →₀ β →₀ M :=
   f.Sum fun p c => single p.1 (single p.2 c)
 #align finsupp.curry Finsupp.curry
+-/
 
+#print Finsupp.curry_apply /-
 @[simp]
 theorem curry_apply (f : α × β →₀ M) (x : α) (y : β) : f.curry x y = f (x, y) := by
   classical
@@ -1253,7 +1496,9 @@ theorem curry_apply (f : α × β →₀ M) (x : α) (y : β) : f.curry x y = f
   · intro b hb b_ne; rw [this b, if_neg b_ne]
   · intro hxy; rw [this (x, y), if_pos rfl, not_mem_support_iff.mp hxy]
 #align finsupp.curry_apply Finsupp.curry_apply
+-/
 
+#print Finsupp.sum_curry_index /-
 theorem sum_curry_index (f : α × β →₀ M) (g : α → β → M → N) (hg₀ : ∀ a b, g a b 0 = 0)
     (hg₁ : ∀ a b c₀ c₁, g a b (c₀ + c₁) = g a b c₀ + g a b c₁) :
     (f.curry.Sum fun a f => f.Sum (g a)) = f.Sum fun p c => g p.1 p.2 c :=
@@ -1269,14 +1514,18 @@ theorem sum_curry_index (f : α × β →₀ M) (g : α → β → M → N) (hg
   · exact sum_single_index sum_zero_index
   exact sum_single_index (hg₀ _ _)
 #align finsupp.sum_curry_index Finsupp.sum_curry_index
+-/
 
+#print Finsupp.uncurry /-
 /-- Given a finitely supported function `f` from `α` to the type of
 finitely supported functions from `β` to `M`,
 `uncurry f` is the "uncurried" finitely supported function from `α × β` to `M`. -/
 protected def uncurry (f : α →₀ β →₀ M) : α × β →₀ M :=
   f.Sum fun a g => g.Sum fun b c => single (a, b) c
 #align finsupp.uncurry Finsupp.uncurry
+-/
 
+#print Finsupp.finsuppProdEquiv /-
 /-- `finsupp_prod_equiv` defines the `equiv` between `((α × β) →₀ M)` and `(α →₀ (β →₀ M))` given by
 currying and uncurrying. -/
 def finsuppProdEquiv : (α × β →₀ M) ≃ (α →₀ β →₀ M)
@@ -1293,7 +1542,9 @@ def finsuppProdEquiv : (α × β →₀ M) ≃ (α →₀ β →₀ M)
       sum_single_index, single_zero, single_add, eq_self_iff_true, forall_true_iff,
       forall₃_true_iff, Prod.mk.eta, (single_sum _ _ _).symm, sum_single]
 #align finsupp.finsupp_prod_equiv Finsupp.finsuppProdEquiv
+-/
 
+#print Finsupp.filter_curry /-
 theorem filter_curry (f : α × β →₀ M) (p : α → Prop) :
     (f.filterₓ fun a : α × β => p a.1).curry = f.curry.filterₓ p := by
   classical
@@ -1306,7 +1557,9 @@ theorem filter_curry (f : α × β →₀ M) (p : α → Prop) :
   · rw [filter_apply_pos, filter_single_of_pos] <;> exact h
   · rwa [filter_single_of_neg]
 #align finsupp.filter_curry Finsupp.filter_curry
+-/
 
+#print Finsupp.support_curry /-
 theorem support_curry [DecidableEq α] (f : α × β →₀ M) :
     f.curry.support ⊆ f.support.image Prod.fst :=
   by
@@ -1314,6 +1567,7 @@ theorem support_curry [DecidableEq α] (f : α × β →₀ M) :
   refine' Finset.Subset.trans support_sum _
   refine' Finset.biUnion_mono fun a _ => support_single_subset
 #align finsupp.support_curry Finsupp.support_curry
+-/
 
 end CurryUncurry
 
@@ -1334,26 +1588,34 @@ def sumElim {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →₀ γ)
 #align finsupp.sum_elim Finsupp.sumElim
 -/
 
+#print Finsupp.coe_sumElim /-
 @[simp]
 theorem coe_sumElim {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) :
     ⇑(sumElim f g) = Sum.elim f g :=
   rfl
 #align finsupp.coe_sum_elim Finsupp.coe_sumElim
+-/
 
+#print Finsupp.sumElim_apply /-
 theorem sumElim_apply {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) (x : Sum α β) :
     sumElim f g x = Sum.elim f g x :=
   rfl
 #align finsupp.sum_elim_apply Finsupp.sumElim_apply
+-/
 
+#print Finsupp.sumElim_inl /-
 theorem sumElim_inl {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) (x : α) :
     sumElim f g (Sum.inl x) = f x :=
   rfl
 #align finsupp.sum_elim_inl Finsupp.sumElim_inl
+-/
 
+#print Finsupp.sumElim_inr /-
 theorem sumElim_inr {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) (x : β) :
     sumElim f g (Sum.inr x) = g x :=
   rfl
 #align finsupp.sum_elim_inr Finsupp.sumElim_inr
+-/
 
 #print Finsupp.sumFinsuppEquivProdFinsupp /-
 /-- The equivalence between `(α ⊕ β) →₀ γ` and `(α →₀ γ) × (β →₀ γ)`.
@@ -1371,28 +1633,37 @@ def sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] : (Sum α β →₀
 #align finsupp.sum_finsupp_equiv_prod_finsupp Finsupp.sumFinsuppEquivProdFinsupp
 -/
 
+#print Finsupp.fst_sumFinsuppEquivProdFinsupp /-
 theorem fst_sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] (f : Sum α β →₀ γ) (x : α) :
     (sumFinsuppEquivProdFinsupp f).1 x = f (Sum.inl x) :=
   rfl
 #align finsupp.fst_sum_finsupp_equiv_prod_finsupp Finsupp.fst_sumFinsuppEquivProdFinsupp
+-/
 
+#print Finsupp.snd_sumFinsuppEquivProdFinsupp /-
 theorem snd_sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] (f : Sum α β →₀ γ) (y : β) :
     (sumFinsuppEquivProdFinsupp f).2 y = f (Sum.inr y) :=
   rfl
 #align finsupp.snd_sum_finsupp_equiv_prod_finsupp Finsupp.snd_sumFinsuppEquivProdFinsupp
+-/
 
+#print Finsupp.sumFinsuppEquivProdFinsupp_symm_inl /-
 theorem sumFinsuppEquivProdFinsupp_symm_inl {α β γ : Type _} [Zero γ] (fg : (α →₀ γ) × (β →₀ γ))
     (x : α) : (sumFinsuppEquivProdFinsupp.symm fg) (Sum.inl x) = fg.1 x :=
   rfl
 #align finsupp.sum_finsupp_equiv_prod_finsupp_symm_inl Finsupp.sumFinsuppEquivProdFinsupp_symm_inl
+-/
 
+#print Finsupp.sumFinsuppEquivProdFinsupp_symm_inr /-
 theorem sumFinsuppEquivProdFinsupp_symm_inr {α β γ : Type _} [Zero γ] (fg : (α →₀ γ) × (β →₀ γ))
     (y : β) : (sumFinsuppEquivProdFinsupp.symm fg) (Sum.inr y) = fg.2 y :=
   rfl
 #align finsupp.sum_finsupp_equiv_prod_finsupp_symm_inr Finsupp.sumFinsuppEquivProdFinsupp_symm_inr
+-/
 
 variable [AddMonoid M]
 
+#print Finsupp.sumFinsuppAddEquivProdFinsupp /-
 /-- The additive equivalence between `(α ⊕ β) →₀ M` and `(α →₀ M) × (β →₀ M)`.
 
 This is the `finsupp` version of `equiv.sum_arrow_equiv_prod_arrow`. -/
@@ -1404,26 +1675,35 @@ def sumFinsuppAddEquivProdFinsupp {α β : Type _} : (Sum α β →₀ M) ≃+ (
         simp only [Equiv.toFun_as_coe, Prod.fst_add, Prod.snd_add, add_apply,
           snd_sum_finsupp_equiv_prod_finsupp, fst_sum_finsupp_equiv_prod_finsupp] }
 #align finsupp.sum_finsupp_add_equiv_prod_finsupp Finsupp.sumFinsuppAddEquivProdFinsupp
+-/
 
+#print Finsupp.fst_sumFinsuppAddEquivProdFinsupp /-
 theorem fst_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀ M) (x : α) :
     (sumFinsuppAddEquivProdFinsupp f).1 x = f (Sum.inl x) :=
   rfl
 #align finsupp.fst_sum_finsupp_add_equiv_prod_finsupp Finsupp.fst_sumFinsuppAddEquivProdFinsupp
+-/
 
+#print Finsupp.snd_sumFinsuppAddEquivProdFinsupp /-
 theorem snd_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀ M) (y : β) :
     (sumFinsuppAddEquivProdFinsupp f).2 y = f (Sum.inr y) :=
   rfl
 #align finsupp.snd_sum_finsupp_add_equiv_prod_finsupp Finsupp.snd_sumFinsuppAddEquivProdFinsupp
+-/
 
+#print Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inl /-
 theorem sumFinsuppAddEquivProdFinsupp_symm_inl {α β : Type _} (fg : (α →₀ M) × (β →₀ M)) (x : α) :
     (sumFinsuppAddEquivProdFinsupp.symm fg) (Sum.inl x) = fg.1 x :=
   rfl
 #align finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inl Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inl
+-/
 
+#print Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inr /-
 theorem sumFinsuppAddEquivProdFinsupp_symm_inr {α β : Type _} (fg : (α →₀ M) × (β →₀ M)) (y : β) :
     (sumFinsuppAddEquivProdFinsupp.symm fg) (Sum.inr y) = fg.2 y :=
   rfl
 #align finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inr Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inr
+-/
 
 end Sum
 
@@ -1434,10 +1714,12 @@ section
 
 variable [Zero M] [MonoidWithZero R] [MulActionWithZero R M]
 
+#print Finsupp.single_smul /-
 @[simp]
 theorem single_smul (a b : α) (f : α → M) (r : R) : single a r b • f a = single a (r • f b) b := by
   by_cases a = b <;> simp [h]
 #align finsupp.single_smul Finsupp.single_smul
+-/
 
 end
 
@@ -1445,24 +1727,31 @@ section
 
 variable [Monoid G] [MulAction G α] [AddCommMonoid M]
 
+#print Finsupp.comapSMul /-
 /-- Scalar multiplication acting on the domain.
 
 This is not an instance as it would conflict with the action on the range.
 See the `instance_diamonds` test for examples of such conflicts. -/
 def comapSMul : SMul G (α →₀ M) where smul g := mapDomain ((· • ·) g)
 #align finsupp.comap_has_smul Finsupp.comapSMul
+-/
 
 attribute [local instance] comap_has_smul
 
+#print Finsupp.comapSMul_def /-
 theorem comapSMul_def (g : G) (f : α →₀ M) : g • f = mapDomain ((· • ·) g) f :=
   rfl
 #align finsupp.comap_smul_def Finsupp.comapSMul_def
+-/
 
+#print Finsupp.comapSMul_single /-
 @[simp]
 theorem comapSMul_single (g : G) (a : α) (b : M) : g • single a b = single (g • a) b :=
   mapDomain_single
 #align finsupp.comap_smul_single Finsupp.comapSMul_single
+-/
 
+#print Finsupp.comapMulAction /-
 /-- `finsupp.comap_has_smul` is multiplicative -/
 def comapMulAction : MulAction G (α →₀ M)
     where
@@ -1470,15 +1759,18 @@ def comapMulAction : MulAction G (α →₀ M)
   mul_smul g g' f := by
     rw [comap_smul_def, comap_smul_def, comap_smul_def, ← comp_smul_left, map_domain_comp]
 #align finsupp.comap_mul_action Finsupp.comapMulAction
+-/
 
 attribute [local instance] comap_mul_action
 
+#print Finsupp.comapDistribMulAction /-
 /-- `finsupp.comap_has_smul` is distributive -/
 def comapDistribMulAction : DistribMulAction G (α →₀ M)
     where
   smul_zero g := by ext; dsimp [(· • ·)]; simp
   smul_add g f f' := by ext; dsimp [(· • ·)]; simp [map_domain_add]
 #align finsupp.comap_distrib_mul_action Finsupp.comapDistribMulAction
+-/
 
 end
 
@@ -1488,6 +1780,7 @@ variable [Group G] [MulAction G α] [AddCommMonoid M]
 
 attribute [local instance] comap_has_smul comap_mul_action comap_distrib_mul_action
 
+#print Finsupp.comapSMul_apply /-
 /-- When `G` is a group, `finsupp.comap_has_smul` acts by precomposition with the action of `g⁻¹`.
 -/
 @[simp]
@@ -1496,6 +1789,7 @@ theorem comapSMul_apply (g : G) (f : α →₀ M) (a : α) : (g • f) a = f (g
   conv_lhs => rw [← smul_inv_smul g a]
   exact map_domain_apply (MulAction.injective g) _ (g⁻¹ • a)
 #align finsupp.comap_smul_apply Finsupp.comapSMul_apply
+-/
 
 end
 
@@ -1512,19 +1806,25 @@ Throughout this section, some `monoid` and `semiring` arguments are specified wi
 -/
 
 
+#print Finsupp.coe_smul /-
 @[simp]
 theorem coe_smul [Zero M] [SMulZeroClass R M] (b : R) (v : α →₀ M) : ⇑(b • v) = b • v :=
   rfl
 #align finsupp.coe_smul Finsupp.coe_smul
+-/
 
+#print Finsupp.smul_apply /-
 theorem smul_apply [Zero M] [SMulZeroClass R M] (b : R) (v : α →₀ M) (a : α) :
     (b • v) a = b • v a :=
   rfl
 #align finsupp.smul_apply Finsupp.smul_apply
+-/
 
+#print IsSMulRegular.finsupp /-
 theorem IsSMulRegular.finsupp [Zero M] [SMulZeroClass R M] {k : R} (hk : IsSMulRegular M k) :
     IsSMulRegular (α →₀ M) k := fun _ _ h => ext fun i => hk (congr_fun h i)
 #align is_smul_regular.finsupp IsSMulRegular.finsupp
+-/
 
 instance [Nonempty α] [Zero M] [SMulZeroClass R M] [FaithfulSMul R M] : FaithfulSMul R (α →₀ M)
     where eq_of_smul_eq_smul r₁ r₂ h :=
@@ -1562,46 +1862,59 @@ instance [Semiring R] [AddCommMonoid M] [Module R M] : Module R (α →₀ M) :=
 
 variable {α M} {R}
 
+#print Finsupp.support_smul /-
 theorem support_smul [AddMonoid M] [SMulZeroClass R M] {b : R} {g : α →₀ M} :
     (b • g).support ⊆ g.support := fun a => by simp only [smul_apply, mem_support_iff, Ne.def];
   exact mt fun h => h.symm ▸ smul_zero _
 #align finsupp.support_smul Finsupp.support_smul
+-/
 
+#print Finsupp.support_smul_eq /-
 @[simp]
 theorem support_smul_eq [Semiring R] [AddCommMonoid M] [Module R M] [NoZeroSMulDivisors R M] {b : R}
     (hb : b ≠ 0) {g : α →₀ M} : (b • g).support = g.support :=
   Finset.ext fun a => by simp [Finsupp.smul_apply, hb]
 #align finsupp.support_smul_eq Finsupp.support_smul_eq
+-/
 
 section
 
 variable {p : α → Prop}
 
+#print Finsupp.filter_smul /-
 @[simp]
 theorem filter_smul {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] {b : R} {v : α →₀ M} :
     (b • v).filterₓ p = b • v.filterₓ p :=
   coeFn_injective <| Set.indicator_const_smul {x | p x} b v
 #align finsupp.filter_smul Finsupp.filter_smul
+-/
 
 end
 
+#print Finsupp.mapDomain_smul /-
 theorem mapDomain_smul {_ : Monoid R} [AddCommMonoid M] [DistribMulAction R M] {f : α → β} (b : R)
     (v : α →₀ M) : mapDomain f (b • v) = b • mapDomain f v :=
   mapDomain_mapRange _ _ _ _ (smul_add b)
 #align finsupp.map_domain_smul Finsupp.mapDomain_smul
+-/
 
+#print Finsupp.smul_single /-
 @[simp]
 theorem smul_single [Zero M] [SMulZeroClass R M] (c : R) (a : α) (b : M) :
     c • Finsupp.single a b = Finsupp.single a (c • b) :=
   mapRange_single
 #align finsupp.smul_single Finsupp.smul_single
+-/
 
+#print Finsupp.smul_single' /-
 @[simp]
 theorem smul_single' {_ : Semiring R} (c : R) (a : α) (b : R) :
     c • Finsupp.single a b = Finsupp.single a (c * b) :=
   smul_single _ _ _
 #align finsupp.smul_single' Finsupp.smul_single'
+-/
 
+#print Finsupp.mapRange_smul /-
 theorem mapRange_smul {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] [AddMonoid N]
     [DistribMulAction R N] {f : M → N} {hf : f 0 = 0} (c : R) (v : α →₀ M)
     (hsmul : ∀ x, f (c • x) = c • f x) : mapRange f hf (c • v) = c • mapRange f hf v :=
@@ -1612,42 +1925,55 @@ theorem mapRange_smul {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] [AddMo
   apply map_range_comp
   rw [Function.comp_apply, smul_zero, hf]
 #align finsupp.map_range_smul Finsupp.mapRange_smul
+-/
 
+#print Finsupp.smul_single_one /-
 theorem smul_single_one [Semiring R] (a : α) (b : R) : b • single a 1 = single a b := by
   rw [smul_single, smul_eq_mul, mul_one]
 #align finsupp.smul_single_one Finsupp.smul_single_one
+-/
 
+#print Finsupp.comapDomain_smul /-
 theorem comapDomain_smul [AddMonoid M] [Monoid R] [DistribMulAction R M] {f : α → β} (r : R)
     (v : β →₀ M) (hfv : Set.InjOn f (f ⁻¹' ↑v.support))
     (hfrv : Set.InjOn f (f ⁻¹' ↑(r • v).support) :=
       hfv.mono <| Set.preimage_mono <| Finset.coe_subset.mpr support_smul) :
     comapDomain f (r • v) hfrv = r • comapDomain f v hfv := by ext; rfl
 #align finsupp.comap_domain_smul Finsupp.comapDomain_smul
+-/
 
+#print Finsupp.comapDomain_smul_of_injective /-
 /-- A version of `finsupp.comap_domain_smul` that's easier to use. -/
 theorem comapDomain_smul_of_injective [AddMonoid M] [Monoid R] [DistribMulAction R M] {f : α → β}
     (hf : Function.Injective f) (r : R) (v : β →₀ M) :
     comapDomain f (r • v) (hf.InjOn _) = r • comapDomain f v (hf.InjOn _) :=
   comapDomain_smul _ _ _ _
 #align finsupp.comap_domain_smul_of_injective Finsupp.comapDomain_smul_of_injective
+-/
 
 end
 
+#print Finsupp.sum_smul_index /-
 theorem sum_smul_index [Semiring R] [AddCommMonoid M] {g : α →₀ R} {b : R} {h : α → R → M}
     (h0 : ∀ i, h i 0 = 0) : (b • g).Sum h = g.Sum fun i a => h i (b * a) :=
   Finsupp.sum_mapRange_index h0
 #align finsupp.sum_smul_index Finsupp.sum_smul_index
+-/
 
+#print Finsupp.sum_smul_index' /-
 theorem sum_smul_index' [AddMonoid M] [DistribSMul R M] [AddCommMonoid N] {g : α →₀ M} {b : R}
     {h : α → M → N} (h0 : ∀ i, h i 0 = 0) : (b • g).Sum h = g.Sum fun i c => h i (b • c) :=
   Finsupp.sum_mapRange_index h0
 #align finsupp.sum_smul_index' Finsupp.sum_smul_index'
+-/
 
+#print Finsupp.sum_smul_index_addMonoidHom /-
 /-- A version of `finsupp.sum_smul_index'` for bundled additive maps. -/
 theorem sum_smul_index_addMonoidHom [AddMonoid M] [AddCommMonoid N] [DistribSMul R M] {g : α →₀ M}
     {b : R} {h : α → M →+ N} : ((b • g).Sum fun a => h a) = g.Sum fun i c => h i (b • c) :=
   sum_mapRange_index fun i => (h i).map_zero
 #align finsupp.sum_smul_index_add_monoid_hom Finsupp.sum_smul_index_addMonoidHom
+-/
 
 instance [Semiring R] [AddCommMonoid M] [Module R M] {ι : Type _} [NoZeroSMulDivisors R M] :
     NoZeroSMulDivisors R (ι →₀ M) :=
@@ -1661,6 +1987,7 @@ variable [Semiring R]
 
 variable [AddCommMonoid M] [AddCommMonoid N] [DistribMulAction R M] [DistribMulAction R N]
 
+#print Finsupp.DistribMulActionHom.single /-
 /-- `finsupp.single` as a `distrib_mul_action_hom`.
 
 See also `finsupp.lsingle` for the version as a linear map. -/
@@ -1669,12 +1996,16 @@ def DistribMulActionHom.single (a : α) : M →+[R] α →₀ M :=
     map_smul' := fun k m => by
       simp only [AddMonoidHom.toFun_eq_coe, single_add_hom_apply, smul_single] }
 #align finsupp.distrib_mul_action_hom.single Finsupp.DistribMulActionHom.single
+-/
 
+#print Finsupp.distribMulActionHom_ext /-
 theorem distribMulActionHom_ext {f g : (α →₀ M) →+[R] N}
     (h : ∀ (a : α) (m : M), f (single a m) = g (single a m)) : f = g :=
   DistribMulActionHom.toAddMonoidHom_injective <| addHom_ext h
 #align finsupp.distrib_mul_action_hom_ext Finsupp.distribMulActionHom_ext
+-/
 
+#print Finsupp.distribMulActionHom_ext' /-
 /-- See note [partially-applied ext lemmas]. -/
 @[ext]
 theorem distribMulActionHom_ext' {f g : (α →₀ M) →+[R] N}
@@ -1682,6 +2013,7 @@ theorem distribMulActionHom_ext' {f g : (α →₀ M) →+[R] N}
     f = g :=
   distribMulActionHom_ext fun a => DistribMulActionHom.congr_fun (h a)
 #align finsupp.distrib_mul_action_hom_ext' Finsupp.distribMulActionHom_ext'
+-/
 
 end DistribMulActionHom
 
@@ -1705,6 +2037,7 @@ instance uniqueOfLeft [IsEmpty α] : Unique (α →₀ R) :=
 
 end
 
+#print Finsupp.restrictSupportEquiv /-
 /-- Given an `add_comm_monoid M` and `s : set α`, `restrict_support_equiv s M` is the `equiv`
 between the subtype of finitely supported functions with support contained in `s` and
 the type of finitely supported functions from `s`. -/
@@ -1735,7 +2068,9 @@ def restrictSupportEquiv (s : Set α) (M : Type _) [AddCommMonoid M] :
     dsimp only
     rw [subtype_domain_apply, map_domain_apply Subtype.val_injective]
 #align finsupp.restrict_support_equiv Finsupp.restrictSupportEquiv
+-/
 
+#print Finsupp.domCongr /-
 /-- Given `add_comm_monoid M` and `e : α ≃ β`, `dom_congr e` is the corresponding `equiv` between
 `α →₀ M` and `β →₀ M`.
 
@@ -1754,25 +2089,32 @@ protected def domCongr [AddCommMonoid M] (e : α ≃ β) : (α →₀ M) ≃+ (
     exact equiv_map_domain_refl _
   map_add' a b := by simp only [equiv_map_domain_eq_map_domain] <;> exact map_domain_add
 #align finsupp.dom_congr Finsupp.domCongr
+-/
 
+#print Finsupp.domCongr_refl /-
 @[simp]
 theorem domCongr_refl [AddCommMonoid M] :
     Finsupp.domCongr (Equiv.refl α) = AddEquiv.refl (α →₀ M) :=
   AddEquiv.ext fun _ => equivMapDomain_refl _
 #align finsupp.dom_congr_refl Finsupp.domCongr_refl
+-/
 
+#print Finsupp.domCongr_symm /-
 @[simp]
 theorem domCongr_symm [AddCommMonoid M] (e : α ≃ β) :
     (Finsupp.domCongr e).symm = (Finsupp.domCongr e.symm : (β →₀ M) ≃+ (α →₀ M)) :=
   AddEquiv.ext fun _ => rfl
 #align finsupp.dom_congr_symm Finsupp.domCongr_symm
+-/
 
+#print Finsupp.domCongr_trans /-
 @[simp]
 theorem domCongr_trans [AddCommMonoid M] (e : α ≃ β) (f : β ≃ γ) :
     (Finsupp.domCongr e).trans (Finsupp.domCongr f) =
       (Finsupp.domCongr (e.trans f) : (α →₀ M) ≃+ _) :=
   AddEquiv.ext fun _ => (equivMapDomain_trans _ _ _).symm
 #align finsupp.dom_congr_trans Finsupp.domCongr_trans
+-/
 
 end Finsupp
 
@@ -1797,11 +2139,13 @@ def split (i : ι) : αs i →₀ M :=
 #align finsupp.split Finsupp.split
 -/
 
+#print Finsupp.split_apply /-
 theorem split_apply (i : ι) (x : αs i) : split l i x = l ⟨i, x⟩ :=
   by
   dsimp only [split]
   rw [comap_domain_apply]
 #align finsupp.split_apply Finsupp.split_apply
+-/
 
 #print Finsupp.splitSupport /-
 /-- Given `l`, a finitely supported function from the sigma type `Σ (i : ι), αs i` to `β`,
@@ -1812,6 +2156,7 @@ def splitSupport (l : (Σ i, αs i) →₀ M) : Finset ι :=
 #align finsupp.split_support Finsupp.splitSupport
 -/
 
+#print Finsupp.mem_splitSupport_iff_nonzero /-
 theorem mem_splitSupport_iff_nonzero (i : ι) : i ∈ splitSupport l ↔ split l i ≠ 0 :=
   by
   rw [split_support, mem_image, Ne.def, ← support_eq_empty, ← Ne.def, ←
@@ -1819,6 +2164,7 @@ theorem mem_splitSupport_iff_nonzero (i : ι) : i ∈ splitSupport l ↔ split l
   simp only [exists_prop, Finset.mem_preimage, exists_and_right, exists_eq_right, mem_support_iff,
     Sigma.exists, Ne.def]
 #align finsupp.mem_split_support_iff_nonzero Finsupp.mem_splitSupport_iff_nonzero
+-/
 
 #print Finsupp.splitComp /-
 /-- Given `l`, a finitely supported function from the sigma type `Σ i, αs i` to `β` and
@@ -1835,16 +2181,20 @@ def splitComp [Zero N] (g : ∀ i, (αs i →₀ M) → N) (hg : ∀ i x, x = 0
 #align finsupp.split_comp Finsupp.splitComp
 -/
 
+#print Finsupp.sigma_support /-
 theorem sigma_support : l.support = l.splitSupport.Sigma fun i => (l.split i).support := by
   simp only [Finset.ext_iff, split_support, split, comap_domain, mem_image, mem_preimage,
       Sigma.forall, mem_sigma] <;>
     tauto
 #align finsupp.sigma_support Finsupp.sigma_support
+-/
 
+#print Finsupp.sigma_sum /-
 theorem sigma_sum [AddCommMonoid N] (f : (Σ i : ι, αs i) → M → N) :
     l.Sum f = ∑ i in splitSupport l, (split l i).Sum fun (a : αs i) b => f ⟨i, a⟩ b := by
   simp only [Sum, sigma_support, sum_sigma, split_apply]
 #align finsupp.sigma_sum Finsupp.sigma_sum
+-/
 
 variable {η : Type _} [Fintype η] {ιs : η → Type _} [Zero α]
 
@@ -1872,6 +2222,7 @@ theorem sigmaFinsuppEquivPiFinsupp_apply (f : (Σ j, ιs j) →₀ α) (j i) :
 #align finsupp.sigma_finsupp_equiv_pi_finsupp_apply Finsupp.sigmaFinsuppEquivPiFinsupp_apply
 -/
 
+#print Finsupp.sigmaFinsuppAddEquivPiFinsupp /-
 /-- On a `fintype η`, `finsupp.split` is an additive equivalence between
 `(Σ (j : η), ιs j) →₀ α` and `Π j, (ιs j →₀ α)`.
 
@@ -1881,12 +2232,15 @@ noncomputable def sigmaFinsuppAddEquivPiFinsupp {α : Type _} {ιs : η → Type
     ((Σ j, ιs j) →₀ α) ≃+ ∀ j, ιs j →₀ α :=
   { sigmaFinsuppEquivPiFinsupp with map_add' := fun f g => by ext; simp }
 #align finsupp.sigma_finsupp_add_equiv_pi_finsupp Finsupp.sigmaFinsuppAddEquivPiFinsupp
+-/
 
+#print Finsupp.sigmaFinsuppAddEquivPiFinsupp_apply /-
 @[simp]
 theorem sigmaFinsuppAddEquivPiFinsupp_apply {α : Type _} {ιs : η → Type _} [AddMonoid α]
     (f : (Σ j, ιs j) →₀ α) (j i) : sigmaFinsuppAddEquivPiFinsupp f j i = f ⟨j, i⟩ :=
   rfl
 #align finsupp.sigma_finsupp_add_equiv_pi_finsupp_apply Finsupp.sigmaFinsuppAddEquivPiFinsupp_apply
+-/
 
 end Sigma
 
Diff
@@ -110,9 +110,9 @@ theorem graph_injective (α M) [Zero M] : Injective (@graph α M _) :=
   by
   intro f g h
   classical
-    have hsup : f.support = g.support := by rw [← image_fst_graph, h, image_fst_graph]
-    refine' ext_iff'.2 ⟨hsup, fun x hx => apply_eq_of_mem_graph <| h.symm ▸ _⟩
-    exact mk_mem_graph _ (hsup ▸ hx)
+  have hsup : f.support = g.support := by rw [← image_fst_graph, h, image_fst_graph]
+  refine' ext_iff'.2 ⟨hsup, fun x hx => apply_eq_of_mem_graph <| h.symm ▸ _⟩
+  exact mk_mem_graph _ (hsup ▸ hx)
 #align finsupp.graph_injective Finsupp.graph_injective
 
 @[simp]
@@ -360,8 +360,8 @@ theorem equivMapDomain_trans' (f : α ≃ β) (g : β ≃ γ) :
 theorem equivMapDomain_single (f : α ≃ β) (a : α) (b : M) :
     equivMapDomain f (single a b) = single (f a) b := by
   classical
-    ext x
-    simp only [single_apply, Equiv.apply_eq_iff_eq_symm_apply, equiv_map_domain_apply]
+  ext x
+  simp only [single_apply, Equiv.apply_eq_iff_eq_symm_apply, equiv_map_domain_apply]
 #align finsupp.equiv_map_domain_single Finsupp.equivMapDomain_single
 
 @[simp]
@@ -561,16 +561,16 @@ theorem mapDomain_support [DecidableEq β] {f : α → β} {s : α →₀ M} :
 theorem mapDomain_apply' (S : Set α) {f : α → β} (x : α →₀ M) (hS : (x.support : Set α) ⊆ S)
     (hf : Set.InjOn f S) {a : α} (ha : a ∈ S) : mapDomain f x (f a) = x a := by
   classical
-    rw [map_domain, sum_apply, Sum]
-    simp_rw [single_apply]
-    by_cases hax : a ∈ x.support
-    · rw [← Finset.add_sum_erase _ _ hax, if_pos rfl]
-      convert add_zero _
-      refine' Finset.sum_eq_zero fun i hi => if_neg _
-      exact (hf.mono hS).Ne (Finset.mem_of_mem_erase hi) hax (Finset.ne_of_mem_erase hi)
-    · rw [not_mem_support_iff.1 hax]
-      refine' Finset.sum_eq_zero fun i hi => if_neg _
-      exact hf.ne (hS hi) ha (ne_of_mem_of_not_mem hi hax)
+  rw [map_domain, sum_apply, Sum]
+  simp_rw [single_apply]
+  by_cases hax : a ∈ x.support
+  · rw [← Finset.add_sum_erase _ _ hax, if_pos rfl]
+    convert add_zero _
+    refine' Finset.sum_eq_zero fun i hi => if_neg _
+    exact (hf.mono hS).Ne (Finset.mem_of_mem_erase hi) hax (Finset.ne_of_mem_erase hi)
+  · rw [not_mem_support_iff.1 hax]
+    refine' Finset.sum_eq_zero fun i hi => if_neg _
+    exact hf.ne (hS hi) ha (ne_of_mem_of_not_mem hi hax)
 #align finsupp.map_domain_apply' Finsupp.mapDomain_apply'
 
 theorem mapDomain_support_of_injOn [DecidableEq β] {f : α → β} (s : α →₀ M)
@@ -675,18 +675,18 @@ theorem sum_update_add [AddCommMonoid α] [AddCommMonoid β] (f : ι →₀ α)
 #align finsupp.sum_update_add Finsupp.sum_update_add
 
 theorem mapDomain_injOn (S : Set α) {f : α → β} (hf : Set.InjOn f S) :
-    Set.InjOn (mapDomain f : (α →₀ M) → β →₀ M) { w | (w.support : Set α) ⊆ S } :=
+    Set.InjOn (mapDomain f : (α →₀ M) → β →₀ M) {w | (w.support : Set α) ⊆ S} :=
   by
   intro v₁ hv₁ v₂ hv₂ eq
   ext a
   classical
-    by_cases h : a ∈ v₁.support ∪ v₂.support
-    ·
-      rw [← map_domain_apply' S _ hv₁ hf _, ← map_domain_apply' S _ hv₂ hf _, Eq] <;>
-        · apply Set.union_subset hv₁ hv₂
-          exact_mod_cast h
-    · simp only [Decidable.not_or_iff_and_not, mem_union, Classical.not_not, mem_support_iff] at h 
-      simp [h]
+  by_cases h : a ∈ v₁.support ∪ v₂.support
+  ·
+    rw [← map_domain_apply' S _ hv₁ hf _, ← map_domain_apply' S _ hv₂ hf _, Eq] <;>
+      · apply Set.union_subset hv₁ hv₂
+        exact_mod_cast h
+  · simp only [Decidable.not_or_iff_and_not, mem_union, Classical.not_not, mem_support_iff] at h 
+    simp [h]
 #align finsupp.map_domain_inj_on Finsupp.mapDomain_injOn
 
 theorem equivMapDomain_eq_mapDomain {M} [AddCommMonoid M] (f : α ≃ β) (l : α →₀ M) :
@@ -857,8 +857,8 @@ theorem some_single_none [Zero M] (m : M) : (single none m : Option α →₀ M)
 theorem some_single_some [Zero M] (a : α) (m : M) :
     (single (Option.some a) m : Option α →₀ M).some = single a m := by
   classical
-    ext b
-    simp [single_apply]
+  ext b
+  simp [single_apply]
 #align finsupp.some_single_some Finsupp.some_single_some
 -/
 
@@ -868,14 +868,14 @@ theorem prod_option_index [AddCommMonoid M] [CommMonoid N] (f : Option α →₀
     (h_add : ∀ o m₁ m₂, b o (m₁ + m₂) = b o m₁ * b o m₂) :
     f.Prod b = b none (f none) * f.some.Prod fun a => b (Option.some a) := by
   classical
-    apply induction_linear f
-    · simp [some_zero, h_zero]
-    · intro f₁ f₂ h₁ h₂
-      rw [Finsupp.prod_add_index, h₁, h₂, some_add, Finsupp.prod_add_index]
-      simp only [h_add, Pi.add_apply, Finsupp.coe_add]
-      rw [mul_mul_mul_comm]
-      all_goals simp [h_zero, h_add]
-    · rintro (_ | a) m <;> simp [h_zero, h_add]
+  apply induction_linear f
+  · simp [some_zero, h_zero]
+  · intro f₁ f₂ h₁ h₂
+    rw [Finsupp.prod_add_index, h₁, h₂, some_add, Finsupp.prod_add_index]
+    simp only [h_add, Pi.add_apply, Finsupp.coe_add]
+    rw [mul_mul_mul_comm]
+    all_goals simp [h_zero, h_add]
+  · rintro (_ | a) m <;> simp [h_zero, h_add]
 #align finsupp.prod_option_index Finsupp.prod_option_index
 #align finsupp.sum_option_index Finsupp.sum_option_index
 
@@ -917,7 +917,7 @@ theorem filter_apply (a : α) [D : Decidable (p a)] : f.filterₓ p a = if p a t
 #align finsupp.filter_apply Finsupp.filter_apply
 -/
 
-theorem filter_eq_indicator : ⇑(f.filterₓ p) = Set.indicator { x | p x } f :=
+theorem filter_eq_indicator : ⇑(f.filterₓ p) = Set.indicator {x | p x} f :=
   rfl
 #align finsupp.filter_eq_indicator Finsupp.filter_eq_indicator
 
@@ -967,9 +967,9 @@ theorem filter_single_of_neg {a : α} {b : M} (h : ¬p a) : (single a b).filter
 theorem prod_filter_index [CommMonoid N] (g : α → M → N) :
     (f.filterₓ p).Prod g = ∏ x in (f.filterₓ p).support, g x (f x) := by
   classical
-    refine' Finset.prod_congr rfl fun x hx => _
-    rw [support_filter, Finset.mem_filter] at hx 
-    rw [filter_apply_pos _ _ hx.2]
+  refine' Finset.prod_congr rfl fun x hx => _
+  rw [support_filter, Finset.mem_filter] at hx 
+  rw [filter_apply_pos _ _ hx.2]
 #align finsupp.prod_filter_index Finsupp.prod_filter_index
 #align finsupp.sum_filter_index Finsupp.sum_filter_index
 
@@ -977,7 +977,7 @@ theorem prod_filter_index [CommMonoid N] (g : α → M → N) :
 theorem prod_filter_mul_prod_filter_not [CommMonoid N] (g : α → M → N) :
     (f.filterₓ p).Prod g * (f.filterₓ fun a => ¬p a).Prod g = f.Prod g := by
   classical simp_rw [prod_filter_index, support_filter, prod_filter_mul_prod_filter_not,
-      Finsupp.prod]
+    Finsupp.prod]
 #align finsupp.prod_filter_mul_prod_filter_not Finsupp.prod_filter_mul_prod_filter_not
 #align finsupp.sum_filter_add_sum_filter_not Finsupp.sum_filter_add_sum_filter_not
 
@@ -992,7 +992,7 @@ end Zero
 
 theorem filter_pos_add_filter_neg [AddZeroClass M] (f : α →₀ M) (p : α → Prop) :
     (f.filterₓ p + f.filterₓ fun a => ¬p a) = f :=
-  coeFn_injective <| Set.indicator_self_add_compl { x | p x } f
+  coeFn_injective <| Set.indicator_self_add_compl {x | p x} f
 #align finsupp.filter_pos_add_filter_neg Finsupp.filter_pos_add_filter_neg
 
 end Filter
@@ -1014,9 +1014,9 @@ def frange (f : α →₀ M) : Finset M :=
 
 theorem mem_frange {f : α →₀ M} {y : M} : y ∈ f.frange ↔ y ≠ 0 ∧ ∃ x, f x = y := by
   classical exact
-      finset.mem_image.trans
-        ⟨fun ⟨x, hx1, hx2⟩ => ⟨hx2 ▸ mem_support_iff.1 hx1, x, hx2⟩, fun ⟨hy, x, hx⟩ =>
-          ⟨x, mem_support_iff.2 (hx.symm ▸ hy), hx⟩⟩
+    finset.mem_image.trans
+      ⟨fun ⟨x, hx1, hx2⟩ => ⟨hx2 ▸ mem_support_iff.1 hx1, x, hx2⟩, fun ⟨hy, x, hx⟩ =>
+        ⟨x, mem_support_iff.2 (hx.symm ▸ hy), hx⟩⟩
 #align finsupp.mem_frange Finsupp.mem_frange
 
 theorem zero_not_mem_frange {f : α →₀ M} : (0 : M) ∉ f.frange := fun H => (mem_frange.1 H).1 rfl
@@ -1027,10 +1027,10 @@ theorem frange_single {x : α} {y : M} : frange (single x y) ⊆ {y} := fun r hr
   let ⟨t, ht1, ht2⟩ := mem_frange.1 hr
   ht2 ▸ by
     classical
-      rw [single_apply] at ht2 ⊢
-      split_ifs  at ht2 ⊢
-      · exact Finset.mem_singleton_self _
-      · exact (t ht2.symm).elim
+    rw [single_apply] at ht2 ⊢
+    split_ifs at ht2 ⊢
+    · exact Finset.mem_singleton_self _
+    · exact (t ht2.symm).elim
 #align finsupp.frange_single Finsupp.frange_single
 -/
 
@@ -1075,7 +1075,7 @@ theorem subtypeDomain_zero : subtypeDomain p (0 : α →₀ M) = 0 :=
 
 theorem subtypeDomain_eq_zero_iff' {f : α →₀ M} : f.subtypeDomain p = 0 ↔ ∀ x, p x → f x = 0 := by
   classical simp_rw [← support_eq_empty, support_subtype_domain, subtype_eq_empty,
-      not_mem_support_iff]
+    not_mem_support_iff]
 #align finsupp.subtype_domain_eq_zero_iff' Finsupp.subtypeDomain_eq_zero_iff'
 
 theorem subtypeDomain_eq_zero_iff {f : α →₀ M} (hf : ∀ x ∈ f.support, p x) :
@@ -1120,7 +1120,7 @@ def filterAddHom (p : α → Prop) : (α →₀ M) →+ α →₀ M
     where
   toFun := filter p
   map_zero' := filter_zero p
-  map_add' f g := coeFn_injective <| Set.indicator_add { x | p x } f g
+  map_add' f g := coeFn_injective <| Set.indicator_add {x | p x} f g
 #align finsupp.filter_add_hom Finsupp.filterAddHom
 
 @[simp]
@@ -1244,14 +1244,14 @@ protected def curry (f : α × β →₀ M) : α →₀ β →₀ M :=
 @[simp]
 theorem curry_apply (f : α × β →₀ M) (x : α) (y : β) : f.curry x y = f (x, y) := by
   classical
-    have : ∀ b : α × β, single b.fst (single b.snd (f b)) x y = if b = (x, y) then f b else 0 :=
-      by
-      rintro ⟨b₁, b₂⟩
-      simp [single_apply, ite_apply, Prod.ext_iff, ite_and]
-      split_ifs <;> simp [single_apply, *]
-    rw [Finsupp.curry, sum_apply, sum_apply, Finsupp.sum, Finset.sum_eq_single, this, if_pos rfl]
-    · intro b hb b_ne; rw [this b, if_neg b_ne]
-    · intro hxy; rw [this (x, y), if_pos rfl, not_mem_support_iff.mp hxy]
+  have : ∀ b : α × β, single b.fst (single b.snd (f b)) x y = if b = (x, y) then f b else 0 :=
+    by
+    rintro ⟨b₁, b₂⟩
+    simp [single_apply, ite_apply, Prod.ext_iff, ite_and]
+    split_ifs <;> simp [single_apply, *]
+  rw [Finsupp.curry, sum_apply, sum_apply, Finsupp.sum, Finset.sum_eq_single, this, if_pos rfl]
+  · intro b hb b_ne; rw [this b, if_neg b_ne]
+  · intro hxy; rw [this (x, y), if_pos rfl, not_mem_support_iff.mp hxy]
 #align finsupp.curry_apply Finsupp.curry_apply
 
 theorem sum_curry_index (f : α × β →₀ M) (g : α → β → M → N) (hg₀ : ∀ a b, g a b 0 = 0)
@@ -1297,14 +1297,14 @@ def finsuppProdEquiv : (α × β →₀ M) ≃ (α →₀ β →₀ M)
 theorem filter_curry (f : α × β →₀ M) (p : α → Prop) :
     (f.filterₓ fun a : α × β => p a.1).curry = f.curry.filterₓ p := by
   classical
-    rw [Finsupp.curry, Finsupp.curry, Finsupp.sum, Finsupp.sum, filter_sum, support_filter,
-      sum_filter]
-    refine' Finset.sum_congr rfl _
-    rintro ⟨a₁, a₂⟩ ha
-    dsimp only
-    split_ifs
-    · rw [filter_apply_pos, filter_single_of_pos] <;> exact h
-    · rwa [filter_single_of_neg]
+  rw [Finsupp.curry, Finsupp.curry, Finsupp.sum, Finsupp.sum, filter_sum, support_filter,
+    sum_filter]
+  refine' Finset.sum_congr rfl _
+  rintro ⟨a₁, a₂⟩ ha
+  dsimp only
+  split_ifs
+  · rw [filter_apply_pos, filter_single_of_pos] <;> exact h
+  · rwa [filter_single_of_neg]
 #align finsupp.filter_curry Finsupp.filter_curry
 
 theorem support_curry [DecidableEq α] (f : α × β →₀ M) :
@@ -1580,7 +1580,7 @@ variable {p : α → Prop}
 @[simp]
 theorem filter_smul {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] {b : R} {v : α →₀ M} :
     (b • v).filterₓ p = b • v.filterₓ p :=
-  coeFn_injective <| Set.indicator_const_smul { x | p x } b v
+  coeFn_injective <| Set.indicator_const_smul {x | p x} b v
 #align finsupp.filter_smul Finsupp.filter_smul
 
 end
@@ -1715,9 +1715,9 @@ def restrictSupportEquiv (s : Set α) (M : Type _) [AddCommMonoid M] :
   invFun f :=
     ⟨f.mapDomain Subtype.val, by
       classical
-        refine' Set.Subset.trans (Finset.coe_subset.2 map_domain_support) _
-        rw [Finset.coe_image, Set.image_subset_iff]
-        exact fun x hx => x.2⟩
+      refine' Set.Subset.trans (Finset.coe_subset.2 map_domain_support) _
+      rw [Finset.coe_image, Set.image_subset_iff]
+      exact fun x hx => x.2⟩
   left_inv := by
     rintro ⟨f, hf⟩
     apply Subtype.eq
Diff
@@ -489,8 +489,8 @@ theorem mapDomain_comp {f : α → β} {g : β → γ} :
     mapDomain (g ∘ f) v = mapDomain g (mapDomain f v) :=
   by
   refine' ((sum_sum_index _ _).trans _).symm
-  · intro ; exact single_zero _
-  · intro ; exact single_add _
+  · intro; exact single_zero _
+  · intro; exact single_add _
   refine' sum_congr fun _ _ => sum_single_index _
   · exact single_zero _
 #align finsupp.map_domain_comp Finsupp.mapDomain_comp
@@ -578,7 +578,7 @@ theorem mapDomain_support_of_injOn [DecidableEq β] {f : α → β} (s : α →
   Finset.Subset.antisymm mapDomain_support <|
     by
     intro x hx
-    simp only [mem_image, exists_prop, mem_support_iff, Ne.def] at hx
+    simp only [mem_image, exists_prop, mem_support_iff, Ne.def] at hx 
     rcases hx with ⟨hx_w, hx_h_left, rfl⟩
     simp only [mem_support_iff, Ne.def]
     rw [map_domain_apply' (↑s.support : Set _) _ _ hf]
@@ -634,7 +634,7 @@ theorem mapDomain_injective {f : α → β} (hf : Function.Injective f) :
   by
   intro v₁ v₂ eq; ext a
   have : map_domain f v₁ (f a) = map_domain f v₂ (f a) := by rw [Eq]
-  rwa [map_domain_apply hf, map_domain_apply hf] at this
+  rwa [map_domain_apply hf, map_domain_apply hf] at this 
 #align finsupp.map_domain_injective Finsupp.mapDomain_injective
 
 #print Finsupp.mapDomainEmbedding /-
@@ -685,7 +685,7 @@ theorem mapDomain_injOn (S : Set α) {f : α → β} (hf : Set.InjOn f S) :
       rw [← map_domain_apply' S _ hv₁ hf _, ← map_domain_apply' S _ hv₂ hf _, Eq] <;>
         · apply Set.union_subset hv₁ hv₂
           exact_mod_cast h
-    · simp only [Decidable.not_or_iff_and_not, mem_union, Classical.not_not, mem_support_iff] at h
+    · simp only [Decidable.not_or_iff_and_not, mem_union, Classical.not_not, mem_support_iff] at h 
       simp [h]
 #align finsupp.map_domain_inj_on Finsupp.mapDomain_injOn
 
@@ -764,7 +764,7 @@ theorem comapDomain_single (f : α → β) (a : α) (m : M)
   · simp only [single_zero, comap_domain_zero]
   · rw [eq_single_iff, comap_domain_apply, comap_domain_support, ← Finset.coe_subset, coe_preimage,
       support_single_ne_zero _ hm, coe_singleton, coe_singleton, single_eq_same]
-    rw [support_single_ne_zero _ hm, coe_singleton] at hif
+    rw [support_single_ne_zero _ hm, coe_singleton] at hif 
     exact ⟨fun x hx => hif hx rfl hx, rfl⟩
 #align finsupp.comap_domain_single Finsupp.comapDomain_single
 
@@ -968,7 +968,7 @@ theorem prod_filter_index [CommMonoid N] (g : α → M → N) :
     (f.filterₓ p).Prod g = ∏ x in (f.filterₓ p).support, g x (f x) := by
   classical
     refine' Finset.prod_congr rfl fun x hx => _
-    rw [support_filter, Finset.mem_filter] at hx
+    rw [support_filter, Finset.mem_filter] at hx 
     rw [filter_apply_pos _ _ hx.2]
 #align finsupp.prod_filter_index Finsupp.prod_filter_index
 #align finsupp.sum_filter_index Finsupp.sum_filter_index
@@ -1027,8 +1027,8 @@ theorem frange_single {x : α} {y : M} : frange (single x y) ⊆ {y} := fun r hr
   let ⟨t, ht1, ht2⟩ := mem_frange.1 hr
   ht2 ▸ by
     classical
-      rw [single_apply] at ht2⊢
-      split_ifs  at ht2⊢
+      rw [single_apply] at ht2 ⊢
+      split_ifs  at ht2 ⊢
       · exact Finset.mem_singleton_self _
       · exact (t ht2.symm).elim
 #align finsupp.frange_single Finsupp.frange_single
@@ -1215,7 +1215,7 @@ theorem mem_support_multiset_sum [AddCommMonoid M] {s : Multiset (α →₀ M)}
       by_cases a ∈ f.support
       · exact ⟨f, Multiset.mem_cons_self _ _, h⟩
       · simp only [Multiset.sum_cons, mem_support_iff, add_apply, not_mem_support_iff.1 h,
-          zero_add] at ha
+          zero_add] at ha 
         rcases ih (mem_support_iff.2 ha) with ⟨f', h₀, h₁⟩
         exact ⟨f', Multiset.mem_cons_of_mem h₀, h₁⟩)
 #align finsupp.mem_support_multiset_sum Finsupp.mem_support_multiset_sum
@@ -1264,7 +1264,7 @@ theorem sum_curry_index (f : α × β →₀ M) (g : α → β → M → N) (hg
     exact
       sum_sum_index (fun a => sum_zero_index) fun a b₀ b₁ =>
         sum_add_index' (fun a => hg₀ _ _) fun c d₀ d₁ => hg₁ _ _ _ _
-  congr ; funext p c
+  congr; funext p c
   trans
   · exact sum_single_index sum_zero_index
   exact sum_single_index (hg₀ _ _)
@@ -1286,8 +1286,8 @@ def finsuppProdEquiv : (α × β →₀ M) ≃ (α →₀ β →₀ M)
   left_inv f := by
     rw [Finsupp.uncurry, sum_curry_index]
     · simp_rw [Prod.mk.eta, sum_single]
-    · intros ; apply single_zero
-    · intros ; apply single_add
+    · intros; apply single_zero
+    · intros; apply single_add
   right_inv f := by
     simp only [Finsupp.curry, Finsupp.uncurry, sum_sum_index, sum_zero_index, sum_add_index,
       sum_single_index, single_zero, single_add, eq_self_iff_true, forall_true_iff,
@@ -1330,7 +1330,7 @@ def sumElim {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →₀ γ)
       haveI := Classical.decEq α <;> haveI := Classical.decEq β <;>
         exact f.support.map ⟨_, Sum.inl_injective⟩ ∪ g.support.map ⟨_, Sum.inr_injective⟩)
     (Sum.elim f g) fun ab h => by
-    cases' ab with a b <;> simp only [Sum.elim_inl, Sum.elim_inr] at h <;> simpa
+    cases' ab with a b <;> simp only [Sum.elim_inl, Sum.elim_inr] at h  <;> simpa
 #align finsupp.sum_elim Finsupp.sumElim
 -/
 
@@ -1399,7 +1399,7 @@ This is the `finsupp` version of `equiv.sum_arrow_equiv_prod_arrow`. -/
 @[simps apply symm_apply]
 def sumFinsuppAddEquivProdFinsupp {α β : Type _} : (Sum α β →₀ M) ≃+ (α →₀ M) × (β →₀ M) :=
   { sumFinsuppEquivProdFinsupp with
-    map_add' := by intros ;
+    map_add' := by intros;
       ext <;>
         simp only [Equiv.toFun_as_coe, Prod.fst_add, Prod.snd_add, add_apply,
           snd_sum_finsupp_equiv_prod_finsupp, fst_sum_finsupp_equiv_prod_finsupp] }
@@ -1783,7 +1783,7 @@ namespace Finsupp
 
 section Sigma
 
-variable {αs : ι → Type _} [Zero M] (l : (Σi, αs i) →₀ M)
+variable {αs : ι → Type _} [Zero M] (l : (Σ i, αs i) →₀ M)
 
 #print Finsupp.split /-
 /-- Given `l`, a finitely supported function from the sigma type `Σ (i : ι), αs i` to `M` and
@@ -1806,7 +1806,7 @@ theorem split_apply (i : ι) (x : αs i) : split l i x = l ⟨i, x⟩ :=
 #print Finsupp.splitSupport /-
 /-- Given `l`, a finitely supported function from the sigma type `Σ (i : ι), αs i` to `β`,
 `split_support l` is the finset of indices in `ι` that appear in the support of `l`. -/
-def splitSupport (l : (Σi, αs i) →₀ M) : Finset ι :=
+def splitSupport (l : (Σ i, αs i) →₀ M) : Finset ι :=
   haveI := Classical.decEq ι
   l.support.image Sigma.fst
 #align finsupp.split_support Finsupp.splitSupport
@@ -1841,7 +1841,7 @@ theorem sigma_support : l.support = l.splitSupport.Sigma fun i => (l.split i).su
     tauto
 #align finsupp.sigma_support Finsupp.sigma_support
 
-theorem sigma_sum [AddCommMonoid N] (f : (Σi : ι, αs i) → M → N) :
+theorem sigma_sum [AddCommMonoid N] (f : (Σ i : ι, αs i) → M → N) :
     l.Sum f = ∑ i in splitSupport l, (split l i).Sum fun (a : αs i) b => f ⟨i, a⟩ b := by
   simp only [Sum, sigma_support, sum_sigma, split_apply]
 #align finsupp.sigma_sum Finsupp.sigma_sum
@@ -1853,7 +1853,7 @@ variable {η : Type _} [Fintype η] {ιs : η → Type _} [Zero α]
 and `Π j, (ιs j →₀ α)`.
 
 This is the `finsupp` version of `equiv.Pi_curry`. -/
-noncomputable def sigmaFinsuppEquivPiFinsupp : ((Σj, ιs j) →₀ α) ≃ ∀ j, ιs j →₀ α
+noncomputable def sigmaFinsuppEquivPiFinsupp : ((Σ j, ιs j) →₀ α) ≃ ∀ j, ιs j →₀ α
     where
   toFun := split
   invFun f :=
@@ -1866,7 +1866,7 @@ noncomputable def sigmaFinsuppEquivPiFinsupp : ((Σj, ιs j) →₀ α) ≃ ∀
 
 #print Finsupp.sigmaFinsuppEquivPiFinsupp_apply /-
 @[simp]
-theorem sigmaFinsuppEquivPiFinsupp_apply (f : (Σj, ιs j) →₀ α) (j i) :
+theorem sigmaFinsuppEquivPiFinsupp_apply (f : (Σ j, ιs j) →₀ α) (j i) :
     sigmaFinsuppEquivPiFinsupp f j i = f ⟨j, i⟩ :=
   rfl
 #align finsupp.sigma_finsupp_equiv_pi_finsupp_apply Finsupp.sigmaFinsuppEquivPiFinsupp_apply
@@ -1878,13 +1878,13 @@ theorem sigmaFinsuppEquivPiFinsupp_apply (f : (Σj, ιs j) →₀ α) (j i) :
 This is the `add_equiv` version of `finsupp.sigma_finsupp_equiv_pi_finsupp`.
 -/
 noncomputable def sigmaFinsuppAddEquivPiFinsupp {α : Type _} {ιs : η → Type _} [AddMonoid α] :
-    ((Σj, ιs j) →₀ α) ≃+ ∀ j, ιs j →₀ α :=
+    ((Σ j, ιs j) →₀ α) ≃+ ∀ j, ιs j →₀ α :=
   { sigmaFinsuppEquivPiFinsupp with map_add' := fun f g => by ext; simp }
 #align finsupp.sigma_finsupp_add_equiv_pi_finsupp Finsupp.sigmaFinsuppAddEquivPiFinsupp
 
 @[simp]
 theorem sigmaFinsuppAddEquivPiFinsupp_apply {α : Type _} {ιs : η → Type _} [AddMonoid α]
-    (f : (Σj, ιs j) →₀ α) (j i) : sigmaFinsuppAddEquivPiFinsupp f j i = f ⟨j, i⟩ :=
+    (f : (Σ j, ιs j) →₀ α) (j i) : sigmaFinsuppAddEquivPiFinsupp f j i = f ⟨j, i⟩ :=
   rfl
 #align finsupp.sigma_finsupp_add_equiv_pi_finsupp_apply Finsupp.sigmaFinsuppAddEquivPiFinsupp_apply
 
Diff
@@ -52,7 +52,7 @@ noncomputable section
 
 open Finset Function
 
-open BigOperators
+open scoped BigOperators
 
 variable {α β γ ι M M' N P G H R S : Type _}
 
Diff
@@ -73,12 +73,6 @@ def graph (f : α →₀ M) : Finset (α × M) :=
 #align finsupp.graph Finsupp.graph
 -/
 
-/- warning: finsupp.mk_mem_graph_iff -> Finsupp.mk_mem_graph_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {m : M} {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} α M) (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finset.hasMem.{max u1 u2} (Prod.{u1, u2} α M)) (Prod.mk.{u1, u2} α M a m) (Finsupp.graph.{u1, u2} α M _inst_1 f)) (And (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) m) (Ne.{succ u2} M m (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 : α} {m : M} {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Membership.mem.{max u1 u2, max u2 u1} (Prod.{u2, u1} α M) (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finset.instMembershipFinset.{max u2 u1} (Prod.{u2, u1} α M)) (Prod.mk.{u2, u1} α M a m) (Finsupp.graph.{u2, u1} α M _inst_1 f)) (And (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) m) (Ne.{succ u1} M m (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.mk_mem_graph_iff Finsupp.mk_mem_graph_iffₓ'. -/
 theorem mk_mem_graph_iff {a : α} {m : M} {f : α →₀ M} : (a, m) ∈ f.graph ↔ f a = m ∧ m ≠ 0 :=
   by
   simp_rw [graph, mem_map, mem_support_iff]
@@ -89,65 +83,29 @@ theorem mk_mem_graph_iff {a : α} {m : M} {f : α →₀ M} : (a, m) ∈ f.graph
     exact ⟨a, ha, rfl⟩
 #align finsupp.mk_mem_graph_iff Finsupp.mk_mem_graph_iff
 
-/- warning: finsupp.mem_graph_iff -> Finsupp.mem_graph_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {c : Prod.{u1, u2} α M} {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} α M) (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finset.hasMem.{max u1 u2} (Prod.{u1, u2} α M)) c (Finsupp.graph.{u1, u2} α M _inst_1 f)) (And (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 (Prod.fst.{u1, u2} α M c)) (Prod.snd.{u1, u2} α M c)) (Ne.{succ u2} M (Prod.snd.{u1, u2} α M c) (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] {c : Prod.{u2, u1} α M} {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Membership.mem.{max u2 u1, max u2 u1} (Prod.{u2, u1} α M) (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finset.instMembershipFinset.{max u2 u1} (Prod.{u2, u1} α M)) c (Finsupp.graph.{u2, u1} α M _inst_1 f)) (And (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) (Prod.fst.{u2, u1} α M c)) (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 (Prod.fst.{u2, u1} α M c)) (Prod.snd.{u2, u1} α M c)) (Ne.{succ u1} M (Prod.snd.{u2, u1} α M c) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.mem_graph_iff Finsupp.mem_graph_iffₓ'. -/
 @[simp]
 theorem mem_graph_iff {c : α × M} {f : α →₀ M} : c ∈ f.graph ↔ f c.1 = c.2 ∧ c.2 ≠ 0 := by cases c;
   exact mk_mem_graph_iff
 #align finsupp.mem_graph_iff Finsupp.mem_graph_iff
 
-/- warning: finsupp.mk_mem_graph -> Finsupp.mk_mem_graph 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 : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M _inst_1 f)) -> (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} α M) (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finset.hasMem.{max u1 u2} (Prod.{u1, u2} α M)) (Prod.mk.{u1, u2} α M 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)) (Finsupp.graph.{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 : α}, (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) a (Finsupp.support.{u2, u1} α M _inst_1 f)) -> (Membership.mem.{max u1 u2, max u2 u1} (Prod.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a)) (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finset.instMembershipFinset.{max u2 u1} (Prod.{u2, u1} α M)) (Prod.mk.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 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)) (Finsupp.graph.{u2, u1} α M _inst_1 f))
-Case conversion may be inaccurate. Consider using '#align finsupp.mk_mem_graph Finsupp.mk_mem_graphₓ'. -/
 theorem mk_mem_graph (f : α →₀ M) {a : α} (ha : a ∈ f.support) : (a, f a) ∈ f.graph :=
   mk_mem_graph_iff.2 ⟨rfl, mem_support_iff.1 ha⟩
 #align finsupp.mk_mem_graph Finsupp.mk_mem_graph
 
-/- warning: finsupp.apply_eq_of_mem_graph -> Finsupp.apply_eq_of_mem_graph is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {m : M} {f : Finsupp.{u1, u2} α M _inst_1}, (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} α M) (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finset.hasMem.{max u1 u2} (Prod.{u1, u2} α M)) (Prod.mk.{u1, u2} α M a m) (Finsupp.graph.{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) m)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {m : M} {f : Finsupp.{u2, u1} α M _inst_1}, (Membership.mem.{max u1 u2, max u2 u1} (Prod.{u2, u1} α M) (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finset.instMembershipFinset.{max u2 u1} (Prod.{u2, u1} α M)) (Prod.mk.{u2, u1} α M a m) (Finsupp.graph.{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) m)
-Case conversion may be inaccurate. Consider using '#align finsupp.apply_eq_of_mem_graph Finsupp.apply_eq_of_mem_graphₓ'. -/
 theorem apply_eq_of_mem_graph {a : α} {m : M} {f : α →₀ M} (h : (a, m) ∈ f.graph) : f a = m :=
   (mem_graph_iff.1 h).1
 #align finsupp.apply_eq_of_mem_graph Finsupp.apply_eq_of_mem_graph
 
-/- warning: finsupp.not_mem_graph_snd_zero -> Finsupp.not_mem_graph_snd_zero 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), Not (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} α M) (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finset.hasMem.{max u1 u2} (Prod.{u1, u2} α M)) (Prod.mk.{u1, u2} α M a (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Finsupp.graph.{u1, u2} α M _inst_1 f))
-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), Not (Membership.mem.{max u1 u2, max u2 u1} (Prod.{u2, u1} α M) (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finset.instMembershipFinset.{max u2 u1} (Prod.{u2, u1} α M)) (Prod.mk.{u2, u1} α M a (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (Finsupp.graph.{u2, u1} α M _inst_1 f))
-Case conversion may be inaccurate. Consider using '#align finsupp.not_mem_graph_snd_zero Finsupp.not_mem_graph_snd_zeroₓ'. -/
 @[simp]
 theorem not_mem_graph_snd_zero (a : α) (f : α →₀ M) : (a, (0 : M)) ∉ f.graph := fun h =>
   (mem_graph_iff.1 h).2.irrefl
 #align finsupp.not_mem_graph_snd_zero Finsupp.not_mem_graph_snd_zero
 
-/- warning: finsupp.image_fst_graph -> Finsupp.image_fst_graph is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] [_inst_2 : DecidableEq.{succ u1} α] (f : Finsupp.{u1, u2} α M _inst_1), Eq.{succ u1} (Finset.{u1} α) (Finset.image.{max u1 u2, u1} (Prod.{u1, u2} α M) α (fun (a : α) (b : α) => _inst_2 a b) (Prod.fst.{u1, u2} α M) (Finsupp.graph.{u1, u2} α M _inst_1 f)) (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] [_inst_2 : DecidableEq.{succ u2} α] (f : Finsupp.{u2, u1} α M _inst_1), Eq.{succ u2} (Finset.{u2} α) (Finset.image.{max u1 u2, u2} (Prod.{u2, u1} α M) α (fun (a : α) (b : α) => _inst_2 a b) (Prod.fst.{u2, u1} α M) (Finsupp.graph.{u2, u1} α M _inst_1 f)) (Finsupp.support.{u2, u1} α M _inst_1 f)
-Case conversion may be inaccurate. Consider using '#align finsupp.image_fst_graph Finsupp.image_fst_graphₓ'. -/
 @[simp]
 theorem image_fst_graph [DecidableEq α] (f : α →₀ M) : f.graph.image Prod.fst = f.support := by
   classical simp only [graph, map_eq_image, image_image, embedding.coe_fn_mk, (· ∘ ·), image_id']
 #align finsupp.image_fst_graph Finsupp.image_fst_graph
 
-/- warning: finsupp.graph_injective -> Finsupp.graph_injective is a dubious translation:
-lean 3 declaration is
-  forall (α : Type.{u1}) (M : Type.{u2}) [_inst_2 : Zero.{u2} M], Function.Injective.{max (succ u1) (succ u2), succ (max u1 u2)} (Finsupp.{u1, u2} α M _inst_2) (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finsupp.graph.{u1, u2} α M _inst_2)
-but is expected to have type
-  forall (α : Type.{u2}) (M : Type.{u1}) [_inst_2 : Zero.{u1} M], Function.Injective.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_2) (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finsupp.graph.{u2, u1} α M _inst_2)
-Case conversion may be inaccurate. Consider using '#align finsupp.graph_injective Finsupp.graph_injectiveₓ'. -/
 theorem graph_injective (α M) [Zero M] : Injective (@graph α M _) :=
   by
   intro f g h
@@ -157,33 +115,15 @@ theorem graph_injective (α M) [Zero M] : Injective (@graph α M _) :=
     exact mk_mem_graph _ (hsup ▸ hx)
 #align finsupp.graph_injective Finsupp.graph_injective
 
-/- warning: finsupp.graph_inj -> Finsupp.graph_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.{succ (max u1 u2)} (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finsupp.graph.{u1, u2} α M _inst_1 f) (Finsupp.graph.{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)} (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finsupp.graph.{u2, u1} α M _inst_1 f) (Finsupp.graph.{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.graph_inj Finsupp.graph_injₓ'. -/
 @[simp]
 theorem graph_inj {f g : α →₀ M} : f.graph = g.graph ↔ f = g :=
   (graph_injective α M).eq_iff
 #align finsupp.graph_inj Finsupp.graph_inj
 
-/- warning: finsupp.graph_zero -> Finsupp.graph_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)} (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finsupp.graph.{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.{max u1 u2} (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finset.hasEmptyc.{max u1 u2} (Prod.{u1, u2} α M)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M], Eq.{max (succ u2) (succ u1)} (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finsupp.graph.{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.{max u2 u1} (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finset.instEmptyCollectionFinset.{max u2 u1} (Prod.{u2, u1} α M)))
-Case conversion may be inaccurate. Consider using '#align finsupp.graph_zero Finsupp.graph_zeroₓ'. -/
 @[simp]
 theorem graph_zero : graph (0 : α →₀ M) = ∅ := by simp [graph]
 #align finsupp.graph_zero Finsupp.graph_zero
 
-/- warning: finsupp.graph_eq_empty -> Finsupp.graph_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 (max u1 u2)} (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finsupp.graph.{u1, u2} α M _inst_1 f) (EmptyCollection.emptyCollection.{max u1 u2} (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finset.hasEmptyc.{max u1 u2} (Prod.{u1, u2} α M)))) (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)} (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finsupp.graph.{u2, u1} α M _inst_1 f) (EmptyCollection.emptyCollection.{max u2 u1} (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finset.instEmptyCollectionFinset.{max u2 u1} (Prod.{u2, u1} α M)))) (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.graph_eq_empty Finsupp.graph_eq_emptyₓ'. -/
 @[simp]
 theorem graph_eq_empty {f : α →₀ M} : f.graph = ∅ ↔ f = 0 :=
   (graph_injective α M).eq_iff' graph_zero
@@ -222,20 +162,11 @@ def mapRange.equiv (f : M ≃ N) (hf : f 0 = 0) (hf' : f.symm 0 = 0) : (α →
 #align finsupp.map_range.equiv Finsupp.mapRange.equiv
 -/
 
-/- warning: finsupp.map_range.equiv_refl -> Finsupp.mapRange.equiv_refl is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M], Eq.{max 1 (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u2} α M _inst_1)) (Finsupp.mapRange.equiv.{u1, u2, u2} α M M _inst_1 _inst_1 (Equiv.refl.{succ u2} M) (rfl.{succ u2} M (coeFn.{succ u2, succ u2} (Equiv.{succ u2, succ u2} M M) (fun (_x : Equiv.{succ u2, succ u2} M M) => M -> M) (Equiv.hasCoeToFun.{succ u2, succ u2} M M) (Equiv.refl.{succ u2} M) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (rfl.{succ u2} M (coeFn.{succ u2, succ u2} (Equiv.{succ u2, succ u2} M M) (fun (_x : Equiv.{succ u2, succ u2} M M) => M -> M) (Equiv.hasCoeToFun.{succ u2, succ u2} M M) (Equiv.symm.{succ u2, succ u2} M M (Equiv.refl.{succ u2} M)) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))))) (Equiv.refl.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _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)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.{u2, u1} α M _inst_1)) (Finsupp.mapRange.equiv.{u2, u1, u1} α M M _inst_1 _inst_1 (Equiv.refl.{succ u1} M) (rfl.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => M) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} M M) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => M) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} M M) (Equiv.refl.{succ u1} M) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1)))) (rfl.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => M) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} M M) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => M) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} M M) (Equiv.symm.{succ u1, succ u1} M M (Equiv.refl.{succ u1} M)) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))))) (Equiv.refl.{max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range.equiv_refl Finsupp.mapRange.equiv_reflₓ'. -/
 @[simp]
 theorem mapRange.equiv_refl : mapRange.equiv (Equiv.refl M) rfl rfl = Equiv.refl (α →₀ M) :=
   Equiv.ext mapRange_id
 #align finsupp.map_range.equiv_refl Finsupp.mapRange.equiv_refl
 
-/- warning: finsupp.map_range.equiv_trans -> Finsupp.mapRange.equiv_trans is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range.equiv_trans Finsupp.mapRange.equiv_transₓ'. -/
 theorem mapRange.equiv_trans (f : M ≃ N) (hf : f 0 = 0) (hf') (f₂ : N ≃ P) (hf₂ : f₂ 0 = 0) (hf₂') :
     (mapRange.equiv (f.trans f₂) (by rw [Equiv.trans_apply, hf, hf₂])
           (by rw [Equiv.symm_trans_apply, hf₂', hf']) :
@@ -244,12 +175,6 @@ theorem mapRange.equiv_trans (f : M ≃ N) (hf : f 0 = 0) (hf') (f₂ : N ≃ P)
   Equiv.ext <| mapRange_comp _ _ _ _ _
 #align finsupp.map_range.equiv_trans Finsupp.mapRange.equiv_trans
 
-/- warning: finsupp.map_range.equiv_symm -> Finsupp.mapRange.equiv_symm is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : Zero.{u2} M] [_inst_2 : Zero.{u3} N] (f : Equiv.{succ u2, succ u3} M N) (hf : Eq.{succ u3} N (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) 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)))) (hf' : Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))), Eq.{max 1 (max (max (succ u1) (succ u3)) (succ u1) (succ u2)) (max (succ u1) (succ u2)) (succ u1) (succ u3)} (Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u2)} (Finsupp.{u1, u3} α N _inst_2) (Finsupp.{u1, u2} α M _inst_1)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u1) (succ u3)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u3} α N _inst_2) (Finsupp.mapRange.equiv.{u1, u2, u3} α M N _inst_1 _inst_2 f hf hf')) (Finsupp.mapRange.equiv.{u1, u3, u2} α N M _inst_2 _inst_1 (Equiv.symm.{succ u2, succ u3} M N f) hf' hf)
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : Zero.{u3} M] [_inst_2 : Zero.{u2} N] (f : Equiv.{succ u3, succ u2} M N) (hf : Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} M N) f (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) _inst_2))) (hf' : Eq.{succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} N M) (Equiv.symm.{succ u3, succ u2} M N f) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) _inst_1))), Eq.{max (max (succ u1) (succ u3)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u3) (succ u1)} (Finsupp.{u1, u2} α N _inst_2) (Finsupp.{u1, u3} α M _inst_1)) (Equiv.symm.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u1, u2} α N _inst_2) (Finsupp.mapRange.equiv.{u1, u3, u2} α M N _inst_1 _inst_2 f hf hf')) (Finsupp.mapRange.equiv.{u1, u2, u3} α N M _inst_2 _inst_1 (Equiv.symm.{succ u3, succ u2} M N f) hf' hf)
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range.equiv_symm Finsupp.mapRange.equiv_symmₓ'. -/
 @[simp]
 theorem mapRange.equiv_symm (f : M ≃ N) (hf hf') :
     ((mapRange.equiv f hf hf').symm : (α →₀ _) ≃ _) = mapRange.equiv f.symm hf' hf :=
@@ -273,23 +198,11 @@ def mapRange.zeroHom (f : ZeroHom M N) : ZeroHom (α →₀ M) (α →₀ N)
 #align finsupp.map_range.zero_hom Finsupp.mapRange.zeroHom
 -/
 
-/- warning: finsupp.map_range.zero_hom_id -> Finsupp.mapRange.zeroHom_id is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M], Eq.{succ (max u1 u2)} (ZeroHom.{max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1)) (Finsupp.mapRange.zeroHom.{u1, u2, u2} α M M _inst_1 _inst_1 (ZeroHom.id.{u2} M _inst_1)) (ZeroHom.id.{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], Eq.{max (succ u2) (succ u1)} (ZeroHom.{max u1 u2, max u1 u2} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)) (Finsupp.mapRange.zeroHom.{u2, u1, u1} α M M _inst_1 _inst_1 (ZeroHom.id.{u1} M _inst_1)) (ZeroHom.id.{max u1 u2} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range.zero_hom_id Finsupp.mapRange.zeroHom_idₓ'. -/
 @[simp]
 theorem mapRange.zeroHom_id : mapRange.zeroHom (ZeroHom.id M) = ZeroHom.id (α →₀ M) :=
   ZeroHom.ext mapRange_id
 #align finsupp.map_range.zero_hom_id Finsupp.mapRange.zeroHom_id
 
-/- warning: finsupp.map_range.zero_hom_comp -> Finsupp.mapRange.zeroHom_comp 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 : ZeroHom.{u3, u4} N P _inst_2 _inst_3) (f₂ : ZeroHom.{u2, u3} M N _inst_1 _inst_2), Eq.{max (succ (max u1 u4)) (succ (max u1 u2))} (ZeroHom.{max u1 u2, max u1 u4} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u4} α P _inst_3) (Finsupp.zero.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u4} α P _inst_3)) (Finsupp.mapRange.zeroHom.{u1, u2, u4} α M P _inst_1 _inst_3 (ZeroHom.comp.{u2, u3, u4} M N P _inst_1 _inst_2 _inst_3 f f₂)) (ZeroHom.comp.{max u1 u2, max u1 u3, max u1 u4} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u3} α N _inst_2) (Finsupp.{u1, u4} α P _inst_3) (Finsupp.zero.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u3} α N _inst_2) (Finsupp.zero.{u1, u4} α P _inst_3) (Finsupp.mapRange.zeroHom.{u1, u3, u4} α N P _inst_2 _inst_3 f) (Finsupp.mapRange.zeroHom.{u1, u2, u3} α M N _inst_1 _inst_2 f₂))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u4}} {P : Type.{u3}} [_inst_1 : Zero.{u2} M] [_inst_2 : Zero.{u4} N] [_inst_3 : Zero.{u3} P] (f : ZeroHom.{u4, u3} N P _inst_2 _inst_3) (f₂ : ZeroHom.{u2, u4} M N _inst_1 _inst_2), Eq.{max (max (succ u1) (succ u2)) (succ u3)} (ZeroHom.{max u2 u1, max u3 u1} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u3} α P _inst_3) (Finsupp.zero.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u3} α P _inst_3)) (Finsupp.mapRange.zeroHom.{u1, u2, u3} α M P _inst_1 _inst_3 (ZeroHom.comp.{u2, u4, u3} M N P _inst_1 _inst_2 _inst_3 f f₂)) (ZeroHom.comp.{max u2 u1, max u4 u1, max u3 u1} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u4} α N _inst_2) (Finsupp.{u1, u3} α P _inst_3) (Finsupp.zero.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u4} α N _inst_2) (Finsupp.zero.{u1, u3} α P _inst_3) (Finsupp.mapRange.zeroHom.{u1, u4, u3} α N P _inst_2 _inst_3 f) (Finsupp.mapRange.zeroHom.{u1, u2, u4} α M N _inst_1 _inst_2 f₂))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range.zero_hom_comp Finsupp.mapRange.zeroHom_compₓ'. -/
 theorem mapRange.zeroHom_comp (f : ZeroHom N P) (f₂ : ZeroHom M N) :
     (mapRange.zeroHom (f.comp f₂) : ZeroHom (α →₀ _) _) =
       (mapRange.zeroHom f).comp (mapRange.zeroHom f₂) :=
@@ -302,12 +215,6 @@ section AddMonoidHom
 
 variable [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P]
 
-/- warning: finsupp.map_range.add_monoid_hom -> Finsupp.mapRange.addMonoidHom is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N], (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) -> (AddMonoidHom.{max u1 u2, max u1 u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.addZeroClass.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.addZeroClass.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N], (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) -> (AddMonoidHom.{max u2 u1, max u3 u1} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u1, u3} α N (AddMonoid.toZero.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.addZeroClass.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.addZeroClass.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range.add_monoid_hom Finsupp.mapRange.addMonoidHomₓ'. -/
 /-- Composition with a fixed additive homomorphism is itself an additive homomorphism on functions.
 -/
 @[simps]
@@ -318,70 +225,34 @@ def mapRange.addMonoidHom (f : M →+ N) : (α →₀ M) →+ α →₀ N
   map_add' a b := mapRange_add f.map_add _ _
 #align finsupp.map_range.add_monoid_hom Finsupp.mapRange.addMonoidHom
 
-/- warning: finsupp.map_range.add_monoid_hom_id -> Finsupp.mapRange.addMonoidHom_id is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M], Eq.{succ (max u1 u2)} (AddMonoidHom.{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.addZeroClass.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.addZeroClass.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.mapRange.addMonoidHom.{u1, u2, u2} α M M _inst_1 _inst_1 (AddMonoidHom.id.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (AddMonoidHom.id.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.addZeroClass.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M], Eq.{max (succ u2) (succ u1)} (AddMonoidHom.{max u1 u2, max u1 u2} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.addZeroClass.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.addZeroClass.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)))) (Finsupp.mapRange.addMonoidHom.{u2, u1, u1} α M M _inst_1 _inst_1 (AddMonoidHom.id.{u1} M (AddMonoid.toAddZeroClass.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)))) (AddMonoidHom.id.{max u1 u2} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.addZeroClass.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range.add_monoid_hom_id Finsupp.mapRange.addMonoidHom_idₓ'. -/
 @[simp]
 theorem mapRange.addMonoidHom_id :
     mapRange.addMonoidHom (AddMonoidHom.id M) = AddMonoidHom.id (α →₀ M) :=
   AddMonoidHom.ext mapRange_id
 #align finsupp.map_range.add_monoid_hom_id Finsupp.mapRange.addMonoidHom_id
 
-/- warning: finsupp.map_range.add_monoid_hom_comp -> Finsupp.mapRange.addMonoidHom_comp is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {P : Type.{u4}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] [_inst_3 : AddCommMonoid.{u4} P] (f : AddMonoidHom.{u3, u4} N P (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3))) (f₂ : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))), Eq.{max (succ (max u1 u4)) (succ (max u1 u2))} (AddMonoidHom.{max u1 u2, max u1 u4} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u4} α P (AddZeroClass.toHasZero.{u4} P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3)))) (Finsupp.addZeroClass.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.addZeroClass.{u1, u4} α P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3)))) (Finsupp.mapRange.addMonoidHom.{u1, u2, u4} α M P _inst_1 _inst_3 (AddMonoidHom.comp.{u2, u3, u4} M N P (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3)) f f₂)) (AddMonoidHom.comp.{max u1 u2, max u1 u3, max u1 u4} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.{u1, u4} α P (AddZeroClass.toHasZero.{u4} P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3)))) (Finsupp.addZeroClass.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.addZeroClass.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.addZeroClass.{u1, u4} α P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3))) (Finsupp.mapRange.addMonoidHom.{u1, u3, u4} α N P _inst_2 _inst_3 f) (Finsupp.mapRange.addMonoidHom.{u1, u2, u3} α M N _inst_1 _inst_2 f₂))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u4}} {P : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u4} N] [_inst_3 : AddCommMonoid.{u3} P] (f : AddMonoidHom.{u4, u3} N P (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)) (AddMonoid.toAddZeroClass.{u3} P (AddCommMonoid.toAddMonoid.{u3} P _inst_3))) (f₂ : AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))), Eq.{max (max (succ u1) (succ u2)) (succ u3)} (AddMonoidHom.{max u2 u1, max u3 u1} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u1, u3} α P (AddMonoid.toZero.{u3} P (AddCommMonoid.toAddMonoid.{u3} P _inst_3))) (Finsupp.addZeroClass.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.addZeroClass.{u1, u3} α P (AddMonoid.toAddZeroClass.{u3} P (AddCommMonoid.toAddMonoid.{u3} P _inst_3)))) (Finsupp.mapRange.addMonoidHom.{u1, u2, u3} α M P _inst_1 _inst_3 (AddMonoidHom.comp.{u2, u4, u3} M N P (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)) (AddMonoid.toAddZeroClass.{u3} P (AddCommMonoid.toAddMonoid.{u3} P _inst_3)) f f₂)) (AddMonoidHom.comp.{max u2 u1, max u4 u1, max u3 u1} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u1, u4} α N (AddMonoid.toZero.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (Finsupp.{u1, u3} α P (AddMonoid.toZero.{u3} P (AddCommMonoid.toAddMonoid.{u3} P _inst_3))) (Finsupp.addZeroClass.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.addZeroClass.{u1, u4} α N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (Finsupp.addZeroClass.{u1, u3} α P (AddMonoid.toAddZeroClass.{u3} P (AddCommMonoid.toAddMonoid.{u3} P _inst_3))) (Finsupp.mapRange.addMonoidHom.{u1, u4, u3} α N P _inst_2 _inst_3 f) (Finsupp.mapRange.addMonoidHom.{u1, u2, u4} α M N _inst_1 _inst_2 f₂))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range.add_monoid_hom_comp Finsupp.mapRange.addMonoidHom_compₓ'. -/
 theorem mapRange.addMonoidHom_comp (f : N →+ P) (f₂ : M →+ N) :
     (mapRange.addMonoidHom (f.comp f₂) : (α →₀ _) →+ _) =
       (mapRange.addMonoidHom f).comp (mapRange.addMonoidHom f₂) :=
   AddMonoidHom.ext <| mapRange_comp _ _ _ _ _
 #align finsupp.map_range.add_monoid_hom_comp Finsupp.mapRange.addMonoidHom_comp
 
-/- warning: finsupp.map_range.add_monoid_hom_to_zero_hom -> Finsupp.mapRange.addMonoidHom_toZeroHom is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))), Eq.{max (succ (max u1 u3)) (succ (max u1 u2))} (ZeroHom.{max u1 u2, max u1 u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (AddZeroClass.toHasZero.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.addZeroClass.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (AddZeroClass.toHasZero.{max u1 u3} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.addZeroClass.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) (AddMonoidHom.toZeroHom.{max u1 u2, max u1 u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.addZeroClass.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.addZeroClass.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.mapRange.addMonoidHom.{u1, u2, u3} α M N _inst_1 _inst_2 f)) (Finsupp.mapRange.zeroHom.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHom.toZeroHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u2} N] (f : AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))), Eq.{max (max (succ u1) (succ u3)) (succ u2)} (ZeroHom.{max u3 u1, max u2 u1} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddZeroClass.toZero.{max u3 u1} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addZeroClass.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (AddZeroClass.toZero.{max u2 u1} (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.addZeroClass.{u1, u2} α N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) (AddMonoidHom.toZeroHom.{max u3 u1, max u2 u1} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.addZeroClass.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addZeroClass.{u1, u2} α N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.mapRange.addMonoidHom.{u1, u3, u2} α M N _inst_1 _inst_2 f)) (Finsupp.mapRange.zeroHom.{u1, u3, u2} α M N (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toZero.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddMonoidHom.toZeroHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range.add_monoid_hom_to_zero_hom Finsupp.mapRange.addMonoidHom_toZeroHomₓ'. -/
 @[simp]
 theorem mapRange.addMonoidHom_toZeroHom (f : M →+ N) :
     (mapRange.addMonoidHom f).toZeroHom = (mapRange.zeroHom f.toZeroHom : ZeroHom (α →₀ _) _) :=
   ZeroHom.ext fun _ => rfl
 #align finsupp.map_range.add_monoid_hom_to_zero_hom Finsupp.mapRange.addMonoidHom_toZeroHom
 
-/- warning: finsupp.map_range_multiset_sum -> Finsupp.mapRange_multiset_sum is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (m : Multiset.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (fun (_x : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (Multiset.sum.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.addCommMonoid.{u1, u2} α M _inst_1) m)) (Multiset.sum.{max u1 u3} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.addCommMonoid.{u1, u3} α N _inst_2) (Multiset.map.{max u1 u2, max u1 u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (fun (x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) => Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (fun (_x : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) x) m))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u2} N] (f : AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (m : Multiset.{max u3 u1} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (Finsupp.mapRange.{u1, u3, u2} α M N (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f) (Multiset.sum.{max u1 u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addCommMonoid.{u1, u3} α M _inst_1) m)) (Multiset.sum.{max u1 u2} (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (Finsupp.addCommMonoid.{u1, u2} α N _inst_2) (Multiset.map.{max u3 u1, max u2 u1} (Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (fun (x : Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => Finsupp.mapRange.{u1, u3, u2} α M N (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f) x) m))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range_multiset_sum Finsupp.mapRange_multiset_sumₓ'. -/
 theorem mapRange_multiset_sum (f : M →+ N) (m : Multiset (α →₀ M)) :
     mapRange f f.map_zero m.Sum = (m.map fun x => mapRange f f.map_zero x).Sum :=
   (mapRange.addMonoidHom f : (α →₀ _) →+ _).map_multiset_sum _
 #align finsupp.map_range_multiset_sum Finsupp.mapRange_multiset_sum
 
-/- warning: finsupp.map_range_finset_sum -> Finsupp.mapRange_finset_sum is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {ι : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u4} N] (f : AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (s : Finset.{u2} ι) (g : ι -> (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) (Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (fun (_x : AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)) f) (Finset.sum.{max u1 u3, u2} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) ι (Finsupp.addCommMonoid.{u1, u3} α M _inst_1) s (fun (x : ι) => g x))) (Finset.sum.{max u1 u4, u2} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) ι (Finsupp.addCommMonoid.{u1, u4} α N _inst_2) s (fun (x : ι) => Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (fun (_x : AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)) f) (g x)))
-but is expected to have type
-  forall {α : Type.{u1}} {ι : Type.{u2}} {M : Type.{u4}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u4} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (s : Finset.{u2} ι) (g : ι -> (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.mapRange.{u1, u4, u3} α M N (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (Finset.sum.{max u4 u1, u2} (Finsupp.{u1, u4} α M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) ι (Finsupp.addCommMonoid.{u1, u4} α M _inst_1) s (fun (x : ι) => g x))) (Finset.sum.{max u3 u1, u2} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) ι (Finsupp.addCommMonoid.{u1, u3} α N _inst_2) s (fun (x : ι) => Finsupp.mapRange.{u1, u4, u3} α M N (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (g x)))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range_finset_sum Finsupp.mapRange_finset_sumₓ'. -/
 theorem mapRange_finset_sum (f : M →+ N) (s : Finset ι) (g : ι → α →₀ M) :
     mapRange f f.map_zero (∑ x in s, g x) = ∑ x in s, mapRange f f.map_zero (g x) :=
   (mapRange.addMonoidHom f : (α →₀ _) →+ _).map_sum _ _
 #align finsupp.map_range_finset_sum Finsupp.mapRange_finset_sum
 
-/- warning: finsupp.map_range.add_equiv -> Finsupp.mapRange.addEquiv is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N], (AddEquiv.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) -> (AddEquiv.{max u1 u2, max u1 u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N], (AddEquiv.{u2, u3} M N (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) -> (AddEquiv.{max u2 u1, max u3 u1} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u1, u3} α N (AddMonoid.toZero.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range.add_equiv Finsupp.mapRange.addEquivₓ'. -/
 /-- `finsupp.map_range.add_monoid_hom` as an equiv. -/
 @[simps apply]
 def mapRange.addEquiv (f : M ≃+ N) : (α →₀ M) ≃+ (α →₀ N) :=
@@ -402,47 +273,23 @@ def mapRange.addEquiv (f : M ≃+ N) : (α →₀ M) ≃+ (α →₀ N) :=
       · rfl }
 #align finsupp.map_range.add_equiv Finsupp.mapRange.addEquiv
 
-/- warning: finsupp.map_range.add_equiv_refl -> Finsupp.mapRange.addEquiv_refl is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M], Eq.{succ (max u1 u2)} (AddEquiv.{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.add.{u1, 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.mapRange.addEquiv.{u1, u2, u2} α M M _inst_1 _inst_1 (AddEquiv.refl.{u2} M (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))) (AddEquiv.refl.{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))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M], Eq.{max (succ u2) (succ u1)} (AddEquiv.{max u1 u2, max u1 u2} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)))) (Finsupp.mapRange.addEquiv.{u2, u1, u1} α M M _inst_1 _inst_1 (AddEquiv.refl.{u1} M (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))))) (AddEquiv.refl.{max u1 u2} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range.add_equiv_refl Finsupp.mapRange.addEquiv_reflₓ'. -/
 @[simp]
 theorem mapRange.addEquiv_refl : mapRange.addEquiv (AddEquiv.refl M) = AddEquiv.refl (α →₀ M) :=
   AddEquiv.ext mapRange_id
 #align finsupp.map_range.add_equiv_refl Finsupp.mapRange.addEquiv_refl
 
-/- warning: finsupp.map_range.add_equiv_trans -> Finsupp.mapRange.addEquiv_trans is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {P : Type.{u4}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] [_inst_3 : AddCommMonoid.{u4} P] (f : AddEquiv.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (f₂ : AddEquiv.{u3, u4} N P (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddZeroClass.toHasAdd.{u4} P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3)))), Eq.{max (succ (max u1 u2)) (succ (max u1 u4))} (AddEquiv.{max u1 u2, max u1 u4} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u4} α P (AddZeroClass.toHasZero.{u4} P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3)))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u4} α P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3)))) (Finsupp.mapRange.addEquiv.{u1, u2, u4} α M P _inst_1 _inst_3 (AddEquiv.trans.{u2, u3, u4} M N P (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddZeroClass.toHasAdd.{u4} P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3))) f f₂)) (AddEquiv.trans.{max u1 u2, max u1 u3, max u1 u4} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.{u1, u4} α P (AddZeroClass.toHasZero.{u4} P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3)))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.add.{u1, u4} α P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3))) (Finsupp.mapRange.addEquiv.{u1, u2, u3} α M N _inst_1 _inst_2 f) (Finsupp.mapRange.addEquiv.{u1, u3, u4} α N P _inst_2 _inst_3 f₂))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u4}} {N : Type.{u3}} {P : Type.{u2}} [_inst_1 : AddCommMonoid.{u4} M] [_inst_2 : AddCommMonoid.{u3} N] [_inst_3 : AddCommMonoid.{u2} P] (f : AddEquiv.{u4, u3} M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (f₂ : AddEquiv.{u3, u2} N P (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddZeroClass.toAdd.{u2} P (AddMonoid.toAddZeroClass.{u2} P (AddCommMonoid.toAddMonoid.{u2} P _inst_3)))), Eq.{max (max (succ u1) (succ u4)) (succ u2)} (AddEquiv.{max u4 u1, max u2 u1} (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.{u1, u2} α P (AddMonoid.toZero.{u2} P (AddCommMonoid.toAddMonoid.{u2} P _inst_3))) (Finsupp.add.{u1, u4} α M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u1, u2} α P (AddMonoid.toAddZeroClass.{u2} P (AddCommMonoid.toAddMonoid.{u2} P _inst_3)))) (Finsupp.mapRange.addEquiv.{u1, u4, u2} α M P _inst_1 _inst_3 (AddEquiv.trans.{u4, u3, u2} M N P (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddZeroClass.toAdd.{u2} P (AddMonoid.toAddZeroClass.{u2} P (AddCommMonoid.toAddMonoid.{u2} P _inst_3))) f f₂)) (AddEquiv.trans.{max u4 u1, max u3 u1, max u2 u1} (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.{u1, u3} α N (AddMonoid.toZero.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.{u1, u2} α P (AddMonoid.toZero.{u2} P (AddCommMonoid.toAddMonoid.{u2} P _inst_3))) (Finsupp.add.{u1, u4} α M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.add.{u1, u2} α P (AddMonoid.toAddZeroClass.{u2} P (AddCommMonoid.toAddMonoid.{u2} P _inst_3))) (Finsupp.mapRange.addEquiv.{u1, u4, u3} α M N _inst_1 _inst_2 f) (Finsupp.mapRange.addEquiv.{u1, u3, u2} α N P _inst_2 _inst_3 f₂))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range.add_equiv_trans Finsupp.mapRange.addEquiv_transₓ'. -/
 theorem mapRange.addEquiv_trans (f : M ≃+ N) (f₂ : N ≃+ P) :
     (mapRange.addEquiv (f.trans f₂) : (α →₀ _) ≃+ _) =
       (mapRange.addEquiv f).trans (mapRange.addEquiv f₂) :=
   AddEquiv.ext <| mapRange_comp _ _ _ _ _
 #align finsupp.map_range.add_equiv_trans Finsupp.mapRange.addEquiv_trans
 
-/- warning: finsupp.map_range.add_equiv_symm -> Finsupp.mapRange.addEquiv_symm is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddEquiv.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))), Eq.{max (succ (max u1 u3)) (succ (max u1 u2))} (AddEquiv.{max u1 u3, max u1 u2} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.add.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (AddEquiv.symm.{max u1 u2, max u1 u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.mapRange.addEquiv.{u1, u2, u3} α M N _inst_1 _inst_2 f)) (Finsupp.mapRange.addEquiv.{u1, u3, u2} α N M _inst_2 _inst_1 (AddEquiv.symm.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) f))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u2} N] (f : AddEquiv.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))), Eq.{max (max (succ u1) (succ u3)) (succ u2)} (AddEquiv.{max u2 u1, max u3 u1} (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u2} α N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (AddEquiv.symm.{max u3 u1, max u2 u1} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u2} α N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.mapRange.addEquiv.{u1, u3, u2} α M N _inst_1 _inst_2 f)) (Finsupp.mapRange.addEquiv.{u1, u2, u3} α N M _inst_2 _inst_1 (AddEquiv.symm.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) f))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range.add_equiv_symm Finsupp.mapRange.addEquiv_symmₓ'. -/
 @[simp]
 theorem mapRange.addEquiv_symm (f : M ≃+ N) :
     ((mapRange.addEquiv f).symm : (α →₀ _) ≃+ _) = mapRange.addEquiv f.symm :=
   AddEquiv.ext fun x => rfl
 #align finsupp.map_range.add_equiv_symm Finsupp.mapRange.addEquiv_symm
 
-/- warning: finsupp.map_range.add_equiv_to_add_monoid_hom -> Finsupp.mapRange.addEquiv_toAddMonoidHom is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddEquiv.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))), Eq.{max (succ (max u1 u3)) (succ (max u1 u2))} (AddMonoidHom.{max u1 u2, max u1 u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.addZeroClass.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.addZeroClass.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (AddEquiv.toAddMonoidHom.{max u1 u2, max u1 u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.addZeroClass.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.addZeroClass.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.mapRange.addEquiv.{u1, u2, u3} α M N _inst_1 _inst_2 f)) (Finsupp.mapRange.addMonoidHom.{u1, u2, u3} α M N _inst_1 _inst_2 (AddEquiv.toAddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u2} N] (f : AddEquiv.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))), Eq.{max (max (succ u1) (succ u3)) (succ u2)} (AddMonoidHom.{max u1 u3, max u1 u2} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.addZeroClass.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addZeroClass.{u1, u2} α N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (AddEquiv.toAddMonoidHom.{max u1 u3, max u1 u2} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.addZeroClass.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addZeroClass.{u1, u2} α N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.mapRange.addEquiv.{u1, u3, u2} α M N _inst_1 _inst_2 f)) (Finsupp.mapRange.addMonoidHom.{u1, u3, u2} α M N _inst_1 _inst_2 (AddEquiv.toAddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range.add_equiv_to_add_monoid_hom Finsupp.mapRange.addEquiv_toAddMonoidHomₓ'. -/
 @[simp]
 theorem mapRange.addEquiv_toAddMonoidHom (f : M ≃+ N) :
     (mapRange.addEquiv f : (α →₀ _) ≃+ _).toAddMonoidHom =
@@ -450,12 +297,6 @@ theorem mapRange.addEquiv_toAddMonoidHom (f : M ≃+ N) :
   AddMonoidHom.ext fun _ => rfl
 #align finsupp.map_range.add_equiv_to_add_monoid_hom Finsupp.mapRange.addEquiv_toAddMonoidHom
 
-/- warning: finsupp.map_range.add_equiv_to_equiv -> Finsupp.mapRange.addEquiv_toEquiv is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddEquiv.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))), Eq.{max 1 (max (succ (max u1 u2)) (succ (max u1 u3))) (succ (max u1 u3)) (succ (max u1 u2))} (Equiv.{succ (max u1 u2), succ (max u1 u3)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) (AddEquiv.toEquiv.{max u1 u2, max u1 u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.mapRange.addEquiv.{u1, u2, u3} α M N _inst_1 _inst_2 f)) (Finsupp.mapRange.equiv.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddEquiv.toEquiv.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) f) (AddEquiv.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (AddEquiv.map_zero.{u3, u2} N M (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddEquiv.symm.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) f)))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u2} N] (f : AddEquiv.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))), Eq.{max (max (succ u1) (succ u3)) (succ u2)} (Equiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) (EquivLike.toEquiv.{max (succ u1) (succ u3), max (succ u1) (succ u2), max (max (succ u1) (succ u3)) (succ u2)} (Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (AddEquiv.{max u3 u1, max u2 u1} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u2} α N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (AddEquivClass.toEquivLike.{max (max u1 u3) u2, max u1 u3, max u1 u2} (AddEquiv.{max u3 u1, max u2 u1} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u2} α N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u2} α N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddEquiv.instAddEquivClassAddEquiv.{max u1 u3, max u1 u2} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u2} α N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) (Finsupp.mapRange.addEquiv.{u1, u3, u2} α M N _inst_1 _inst_2 f)) (Finsupp.mapRange.equiv.{u1, u3, u2} α M N (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (EquivLike.toEquiv.{succ u3, succ u2, max (succ u3) (succ u2)} M N (AddEquiv.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (AddEquivClass.toEquivLike.{max u3 u2, u3, u2} (AddEquiv.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddEquiv.instAddEquivClassAddEquiv.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) f) (AddEquiv.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f) (AddEquiv.map_zero.{u3, u2} N M (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddEquiv.symm.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) f)))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range.add_equiv_to_equiv Finsupp.mapRange.addEquiv_toEquivₓ'. -/
 @[simp]
 theorem mapRange.addEquiv_toEquiv (f : M ≃+ N) :
     (mapRange.addEquiv f).toEquiv =
@@ -489,74 +330,32 @@ def equivMapDomain (f : α ≃ β) (l : α →₀ M) : β →₀ M
 #align finsupp.equiv_map_domain Finsupp.equivMapDomain
 -/
 
-/- warning: finsupp.equiv_map_domain_apply -> Finsupp.equivMapDomain_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Equiv.{succ u1, succ u2} α β) (l : Finsupp.{u1, u3} α M _inst_1) (b : β), 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.equivMapDomain.{u1, u2, u3} α β M _inst_1 f l) b) (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) l (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β f) b))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (l : Finsupp.{u3, u1} α M _inst_1) (b : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) 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) (Finsupp.equivMapDomain.{u3, u2, u1} α β M _inst_1 f l) b) (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) l (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} β α) (Equiv.symm.{succ u3, succ u2} α β f) b))
-Case conversion may be inaccurate. Consider using '#align finsupp.equiv_map_domain_apply Finsupp.equivMapDomain_applyₓ'. -/
 @[simp]
 theorem equivMapDomain_apply (f : α ≃ β) (l : α →₀ M) (b : β) :
     equivMapDomain f l b = l (f.symm b) :=
   rfl
 #align finsupp.equiv_map_domain_apply Finsupp.equivMapDomain_apply
 
-/- warning: finsupp.equiv_map_domain_symm_apply -> Finsupp.equivMapDomain_symm_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Equiv.{succ u1, succ u2} α β) (l : Finsupp.{u2, u3} β M _inst_1) (a : α), Eq.{succ u3} M (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.equivMapDomain.{u2, u1, u3} β α M _inst_1 (Equiv.symm.{succ u1, succ u2} α β f) l) a) (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) l (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) f a))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (l : Finsupp.{u2, u1} β M _inst_1) (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) 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) (Finsupp.equivMapDomain.{u2, u3, u1} β α M _inst_1 (Equiv.symm.{succ u3, succ u2} α β f) l) 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) l (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} α β) f a))
-Case conversion may be inaccurate. Consider using '#align finsupp.equiv_map_domain_symm_apply Finsupp.equivMapDomain_symm_applyₓ'. -/
 theorem equivMapDomain_symm_apply (f : α ≃ β) (l : β →₀ M) (a : α) :
     equivMapDomain f.symm l a = l (f a) :=
   rfl
 #align finsupp.equiv_map_domain_symm_apply Finsupp.equivMapDomain_symm_apply
 
-/- warning: finsupp.equiv_map_domain_refl -> Finsupp.equivMapDomain_refl is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (l : Finsupp.{u1, u2} α M _inst_1), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.equivMapDomain.{u1, u1, u2} α α M _inst_1 (Equiv.refl.{succ u1} α) l) l
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (l : Finsupp.{u2, u1} α M _inst_1), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.equivMapDomain.{u2, u2, u1} α α M _inst_1 (Equiv.refl.{succ u2} α) l) l
-Case conversion may be inaccurate. Consider using '#align finsupp.equiv_map_domain_refl Finsupp.equivMapDomain_reflₓ'. -/
 @[simp]
 theorem equivMapDomain_refl (l : α →₀ M) : equivMapDomain (Equiv.refl _) l = l := by ext x <;> rfl
 #align finsupp.equiv_map_domain_refl Finsupp.equivMapDomain_refl
 
-/- warning: finsupp.equiv_map_domain_refl' -> Finsupp.equivMapDomain_refl' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M], Eq.{max (succ u1) (succ u2)} ((Finsupp.{u1, u2} α M _inst_1) -> (Finsupp.{u1, u2} α M _inst_1)) (Finsupp.equivMapDomain.{u1, u1, u2} α α M _inst_1 (Equiv.refl.{succ u1} α)) (id.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _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)} ((Finsupp.{u2, u1} α M _inst_1) -> (Finsupp.{u2, u1} α M _inst_1)) (Finsupp.equivMapDomain.{u2, u2, u1} α α M _inst_1 (Equiv.refl.{succ u2} α)) (id.{max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1))
-Case conversion may be inaccurate. Consider using '#align finsupp.equiv_map_domain_refl' Finsupp.equivMapDomain_refl'ₓ'. -/
 theorem equivMapDomain_refl' : equivMapDomain (Equiv.refl _) = @id (α →₀ M) := by ext x <;> rfl
 #align finsupp.equiv_map_domain_refl' Finsupp.equivMapDomain_refl'
 
-/- warning: finsupp.equiv_map_domain_trans -> Finsupp.equivMapDomain_trans is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {M : Type.{u4}} [_inst_1 : Zero.{u4} M] (f : Equiv.{succ u1, succ u2} α β) (g : Equiv.{succ u2, succ u3} β γ) (l : Finsupp.{u1, u4} α M _inst_1), Eq.{max (succ u3) (succ u4)} (Finsupp.{u3, u4} γ M _inst_1) (Finsupp.equivMapDomain.{u1, u3, u4} α γ M _inst_1 (Equiv.trans.{succ u1, succ u2, succ u3} α β γ f g) l) (Finsupp.equivMapDomain.{u2, u3, u4} β γ M _inst_1 g (Finsupp.equivMapDomain.{u1, u2, u4} α β M _inst_1 f l))
-but is expected to have type
-  forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u4, succ u3} α β) (g : Equiv.{succ u3, succ u2} β γ) (l : Finsupp.{u4, u1} α M _inst_1), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} γ M _inst_1) (Finsupp.equivMapDomain.{u4, u2, u1} α γ M _inst_1 (Equiv.trans.{succ u4, succ u3, succ u2} α β γ f g) l) (Finsupp.equivMapDomain.{u3, u2, u1} β γ M _inst_1 g (Finsupp.equivMapDomain.{u4, u3, u1} α β M _inst_1 f l))
-Case conversion may be inaccurate. Consider using '#align finsupp.equiv_map_domain_trans Finsupp.equivMapDomain_transₓ'. -/
 theorem equivMapDomain_trans (f : α ≃ β) (g : β ≃ γ) (l : α →₀ M) :
     equivMapDomain (f.trans g) l = equivMapDomain g (equivMapDomain f l) := by ext x <;> rfl
 #align finsupp.equiv_map_domain_trans Finsupp.equivMapDomain_trans
 
-/- warning: finsupp.equiv_map_domain_trans' -> Finsupp.equivMapDomain_trans' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {M : Type.{u4}} [_inst_1 : Zero.{u4} M] (f : Equiv.{succ u1, succ u2} α β) (g : Equiv.{succ u2, succ u3} β γ), Eq.{max (max (succ u1) (succ u4)) (succ u3) (succ u4)} ((Finsupp.{u1, u4} α M _inst_1) -> (Finsupp.{u3, u4} γ M _inst_1)) (Finsupp.equivMapDomain.{u1, u3, u4} α γ M _inst_1 (Equiv.trans.{succ u1, succ u2, succ u3} α β γ f g)) (Function.comp.{max (succ u1) (succ u4), max (succ u2) (succ u4), max (succ u3) (succ u4)} (Finsupp.{u1, u4} α M _inst_1) (Finsupp.{u2, u4} β M _inst_1) (Finsupp.{u3, u4} γ M _inst_1) (Finsupp.equivMapDomain.{u2, u3, u4} β γ M _inst_1 g) (Finsupp.equivMapDomain.{u1, u2, u4} α β M _inst_1 f))
-but is expected to have type
-  forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u4, succ u3} α β) (g : Equiv.{succ u3, succ u2} β γ), Eq.{max (max (succ u4) (succ u2)) (succ u1)} ((Finsupp.{u4, u1} α M _inst_1) -> (Finsupp.{u2, u1} γ M _inst_1)) (Finsupp.equivMapDomain.{u4, u2, u1} α γ M _inst_1 (Equiv.trans.{succ u4, succ u3, succ u2} α β γ f g)) (Function.comp.{max (succ u1) (succ u4), max (succ u1) (succ u3), max (succ u1) (succ u2)} (Finsupp.{u4, u1} α M _inst_1) (Finsupp.{u3, u1} β M _inst_1) (Finsupp.{u2, u1} γ M _inst_1) (Finsupp.equivMapDomain.{u3, u2, u1} β γ M _inst_1 g) (Finsupp.equivMapDomain.{u4, u3, u1} α β M _inst_1 f))
-Case conversion may be inaccurate. Consider using '#align finsupp.equiv_map_domain_trans' Finsupp.equivMapDomain_trans'ₓ'. -/
 theorem equivMapDomain_trans' (f : α ≃ β) (g : β ≃ γ) :
     @equivMapDomain _ _ M _ (f.trans g) = equivMapDomain g ∘ equivMapDomain f := by ext x <;> rfl
 #align finsupp.equiv_map_domain_trans' Finsupp.equivMapDomain_trans'
 
-/- warning: finsupp.equiv_map_domain_single -> Finsupp.equivMapDomain_single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Equiv.{succ u1, succ u2} α β) (a : α) (b : M), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.equivMapDomain.{u1, u2, u3} α β M _inst_1 f (Finsupp.single.{u1, u3} α M _inst_1 a b)) (Finsupp.single.{u2, u3} β M _inst_1 (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) f a) b)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (a : α) (b : M), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} β M _inst_1) (Finsupp.equivMapDomain.{u3, u2, u1} α β M _inst_1 f (Finsupp.single.{u3, u1} α M _inst_1 a b)) (Finsupp.single.{u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) a) M _inst_1 (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} α β) f a) b)
-Case conversion may be inaccurate. Consider using '#align finsupp.equiv_map_domain_single Finsupp.equivMapDomain_singleₓ'. -/
 @[simp]
 theorem equivMapDomain_single (f : α ≃ β) (a : α) (b : M) :
     equivMapDomain f (single a b) = single (f a) b := by
@@ -565,12 +364,6 @@ theorem equivMapDomain_single (f : α ≃ β) (a : α) (b : M) :
     simp only [single_apply, Equiv.apply_eq_iff_eq_symm_apply, equiv_map_domain_apply]
 #align finsupp.equiv_map_domain_single Finsupp.equivMapDomain_single
 
-/- warning: finsupp.equiv_map_domain_zero -> Finsupp.equivMapDomain_zero is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] {f : Equiv.{succ u1, succ u2} α β}, Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.equivMapDomain.{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 : Equiv.{succ u3, succ u2} α β}, Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} β M _inst_1) (Finsupp.equivMapDomain.{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.equiv_map_domain_zero Finsupp.equivMapDomain_zeroₓ'. -/
 @[simp]
 theorem equivMapDomain_zero {f : α ≃ β} : equivMapDomain f (0 : α →₀ M) = (0 : β →₀ M) := by
   ext x <;> simp only [equiv_map_domain_apply, coe_zero, Pi.zero_apply]
@@ -588,23 +381,11 @@ def equivCongrLeft (f : α ≃ β) : (α →₀ M) ≃ (β →₀ M) := by
 #align finsupp.equiv_congr_left Finsupp.equivCongrLeft
 -/
 
-/- warning: finsupp.equiv_congr_left_apply -> Finsupp.equivCongrLeft_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Equiv.{succ u1, succ u2} α β) (l : Finsupp.{u1, u3} α M _inst_1), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (coeFn.{max 1 (max (max (succ u1) (succ u3)) (succ u2) (succ u3)) (max (succ u2) (succ u3)) (succ u1) (succ u3), max (max (succ u1) (succ u3)) (succ u2) (succ u3)} (Equiv.{max (succ u1) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u2, u3} β M _inst_1)) (fun (_x : Equiv.{max (succ u1) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u2, u3} β M _inst_1)) => (Finsupp.{u1, u3} α M _inst_1) -> (Finsupp.{u2, u3} β M _inst_1)) (Equiv.hasCoeToFun.{max (succ u1) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u2, u3} β M _inst_1)) (Finsupp.equivCongrLeft.{u1, u2, u3} α β M _inst_1 f) l) (Finsupp.equivMapDomain.{u1, u2, u3} α β M _inst_1 f l)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (l : Finsupp.{u3, u1} α M _inst_1), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Finsupp.{u3, u1} α M _inst_1) => Finsupp.{u2, u1} β M _inst_1) l) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u2)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.{u2, u1} β M _inst_1)) (Finsupp.{u3, u1} α M _inst_1) (fun (_x : Finsupp.{u3, u1} α M _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Finsupp.{u3, u1} α M _inst_1) => Finsupp.{u2, u1} β M _inst_1) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.{u2, u1} β M _inst_1)) (Finsupp.equivCongrLeft.{u3, u2, u1} α β M _inst_1 f) l) (Finsupp.equivMapDomain.{u3, u2, u1} α β M _inst_1 f l)
-Case conversion may be inaccurate. Consider using '#align finsupp.equiv_congr_left_apply Finsupp.equivCongrLeft_applyₓ'. -/
 @[simp]
 theorem equivCongrLeft_apply (f : α ≃ β) (l : α →₀ M) : equivCongrLeft f l = equivMapDomain f l :=
   rfl
 #align finsupp.equiv_congr_left_apply Finsupp.equivCongrLeft_apply
 
-/- warning: finsupp.equiv_congr_left_symm -> Finsupp.equivCongrLeft_symm is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Equiv.{succ u1, succ u2} α β), Eq.{max 1 (max (max (succ u2) (succ u3)) (succ u1) (succ u3)) (max (succ u1) (succ u3)) (succ u2) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.{u1, u3} α M _inst_1)) (Equiv.symm.{max (succ u1) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u2, u3} β M _inst_1) (Finsupp.equivCongrLeft.{u1, u2, u3} α β M _inst_1 f)) (Finsupp.equivCongrLeft.{u2, u1, u3} β α M _inst_1 (Equiv.symm.{succ u1, succ u2} α β f))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β), Eq.{max (max (succ u3) (succ u2)) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u3) (succ u1)} (Finsupp.{u2, u1} β M _inst_1) (Finsupp.{u3, u1} α M _inst_1)) (Equiv.symm.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.{u2, u1} β M _inst_1) (Finsupp.equivCongrLeft.{u3, u2, u1} α β M _inst_1 f)) (Finsupp.equivCongrLeft.{u2, u3, u1} β α M _inst_1 (Equiv.symm.{succ u3, succ u2} α β f))
-Case conversion may be inaccurate. Consider using '#align finsupp.equiv_congr_left_symm Finsupp.equivCongrLeft_symmₓ'. -/
 @[simp]
 theorem equivCongrLeft_symm (f : α ≃ β) :
     (@equivCongrLeft _ _ M _ f).symm = equivCongrLeft f.symm :=
@@ -621,24 +402,12 @@ variable [Zero M] (f : α →₀ M)
 
 namespace Nat
 
-/- warning: nat.cast_finsupp_prod -> Nat.cast_finsupp_prod is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : CommSemiring.{u3} R] (g : α -> M -> Nat), Eq.{succ u3} R ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u3} Nat R (CoeTCₓ.coe.{1, succ u3} Nat R (Nat.castCoe.{u3} R (AddMonoidWithOne.toNatCast.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)))))))) (Finsupp.prod.{u1, u2, 0} α M Nat _inst_1 Nat.commMonoid f g)) (Finsupp.prod.{u1, u2, u3} α M R _inst_1 (CommSemiring.toCommMonoid.{u3} R _inst_2) f (fun (a : α) (b : M) => (fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u3} Nat R (CoeTCₓ.coe.{1, succ u3} Nat R (Nat.castCoe.{u3} R (AddMonoidWithOne.toNatCast.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)))))))) (g a b)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} {R : Type.{u3}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) [_inst_2 : CommSemiring.{u3} R] (g : α -> M -> Nat), Eq.{succ u3} R (Nat.cast.{u3} R (Semiring.toNatCast.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Finsupp.prod.{u2, u1, 0} α M Nat _inst_1 Nat.commMonoid f g)) (Finsupp.prod.{u2, u1, u3} α M R _inst_1 (CommSemiring.toCommMonoid.{u3} R _inst_2) f (fun (a : α) (b : M) => Nat.cast.{u3} R (Semiring.toNatCast.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (g a b)))
-Case conversion may be inaccurate. Consider using '#align nat.cast_finsupp_prod Nat.cast_finsupp_prodₓ'. -/
 @[simp, norm_cast]
 theorem cast_finsupp_prod [CommSemiring R] (g : α → M → ℕ) :
     (↑(f.Prod g) : R) = f.Prod fun a b => ↑(g a b) :=
   Nat.cast_prod _ _
 #align nat.cast_finsupp_prod Nat.cast_finsupp_prod
 
-/- warning: nat.cast_finsupp_sum -> Nat.cast_finsupp_sum is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : CommSemiring.{u3} R] (g : α -> M -> Nat), Eq.{succ u3} R ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u3} Nat R (CoeTCₓ.coe.{1, succ u3} Nat R (Nat.castCoe.{u3} R (AddMonoidWithOne.toNatCast.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)))))))) (Finsupp.sum.{u1, u2, 0} α M Nat _inst_1 Nat.addCommMonoid f g)) (Finsupp.sum.{u1, u2, u3} α M R _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)))) f (fun (a : α) (b : M) => (fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u3} Nat R (CoeTCₓ.coe.{1, succ u3} Nat R (Nat.castCoe.{u3} R (AddMonoidWithOne.toNatCast.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)))))))) (g a b)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} {R : Type.{u3}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) [_inst_2 : CommSemiring.{u3} R] (g : α -> M -> Nat), Eq.{succ u3} R (Nat.cast.{u3} R (Semiring.toNatCast.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Finsupp.sum.{u2, u1, 0} α M Nat _inst_1 Nat.addCommMonoid f g)) (Finsupp.sum.{u2, u1, u3} α M R _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)))) f (fun (a : α) (b : M) => Nat.cast.{u3} R (Semiring.toNatCast.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (g a b)))
-Case conversion may be inaccurate. Consider using '#align nat.cast_finsupp_sum Nat.cast_finsupp_sumₓ'. -/
 @[simp, norm_cast]
 theorem cast_finsupp_sum [CommSemiring R] (g : α → M → ℕ) :
     (↑(f.Sum g) : R) = f.Sum fun a b => ↑(g a b) :=
@@ -649,24 +418,12 @@ end Nat
 
 namespace Int
 
-/- warning: int.cast_finsupp_prod -> Int.cast_finsupp_prod is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : CommRing.{u3} R] (g : α -> M -> Int), Eq.{succ u3} R ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Int R (HasLiftT.mk.{1, succ u3} Int R (CoeTCₓ.coe.{1, succ u3} Int R (Int.castCoe.{u3} R (AddGroupWithOne.toHasIntCast.{u3} R (AddCommGroupWithOne.toAddGroupWithOne.{u3} R (Ring.toAddCommGroupWithOne.{u3} R (CommRing.toRing.{u3} R _inst_2))))))) (Finsupp.prod.{u1, u2, 0} α M Int _inst_1 Int.commMonoid f g)) (Finsupp.prod.{u1, u2, u3} α M R _inst_1 (CommRing.toCommMonoid.{u3} R _inst_2) f (fun (a : α) (b : M) => (fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Int R (HasLiftT.mk.{1, succ u3} Int R (CoeTCₓ.coe.{1, succ u3} Int R (Int.castCoe.{u3} R (AddGroupWithOne.toHasIntCast.{u3} R (AddCommGroupWithOne.toAddGroupWithOne.{u3} R (Ring.toAddCommGroupWithOne.{u3} R (CommRing.toRing.{u3} R _inst_2))))))) (g a b)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} {R : Type.{u3}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) [_inst_2 : CommRing.{u3} R] (g : α -> M -> Int), Eq.{succ u3} R (Int.cast.{u3} R (Ring.toIntCast.{u3} R (CommRing.toRing.{u3} R _inst_2)) (Finsupp.prod.{u2, u1, 0} α M Int _inst_1 Int.instCommMonoidInt f g)) (Finsupp.prod.{u2, u1, u3} α M R _inst_1 (CommRing.toCommMonoid.{u3} R _inst_2) f (fun (a : α) (b : M) => Int.cast.{u3} R (Ring.toIntCast.{u3} R (CommRing.toRing.{u3} R _inst_2)) (g a b)))
-Case conversion may be inaccurate. Consider using '#align int.cast_finsupp_prod Int.cast_finsupp_prodₓ'. -/
 @[simp, norm_cast]
 theorem cast_finsupp_prod [CommRing R] (g : α → M → ℤ) :
     (↑(f.Prod g) : R) = f.Prod fun a b => ↑(g a b) :=
   Int.cast_prod _ _
 #align int.cast_finsupp_prod Int.cast_finsupp_prod
 
-/- warning: int.cast_finsupp_sum -> Int.cast_finsupp_sum is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : CommRing.{u3} R] (g : α -> M -> Int), Eq.{succ u3} R ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Int R (HasLiftT.mk.{1, succ u3} Int R (CoeTCₓ.coe.{1, succ u3} Int R (Int.castCoe.{u3} R (AddGroupWithOne.toHasIntCast.{u3} R (AddCommGroupWithOne.toAddGroupWithOne.{u3} R (Ring.toAddCommGroupWithOne.{u3} R (CommRing.toRing.{u3} R _inst_2))))))) (Finsupp.sum.{u1, u2, 0} α M Int _inst_1 Int.addCommMonoid f g)) (Finsupp.sum.{u1, u2, u3} α M R _inst_1 (AddCommGroup.toAddCommMonoid.{u3} R (NonUnitalNonAssocRing.toAddCommGroup.{u3} R (NonAssocRing.toNonUnitalNonAssocRing.{u3} R (Ring.toNonAssocRing.{u3} R (CommRing.toRing.{u3} R _inst_2))))) f (fun (a : α) (b : M) => (fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Int R (HasLiftT.mk.{1, succ u3} Int R (CoeTCₓ.coe.{1, succ u3} Int R (Int.castCoe.{u3} R (AddGroupWithOne.toHasIntCast.{u3} R (AddCommGroupWithOne.toAddGroupWithOne.{u3} R (Ring.toAddCommGroupWithOne.{u3} R (CommRing.toRing.{u3} R _inst_2))))))) (g a b)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} {R : Type.{u3}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) [_inst_2 : CommRing.{u3} R] (g : α -> M -> Int), Eq.{succ u3} R (Int.cast.{u3} R (Ring.toIntCast.{u3} R (CommRing.toRing.{u3} R _inst_2)) (Finsupp.sum.{u2, u1, 0} α M Int _inst_1 Int.instAddCommMonoidInt f g)) (Finsupp.sum.{u2, u1, u3} α M R _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} R (NonAssocRing.toNonUnitalNonAssocRing.{u3} R (Ring.toNonAssocRing.{u3} R (CommRing.toRing.{u3} R _inst_2))))) f (fun (a : α) (b : M) => Int.cast.{u3} R (Ring.toIntCast.{u3} R (CommRing.toRing.{u3} R _inst_2)) (g a b)))
-Case conversion may be inaccurate. Consider using '#align int.cast_finsupp_sum Int.cast_finsupp_sumₓ'. -/
 @[simp, norm_cast]
 theorem cast_finsupp_sum [CommRing R] (g : α → M → ℤ) :
     (↑(f.Sum g) : R) = f.Sum fun a b => ↑(g a b) :=
@@ -677,24 +434,12 @@ end Int
 
 namespace Rat
 
-/- warning: rat.cast_finsupp_sum -> Rat.cast_finsupp_sum is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : DivisionRing.{u3} R] [_inst_3 : CharZero.{u3} R (AddGroupWithOne.toAddMonoidWithOne.{u3} R (AddCommGroupWithOne.toAddGroupWithOne.{u3} R (Ring.toAddCommGroupWithOne.{u3} R (DivisionRing.toRing.{u3} R _inst_2))))] (g : α -> M -> Rat), Eq.{succ u3} R ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Rat R (HasLiftT.mk.{1, succ u3} Rat R (CoeTCₓ.coe.{1, succ u3} Rat R (Rat.castCoe.{u3} R (DivisionRing.toHasRatCast.{u3} R _inst_2)))) (Finsupp.sum.{u1, u2, 0} α M Rat _inst_1 Rat.addCommMonoid f g)) (Finsupp.sum.{u1, u2, u3} α M R _inst_1 (AddCommGroup.toAddCommMonoid.{u3} R (NonUnitalNonAssocRing.toAddCommGroup.{u3} R (NonAssocRing.toNonUnitalNonAssocRing.{u3} R (Ring.toNonAssocRing.{u3} R (DivisionRing.toRing.{u3} R _inst_2))))) f (fun (a : α) (b : M) => (fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Rat R (HasLiftT.mk.{1, succ u3} Rat R (CoeTCₓ.coe.{1, succ u3} Rat R (Rat.castCoe.{u3} R (DivisionRing.toHasRatCast.{u3} R _inst_2)))) (g a b)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} {R : Type.{u3}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) [_inst_2 : DivisionRing.{u3} R] [_inst_3 : CharZero.{u3} R (AddGroupWithOne.toAddMonoidWithOne.{u3} R (Ring.toAddGroupWithOne.{u3} R (DivisionRing.toRing.{u3} R _inst_2)))] (g : α -> M -> Rat), Eq.{succ u3} R (Rat.cast.{u3} R (DivisionRing.toRatCast.{u3} R _inst_2) (Finsupp.sum.{u2, u1, 0} α M Rat _inst_1 Rat.addCommMonoid f g)) (Finsupp.sum.{u2, u1, u3} α M R _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} R (NonAssocRing.toNonUnitalNonAssocRing.{u3} R (Ring.toNonAssocRing.{u3} R (DivisionRing.toRing.{u3} R _inst_2))))) f (fun (a : α) (b : M) => Rat.cast.{u3} R (DivisionRing.toRatCast.{u3} R _inst_2) (g a b)))
-Case conversion may be inaccurate. Consider using '#align rat.cast_finsupp_sum Rat.cast_finsupp_sumₓ'. -/
 @[simp, norm_cast]
 theorem cast_finsupp_sum [DivisionRing R] [CharZero R] (g : α → M → ℚ) :
     (↑(f.Sum g) : R) = f.Sum fun a b => g a b :=
   cast_sum _ _
 #align rat.cast_finsupp_sum Rat.cast_finsupp_sum
 
-/- warning: rat.cast_finsupp_prod -> Rat.cast_finsupp_prod is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : Field.{u3} R] [_inst_3 : CharZero.{u3} R (AddGroupWithOne.toAddMonoidWithOne.{u3} R (AddCommGroupWithOne.toAddGroupWithOne.{u3} R (Ring.toAddCommGroupWithOne.{u3} R (DivisionRing.toRing.{u3} R (Field.toDivisionRing.{u3} R _inst_2)))))] (g : α -> M -> Rat), Eq.{succ u3} R ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Rat R (HasLiftT.mk.{1, succ u3} Rat R (CoeTCₓ.coe.{1, succ u3} Rat R (Rat.castCoe.{u3} R (DivisionRing.toHasRatCast.{u3} R (Field.toDivisionRing.{u3} R _inst_2))))) (Finsupp.prod.{u1, u2, 0} α M Rat _inst_1 Rat.commMonoid f g)) (Finsupp.prod.{u1, u2, u3} α M R _inst_1 (CommRing.toCommMonoid.{u3} R (Field.toCommRing.{u3} R _inst_2)) f (fun (a : α) (b : M) => (fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Rat R (HasLiftT.mk.{1, succ u3} Rat R (CoeTCₓ.coe.{1, succ u3} Rat R (Rat.castCoe.{u3} R (DivisionRing.toHasRatCast.{u3} R (Field.toDivisionRing.{u3} R _inst_2))))) (g a b)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} {R : Type.{u3}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) [_inst_2 : Field.{u3} R] [_inst_3 : CharZero.{u3} R (AddGroupWithOne.toAddMonoidWithOne.{u3} R (Ring.toAddGroupWithOne.{u3} R (DivisionRing.toRing.{u3} R (Field.toDivisionRing.{u3} R _inst_2))))] (g : α -> M -> Rat), Eq.{succ u3} R (Rat.cast.{u3} R (Field.toRatCast.{u3} R _inst_2) (Finsupp.prod.{u2, u1, 0} α M Rat _inst_1 Rat.commMonoid f g)) (Finsupp.prod.{u2, u1, u3} α M R _inst_1 (CommRing.toCommMonoid.{u3} R (Field.toCommRing.{u3} R _inst_2)) f (fun (a : α) (b : M) => Rat.cast.{u3} R (Field.toRatCast.{u3} R _inst_2) (g a b)))
-Case conversion may be inaccurate. Consider using '#align rat.cast_finsupp_prod Rat.cast_finsupp_prodₓ'. -/
 @[simp, norm_cast]
 theorem cast_finsupp_prod [Field R] [CharZero R] (g : α → M → ℚ) :
     (↑(f.Prod g) : R) = f.Prod fun a b => g a b :=
@@ -714,12 +459,6 @@ section MapDomain
 
 variable [AddCommMonoid M] {v v₁ v₂ : α →₀ M}
 
-/- warning: finsupp.map_domain -> Finsupp.mapDomain is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], (α -> β) -> (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) -> (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], (α -> β) -> (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) -> (Finsupp.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain Finsupp.mapDomainₓ'. -/
 /-- Given `f : α → β` and `v : α →₀ M`, `map_domain f v : β →₀ M`
   is the finitely supported function whose value at `a : β` is the sum
   of `v x` over all `x` such that `f x = a`. -/
@@ -727,12 +466,6 @@ def mapDomain (f : α → β) (v : α →₀ M) : β →₀ M :=
   v.Sum fun a => single (f a)
 #align finsupp.map_domain Finsupp.mapDomain
 
-/- warning: finsupp.map_domain_apply -> Finsupp.mapDomain_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {f : α -> β}, (Function.Injective.{succ u1, succ u2} α β f) -> (forall (x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (a : α), Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => β -> M) (Finsupp.coeFun.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f x) (f a)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => α -> M) (Finsupp.coeFun.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) x a))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] {f : α -> β}, (Function.Injective.{succ u3, succ u2} α β f) -> (forall (x : Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) (f a)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.mapDomain.{u3, u2, u1} α β M _inst_1 f x) (f a)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) x a))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_apply Finsupp.mapDomain_applyₓ'. -/
 theorem mapDomain_apply {f : α → β} (hf : Function.Injective f) (x : α →₀ M) (a : α) :
     mapDomain f x (f a) = x a :=
   by
@@ -741,35 +474,17 @@ theorem mapDomain_apply {f : α → β} (hf : Function.Injective f) (x : α →
   · intro h; rw [not_mem_support_iff.1 h, single_zero, zero_apply]
 #align finsupp.map_domain_apply Finsupp.mapDomain_apply
 
-/- warning: finsupp.map_domain_notin_range -> Finsupp.mapDomain_notin_range is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {f : α -> β} (x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (a : β), (Not (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) a (Set.range.{u2, succ u1} β α f))) -> (Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => β -> M) (Finsupp.coeFun.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f x) a) (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] {f : α -> β} (x : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (a : β), (Not (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) a (Set.range.{u1, succ u3} β α f))) -> (Eq.{succ u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u1, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.mapDomain.{u3, u1, u2} α β M _inst_1 f x) a) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) a) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) a) (AddMonoid.toZero.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) a) (AddCommMonoid.toAddMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) a) _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_notin_range Finsupp.mapDomain_notin_rangeₓ'. -/
 theorem mapDomain_notin_range {f : α → β} (x : α →₀ M) (a : β) (h : a ∉ Set.range f) :
     mapDomain f x a = 0 := by
   rw [map_domain, sum_apply, Sum]
   exact Finset.sum_eq_zero fun a' h' => single_eq_of_ne fun eq => h <| Eq ▸ Set.mem_range_self _
 #align finsupp.map_domain_notin_range Finsupp.mapDomain_notin_range
 
-/- warning: finsupp.map_domain_id -> Finsupp.mapDomain_id is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] {v : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.mapDomain.{u1, u1, u2} α α M _inst_1 (id.{succ u1} α) v) v
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] {v : Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))}, Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.mapDomain.{u2, u2, u1} α α M _inst_1 (id.{succ u2} α) v) v
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_id Finsupp.mapDomain_idₓ'. -/
 @[simp]
 theorem mapDomain_id : mapDomain id v = v :=
   sum_single _
 #align finsupp.map_domain_id Finsupp.mapDomain_id
 
-/- warning: finsupp.map_domain_comp -> Finsupp.mapDomain_comp is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {M : Type.{u4}} [_inst_1 : AddCommMonoid.{u4} M] {v : Finsupp.{u1, u4} α M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))} {f : α -> β} {g : β -> γ}, Eq.{max (succ u3) (succ u4)} (Finsupp.{u3, u4} γ M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.mapDomain.{u1, u3, u4} α γ M _inst_1 (Function.comp.{succ u1, succ u2, succ u3} α β γ g f) v) (Finsupp.mapDomain.{u2, u3, u4} β γ M _inst_1 g (Finsupp.mapDomain.{u1, u2, u4} α β M _inst_1 f v))
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} {γ : Type.{u4}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {v : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))} {f : α -> β} {g : β -> γ}, Eq.{max (succ u4) (succ u3)} (Finsupp.{u4, u3} γ M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.mapDomain.{u2, u4, u3} α γ M _inst_1 (Function.comp.{succ u2, succ u1, succ u4} α β γ g f) v) (Finsupp.mapDomain.{u1, u4, u3} β γ M _inst_1 g (Finsupp.mapDomain.{u2, u1, u3} α β M _inst_1 f v))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_comp Finsupp.mapDomain_compₓ'. -/
 theorem mapDomain_comp {f : α → β} {g : β → γ} :
     mapDomain (g ∘ f) v = mapDomain g (mapDomain f v) :=
   by
@@ -780,55 +495,25 @@ theorem mapDomain_comp {f : α → β} {g : β → γ} :
   · exact single_zero _
 #align finsupp.map_domain_comp Finsupp.mapDomain_comp
 
-/- warning: finsupp.map_domain_single -> Finsupp.mapDomain_single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {f : α -> β} {a : α} {b : M}, Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f (Finsupp.single.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) a b)) (Finsupp.single.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (f a) b)
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u3}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] {f : α -> β} {a : α} {b : M}, Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.mapDomain.{u1, u3, u2} α β M _inst_1 f (Finsupp.single.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) a b)) (Finsupp.single.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (f a) b)
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_single Finsupp.mapDomain_singleₓ'. -/
 @[simp]
 theorem mapDomain_single {f : α → β} {a : α} {b : M} : mapDomain f (single a b) = single (f a) b :=
   sum_single_index <| single_zero _
 #align finsupp.map_domain_single Finsupp.mapDomain_single
 
-/- warning: finsupp.map_domain_zero -> Finsupp.mapDomain_zero is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {f : α -> β}, Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f (OfNat.ofNat.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (OfNat.mk.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (Zero.zero.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))))) (OfNat.ofNat.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (OfNat.mk.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (Zero.zero.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u3}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] {f : α -> β}, Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.mapDomain.{u1, u3, u2} α β M _inst_1 f (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) 0 (Zero.toOfNat0.{max u1 u2} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))))) (OfNat.ofNat.{max u3 u2} (Finsupp.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) 0 (Zero.toOfNat0.{max u3 u2} (Finsupp.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.zero.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_zero Finsupp.mapDomain_zeroₓ'. -/
 @[simp]
 theorem mapDomain_zero {f : α → β} : mapDomain f (0 : α →₀ M) = (0 : β →₀ M) :=
   sum_zero_index
 #align finsupp.map_domain_zero Finsupp.mapDomain_zero
 
-/- warning: finsupp.map_domain_congr -> Finsupp.mapDomain_congr is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {v : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))} {f : α -> β} {g : α -> β}, (forall (x : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) x (Finsupp.support.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) v)) -> (Eq.{succ u2} β (f x) (g x))) -> (Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f v) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 g v))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] {v : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))} {f : α -> β} {g : α -> β}, (forall (x : α), (Membership.mem.{u3, u3} α (Finset.{u3} α) (Finset.instMembershipFinset.{u3} α) x (Finsupp.support.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) v)) -> (Eq.{succ u1} β (f x) (g x))) -> (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.mapDomain.{u3, u1, u2} α β M _inst_1 f v) (Finsupp.mapDomain.{u3, u1, u2} α β M _inst_1 g v))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_congr Finsupp.mapDomain_congrₓ'. -/
 theorem mapDomain_congr {f g : α → β} (h : ∀ x ∈ v.support, f x = g x) :
     v.mapDomain f = v.mapDomain g :=
   Finset.sum_congr rfl fun _ H => by simp only [h _ H]
 #align finsupp.map_domain_congr Finsupp.mapDomain_congr
 
-/- warning: finsupp.map_domain_add -> Finsupp.mapDomain_add is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {v₁ : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))} {v₂ : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))} {f : α -> β}, Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f (HAdd.hAdd.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (instHAdd.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) v₁ v₂)) (HAdd.hAdd.{max u2 u3, max u2 u3, max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (instHAdd.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.add.{u2, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f v₁) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f v₂))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u3}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] {v₁ : Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))} {v₂ : Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))} {f : α -> β}, Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.mapDomain.{u1, u3, u2} α β M _inst_1 f (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)))) v₁ v₂)) (HAdd.hAdd.{max u3 u2, max u3 u2, max u3 u2} (Finsupp.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (instHAdd.{max u3 u2} (Finsupp.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u3, u2} β M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.mapDomain.{u1, u3, u2} α β M _inst_1 f v₁) (Finsupp.mapDomain.{u1, u3, u2} α β M _inst_1 f v₂))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_add Finsupp.mapDomain_addₓ'. -/
 theorem mapDomain_add {f : α → β} : mapDomain f (v₁ + v₂) = mapDomain f v₁ + mapDomain f v₂ :=
   sum_add_index' (fun _ => single_zero _) fun _ => single_add _
 #align finsupp.map_domain_add Finsupp.mapDomain_add
 
-/- warning: finsupp.map_domain_equiv_apply -> Finsupp.mapDomain_equiv_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {f : Equiv.{succ u1, succ u2} α β} (x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (a : β), Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => β -> M) (Finsupp.coeFun.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) f) x) a) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => α -> M) (Finsupp.coeFun.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) x (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β f) a))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] {f : Equiv.{succ u3, succ u2} α β} (x : Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{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 (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.mapDomain.{u3, u2, u1} α β M _inst_1 (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} α β) f) x) a) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) x (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} β α) (Equiv.symm.{succ u3, succ u2} α β f) a))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_equiv_apply Finsupp.mapDomain_equiv_applyₓ'. -/
 @[simp]
 theorem mapDomain_equiv_apply {f : α ≃ β} (x : α →₀ M) (a : β) : mapDomain f x a = x (f.symm a) :=
   by
@@ -836,12 +521,6 @@ theorem mapDomain_equiv_apply {f : α ≃ β} (x : α →₀ M) (a : β) : mapDo
   exact map_domain_apply f.injective _ _
 #align finsupp.map_domain_equiv_apply Finsupp.mapDomain_equiv_apply
 
-/- warning: finsupp.map_domain.add_monoid_hom -> Finsupp.mapDomain.addMonoidHom is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], (α -> β) -> (AddMonoidHom.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.addZeroClass.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addZeroClass.{u2, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], (α -> β) -> (AddMonoidHom.{max u3 u1, max u3 u2} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addZeroClass.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addZeroClass.{u2, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain.add_monoid_hom Finsupp.mapDomain.addMonoidHomₓ'. -/
 /-- `finsupp.map_domain` is an `add_monoid_hom`. -/
 @[simps]
 def mapDomain.addMonoidHom (f : α → β) : (α →₀ M) →+ β →₀ M
@@ -851,57 +530,27 @@ def mapDomain.addMonoidHom (f : α → β) : (α →₀ M) →+ β →₀ M
   map_add' _ _ := mapDomain_add
 #align finsupp.map_domain.add_monoid_hom Finsupp.mapDomain.addMonoidHom
 
-/- warning: finsupp.map_domain.add_monoid_hom_id -> Finsupp.mapDomain.addMonoidHom_id is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M], Eq.{succ (max u1 u2)} (AddMonoidHom.{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.addZeroClass.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.addZeroClass.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.mapDomain.addMonoidHom.{u1, u1, u2} α α M _inst_1 (id.{succ u1} α)) (AddMonoidHom.id.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.addZeroClass.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M], Eq.{max (succ u2) (succ u1)} (AddMonoidHom.{max u1 u2, max u1 u2} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.addZeroClass.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.addZeroClass.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)))) (Finsupp.mapDomain.addMonoidHom.{u2, u2, u1} α α M _inst_1 (id.{succ u2} α)) (AddMonoidHom.id.{max u1 u2} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.addZeroClass.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain.add_monoid_hom_id Finsupp.mapDomain.addMonoidHom_idₓ'. -/
 @[simp]
 theorem mapDomain.addMonoidHom_id : mapDomain.addMonoidHom id = AddMonoidHom.id (α →₀ M) :=
   AddMonoidHom.ext fun _ => mapDomain_id
 #align finsupp.map_domain.add_monoid_hom_id Finsupp.mapDomain.addMonoidHom_id
 
-/- warning: finsupp.map_domain.add_monoid_hom_comp -> Finsupp.mapDomain.addMonoidHom_comp is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {M : Type.{u4}} [_inst_1 : AddCommMonoid.{u4} M] (f : β -> γ) (g : α -> β), Eq.{max (succ (max u3 u4)) (succ (max u1 u4))} (AddMonoidHom.{max u1 u4, max u3 u4} (Finsupp.{u1, u4} α M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.{u3, u4} γ M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.addZeroClass.{u1, u4} α M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.addZeroClass.{u3, u4} γ M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.mapDomain.addMonoidHom.{u1, u3, u4} α γ M _inst_1 (Function.comp.{succ u1, succ u2, succ u3} α β γ f g)) (AddMonoidHom.comp.{max u1 u4, max u2 u4, max u3 u4} (Finsupp.{u1, u4} α M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.{u2, u4} β M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.{u3, u4} γ M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.addZeroClass.{u1, u4} α M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.addZeroClass.{u2, u4} β M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.addZeroClass.{u3, u4} γ M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.mapDomain.addMonoidHom.{u2, u3, u4} β γ M _inst_1 f) (Finsupp.mapDomain.addMonoidHom.{u1, u2, u4} α β M _inst_1 g))
-but is expected to have type
-  forall {α : Type.{u4}} {β : Type.{u1}} {γ : Type.{u3}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] (f : β -> γ) (g : α -> β), Eq.{max (max (succ u4) (succ u3)) (succ u2)} (AddMonoidHom.{max u2 u4, max u2 u3} (Finsupp.{u4, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u3, u2} γ M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.addZeroClass.{u4, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.addZeroClass.{u3, u2} γ M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.mapDomain.addMonoidHom.{u4, u3, u2} α γ M _inst_1 (Function.comp.{succ u4, succ u1, succ u3} α β γ f g)) (AddMonoidHom.comp.{max u2 u4, max u1 u2, max u3 u2} (Finsupp.{u4, 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.{u3, u2} γ M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.addZeroClass.{u4, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.addZeroClass.{u1, u2} β M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.addZeroClass.{u3, u2} γ M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.mapDomain.addMonoidHom.{u1, u3, u2} β γ M _inst_1 f) (Finsupp.mapDomain.addMonoidHom.{u4, u1, u2} α β M _inst_1 g))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain.add_monoid_hom_comp Finsupp.mapDomain.addMonoidHom_compₓ'. -/
 theorem mapDomain.addMonoidHom_comp (f : β → γ) (g : α → β) :
     (mapDomain.addMonoidHom (f ∘ g) : (α →₀ M) →+ γ →₀ M) =
       (mapDomain.addMonoidHom f).comp (mapDomain.addMonoidHom g) :=
   AddMonoidHom.ext fun _ => mapDomain_comp
 #align finsupp.map_domain.add_monoid_hom_comp Finsupp.mapDomain.addMonoidHom_comp
 
-/- warning: finsupp.map_domain_finset_sum -> Finsupp.mapDomain_finset_sum is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {ι : Type.{u3}} {M : Type.{u4}} [_inst_1 : AddCommMonoid.{u4} M] {f : α -> β} {s : Finset.{u3} ι} {v : ι -> (Finsupp.{u1, u4} α M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))))}, Eq.{max (succ u2) (succ u4)} (Finsupp.{u2, u4} β M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u4} α β M _inst_1 f (Finset.sum.{max u1 u4, u3} (Finsupp.{u1, u4} α M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) ι (Finsupp.addCommMonoid.{u1, u4} α M _inst_1) s (fun (i : ι) => v i))) (Finset.sum.{max u2 u4, u3} (Finsupp.{u2, u4} β M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) ι (Finsupp.addCommMonoid.{u2, u4} β M _inst_1) s (fun (i : ι) => Finsupp.mapDomain.{u1, u2, u4} α β M _inst_1 f (v i)))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u1}} {ι : Type.{u4}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] {f : α -> β} {s : Finset.{u4} ι} {v : ι -> (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.mapDomain.{u3, u1, u2} α β M _inst_1 f (Finset.sum.{max u3 u2, u4} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) ι (Finsupp.addCommMonoid.{u3, u2} α M _inst_1) s (fun (i : ι) => v i))) (Finset.sum.{max u2 u1, u4} (Finsupp.{u1, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) ι (Finsupp.addCommMonoid.{u1, u2} β M _inst_1) s (fun (i : ι) => Finsupp.mapDomain.{u3, u1, u2} α β M _inst_1 f (v i)))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_finset_sum Finsupp.mapDomain_finset_sumₓ'. -/
 theorem mapDomain_finset_sum {f : α → β} {s : Finset ι} {v : ι → α →₀ M} :
     mapDomain f (∑ i in s, v i) = ∑ i in s, mapDomain f (v i) :=
   (mapDomain.addMonoidHom f : (α →₀ M) →+ β →₀ M).map_sum _ _
 #align finsupp.map_domain_finset_sum Finsupp.mapDomain_finset_sum
 
-/- warning: finsupp.map_domain_sum -> Finsupp.mapDomain_sum is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : Zero.{u4} N] {f : α -> β} {s : Finsupp.{u1, u4} α N _inst_2} {v : α -> N -> (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))}, Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f (Finsupp.sum.{u1, u4, max u1 u3} α N (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) _inst_2 (Finsupp.addCommMonoid.{u1, u3} α M _inst_1) s v)) (Finsupp.sum.{u1, u4, max u2 u3} α N (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) _inst_2 (Finsupp.addCommMonoid.{u2, u3} β M _inst_1) s (fun (a : α) (b : N) => Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f (v a b)))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u1}} {M : Type.{u2}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : Zero.{u4} N] {f : α -> β} {s : Finsupp.{u3, u4} α N _inst_2} {v : α -> N -> (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.mapDomain.{u3, u1, u2} α β M _inst_1 f (Finsupp.sum.{u3, u4, max u3 u2} α N (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) _inst_2 (Finsupp.addCommMonoid.{u3, u2} α M _inst_1) s v)) (Finsupp.sum.{u3, u4, max u2 u1} α N (Finsupp.{u1, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) _inst_2 (Finsupp.addCommMonoid.{u1, u2} β M _inst_1) s (fun (a : α) (b : N) => Finsupp.mapDomain.{u3, u1, u2} α β M _inst_1 f (v a b)))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_sum Finsupp.mapDomain_sumₓ'. -/
 theorem mapDomain_sum [Zero N] {f : α → β} {s : α →₀ N} {v : α → N → α →₀ M} :
     mapDomain f (s.Sum v) = s.Sum fun a b => mapDomain f (v a b) :=
   (mapDomain.addMonoidHom f : (α →₀ M) →+ β →₀ M).map_finsupp_sum _ _
 #align finsupp.map_domain_sum Finsupp.mapDomain_sum
 
-/- warning: finsupp.map_domain_support -> Finsupp.mapDomain_support is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : DecidableEq.{succ u2} β] {f : α -> β} {s : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))}, HasSubset.Subset.{u2} (Finset.{u2} β) (Finset.hasSubset.{u2} β) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f s)) (Finset.image.{u1, u2} α β (fun (a : β) (b : β) => _inst_2 a b) f (Finsupp.support.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) s))
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u3}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] [_inst_2 : DecidableEq.{succ u3} β] {f : α -> β} {s : Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))}, HasSubset.Subset.{u3} (Finset.{u3} β) (Finset.instHasSubsetFinset.{u3} β) (Finsupp.support.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) (Finsupp.mapDomain.{u2, u3, u1} α β M _inst_1 f s)) (Finset.image.{u2, u3} α β (fun (a : β) (b : β) => _inst_2 a b) f (Finsupp.support.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) s))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_support Finsupp.mapDomain_supportₓ'. -/
 theorem mapDomain_support [DecidableEq β] {f : α → β} {s : α →₀ M} :
     (s.mapDomain f).support ⊆ s.support.image f :=
   Finset.Subset.trans support_sum <|
@@ -909,12 +558,6 @@ theorem mapDomain_support [DecidableEq β] {f : α → β} {s : α →₀ M} :
       rw [Finset.biUnion_singleton] <;> exact subset.refl _
 #align finsupp.map_domain_support Finsupp.mapDomain_support
 
-/- warning: finsupp.map_domain_apply' -> Finsupp.mapDomain_apply' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (S : Set.{u1} α) {f : α -> β} (x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), (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, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) x)) S) -> (Set.InjOn.{u1, u2} α β f S) -> (forall {a : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a S) -> (Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => β -> M) (Finsupp.coeFun.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f x) (f a)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => α -> M) (Finsupp.coeFun.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) x a)))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] (S : Set.{u3} α) {f : α -> β} (x : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))), (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Finset.toSet.{u3} α (Finsupp.support.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) x)) S) -> (Set.InjOn.{u3, u1} α β f S) -> (forall {a : α}, (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a S) -> (Eq.{succ u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) (f a)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u1, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.mapDomain.{u3, u1, u2} α β M _inst_1 f x) (f a)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) x a)))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_apply' Finsupp.mapDomain_apply'ₓ'. -/
 theorem mapDomain_apply' (S : Set α) {f : α → β} (x : α →₀ M) (hS : (x.support : Set α) ⊆ S)
     (hf : Set.InjOn f S) {a : α} (ha : a ∈ S) : mapDomain f x (f a) = x a := by
   classical
@@ -930,12 +573,6 @@ theorem mapDomain_apply' (S : Set α) {f : α → β} (x : α →₀ M) (hS : (x
       exact hf.ne (hS hi) ha (ne_of_mem_of_not_mem hi hax)
 #align finsupp.map_domain_apply' Finsupp.mapDomain_apply'
 
-/- warning: finsupp.map_domain_support_of_inj_on -> Finsupp.mapDomain_support_of_injOn is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : DecidableEq.{succ u2} β] {f : α -> β} (s : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), (Set.InjOn.{u1, u2} α β 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, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) s))) -> (Eq.{succ u2} (Finset.{u2} β) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f s)) (Finset.image.{u1, u2} α β (fun (a : β) (b : β) => _inst_2 a b) f (Finsupp.support.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) s)))
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u3}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] [_inst_2 : DecidableEq.{succ u3} β] {f : α -> β} (s : Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))), (Set.InjOn.{u2, u3} α β f (Finset.toSet.{u2} α (Finsupp.support.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) s))) -> (Eq.{succ u3} (Finset.{u3} β) (Finsupp.support.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) (Finsupp.mapDomain.{u2, u3, u1} α β M _inst_1 f s)) (Finset.image.{u2, u3} α β (fun (a : β) (b : β) => _inst_2 a b) f (Finsupp.support.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) s)))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_support_of_inj_on Finsupp.mapDomain_support_of_injOnₓ'. -/
 theorem mapDomain_support_of_injOn [DecidableEq β] {f : α → β} (s : α →₀ M)
     (hf : Set.InjOn f s.support) : (mapDomain f s).support = Finset.image f s.support :=
   Finset.Subset.antisymm mapDomain_support <|
@@ -951,23 +588,11 @@ theorem mapDomain_support_of_injOn [DecidableEq β] {f : α → β} (s : α →
     · exact subset.refl _
 #align finsupp.map_domain_support_of_inj_on Finsupp.mapDomain_support_of_injOn
 
-/- warning: finsupp.map_domain_support_of_injective -> Finsupp.mapDomain_support_of_injective is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : DecidableEq.{succ u2} β] {f : α -> β}, (Function.Injective.{succ u1, succ u2} α β f) -> (forall (s : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), Eq.{succ u2} (Finset.{u2} β) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f s)) (Finset.image.{u1, u2} α β (fun (a : β) (b : β) => _inst_2 a b) f (Finsupp.support.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) s)))
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u3}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] [_inst_2 : DecidableEq.{succ u3} β] {f : α -> β}, (Function.Injective.{succ u2, succ u3} α β f) -> (forall (s : Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))), Eq.{succ u3} (Finset.{u3} β) (Finsupp.support.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) (Finsupp.mapDomain.{u2, u3, u1} α β M _inst_1 f s)) (Finset.image.{u2, u3} α β (fun (a : β) (b : β) => _inst_2 a b) f (Finsupp.support.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) s)))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_support_of_injective Finsupp.mapDomain_support_of_injectiveₓ'. -/
 theorem mapDomain_support_of_injective [DecidableEq β] {f : α → β} (hf : Function.Injective f)
     (s : α →₀ M) : (mapDomain f s).support = Finset.image f s.support :=
   mapDomain_support_of_injOn s (hf.InjOn _)
 #align finsupp.map_domain_support_of_injective Finsupp.mapDomain_support_of_injective
 
-/- warning: finsupp.prod_map_domain_index -> Finsupp.prod_mapDomain_index is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : CommMonoid.{u4} N] {f : α -> β} {s : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))} {h : β -> M -> N}, (forall (b : β), Eq.{succ u4} N (h b (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))))) (OfNat.ofNat.{u4} N 1 (OfNat.mk.{u4} N 1 (One.one.{u4} N (MulOneClass.toHasOne.{u4} N (Monoid.toMulOneClass.{u4} N (CommMonoid.toMonoid.{u4} N _inst_2))))))) -> (forall (b : β) (m₁ : M) (m₂ : M), Eq.{succ u4} N (h b (HAdd.hAdd.{u3, u3, u3} M M M (instHAdd.{u3} M (AddZeroClass.toHasAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) m₁ m₂)) (HMul.hMul.{u4, u4, u4} N N N (instHMul.{u4} N (MulOneClass.toHasMul.{u4} N (Monoid.toMulOneClass.{u4} N (CommMonoid.toMonoid.{u4} N _inst_2)))) (h b m₁) (h b m₂))) -> (Eq.{succ u4} N (Finsupp.prod.{u2, u3, u4} β M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) _inst_2 (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f s) h) (Finsupp.prod.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) _inst_2 s (fun (a : α) (m : M) => h (f a) m)))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u1}} {M : Type.{u2}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : CommMonoid.{u4} N] {f : α -> β} {s : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))} {h : β -> M -> N}, (forall (b : β), Eq.{succ u4} N (h b (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))) (OfNat.ofNat.{u4} N 1 (One.toOfNat1.{u4} N (Monoid.toOne.{u4} N (CommMonoid.toMonoid.{u4} N _inst_2))))) -> (forall (b : β) (m₁ : M) (m₂ : M), Eq.{succ u4} N (h b (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)))) m₁ m₂)) (HMul.hMul.{u4, u4, u4} N N N (instHMul.{u4} N (MulOneClass.toMul.{u4} N (Monoid.toMulOneClass.{u4} N (CommMonoid.toMonoid.{u4} N _inst_2)))) (h b m₁) (h b m₂))) -> (Eq.{succ u4} N (Finsupp.prod.{u1, u2, u4} β M N (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) _inst_2 (Finsupp.mapDomain.{u3, u1, u2} α β M _inst_1 f s) h) (Finsupp.prod.{u3, u2, u4} α M N (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) _inst_2 s (fun (a : α) (m : M) => h (f a) m)))
-Case conversion may be inaccurate. Consider using '#align finsupp.prod_map_domain_index Finsupp.prod_mapDomain_indexₓ'. -/
 @[to_additive]
 theorem prod_mapDomain_index [CommMonoid N] {f : α → β} {s : α →₀ M} {h : β → M → N}
     (h_zero : ∀ b, h b 0 = 1) (h_add : ∀ b m₁ m₂, h b (m₁ + m₂) = h b m₁ * h b m₂) :
@@ -976,12 +601,6 @@ theorem prod_mapDomain_index [CommMonoid N] {f : α → β} {s : α →₀ M} {h
 #align finsupp.prod_map_domain_index Finsupp.prod_mapDomain_index
 #align finsupp.sum_map_domain_index Finsupp.sum_mapDomain_index
 
-/- warning: finsupp.sum_map_domain_index_add_monoid_hom -> Finsupp.sum_mapDomain_index_addMonoidHom is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u4} N] {f : α -> β} {s : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))} (h : β -> (AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))), Eq.{succ u4} N (Finsupp.sum.{u2, u3, u4} β M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) _inst_2 (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f s) (fun (b : β) (m : M) => coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (fun (_x : AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (h b) m)) (Finsupp.sum.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) _inst_2 s (fun (a : α) (m : M) => coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (fun (_x : AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (h (f a)) m))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u1}} {M : Type.{u2}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u4} N] {f : α -> β} {s : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))} (h : β -> (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))), Eq.{succ u4} N (Finsupp.sum.{u1, u2, u4} β M N (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) _inst_2 (Finsupp.mapDomain.{u3, u1, u2} α β M _inst_1 f s) (fun (b : β) (m : M) => FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u2 u4, u2, u4} (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) M N (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toAdd.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u2 u4, u2, u4} (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))))) (h b) m)) (Finsupp.sum.{u3, u2, u4} α M N (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) _inst_2 s (fun (a : α) (m : M) => FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u2 u4, u2, u4} (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) M N (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toAdd.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u2 u4, u2, u4} (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))))) (h (f a)) m))
-Case conversion may be inaccurate. Consider using '#align finsupp.sum_map_domain_index_add_monoid_hom Finsupp.sum_mapDomain_index_addMonoidHomₓ'. -/
 -- Note that in `prod_map_domain_index`, `M` is still an additive monoid,
 -- so there is no analogous version in terms of `monoid_hom`.
 /-- A version of `sum_map_domain_index` that takes a bundled `add_monoid_hom`,
@@ -994,12 +613,6 @@ theorem sum_mapDomain_index_addMonoidHom [AddCommMonoid N] {f : α → β} {s :
     (h b).map_add _ _
 #align finsupp.sum_map_domain_index_add_monoid_hom Finsupp.sum_mapDomain_index_addMonoidHom
 
-/- warning: finsupp.emb_domain_eq_map_domain -> Finsupp.embDomain_eq_mapDomain is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (f : Function.Embedding.{succ u1, succ u2} α β) (v : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.embDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) f v) (Finsupp.mapDomain.{u1, 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) v)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] (f : Function.Embedding.{succ u3, succ u2} α β) (v : Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.embDomain.{u3, u2, u1} α β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) f v) (Finsupp.mapDomain.{u3, u2, u1} α β 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) v)
-Case conversion may be inaccurate. Consider using '#align finsupp.emb_domain_eq_map_domain Finsupp.embDomain_eq_mapDomainₓ'. -/
 theorem embDomain_eq_mapDomain (f : α ↪ β) (v : α →₀ M) : embDomain f v = mapDomain f v :=
   by
   ext a
@@ -1009,12 +622,6 @@ theorem embDomain_eq_mapDomain (f : α ↪ β) (v : α →₀ M) : embDomain f v
   · rw [map_domain_notin_range, emb_domain_notin_range] <;> assumption
 #align finsupp.emb_domain_eq_map_domain Finsupp.embDomain_eq_mapDomain
 
-/- warning: finsupp.prod_map_domain_index_inj -> Finsupp.prod_mapDomain_index_inj is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : CommMonoid.{u4} N] {f : α -> β} {s : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))} {h : β -> M -> N}, (Function.Injective.{succ u1, succ u2} α β f) -> (Eq.{succ u4} N (Finsupp.prod.{u2, u3, u4} β M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) _inst_2 (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f s) h) (Finsupp.prod.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) _inst_2 s (fun (a : α) (b : M) => h (f a) b)))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u1}} {M : Type.{u2}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : CommMonoid.{u4} N] {f : α -> β} {s : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))} {h : β -> M -> N}, (Function.Injective.{succ u3, succ u1} α β f) -> (Eq.{succ u4} N (Finsupp.prod.{u1, u2, u4} β M N (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) _inst_2 (Finsupp.mapDomain.{u3, u1, u2} α β M _inst_1 f s) h) (Finsupp.prod.{u3, u2, u4} α M N (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) _inst_2 s (fun (a : α) (b : M) => h (f a) b)))
-Case conversion may be inaccurate. Consider using '#align finsupp.prod_map_domain_index_inj Finsupp.prod_mapDomain_index_injₓ'. -/
 @[to_additive]
 theorem prod_mapDomain_index_inj [CommMonoid N] {f : α → β} {s : α →₀ M} {h : β → M → N}
     (hf : Function.Injective f) : (s.mapDomain f).Prod h = s.Prod fun a b => h (f a) b := by
@@ -1022,12 +629,6 @@ theorem prod_mapDomain_index_inj [CommMonoid N] {f : α → β} {s : α →₀ M
 #align finsupp.prod_map_domain_index_inj Finsupp.prod_mapDomain_index_inj
 #align finsupp.sum_map_domain_index_inj Finsupp.sum_mapDomain_index_inj
 
-/- warning: finsupp.map_domain_injective -> Finsupp.mapDomain_injective is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {f : α -> β}, (Function.Injective.{succ u1, succ u2} α β f) -> (Function.Injective.{max (succ u1) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] {f : α -> β}, (Function.Injective.{succ u3, succ u2} α β f) -> (Function.Injective.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.mapDomain.{u3, u2, u1} α β M _inst_1 f))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_injective Finsupp.mapDomain_injectiveₓ'. -/
 theorem mapDomain_injective {f : α → β} (hf : Function.Injective f) :
     Function.Injective (mapDomain f : (α →₀ M) → β →₀ M) :=
   by
@@ -1044,24 +645,12 @@ def mapDomainEmbedding {α β : Type _} (f : α ↪ β) : (α →₀ ℕ) ↪ β
 #align finsupp.map_domain_embedding Finsupp.mapDomainEmbedding
 -/
 
-/- warning: finsupp.map_domain.add_monoid_hom_comp_map_range -> Finsupp.mapDomain.addMonoidHom_comp_mapRange is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u4} N] (f : α -> β) (g : AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))), Eq.{max (succ (max u2 u4)) (succ (max u1 u3))} (AddMonoidHom.{max u1 u3, max u2 u4} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u2, u4} β N (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) (Finsupp.addZeroClass.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addZeroClass.{u2, u4} β N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) (AddMonoidHom.comp.{max u1 u3, max u1 u4, max u2 u4} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) (Finsupp.{u2, u4} β N (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) (Finsupp.addZeroClass.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addZeroClass.{u1, u4} α N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (Finsupp.addZeroClass.{u2, u4} β N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (Finsupp.mapDomain.addMonoidHom.{u1, u2, u4} α β N _inst_2 f) (Finsupp.mapRange.addMonoidHom.{u1, u3, u4} α M N _inst_1 _inst_2 g)) (AddMonoidHom.comp.{max u1 u3, max u2 u3, max u2 u4} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u2, u4} β N (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) (Finsupp.addZeroClass.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addZeroClass.{u2, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addZeroClass.{u2, u4} β N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (Finsupp.mapRange.addMonoidHom.{u2, u3, u4} β M N _inst_1 _inst_2 g) (Finsupp.mapDomain.addMonoidHom.{u1, u2, u3} α β M _inst_1 f))
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u4} N] (f : α -> β) (g : AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))), Eq.{max (max (max (succ u2) (succ u1)) (succ u3)) (succ u4)} (AddMonoidHom.{max u3 u2, max u1 u4} (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u4} β N (AddMonoid.toZero.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (Finsupp.addZeroClass.{u2, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addZeroClass.{u1, u4} β N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) (AddMonoidHom.comp.{max u3 u2, max u2 u4, max u1 u4} (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u2, u4} α N (AddMonoid.toZero.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (Finsupp.{u1, u4} β N (AddMonoid.toZero.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (Finsupp.addZeroClass.{u2, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addZeroClass.{u2, u4} α N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (Finsupp.addZeroClass.{u1, u4} β N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (Finsupp.mapDomain.addMonoidHom.{u2, u1, u4} α β N _inst_2 f) (Finsupp.mapRange.addMonoidHom.{u2, u3, u4} α M N _inst_1 _inst_2 g)) (AddMonoidHom.comp.{max u3 u2, max u3 u1, max u4 u1} (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u4} β N (AddMonoid.toZero.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (Finsupp.addZeroClass.{u2, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addZeroClass.{u1, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addZeroClass.{u1, u4} β N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (Finsupp.mapRange.addMonoidHom.{u1, u3, u4} β M N _inst_1 _inst_2 g) (Finsupp.mapDomain.addMonoidHom.{u2, u1, u3} α β M _inst_1 f))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain.add_monoid_hom_comp_map_range Finsupp.mapDomain.addMonoidHom_comp_mapRangeₓ'. -/
 theorem mapDomain.addMonoidHom_comp_mapRange [AddCommMonoid N] (f : α → β) (g : M →+ N) :
     (mapDomain.addMonoidHom f).comp (mapRange.addMonoidHom g) =
       (mapRange.addMonoidHom g).comp (mapDomain.addMonoidHom f) :=
   by ext; simp
 #align finsupp.map_domain.add_monoid_hom_comp_map_range Finsupp.mapDomain.addMonoidHom_comp_mapRange
 
-/- warning: finsupp.map_domain_map_range -> Finsupp.mapDomain_mapRange is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u4} N] (f : α -> β) (v : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (g : M -> N) (h0 : Eq.{succ u4} N (g (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))))) (OfNat.ofNat.{u4} N 0 (OfNat.mk.{u4} N 0 (Zero.zero.{u4} N (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))))))), (forall (x : M) (y : M), Eq.{succ u4} N (g (HAdd.hAdd.{u3, u3, u3} M M M (instHAdd.{u3} M (AddZeroClass.toHasAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) x y)) (HAdd.hAdd.{u4, u4, u4} N N N (instHAdd.{u4} N (AddZeroClass.toHasAdd.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) (g x) (g y))) -> (Eq.{max (succ u2) (succ u4)} (Finsupp.{u2, u4} β N (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) (Finsupp.mapDomain.{u1, u2, u4} α β N _inst_2 f (Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) g h0 v)) (Finsupp.mapRange.{u2, u3, u4} β M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) g h0 (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f v)))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u1}} {M : Type.{u2}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u4} N] (f : α -> β) (v : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (g : M -> N) (h0 : Eq.{succ u4} N (g (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))) (OfNat.ofNat.{u4} N 0 (Zero.toOfNat0.{u4} N (AddMonoid.toZero.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))))), (forall (x : M) (y : M), Eq.{succ u4} N (g (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)))) x y)) (HAdd.hAdd.{u4, u4, u4} N N N (instHAdd.{u4} N (AddZeroClass.toAdd.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) (g x) (g y))) -> (Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} β N (AddMonoid.toZero.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (Finsupp.mapDomain.{u3, u1, u4} α β N _inst_2 f (Finsupp.mapRange.{u3, u2, u4} α M N (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toZero.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)) g h0 v)) (Finsupp.mapRange.{u1, u2, u4} β M N (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toZero.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)) g h0 (Finsupp.mapDomain.{u3, u1, u2} α β M _inst_1 f v)))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_map_range Finsupp.mapDomain_mapRangeₓ'. -/
 /-- When `g` preserves addition, `map_range` and `map_domain` commute. -/
 theorem mapDomain_mapRange [AddCommMonoid N] (f : α → β) (v : α →₀ M) (g : M → N) (h0 : g 0 = 0)
     (hadd : ∀ x y, g (x + y) = g x + g y) :
@@ -1073,12 +662,6 @@ theorem mapDomain_mapRange [AddCommMonoid N] (f : α → β) (v : α →₀ M) (
   AddMonoidHom.congr_fun (mapDomain.addMonoidHom_comp_mapRange f g') v
 #align finsupp.map_domain_map_range Finsupp.mapDomain_mapRange
 
-/- warning: finsupp.sum_update_add -> Finsupp.sum_update_add is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {ι : Type.{u3}} [_inst_2 : AddCommMonoid.{u1} α] [_inst_3 : AddCommMonoid.{u2} β] (f : Finsupp.{u3, u1} ι α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2)))) (i : ι) (a : α) (g : ι -> α -> β), (forall (i : ι), Eq.{succ u2} β (g i (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2))))))) (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β (AddZeroClass.toHasZero.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3))))))) -> (forall (j : ι) (a₁ : α) (a₂ : α), Eq.{succ u2} β (g j (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (AddZeroClass.toHasAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2)))) a₁ a₂)) (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β (AddZeroClass.toHasAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3)))) (g j a₁) (g j a₂))) -> (Eq.{succ u2} β (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β (AddZeroClass.toHasAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3)))) (Finsupp.sum.{u3, u1, u2} ι α β (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2))) _inst_3 (Finsupp.update.{u3, u1} ι α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2))) f i a) g) (g i (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (Finsupp.{u3, u1} ι α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2)))) (fun (_x : Finsupp.{u3, u1} ι α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2)))) => ι -> α) (Finsupp.coeFun.{u3, u1} ι α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2)))) f i))) (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β (AddZeroClass.toHasAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3)))) (Finsupp.sum.{u3, u1, u2} ι α β (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2))) _inst_3 f g) (g i a)))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {ι : Type.{u1}} [_inst_2 : AddCommMonoid.{u3} α] [_inst_3 : AddCommMonoid.{u2} β] (f : Finsupp.{u1, u3} ι α (AddMonoid.toZero.{u3} α (AddCommMonoid.toAddMonoid.{u3} α _inst_2))) (i : ι) (a : α) (g : ι -> α -> β), (forall (i : ι), Eq.{succ u2} β (g i (OfNat.ofNat.{u3} α 0 (Zero.toOfNat0.{u3} α (AddMonoid.toZero.{u3} α (AddCommMonoid.toAddMonoid.{u3} α _inst_2))))) (OfNat.ofNat.{u2} β 0 (Zero.toOfNat0.{u2} β (AddMonoid.toZero.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3))))) -> (forall (j : ι) (a₁ : α) (a₂ : α), Eq.{succ u2} β (g j (HAdd.hAdd.{u3, u3, u3} α α α (instHAdd.{u3} α (AddZeroClass.toAdd.{u3} α (AddMonoid.toAddZeroClass.{u3} α (AddCommMonoid.toAddMonoid.{u3} α _inst_2)))) a₁ a₂)) (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3)))) (g j a₁) (g j a₂))) -> (Eq.{succ u2} β (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3)))) (Finsupp.sum.{u1, u3, u2} ι α β (AddMonoid.toZero.{u3} α (AddCommMonoid.toAddMonoid.{u3} α _inst_2)) _inst_3 (Finsupp.update.{u1, u3} ι α (AddMonoid.toZero.{u3} α (AddCommMonoid.toAddMonoid.{u3} α _inst_2)) f i a) g) (g i (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} ι α (AddMonoid.toZero.{u3} α (AddCommMonoid.toAddMonoid.{u3} α _inst_2))) ι (fun (_x : ι) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : ι) => α) _x) (Finsupp.funLike.{u1, u3} ι α (AddMonoid.toZero.{u3} α (AddCommMonoid.toAddMonoid.{u3} α _inst_2))) f i))) (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3)))) (Finsupp.sum.{u1, u3, u2} ι α β (AddMonoid.toZero.{u3} α (AddCommMonoid.toAddMonoid.{u3} α _inst_2)) _inst_3 f g) (g i a)))
-Case conversion may be inaccurate. Consider using '#align finsupp.sum_update_add Finsupp.sum_update_addₓ'. -/
 theorem sum_update_add [AddCommMonoid α] [AddCommMonoid β] (f : ι →₀ α) (i : ι) (a : α)
     (g : ι → α → β) (hg : ∀ i, g i 0 = 0)
     (hgg : ∀ (j : ι) (a₁ a₂ : α), g j (a₁ + a₂) = g j a₁ + g j a₂) :
@@ -1091,12 +674,6 @@ theorem sum_update_add [AddCommMonoid α] [AddCommMonoid β] (f : ι →₀ α)
   rw [add_comm, sum_single_index (hg _), sum_single_index (hg _)]
 #align finsupp.sum_update_add Finsupp.sum_update_add
 
-/- warning: finsupp.map_domain_inj_on -> Finsupp.mapDomain_injOn is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (S : Set.{u1} α) {f : α -> β}, (Set.InjOn.{u1, u2} α β f S) -> (Set.InjOn.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f) (setOf.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (w : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => 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, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) w)) S)))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] (S : Set.{u3} α) {f : α -> β}, (Set.InjOn.{u3, u2} α β f S) -> (Set.InjOn.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.mapDomain.{u3, u2, u1} α β M _inst_1 f) (setOf.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (fun (w : Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) => HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Finset.toSet.{u3} α (Finsupp.support.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) w)) S)))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_inj_on Finsupp.mapDomain_injOnₓ'. -/
 theorem mapDomain_injOn (S : Set α) {f : α → β} (hf : Set.InjOn f S) :
     Set.InjOn (mapDomain f : (α →₀ M) → β →₀ M) { w | (w.support : Set α) ⊆ S } :=
   by
@@ -1112,12 +689,6 @@ theorem mapDomain_injOn (S : Set α) {f : α → β} (hf : Set.InjOn f S) :
       simp [h]
 #align finsupp.map_domain_inj_on Finsupp.mapDomain_injOn
 
-/- warning: finsupp.equiv_map_domain_eq_map_domain -> Finsupp.equivMapDomain_eq_mapDomain is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_2 : AddCommMonoid.{u3} M] (f : Equiv.{succ u1, succ u2} α β) (l : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)))), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)))) (Finsupp.equivMapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) f l) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_2 (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) f) l)
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} {M : Type.{u3}} [_inst_2 : AddCommMonoid.{u3} M] (f : Equiv.{succ u2, succ u1} α β) (l : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.equivMapDomain.{u2, u1, u3} α β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) f l) (Finsupp.mapDomain.{u2, u1, u3} α β M _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) f) l)
-Case conversion may be inaccurate. Consider using '#align finsupp.equiv_map_domain_eq_map_domain Finsupp.equivMapDomain_eq_mapDomainₓ'. -/
 theorem equivMapDomain_eq_mapDomain {M} [AddCommMonoid M] (f : α ≃ β) (l : α →₀ M) :
     equivMapDomain f l = mapDomain f l := by ext x <;> simp [map_domain_equiv_apply]
 #align finsupp.equiv_map_domain_eq_map_domain Finsupp.equivMapDomain_eq_mapDomain
@@ -1153,12 +724,6 @@ theorem comapDomain_apply [Zero M] (f : α → β) (l : β →₀ M) (hf : Set.I
 #align finsupp.comap_domain_apply Finsupp.comapDomain_apply
 -/
 
-/- warning: finsupp.sum_comap_domain -> Finsupp.sum_comapDomain 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 : AddCommMonoid.{u4} N] (f : α -> β) (l : Finsupp.{u2, u3} β M _inst_1) (g : β -> M -> N) (hf : Set.BijOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M _inst_1 l))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M _inst_1 l))), Eq.{succ u4} N (Finsupp.sum.{u1, u3, u4} α M N _inst_1 _inst_2 (Finsupp.comapDomain.{u1, u2, u3} α β M _inst_1 f l (Set.BijOn.injOn.{u1, u2} α β (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M _inst_1 l))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M _inst_1 l)) f hf)) (Function.comp.{succ u1, succ u2, max (succ u3) (succ u4)} α β (M -> N) g f)) (Finsupp.sum.{u2, u3, u4} β M N _inst_1 _inst_2 l g)
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u4}} {N : Type.{u3}} [_inst_1 : Zero.{u4} M] [_inst_2 : AddCommMonoid.{u3} N] (f : α -> β) (l : Finsupp.{u2, u4} β M _inst_1) (g : β -> M -> N) (hf : Set.BijOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M _inst_1 l))) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M _inst_1 l))), Eq.{succ u3} N (Finsupp.sum.{u1, u4, u3} α M N _inst_1 _inst_2 (Finsupp.comapDomain.{u1, u2, u4} α β M _inst_1 f l (Set.BijOn.injOn.{u2, u1} α β (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M _inst_1 l))) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M _inst_1 l)) f hf)) (Function.comp.{succ u1, succ u2, max (succ u4) (succ u3)} α β (M -> N) g f)) (Finsupp.sum.{u2, u4, u3} β M N _inst_1 _inst_2 l g)
-Case conversion may be inaccurate. Consider using '#align finsupp.sum_comap_domain Finsupp.sum_comapDomainₓ'. -/
 theorem sum_comapDomain [Zero M] [AddCommMonoid N] (f : α → β) (l : β →₀ M) (g : β → M → N)
     (hf : Set.BijOn f (f ⁻¹' ↑l.support) ↑l.support) :
     (comapDomain f l hf.InjOn).Sum (g ∘ f) = l.Sum g :=
@@ -1167,12 +732,6 @@ theorem sum_comapDomain [Zero M] [AddCommMonoid N] (f : α → β) (l : β →
   simp [comap_domain, Finset.sum_preimage_of_bij f _ _ fun x => g x (l x)]
 #align finsupp.sum_comap_domain Finsupp.sum_comapDomain
 
-/- warning: finsupp.eq_zero_of_comap_domain_eq_zero -> Finsupp.eq_zero_of_comapDomain_eq_zero is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (f : α -> β) (l : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (hf : Set.BijOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) l))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) l))), (Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) f l (Set.BijOn.injOn.{u1, u2} α β (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) l))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) l)) f hf)) (OfNat.ofNat.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (OfNat.mk.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (Zero.zero.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))))) -> (Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) l (OfNat.ofNat.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (OfNat.mk.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (Zero.zero.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))))))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (f : α -> β) (l : Finsupp.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (hf : Set.BijOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) l))) (Finset.toSet.{u2} β (Finsupp.support.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) l))), (Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) f l (Set.BijOn.injOn.{u2, u1} α β (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) l))) (Finset.toSet.{u2} β (Finsupp.support.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) l)) f hf)) (OfNat.ofNat.{max u1 u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) 0 (Zero.toOfNat0.{max u1 u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) -> (Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) l (OfNat.ofNat.{max u2 u3} (Finsupp.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) 0 (Zero.toOfNat0.{max u2 u3} (Finsupp.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))))
-Case conversion may be inaccurate. Consider using '#align finsupp.eq_zero_of_comap_domain_eq_zero Finsupp.eq_zero_of_comapDomain_eq_zeroₓ'. -/
 theorem eq_zero_of_comapDomain_eq_zero [AddCommMonoid M] (f : α → β) (l : β →₀ M)
     (hf : Set.BijOn f (f ⁻¹' ↑l.support) ↑l.support) : comapDomain f l hf.InjOn = 0 → l = 0 :=
   by
@@ -1189,12 +748,6 @@ section Zero
 
 variable [Zero M]
 
-/- warning: finsupp.comap_domain_zero -> Finsupp.comapDomain_zero is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : α -> β) (hif : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, 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)))))))) (Set.injOn_empty.{u1, u2} α β f)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.comapDomain.{u1, u2, u3} α β M _inst_1 f (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)))) hif) (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 : α -> β) (hif : optParam.{0} (Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f (Finset.toSet.{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))))))) (Eq.rec.{0, succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.7315 : Set.{u2} β) (h._@.Mathlib.Data.Finsupp.Basic._hyg.7316 : Eq.{succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) x._@.Mathlib.Data.Finsupp.Basic._hyg.7315) => Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f x._@.Mathlib.Data.Finsupp.Basic._hyg.7315)) (Set.injOn_empty.{u2, u3} α β f) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (Eq.symm.{succ u2} (Set.{u2} β) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (Finset.coe_empty.{u2} β)))), Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.comapDomain.{u3, 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))) hif) (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.comap_domain_zero Finsupp.comapDomain_zeroₓ'. -/
 /-- Note the `hif` argument is needed for this to work in `rw`. -/
 @[simp]
 theorem comapDomain_zero (f : α → β)
@@ -1202,12 +755,6 @@ theorem comapDomain_zero (f : α → β)
     comapDomain f (0 : β →₀ M) hif = (0 : α →₀ M) := by ext; rfl
 #align finsupp.comap_domain_zero Finsupp.comapDomain_zero
 
-/- warning: finsupp.comap_domain_single -> Finsupp.comapDomain_single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : α -> β) (a : α) (m : M) (hif : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M _inst_1 (Finsupp.single.{u2, u3} β M _inst_1 (f a) m))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.comapDomain.{u1, u2, u3} α β M _inst_1 f (Finsupp.single.{u2, u3} β M _inst_1 (f a) m) hif) (Finsupp.single.{u1, u3} α M _inst_1 a m)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : α -> β) (a : α) (m : M) (hif : Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u1} β M _inst_1 (Finsupp.single.{u2, u1} β M _inst_1 (f a) m))))), Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.comapDomain.{u3, u2, u1} α β M _inst_1 f (Finsupp.single.{u2, u1} β M _inst_1 (f a) m) hif) (Finsupp.single.{u3, u1} α M _inst_1 a m)
-Case conversion may be inaccurate. Consider using '#align finsupp.comap_domain_single Finsupp.comapDomain_singleₓ'. -/
 @[simp]
 theorem comapDomain_single (f : α → β) (a : α) (m : M)
     (hif : Set.InjOn f (f ⁻¹' (single (f a) m).support)) :
@@ -1227,24 +774,12 @@ section AddZeroClass
 
 variable [AddZeroClass M] {f : α → β}
 
-/- warning: finsupp.comap_domain_add -> Finsupp.comapDomain_add is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddZeroClass.{u3} M] {f : α -> β} (v₁ : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (v₂ : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (hv₁ : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1) v₁)))) (hv₂ : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1) v₂)))) (hv₁₂ : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1) (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)) v₁ v₂))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f (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)) v₁ v₂) hv₁₂) (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)) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f v₁ hv₁) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f v₂ hv₂))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u3}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] {f : α -> β} (v₁ : Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (v₂ : Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (hv₁ : Set.InjOn.{u1, u3} α β f (Set.preimage.{u1, u3} α β f (Finset.toSet.{u3} β (Finsupp.support.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1) v₁)))) (hv₂ : Set.InjOn.{u1, u3} α β f (Set.preimage.{u1, u3} α β f (Finset.toSet.{u3} β (Finsupp.support.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1) v₂)))) (hv₁₂ : Set.InjOn.{u1, u3} α β f (Set.preimage.{u1, u3} α β f (Finset.toSet.{u3} β (Finsupp.support.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1) (HAdd.hAdd.{max u3 u2, max u3 u2, max u3 u2} (Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (instHAdd.{max u3 u2} (Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.add.{u3, u2} β M _inst_1)) v₁ v₂))))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.comapDomain.{u1, u3, u2} α β M (AddZeroClass.toZero.{u2} M _inst_1) f (HAdd.hAdd.{max u3 u2, max u3 u2, max u3 u2} (Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (instHAdd.{max u3 u2} (Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.add.{u3, u2} β M _inst_1)) v₁ v₂) hv₁₂) (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)) (Finsupp.comapDomain.{u1, u3, u2} α β M (AddZeroClass.toZero.{u2} M _inst_1) f v₁ hv₁) (Finsupp.comapDomain.{u1, u3, u2} α β M (AddZeroClass.toZero.{u2} M _inst_1) f v₂ hv₂))
-Case conversion may be inaccurate. Consider using '#align finsupp.comap_domain_add Finsupp.comapDomain_addₓ'. -/
 theorem comapDomain_add (v₁ v₂ : β →₀ M) (hv₁ : Set.InjOn f (f ⁻¹' ↑v₁.support))
     (hv₂ : Set.InjOn f (f ⁻¹' ↑v₂.support)) (hv₁₂ : Set.InjOn f (f ⁻¹' ↑(v₁ + v₂).support)) :
     comapDomain f (v₁ + v₂) hv₁₂ = comapDomain f v₁ hv₁ + comapDomain f v₂ hv₂ := by ext;
   simp only [comap_domain_apply, coe_add, Pi.add_apply]
 #align finsupp.comap_domain_add Finsupp.comapDomain_add
 
-/- warning: finsupp.comap_domain_add_of_injective -> Finsupp.comapDomain_add_of_injective is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddZeroClass.{u3} M] {f : α -> β} (hf : Function.Injective.{succ u1, succ u2} α β f) (v₁ : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (v₂ : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f (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)) v₁ v₂) (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1) (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)) v₁ v₂)))))) (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)) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f v₁ (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1) v₁))))) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f v₂ (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1) v₂))))))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] {f : α -> β} (hf : Function.Injective.{succ u3, succ u2} α β f) (v₁ : Finsupp.{u2, u1} β M (AddZeroClass.toZero.{u1} M _inst_1)) (v₂ : Finsupp.{u2, u1} β M (AddZeroClass.toZero.{u1} M _inst_1)), Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.comapDomain.{u3, u2, u1} α β M (AddZeroClass.toZero.{u1} M _inst_1) 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)) v₁ v₂) (Function.Injective.injOn.{u2, u3} α β f hf (Set.preimage.{u3, u2} α β f (Finset.toSet.{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)) v₁ v₂)))))) (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)) (Finsupp.comapDomain.{u3, u2, u1} α β M (AddZeroClass.toZero.{u1} M _inst_1) f v₁ (Function.Injective.injOn.{u2, u3} α β f hf (Set.preimage.{u3, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u1} β M (AddZeroClass.toZero.{u1} M _inst_1) v₁))))) (Finsupp.comapDomain.{u3, u2, u1} α β M (AddZeroClass.toZero.{u1} M _inst_1) f v₂ (Function.Injective.injOn.{u2, u3} α β f hf (Set.preimage.{u3, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u1} β M (AddZeroClass.toZero.{u1} M _inst_1) v₂))))))
-Case conversion may be inaccurate. Consider using '#align finsupp.comap_domain_add_of_injective Finsupp.comapDomain_add_of_injectiveₓ'. -/
 /-- A version of `finsupp.comap_domain_add` that's easier to use. -/
 theorem comapDomain_add_of_injective (hf : Function.Injective f) (v₁ v₂ : β →₀ M) :
     comapDomain f (v₁ + v₂) (hf.InjOn _) =
@@ -1252,12 +787,6 @@ theorem comapDomain_add_of_injective (hf : Function.Injective f) (v₁ v₂ : β
   comapDomain_add _ _ _ _ _
 #align finsupp.comap_domain_add_of_injective Finsupp.comapDomain_add_of_injective
 
-/- warning: finsupp.comap_domain.add_monoid_hom -> Finsupp.comapDomain.addMonoidHom is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddZeroClass.{u3} M] {f : α -> β}, (Function.Injective.{succ u1, succ u2} α β f) -> (AddMonoidHom.{max u2 u3, max u1 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.addZeroClass.{u2, u3} β M _inst_1) (Finsupp.addZeroClass.{u1, u3} α M _inst_1))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddZeroClass.{u3} M] {f : α -> β}, (Function.Injective.{succ u1, succ u2} α β f) -> (AddMonoidHom.{max u3 u2, max u3 u1} (Finsupp.{u2, u3} β M (AddZeroClass.toZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M _inst_1)) (Finsupp.addZeroClass.{u2, u3} β M _inst_1) (Finsupp.addZeroClass.{u1, u3} α M _inst_1))
-Case conversion may be inaccurate. Consider using '#align finsupp.comap_domain.add_monoid_hom Finsupp.comapDomain.addMonoidHomₓ'. -/
 /-- `finsupp.comap_domain` is an `add_monoid_hom`. -/
 @[simps]
 def comapDomain.addMonoidHom (hf : Function.Injective f) : (β →₀ M) →+ α →₀ M
@@ -1271,12 +800,6 @@ end AddZeroClass
 
 variable [AddCommMonoid M] (f : α → β)
 
-/- warning: finsupp.map_domain_comap_domain -> Finsupp.mapDomain_comapDomain is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (f : α -> β) (hf : Function.Injective.{succ u1, succ u2} α β f) (l : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) l)) (Set.range.{u2, succ u1} β α f)) -> (Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) f l (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) l)))))) l)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] (f : α -> β) (hf : Function.Injective.{succ u3, succ u2} α β f) (l : Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))), (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (Finset.toSet.{u2} β (Finsupp.support.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) l)) (Set.range.{u2, succ u3} β α f)) -> (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.mapDomain.{u3, u2, u1} α β M _inst_1 f (Finsupp.comapDomain.{u3, u2, u1} α β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) f l (Function.Injective.injOn.{u2, u3} α β f hf (Set.preimage.{u3, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) l)))))) l)
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_comap_domain Finsupp.mapDomain_comapDomainₓ'. -/
 theorem mapDomain_comapDomain (hf : Function.Injective f) (l : β →₀ M)
     (hl : ↑l.support ⊆ Set.range f) : mapDomain f (comapDomain f l (hf.InjOn _)) = l :=
   by
@@ -1318,12 +841,6 @@ theorem some_zero [Zero M] : (0 : Option α →₀ M).some = 0 := by ext; simp
 #align finsupp.some_zero Finsupp.some_zero
 -/
 
-/- warning: finsupp.some_add -> Finsupp.some_add is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] (f : Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (g : Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.some.{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} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.add.{u1, u2} (Option.{u1} α) M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) f g)) (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.some.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) f) (Finsupp.some.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) g))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] (f : Finsupp.{u1, u2} (Option.{u1} α) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (g : Finsupp.{u1, u2} (Option.{u1} α) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.some.{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} (Option.{u1} α) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u1, u2} (Option.{u1} α) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u1, u2} (Option.{u1} α) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} (Option.{u1} α) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u2} (Option.{u1} α) M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) f g)) (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.some.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) f) (Finsupp.some.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) g))
-Case conversion may be inaccurate. Consider using '#align finsupp.some_add Finsupp.some_addₓ'. -/
 @[simp]
 theorem some_add [AddCommMonoid M] (f g : Option α →₀ M) : (f + g).some = f.some + g.some := by ext;
   simp
@@ -1345,12 +862,6 @@ theorem some_single_some [Zero M] (a : α) (m : M) :
 #align finsupp.some_single_some Finsupp.some_single_some
 -/
 
-/- warning: finsupp.prod_option_index -> Finsupp.prod_option_index is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : CommMonoid.{u3} N] (f : Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (b : (Option.{u1} α) -> M -> N), (forall (o : Option.{u1} α), Eq.{succ u3} N (b o (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))))))) (OfNat.ofNat.{u3} N 1 (OfNat.mk.{u3} N 1 (One.one.{u3} N (MulOneClass.toHasOne.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) -> (forall (o : Option.{u1} α) (m₁ : M) (m₂ : M), Eq.{succ u3} N (b o (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)))) m₁ m₂)) (HMul.hMul.{u3, u3, u3} N N N (instHMul.{u3} N (MulOneClass.toHasMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) (b o m₁) (b o m₂))) -> (Eq.{succ u3} N (Finsupp.prod.{u1, u2, u3} (Option.{u1} α) M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) _inst_2 f b) (HMul.hMul.{u3, u3, u3} N N N (instHMul.{u3} N (MulOneClass.toHasMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) (b (Option.none.{u1} α) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (fun (_x : Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) => (Option.{u1} α) -> M) (Finsupp.coeFun.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) f (Option.none.{u1} α))) (Finsupp.prod.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) _inst_2 (Finsupp.some.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) f) (fun (a : α) => b (Option.some.{u1} α a)))))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : CommMonoid.{u2} N] (f : Finsupp.{u1, u3} (Option.{u1} α) M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (b : (Option.{u1} α) -> M -> N), (forall (o : Option.{u1} α), Eq.{succ u2} N (b o (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) (OfNat.ofNat.{u2} N 1 (One.toOfNat1.{u2} N (Monoid.toOne.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) -> (forall (o : Option.{u1} α) (m₁ : M) (m₂ : M), Eq.{succ u2} N (b o (HAdd.hAdd.{u3, u3, u3} M M M (instHAdd.{u3} M (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) m₁ m₂)) (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (b o m₁) (b o m₂))) -> (Eq.{succ u2} N (Finsupp.prod.{u1, u3, u2} (Option.{u1} α) M N (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) _inst_2 f b) (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (b (Option.none.{u1} α) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} (Option.{u1} α) M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Option.{u1} α) (fun (_x : Option.{u1} α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => M) _x) (Finsupp.funLike.{u1, u3} (Option.{u1} α) M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) f (Option.none.{u1} α))) (Finsupp.prod.{u1, u3, u2} α M N (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) _inst_2 (Finsupp.some.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) f) (fun (a : α) => b (Option.some.{u1} α a)))))
-Case conversion may be inaccurate. Consider using '#align finsupp.prod_option_index Finsupp.prod_option_indexₓ'. -/
 @[to_additive]
 theorem prod_option_index [AddCommMonoid M] [CommMonoid N] (f : Option α →₀ M)
     (b : Option α → M → N) (h_zero : ∀ o, b o 0 = 1)
@@ -1368,12 +879,6 @@ theorem prod_option_index [AddCommMonoid M] [CommMonoid N] (f : Option α →₀
 #align finsupp.prod_option_index Finsupp.prod_option_index
 #align finsupp.sum_option_index Finsupp.sum_option_index
 
-/- warning: finsupp.sum_option_index_smul -> Finsupp.sum_option_index_smul is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Semiring.{u3} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : Module.{u3, u2} R M _inst_1 _inst_2] (f : Finsupp.{u1, u3} (Option.{u1} α) R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) (b : (Option.{u1} α) -> M), Eq.{succ u2} M (Finsupp.sum.{u1, u3, u2} (Option.{u1} α) R M (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) _inst_2 f (fun (o : Option.{u1} α) (r : R) => SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3)))) r (b o))) (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3)))) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} (Option.{u1} α) R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) (fun (_x : Finsupp.{u1, u3} (Option.{u1} α) R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) => (Option.{u1} α) -> R) (Finsupp.coeFun.{u1, u3} (Option.{u1} α) R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) f (Option.none.{u1} α)) (b (Option.none.{u1} α))) (Finsupp.sum.{u1, u3, u2} α R M (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) _inst_2 (Finsupp.some.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) f) (fun (a : α) (r : R) => SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3)))) r (b (Option.some.{u1} α a)))))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Semiring.{u3} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : Module.{u3, u2} R M _inst_1 _inst_2] (f : Finsupp.{u1, u3} (Option.{u1} α) R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) (b : (Option.{u1} α) -> M), Eq.{succ u2} M (Finsupp.sum.{u1, u3, u2} (Option.{u1} α) R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) _inst_2 f (fun (o : Option.{u1} α) (r : R) => HSMul.hSMul.{u3, u2, u2} R M M (instHSMul.{u3, u2} R M (SMulZeroClass.toSMul.{u3, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u3, u2} R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3))))) r (b o))) (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (HSMul.hSMul.{u3, u2, u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) (Option.none.{u1} α)) M M (instHSMul.{u3, u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) (Option.none.{u1} α)) M (SMulZeroClass.toSMul.{u3, u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) (Option.none.{u1} α)) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u3, u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) (Option.none.{u1} α)) M (MonoidWithZero.toZero.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) (Option.none.{u1} α)) (Semiring.toMonoidWithZero.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) (Option.none.{u1} α)) _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u3, u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) (Option.none.{u1} α)) M (Semiring.toMonoidWithZero.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) (Option.none.{u1} α)) _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u3, u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) (Option.none.{u1} α)) M _inst_1 _inst_2 _inst_3))))) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} (Option.{u1} α) R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) (Option.{u1} α) (fun (_x : Option.{u1} α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) _x) (Finsupp.funLike.{u1, u3} (Option.{u1} α) R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) f (Option.none.{u1} α)) (b (Option.none.{u1} α))) (Finsupp.sum.{u1, u3, u2} α R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) _inst_2 (Finsupp.some.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) f) (fun (a : α) (r : R) => HSMul.hSMul.{u3, u2, u2} R M M (instHSMul.{u3, u2} R M (SMulZeroClass.toSMul.{u3, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u3, u2} R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3))))) r (b (Option.some.{u1} α a)))))
-Case conversion may be inaccurate. Consider using '#align finsupp.sum_option_index_smul Finsupp.sum_option_index_smulₓ'. -/
 theorem sum_option_index_smul [Semiring R] [AddCommMonoid M] [Module R M] (f : Option α →₀ R)
     (b : Option α → M) :
     (f.Sum fun o r => r • b o) = f none • b none + f.some.Sum fun a r => r • b (Option.some a) :=
@@ -1412,33 +917,15 @@ theorem filter_apply (a : α) [D : Decidable (p a)] : f.filterₓ p a = if p a t
 #align finsupp.filter_apply Finsupp.filter_apply
 -/
 
-/- warning: finsupp.filter_eq_indicator -> Finsupp.filter_eq_indicator is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (p : α -> Prop) (f : Finsupp.{u1, 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.filter.{u1, u2} α M _inst_1 p f)) (Set.indicator.{u1, u2} α M _inst_1 (setOf.{u1} α (fun (x : α) => p 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) f))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (p : α -> Prop) (f : Finsupp.{u2, 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.filter.{u2, u1} α M _inst_1 p f)) (Set.indicator.{u2, u1} α M _inst_1 (setOf.{u2} α (fun (x : α) => p 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))
-Case conversion may be inaccurate. Consider using '#align finsupp.filter_eq_indicator Finsupp.filter_eq_indicatorₓ'. -/
 theorem filter_eq_indicator : ⇑(f.filterₓ p) = Set.indicator { x | p x } f :=
   rfl
 #align finsupp.filter_eq_indicator Finsupp.filter_eq_indicator
 
-/- warning: finsupp.filter_eq_zero_iff -> Finsupp.filter_eq_zero_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (p : α -> Prop) (f : Finsupp.{u1, u2} α M _inst_1), Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.filter.{u1, u2} α M _inst_1 p 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))))) (forall (x : α), (p x) -> (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) (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] (p : α -> Prop) (f : Finsupp.{u2, u1} α M _inst_1), Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.filter.{u2, u1} α M _inst_1 p 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)))) (forall (x : α), (p x) -> (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) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.filter_eq_zero_iff Finsupp.filter_eq_zero_iffₓ'. -/
 theorem filter_eq_zero_iff : f.filterₓ p = 0 ↔ ∀ x, p x → f x = 0 := by
   simp only [FunLike.ext_iff, filter_eq_indicator, zero_apply, Set.indicator_apply_eq_zero,
     Set.mem_setOf_eq]
 #align finsupp.filter_eq_zero_iff Finsupp.filter_eq_zero_iff
 
-/- warning: finsupp.filter_eq_self_iff -> Finsupp.filter_eq_self_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (p : α -> Prop) (f : Finsupp.{u1, u2} α M _inst_1), Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.filter.{u1, u2} α M _inst_1 p f) f) (forall (x : α), (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 x) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) -> (p x))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (p : α -> Prop) (f : Finsupp.{u2, u1} α M _inst_1), Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.filter.{u2, u1} α M _inst_1 p f) f) (forall (x : α), (Ne.{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) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) _inst_1))) -> (p x))
-Case conversion may be inaccurate. Consider using '#align finsupp.filter_eq_self_iff Finsupp.filter_eq_self_iffₓ'. -/
 theorem filter_eq_self_iff : f.filterₓ p = f ↔ ∀ x, f x ≠ 0 → p x := by
   simp only [FunLike.ext_iff, filter_eq_indicator, Set.indicator_apply_eq_self, Set.mem_setOf_eq,
     not_imp_comm]
@@ -1456,56 +943,26 @@ theorem filter_apply_neg {a : α} (h : ¬p a) : f.filterₓ p a = 0 := by classi
 #align finsupp.filter_apply_neg Finsupp.filter_apply_neg
 -/
 
-/- warning: finsupp.support_filter -> Finsupp.support_filter is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (p : α -> Prop) (f : Finsupp.{u1, u2} α M _inst_1) [D : DecidablePred.{succ u1} α p], Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M _inst_1 (Finsupp.filter.{u1, u2} α M _inst_1 p f)) (Finset.filter.{u1} α p (fun (a : α) => D 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] (p : α -> Prop) (f : Finsupp.{u2, u1} α M _inst_1) [D : DecidablePred.{succ u2} α p], Eq.{succ u2} (Finset.{u2} α) (Finsupp.support.{u2, u1} α M _inst_1 (Finsupp.filter.{u2, u1} α M _inst_1 p f)) (Finset.filter.{u2} α p (fun (a : α) => D a) (Finsupp.support.{u2, u1} α M _inst_1 f))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_filter Finsupp.support_filterₓ'. -/
 @[simp]
 theorem support_filter [D : DecidablePred p] : (f.filterₓ p).support = f.support.filterₓ p := by
   rw [Subsingleton.elim D] <;> rfl
 #align finsupp.support_filter Finsupp.support_filter
 
-/- warning: finsupp.filter_zero -> Finsupp.filter_zero is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (p : α -> Prop), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.filter.{u1, u2} α M _inst_1 p (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] (p : α -> Prop), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.filter.{u2, u1} α M _inst_1 p (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.filter_zero Finsupp.filter_zeroₓ'. -/
 theorem filter_zero : (0 : α →₀ M).filterₓ p = 0 := by
   classical rw [← support_eq_empty, support_filter, support_zero, Finset.filter_empty]
 #align finsupp.filter_zero Finsupp.filter_zero
 
-/- warning: finsupp.filter_single_of_pos -> Finsupp.filter_single_of_pos is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (p : α -> Prop) {a : α} {b : M}, (p a) -> (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.filter.{u1, u2} α M _inst_1 p (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] (p : α -> Prop) {a : α} {b : M}, (p a) -> (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.filter.{u2, u1} α M _inst_1 p (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.filter_single_of_pos Finsupp.filter_single_of_posₓ'. -/
 @[simp]
 theorem filter_single_of_pos {a : α} {b : M} (h : p a) : (single a b).filterₓ p = single a b :=
   (filter_eq_self_iff _ _).2 fun x hx => (single_apply_ne_zero.1 hx).1.symm ▸ h
 #align finsupp.filter_single_of_pos Finsupp.filter_single_of_pos
 
-/- warning: finsupp.filter_single_of_neg -> Finsupp.filter_single_of_neg is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (p : α -> Prop) {a : α} {b : M}, (Not (p a)) -> (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.filter.{u1, u2} α M _inst_1 p (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] (p : α -> Prop) {a : α} {b : M}, (Not (p a)) -> (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.filter.{u2, u1} α M _inst_1 p (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.filter_single_of_neg Finsupp.filter_single_of_negₓ'. -/
 @[simp]
 theorem filter_single_of_neg {a : α} {b : M} (h : ¬p a) : (single a b).filterₓ p = 0 :=
   (filter_eq_zero_iff _ _).2 fun x hpx =>
     single_apply_eq_zero.2 fun hxa => absurd hpx (hxa.symm ▸ h)
 #align finsupp.filter_single_of_neg Finsupp.filter_single_of_neg
 
-/- warning: finsupp.prod_filter_index -> Finsupp.prod_filter_index is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : Zero.{u2} M] (p : α -> Prop) (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : CommMonoid.{u3} N] (g : α -> M -> N), Eq.{succ u3} N (Finsupp.prod.{u1, u2, u3} α M N _inst_1 _inst_2 (Finsupp.filter.{u1, u2} α M _inst_1 p f) g) (Finset.prod.{u3, u1} N α _inst_2 (Finsupp.support.{u1, u2} α M _inst_1 (Finsupp.filter.{u1, u2} α M _inst_1 p f)) (fun (x : α) => g 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) f x)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} {N : Type.{u3}} [_inst_1 : Zero.{u1} M] (p : α -> Prop) (f : Finsupp.{u2, u1} α M _inst_1) [_inst_2 : CommMonoid.{u3} N] (g : α -> M -> N), Eq.{succ u3} N (Finsupp.prod.{u2, u1, u3} α M N _inst_1 _inst_2 (Finsupp.filter.{u2, u1} α M _inst_1 p f) g) (Finset.prod.{u3, u2} N α _inst_2 (Finsupp.support.{u2, u1} α M _inst_1 (Finsupp.filter.{u2, u1} α M _inst_1 p f)) (fun (x : α) => g 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)))
-Case conversion may be inaccurate. Consider using '#align finsupp.prod_filter_index Finsupp.prod_filter_indexₓ'. -/
 @[to_additive]
 theorem prod_filter_index [CommMonoid N] (g : α → M → N) :
     (f.filterₓ p).Prod g = ∏ x in (f.filterₓ p).support, g x (f x) := by
@@ -1516,12 +973,6 @@ theorem prod_filter_index [CommMonoid N] (g : α → M → N) :
 #align finsupp.prod_filter_index Finsupp.prod_filter_index
 #align finsupp.sum_filter_index Finsupp.sum_filter_index
 
-/- warning: finsupp.prod_filter_mul_prod_filter_not -> Finsupp.prod_filter_mul_prod_filter_not is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : Zero.{u2} M] (p : α -> Prop) (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : CommMonoid.{u3} N] (g : α -> M -> N), Eq.{succ u3} N (HMul.hMul.{u3, u3, u3} N N N (instHMul.{u3} N (MulOneClass.toHasMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) (Finsupp.prod.{u1, u2, u3} α M N _inst_1 _inst_2 (Finsupp.filter.{u1, u2} α M _inst_1 p f) g) (Finsupp.prod.{u1, u2, u3} α M N _inst_1 _inst_2 (Finsupp.filter.{u1, u2} α M _inst_1 (fun (a : α) => Not (p a)) f) g)) (Finsupp.prod.{u1, u2, u3} α M N _inst_1 _inst_2 f g)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} {N : Type.{u3}} [_inst_1 : Zero.{u1} M] (p : α -> Prop) (f : Finsupp.{u2, u1} α M _inst_1) [_inst_2 : CommMonoid.{u3} N] (g : α -> M -> N), Eq.{succ u3} N (HMul.hMul.{u3, u3, u3} N N N (instHMul.{u3} N (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) (Finsupp.prod.{u2, u1, u3} α M N _inst_1 _inst_2 (Finsupp.filter.{u2, u1} α M _inst_1 p f) g) (Finsupp.prod.{u2, u1, u3} α M N _inst_1 _inst_2 (Finsupp.filter.{u2, u1} α M _inst_1 (fun (a : α) => Not (p a)) f) g)) (Finsupp.prod.{u2, u1, u3} α M N _inst_1 _inst_2 f g)
-Case conversion may be inaccurate. Consider using '#align finsupp.prod_filter_mul_prod_filter_not Finsupp.prod_filter_mul_prod_filter_notₓ'. -/
 @[simp, to_additive]
 theorem prod_filter_mul_prod_filter_not [CommMonoid N] (g : α → M → N) :
     (f.filterₓ p).Prod g * (f.filterₓ fun a => ¬p a).Prod g = f.Prod g := by
@@ -1530,12 +981,6 @@ theorem prod_filter_mul_prod_filter_not [CommMonoid N] (g : α → M → N) :
 #align finsupp.prod_filter_mul_prod_filter_not Finsupp.prod_filter_mul_prod_filter_not
 #align finsupp.sum_filter_add_sum_filter_not Finsupp.sum_filter_add_sum_filter_not
 
-/- warning: finsupp.prod_div_prod_filter -> Finsupp.prod_div_prod_filter is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {G : Type.{u3}} [_inst_1 : Zero.{u2} M] (p : α -> Prop) (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : CommGroup.{u3} G] (g : α -> M -> G), Eq.{succ u3} G (HDiv.hDiv.{u3, u3, u3} G G G (instHDiv.{u3} G (DivInvMonoid.toHasDiv.{u3} G (Group.toDivInvMonoid.{u3} G (CommGroup.toGroup.{u3} G _inst_2)))) (Finsupp.prod.{u1, u2, u3} α M G _inst_1 (CommGroup.toCommMonoid.{u3} G _inst_2) f g) (Finsupp.prod.{u1, u2, u3} α M G _inst_1 (CommGroup.toCommMonoid.{u3} G _inst_2) (Finsupp.filter.{u1, u2} α M _inst_1 p f) g)) (Finsupp.prod.{u1, u2, u3} α M G _inst_1 (CommGroup.toCommMonoid.{u3} G _inst_2) (Finsupp.filter.{u1, u2} α M _inst_1 (fun (a : α) => Not (p a)) f) g)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} {G : Type.{u3}} [_inst_1 : Zero.{u1} M] (p : α -> Prop) (f : Finsupp.{u2, u1} α M _inst_1) [_inst_2 : CommGroup.{u3} G] (g : α -> M -> G), Eq.{succ u3} G (HDiv.hDiv.{u3, u3, u3} G G G (instHDiv.{u3} G (DivInvMonoid.toDiv.{u3} G (Group.toDivInvMonoid.{u3} G (CommGroup.toGroup.{u3} G _inst_2)))) (Finsupp.prod.{u2, u1, u3} α M G _inst_1 (CommGroup.toCommMonoid.{u3} G _inst_2) f g) (Finsupp.prod.{u2, u1, u3} α M G _inst_1 (CommGroup.toCommMonoid.{u3} G _inst_2) (Finsupp.filter.{u2, u1} α M _inst_1 p f) g)) (Finsupp.prod.{u2, u1, u3} α M G _inst_1 (CommGroup.toCommMonoid.{u3} G _inst_2) (Finsupp.filter.{u2, u1} α M _inst_1 (fun (a : α) => Not (p a)) f) g)
-Case conversion may be inaccurate. Consider using '#align finsupp.prod_div_prod_filter Finsupp.prod_div_prod_filterₓ'. -/
 @[simp, to_additive]
 theorem prod_div_prod_filter [CommGroup G] (g : α → M → G) :
     f.Prod g / (f.filterₓ p).Prod g = (f.filterₓ fun a => ¬p a).Prod g :=
@@ -1545,12 +990,6 @@ theorem prod_div_prod_filter [CommGroup G] (g : α → M → G) :
 
 end Zero
 
-/- warning: finsupp.filter_pos_add_filter_neg -> Finsupp.filter_pos_add_filter_neg 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)) (p : α -> Prop), 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.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) p f) (Finsupp.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) (fun (a : α) => Not (p a)) f)) f
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (f : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (p : α -> Prop), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (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)) (Finsupp.filter.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) p f) (Finsupp.filter.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) (fun (a : α) => Not (p a)) f)) f
-Case conversion may be inaccurate. Consider using '#align finsupp.filter_pos_add_filter_neg Finsupp.filter_pos_add_filter_negₓ'. -/
 theorem filter_pos_add_filter_neg [AddZeroClass M] (f : α →₀ M) (p : α → Prop) :
     (f.filterₓ p + f.filterₓ fun a => ¬p a) = f :=
   coeFn_injective <| Set.indicator_self_add_compl { x | p x } f
@@ -1573,12 +1012,6 @@ def frange (f : α →₀ M) : Finset M :=
 #align finsupp.frange Finsupp.frange
 -/
 
-/- warning: finsupp.mem_frange -> Finsupp.mem_frange 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} {y : M}, Iff (Membership.Mem.{u2, u2} M (Finset.{u2} M) (Finset.hasMem.{u2} M) y (Finsupp.frange.{u1, u2} α M _inst_1 f)) (And (Ne.{succ u2} M y (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Exists.{succ u1} α (fun (x : α) => 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) y)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {y : M}, Iff (Membership.mem.{u1, u1} M (Finset.{u1} M) (Finset.instMembershipFinset.{u1} M) y (Finsupp.frange.{u2, u1} α M _inst_1 f)) (And (Ne.{succ u1} M y (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (Exists.{succ u2} α (fun (x : α) => 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) y)))
-Case conversion may be inaccurate. Consider using '#align finsupp.mem_frange Finsupp.mem_frangeₓ'. -/
 theorem mem_frange {f : α →₀ M} {y : M} : y ∈ f.frange ↔ y ≠ 0 ∧ ∃ x, f x = y := by
   classical exact
       finset.mem_image.trans
@@ -1586,12 +1019,6 @@ theorem mem_frange {f : α →₀ M} {y : M} : y ∈ f.frange ↔ y ≠ 0 ∧ 
           ⟨x, mem_support_iff.2 (hx.symm ▸ hy), hx⟩⟩
 #align finsupp.mem_frange Finsupp.mem_frange
 
-/- warning: finsupp.zero_not_mem_frange -> Finsupp.zero_not_mem_frange 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}, Not (Membership.Mem.{u2, u2} M (Finset.{u2} M) (Finset.hasMem.{u2} M) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))) (Finsupp.frange.{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}, Not (Membership.mem.{u1, u1} M (Finset.{u1} M) (Finset.instMembershipFinset.{u1} M) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1)) (Finsupp.frange.{u2, u1} α M _inst_1 f))
-Case conversion may be inaccurate. Consider using '#align finsupp.zero_not_mem_frange Finsupp.zero_not_mem_frangeₓ'. -/
 theorem zero_not_mem_frange {f : α →₀ M} : (0 : M) ∉ f.frange := fun H => (mem_frange.1 H).1 rfl
 #align finsupp.zero_not_mem_frange Finsupp.zero_not_mem_frange
 
@@ -1631,56 +1058,26 @@ def subtypeDomain (p : α → Prop) (f : α →₀ M) : Subtype p →₀ M
 #align finsupp.subtype_domain Finsupp.subtypeDomain
 -/
 
-/- warning: finsupp.support_subtype_domain -> Finsupp.support_subtypeDomain is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {p : α -> Prop} [D : DecidablePred.{succ u1} α p] {f : Finsupp.{u1, u2} α M _inst_1}, Eq.{succ u1} (Finset.{u1} (Subtype.{succ u1} α p)) (Finsupp.support.{u1, u2} (Subtype.{succ u1} α p) M _inst_1 (Finsupp.subtypeDomain.{u1, u2} α M _inst_1 p f)) (Finset.subtype.{u1} α p (fun (a : α) => D 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] {p : α -> Prop} [D : DecidablePred.{succ u2} α p] {f : Finsupp.{u2, u1} α M _inst_1}, Eq.{succ u2} (Finset.{u2} (Subtype.{succ u2} α p)) (Finsupp.support.{u2, u1} (Subtype.{succ u2} α p) M _inst_1 (Finsupp.subtypeDomain.{u2, u1} α M _inst_1 p f)) (Finset.subtype.{u2} α p (fun (a : α) => D a) (Finsupp.support.{u2, u1} α M _inst_1 f))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_subtype_domain Finsupp.support_subtypeDomainₓ'. -/
 @[simp]
 theorem support_subtypeDomain [D : DecidablePred p] {f : α →₀ M} :
     (subtypeDomain p f).support = f.support.Subtype p := by rw [Subsingleton.elim D] <;> rfl
 #align finsupp.support_subtype_domain Finsupp.support_subtypeDomain
 
-/- warning: finsupp.subtype_domain_apply -> Finsupp.subtypeDomain_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {p : α -> Prop} {a : Subtype.{succ u1} α p} {v : Finsupp.{u1, u2} α M _inst_1}, Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (fun (_x : Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) => (Subtype.{succ u1} α p) -> M) (Finsupp.coeFun.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.subtypeDomain.{u1, u2} α M _inst_1 p v) 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) v (Subtype.val.{succ u1} α p a))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {p : α -> Prop} {a : Subtype.{succ u2} α p} {v : Finsupp.{u2, u1} α M _inst_1}, Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Subtype.{succ u2} α p) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) (Subtype.{succ u2} α p) (fun (_x : Subtype.{succ u2} α p) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Subtype.{succ u2} α p) => M) _x) (Finsupp.funLike.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) (Finsupp.subtypeDomain.{u2, u1} α M _inst_1 p v) 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) v (Subtype.val.{succ u2} α p a))
-Case conversion may be inaccurate. Consider using '#align finsupp.subtype_domain_apply Finsupp.subtypeDomain_applyₓ'. -/
 @[simp]
 theorem subtypeDomain_apply {a : Subtype p} {v : α →₀ M} : (subtypeDomain p v) a = v a.val :=
   rfl
 #align finsupp.subtype_domain_apply Finsupp.subtypeDomain_apply
 
-/- warning: finsupp.subtype_domain_zero -> Finsupp.subtypeDomain_zero is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {p : α -> Prop}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.subtypeDomain.{u1, u2} α M _inst_1 p (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} (Subtype.{succ u1} α p) M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.zero.{u1, u2} (Subtype.{succ u1} α p) M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {p : α -> Prop}, Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) (Finsupp.subtypeDomain.{u2, u1} α M _inst_1 p (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} (Subtype.{succ u2} α p) M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) (Finsupp.zero.{u2, u1} (Subtype.{succ u2} α p) M _inst_1)))
-Case conversion may be inaccurate. Consider using '#align finsupp.subtype_domain_zero Finsupp.subtypeDomain_zeroₓ'. -/
 @[simp]
 theorem subtypeDomain_zero : subtypeDomain p (0 : α →₀ M) = 0 :=
   rfl
 #align finsupp.subtype_domain_zero Finsupp.subtypeDomain_zero
 
-/- warning: finsupp.subtype_domain_eq_zero_iff' -> Finsupp.subtypeDomain_eq_zero_iff' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {p : α -> Prop} {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.subtypeDomain.{u1, u2} α M _inst_1 p f) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.zero.{u1, u2} (Subtype.{succ u1} α p) M _inst_1))))) (forall (x : α), (p x) -> (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) (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] {p : α -> Prop} {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) (Finsupp.subtypeDomain.{u2, u1} α M _inst_1 p f) (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) (Finsupp.zero.{u2, u1} (Subtype.{succ u2} α p) M _inst_1)))) (forall (x : α), (p x) -> (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) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.subtype_domain_eq_zero_iff' Finsupp.subtypeDomain_eq_zero_iff'ₓ'. -/
 theorem subtypeDomain_eq_zero_iff' {f : α →₀ M} : f.subtypeDomain p = 0 ↔ ∀ x, p x → f x = 0 := by
   classical simp_rw [← support_eq_empty, support_subtype_domain, subtype_eq_empty,
       not_mem_support_iff]
 #align finsupp.subtype_domain_eq_zero_iff' Finsupp.subtypeDomain_eq_zero_iff'
 
-/- warning: finsupp.subtype_domain_eq_zero_iff -> Finsupp.subtypeDomain_eq_zero_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {p : α -> Prop} {f : Finsupp.{u1, u2} α M _inst_1}, (forall (x : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) x (Finsupp.support.{u1, u2} α M _inst_1 f)) -> (p x)) -> (Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.subtypeDomain.{u1, u2} α M _inst_1 p f) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.zero.{u1, u2} (Subtype.{succ u1} α p) M _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] {p : α -> Prop} {f : Finsupp.{u2, u1} α M _inst_1}, (forall (x : α), (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) x (Finsupp.support.{u2, u1} α M _inst_1 f)) -> (p x)) -> (Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) (Finsupp.subtypeDomain.{u2, u1} α M _inst_1 p f) (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) (Finsupp.zero.{u2, u1} (Subtype.{succ u2} α p) M _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.subtype_domain_eq_zero_iff Finsupp.subtypeDomain_eq_zero_iffₓ'. -/
 theorem subtypeDomain_eq_zero_iff {f : α →₀ M} (hf : ∀ x ∈ f.support, p x) :
     f.subtypeDomain p = 0 ↔ f = 0 :=
   subtypeDomain_eq_zero_iff'.trans
@@ -1690,12 +1087,6 @@ theorem subtypeDomain_eq_zero_iff {f : α →₀ M} (hf : ∀ x ∈ f.support, p
       fun H x _ => by simp [H]⟩
 #align finsupp.subtype_domain_eq_zero_iff Finsupp.subtypeDomain_eq_zero_iff
 
-/- warning: finsupp.prod_subtype_domain_index -> Finsupp.prod_subtypeDomain_index is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : Zero.{u2} M] {p : α -> Prop} [_inst_2 : CommMonoid.{u3} N] {v : Finsupp.{u1, u2} α M _inst_1} {h : α -> M -> N}, (forall (x : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) x (Finsupp.support.{u1, u2} α M _inst_1 v)) -> (p x)) -> (Eq.{succ u3} N (Finsupp.prod.{u1, u2, u3} (Subtype.{succ u1} α p) M N _inst_1 _inst_2 (Finsupp.subtypeDomain.{u1, u2} α M _inst_1 p v) (fun (a : Subtype.{succ u1} α p) (b : M) => h ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subtype.{succ u1} α p) α (HasLiftT.mk.{succ u1, succ u1} (Subtype.{succ u1} α p) α (CoeTCₓ.coe.{succ u1, succ u1} (Subtype.{succ u1} α p) α (coeBase.{succ u1, succ u1} (Subtype.{succ u1} α p) α (coeSubtype.{succ u1} α (fun (x : α) => p x))))) a) b)) (Finsupp.prod.{u1, u2, u3} α M N _inst_1 _inst_2 v h))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} {N : Type.{u3}} [_inst_1 : Zero.{u1} M] {p : α -> Prop} [_inst_2 : CommMonoid.{u3} N] {v : Finsupp.{u2, u1} α M _inst_1} {h : α -> M -> N}, (forall (x : α), (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) x (Finsupp.support.{u2, u1} α M _inst_1 v)) -> (p x)) -> (Eq.{succ u3} N (Finsupp.prod.{u2, u1, u3} (Subtype.{succ u2} α p) M N _inst_1 _inst_2 (Finsupp.subtypeDomain.{u2, u1} α M _inst_1 p v) (fun (a : Subtype.{succ u2} α p) (b : M) => h (Subtype.val.{succ u2} α p a) b)) (Finsupp.prod.{u2, u1, u3} α M N _inst_1 _inst_2 v h))
-Case conversion may be inaccurate. Consider using '#align finsupp.prod_subtype_domain_index Finsupp.prod_subtypeDomain_indexₓ'. -/
 @[to_additive]
 theorem prod_subtypeDomain_index [CommMonoid N] {v : α →₀ M} {h : α → M → N}
     (hp : ∀ x ∈ v.support, p x) : ((v.subtypeDomain p).Prod fun a b => h a b) = v.Prod h :=
@@ -1710,24 +1101,12 @@ section AddZeroClass
 
 variable [AddZeroClass M] {p : α → Prop} {v v' : α →₀ M}
 
-/- warning: finsupp.subtype_domain_add -> Finsupp.subtypeDomain_add is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] {p : α -> Prop} {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 u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.subtypeDomain.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) 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)) v v')) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} (Subtype.{succ u1} α p) M _inst_1)) (Finsupp.subtypeDomain.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) p v) (Finsupp.subtypeDomain.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) p v'))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] {p : α -> Prop} {v : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)} {v' : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)}, Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.subtypeDomain.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) 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)) v v')) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} (Subtype.{succ u2} α p) M _inst_1)) (Finsupp.subtypeDomain.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) p v) (Finsupp.subtypeDomain.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) p v'))
-Case conversion may be inaccurate. Consider using '#align finsupp.subtype_domain_add Finsupp.subtypeDomain_addₓ'. -/
 @[simp]
 theorem subtypeDomain_add {v v' : α →₀ M} :
     (v + v').subtypeDomain p = v.subtypeDomain p + v'.subtypeDomain p :=
   ext fun _ => rfl
 #align finsupp.subtype_domain_add Finsupp.subtypeDomain_add
 
-/- warning: finsupp.subtype_domain_add_monoid_hom -> Finsupp.subtypeDomainAddMonoidHom is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] {p : α -> Prop}, AddMonoidHom.{max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1) (Finsupp.addZeroClass.{u1, u2} (Subtype.{succ u1} α p) M _inst_1)
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] {p : α -> Prop}, AddMonoidHom.{max u2 u1, max u2 u1} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.addZeroClass.{u1, u2} α M _inst_1) (Finsupp.addZeroClass.{u1, u2} (Subtype.{succ u1} α p) M _inst_1)
-Case conversion may be inaccurate. Consider using '#align finsupp.subtype_domain_add_monoid_hom Finsupp.subtypeDomainAddMonoidHomₓ'. -/
 /-- `subtype_domain` but as an `add_monoid_hom`. -/
 def subtypeDomainAddMonoidHom : (α →₀ M) →+ Subtype p →₀ M
     where
@@ -1736,12 +1115,6 @@ def subtypeDomainAddMonoidHom : (α →₀ M) →+ Subtype p →₀ M
   map_add' _ _ := subtypeDomain_add
 #align finsupp.subtype_domain_add_monoid_hom Finsupp.subtypeDomainAddMonoidHom
 
-/- warning: finsupp.filter_add_hom -> Finsupp.filterAddHom is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M], (α -> Prop) -> (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], (α -> Prop) -> (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.filter_add_hom Finsupp.filterAddHomₓ'. -/
 /-- `finsupp.filter` as an `add_monoid_hom`. -/
 def filterAddHom (p : α → Prop) : (α →₀ M) →+ α →₀ M
     where
@@ -1750,12 +1123,6 @@ def filterAddHom (p : α → Prop) : (α →₀ M) →+ α →₀ M
   map_add' f g := coeFn_injective <| Set.indicator_add { x | p x } f g
 #align finsupp.filter_add_hom Finsupp.filterAddHom
 
-/- warning: finsupp.filter_add -> Finsupp.filter_add is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] {p : α -> Prop} {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 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) 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)) v v')) (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.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) p v) (Finsupp.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) p v'))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] {p : α -> Prop} {v : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)} {v' : 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.filter.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) 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)) v v')) (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.filter.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) p v) (Finsupp.filter.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) p v'))
-Case conversion may be inaccurate. Consider using '#align finsupp.filter_add Finsupp.filter_addₓ'. -/
 @[simp]
 theorem filter_add {v v' : α →₀ M} : (v + v').filterₓ p = v.filterₓ p + v'.filterₓ p :=
   (filterAddHom p).map_add v v'
@@ -1767,45 +1134,21 @@ section CommMonoid
 
 variable [AddCommMonoid M] {p : α → Prop}
 
-/- warning: finsupp.subtype_domain_sum -> Finsupp.subtypeDomain_sum is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {ι : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {p : α -> Prop} {s : Finset.{u2} ι} {h : ι -> (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))}, Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.subtypeDomain.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) p (Finset.sum.{max u1 u3, u2} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) ι (Finsupp.addCommMonoid.{u1, u3} α M _inst_1) s (fun (c : ι) => h c))) (Finset.sum.{max u1 u3, u2} (Finsupp.{u1, u3} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) ι (Finsupp.addCommMonoid.{u1, u3} (Subtype.{succ u1} α p) M _inst_1) s (fun (c : ι) => Finsupp.subtypeDomain.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) p (h c)))
-but is expected to have type
-  forall {α : Type.{u2}} {ι : Type.{u3}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] {p : α -> Prop} {s : Finset.{u3} ι} {h : ι -> (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)))}, Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.subtypeDomain.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) p (Finset.sum.{max u2 u1, u3} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) ι (Finsupp.addCommMonoid.{u2, u1} α M _inst_1) s (fun (c : ι) => h c))) (Finset.sum.{max u2 u1, u3} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) ι (Finsupp.addCommMonoid.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) s (fun (c : ι) => Finsupp.subtypeDomain.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) p (h c)))
-Case conversion may be inaccurate. Consider using '#align finsupp.subtype_domain_sum Finsupp.subtypeDomain_sumₓ'. -/
 theorem subtypeDomain_sum {s : Finset ι} {h : ι → α →₀ M} :
     (∑ c in s, h c).subtypeDomain p = ∑ c in s, (h c).subtypeDomain p :=
   (subtypeDomainAddMonoidHom : _ →+ Subtype p →₀ M).map_sum _ s
 #align finsupp.subtype_domain_sum Finsupp.subtypeDomain_sum
 
-/- warning: finsupp.subtype_domain_finsupp_sum -> Finsupp.subtypeDomain_finsupp_sum is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u3} M] {p : α -> Prop} [_inst_2 : Zero.{u4} N] {s : Finsupp.{u2, u4} β N _inst_2} {h : β -> N -> (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))}, Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.subtypeDomain.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) p (Finsupp.sum.{u2, u4, max u1 u3} β N (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) _inst_2 (Finsupp.addCommMonoid.{u1, u3} α M _inst_1) s h)) (Finsupp.sum.{u2, u4, max u1 u3} β N (Finsupp.{u1, u3} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) _inst_2 (Finsupp.addCommMonoid.{u1, u3} (Subtype.{succ u1} α p) M _inst_1) s (fun (c : β) (d : N) => Finsupp.subtypeDomain.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) p (h c d)))
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u3}} {M : Type.{u1}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u1} M] {p : α -> Prop} [_inst_2 : Zero.{u4} N] {s : Finsupp.{u3, u4} β N _inst_2} {h : β -> N -> (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)))}, Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.subtypeDomain.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) p (Finsupp.sum.{u3, u4, max u2 u1} β N (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) _inst_2 (Finsupp.addCommMonoid.{u2, u1} α M _inst_1) s h)) (Finsupp.sum.{u3, u4, max u2 u1} β N (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) _inst_2 (Finsupp.addCommMonoid.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) s (fun (c : β) (d : N) => Finsupp.subtypeDomain.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) p (h c d)))
-Case conversion may be inaccurate. Consider using '#align finsupp.subtype_domain_finsupp_sum Finsupp.subtypeDomain_finsupp_sumₓ'. -/
 theorem subtypeDomain_finsupp_sum [Zero N] {s : β →₀ N} {h : β → N → α →₀ M} :
     (s.Sum h).subtypeDomain p = s.Sum fun c d => (h c d).subtypeDomain p :=
   subtypeDomain_sum
 #align finsupp.subtype_domain_finsupp_sum Finsupp.subtypeDomain_finsupp_sum
 
-/- warning: finsupp.filter_sum -> Finsupp.filter_sum is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {ι : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {p : α -> Prop} (s : Finset.{u2} ι) (f : ι -> (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.filter.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) p (Finset.sum.{max u1 u3, u2} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) ι (Finsupp.addCommMonoid.{u1, u3} α M _inst_1) s (fun (a : ι) => f a))) (Finset.sum.{max u1 u3, u2} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) ι (Finsupp.addCommMonoid.{u1, u3} α M _inst_1) s (fun (a : ι) => Finsupp.filter.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) p (f a)))
-but is expected to have type
-  forall {α : Type.{u2}} {ι : Type.{u3}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] {p : α -> Prop} (s : Finset.{u3} ι) (f : ι -> (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)))), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.filter.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) p (Finset.sum.{max u2 u1, u3} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) ι (Finsupp.addCommMonoid.{u2, u1} α M _inst_1) s (fun (a : ι) => f a))) (Finset.sum.{max u1 u2, u3} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) ι (Finsupp.addCommMonoid.{u2, u1} α M _inst_1) s (fun (a : ι) => Finsupp.filter.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) p (f a)))
-Case conversion may be inaccurate. Consider using '#align finsupp.filter_sum Finsupp.filter_sumₓ'. -/
 theorem filter_sum (s : Finset ι) (f : ι → α →₀ M) :
     (∑ a in s, f a).filterₓ p = ∑ a in s, filter p (f a) :=
   (filterAddHom p : (α →₀ M) →+ _).map_sum f s
 #align finsupp.filter_sum Finsupp.filter_sum
 
-/- warning: finsupp.filter_eq_sum -> Finsupp.filter_eq_sum is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] (p : α -> Prop) [D : DecidablePred.{succ u1} α p] (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) p f) (Finset.sum.{max u1 u2, u1} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) α (Finsupp.addCommMonoid.{u1, u2} α M _inst_1) (Finset.filter.{u1} α p (fun (a : α) => D a) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) f)) (fun (i : α) => Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) i (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) f i)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] (p : α -> Prop) [D : DecidablePred.{succ u2} α p] (f : Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.filter.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) p f) (Finset.sum.{max u1 u2, u2} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) α (Finsupp.addCommMonoid.{u2, u1} α M _inst_1) (Finset.filter.{u2} α p (fun (a : α) => D a) (Finsupp.support.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) f)) (fun (i : α) => Finsupp.single.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) i (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) f i)))
-Case conversion may be inaccurate. Consider using '#align finsupp.filter_eq_sum Finsupp.filter_eq_sumₓ'. -/
 theorem filter_eq_sum (p : α → Prop) [D : DecidablePred p] (f : α →₀ M) :
     f.filterₓ p = ∑ i in f.support.filterₓ p, single i (f i) :=
   (f.filterₓ p).sum_single.symm.trans <|
@@ -1819,89 +1162,41 @@ section Group
 
 variable [AddGroup G] {p : α → Prop} {v v' : α →₀ G}
 
-/- warning: finsupp.subtype_domain_neg -> Finsupp.subtypeDomain_neg is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] {p : α -> Prop} {v : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.subtypeDomain.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p (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)))) v)) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.neg.{u1, u2} (Subtype.{succ u1} α p) G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) (Finsupp.subtypeDomain.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p v))
-but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] {p : α -> Prop} {v : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))}, Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.subtypeDomain.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.neg.{u2, u1} α G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) v)) (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.neg.{u2, u1} (Subtype.{succ u2} α p) G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.subtypeDomain.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p v))
-Case conversion may be inaccurate. Consider using '#align finsupp.subtype_domain_neg Finsupp.subtypeDomain_negₓ'. -/
 @[simp]
 theorem subtypeDomain_neg : (-v).subtypeDomain p = -v.subtypeDomain p :=
   ext fun _ => rfl
 #align finsupp.subtype_domain_neg Finsupp.subtypeDomain_neg
 
-/- warning: finsupp.subtype_domain_sub -> Finsupp.subtypeDomain_sub is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] {p : α -> Prop} {v : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))} {v' : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.subtypeDomain.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p (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)))) v v')) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} (Subtype.{succ u1} α p) G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} (Subtype.{succ u1} α p) 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} (Subtype.{succ u1} α p) G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.sub.{u1, u2} (Subtype.{succ u1} α p) G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) (Finsupp.subtypeDomain.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p v) (Finsupp.subtypeDomain.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p v'))
-but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] {p : α -> Prop} {v : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))} {v' : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))}, Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.subtypeDomain.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p (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_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (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_1))))) (Finsupp.sub.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) v v')) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (instHSub.{max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.sub.{u2, u1} (Subtype.{succ u2} α p) G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.subtypeDomain.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p v) (Finsupp.subtypeDomain.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p v'))
-Case conversion may be inaccurate. Consider using '#align finsupp.subtype_domain_sub Finsupp.subtypeDomain_subₓ'. -/
 @[simp]
 theorem subtypeDomain_sub : (v - v').subtypeDomain p = v.subtypeDomain p - v'.subtypeDomain p :=
   ext fun _ => rfl
 #align finsupp.subtype_domain_sub Finsupp.subtypeDomain_sub
 
-/- warning: finsupp.single_neg -> Finsupp.single_neg is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (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.single.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) a (Neg.neg.{u2} G (SubNegMonoid.toHasNeg.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)) b)) (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)))) (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.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] (a : α) (b : G), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.single.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a (Neg.neg.{u1} G (NegZeroClass.toNeg.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) b)) (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.neg.{u2, u1} α G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.single.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a b))
-Case conversion may be inaccurate. Consider using '#align finsupp.single_neg Finsupp.single_negₓ'. -/
 @[simp]
 theorem single_neg (a : α) (b : G) : single a (-b) = -single a b :=
   (singleAddHom a : G →+ _).map_neg b
 #align finsupp.single_neg Finsupp.single_neg
 
-/- warning: finsupp.single_sub -> Finsupp.single_sub is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (a : α) (b₁ : G) (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.single.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) a (HSub.hSub.{u2, u2, u2} G G G (instHSub.{u2} G (SubNegMonoid.toHasSub.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))) b₁ b₂)) (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)))) (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₁) (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.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] (a : α) (b₁ : G) (b₂ : G), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.single.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a (HSub.hSub.{u1, u1, u1} G G G (instHSub.{u1} G (SubNegMonoid.toSub.{u1} G (AddGroup.toSubNegMonoid.{u1} G _inst_1))) b₁ b₂)) (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_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (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_1))))) (Finsupp.sub.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.single.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a b₁) (Finsupp.single.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a b₂))
-Case conversion may be inaccurate. Consider using '#align finsupp.single_sub Finsupp.single_subₓ'. -/
 @[simp]
 theorem single_sub (a : α) (b₁ b₂ : G) : single a (b₁ - b₂) = single a b₁ - single a b₂ :=
   (singleAddHom a : G →+ _).map_sub b₁ b₂
 #align finsupp.single_sub Finsupp.single_sub
 
-/- warning: finsupp.erase_neg -> Finsupp.erase_neg is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (a : α) (f : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))), 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 (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)) (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)))) (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))
-but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] (a : α) (f : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.erase.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.neg.{u2, u1} α G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) f)) (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.neg.{u2, u1} α G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.erase.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a f))
-Case conversion may be inaccurate. Consider using '#align finsupp.erase_neg Finsupp.erase_negₓ'. -/
 @[simp]
 theorem erase_neg (a : α) (f : α →₀ G) : erase a (-f) = -erase a f :=
   (eraseAddHom a : (_ →₀ G) →+ _).map_neg f
 #align finsupp.erase_neg Finsupp.erase_neg
 
-/- warning: finsupp.erase_sub -> Finsupp.erase_sub is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (a : α) (f₁ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (f₂ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))), 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 (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₁ 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)))) (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₁) (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₂))
-but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] (a : α) (f₁ : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (f₂ : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.erase.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a (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_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (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_1))))) (Finsupp.sub.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) f₁ f₂)) (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_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (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_1))))) (Finsupp.sub.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.erase.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a f₁) (Finsupp.erase.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a f₂))
-Case conversion may be inaccurate. Consider using '#align finsupp.erase_sub Finsupp.erase_subₓ'. -/
 @[simp]
 theorem erase_sub (a : α) (f₁ f₂ : α →₀ G) : erase a (f₁ - f₂) = erase a f₁ - erase a f₂ :=
   (eraseAddHom a : (_ →₀ G) →+ _).map_sub f₁ f₂
 #align finsupp.erase_sub Finsupp.erase_sub
 
-/- warning: finsupp.filter_neg -> Finsupp.filter_neg is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (p : α -> Prop) (f : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))), 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.filter.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p (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)) (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)))) (Finsupp.filter.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p f))
-but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] (p : α -> Prop) (f : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.filter.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.neg.{u2, u1} α G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) f)) (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.neg.{u2, u1} α G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.filter.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p f))
-Case conversion may be inaccurate. Consider using '#align finsupp.filter_neg Finsupp.filter_negₓ'. -/
 @[simp]
 theorem filter_neg (p : α → Prop) (f : α →₀ G) : filter p (-f) = -filter p f :=
   (filterAddHom p : (_ →₀ G) →+ _).map_neg f
 #align finsupp.filter_neg Finsupp.filter_neg
 
-/- warning: finsupp.filter_sub -> Finsupp.filter_sub is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (p : α -> Prop) (f₁ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (f₂ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))), 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.filter.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p (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₁ 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)))) (Finsupp.filter.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p f₁) (Finsupp.filter.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p f₂))
-but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] (p : α -> Prop) (f₁ : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (f₂ : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.filter.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p (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_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (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_1))))) (Finsupp.sub.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) f₁ f₂)) (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_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (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_1))))) (Finsupp.sub.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.filter.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p f₁) (Finsupp.filter.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p f₂))
-Case conversion may be inaccurate. Consider using '#align finsupp.filter_sub Finsupp.filter_subₓ'. -/
 @[simp]
 theorem filter_sub (p : α → Prop) (f₁ f₂ : α →₀ G) :
     filter p (f₁ - f₂) = filter p f₁ - filter p f₂ :=
@@ -1912,12 +1207,6 @@ end Group
 
 end SubtypeDomain
 
-/- warning: finsupp.mem_support_multiset_sum -> Finsupp.mem_support_multiset_sum is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] {s : Multiset.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))} (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Multiset.sum.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.addCommMonoid.{u1, u2} α M _inst_1) s))) -> (Exists.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (fun (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) => Exists.{0} (Membership.Mem.{max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Multiset.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))) (Multiset.hasMem.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))) f s) (fun (H : Membership.Mem.{max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Multiset.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))) (Multiset.hasMem.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))) f s) => Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) f))))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] {s : Multiset.{max u2 u1} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))} (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a (Finsupp.support.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (Multiset.sum.{max u1 u2} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.addCommMonoid.{u1, u2} α M _inst_1) s))) -> (Exists.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (fun (f : Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) => And (Membership.mem.{max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Multiset.{max u2 u1} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Multiset.instMembershipMultiset.{max u1 u2} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) f s) (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a (Finsupp.support.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) f))))
-Case conversion may be inaccurate. Consider using '#align finsupp.mem_support_multiset_sum Finsupp.mem_support_multiset_sumₓ'. -/
 theorem mem_support_multiset_sum [AddCommMonoid M] {s : Multiset (α →₀ M)} (a : α) :
     a ∈ s.Sum.support → ∃ f ∈ s, a ∈ (f : α →₀ M).support :=
   Multiset.induction_on s False.elim
@@ -1931,12 +1220,6 @@ theorem mem_support_multiset_sum [AddCommMonoid M] {s : Multiset (α →₀ M)}
         exact ⟨f', Multiset.mem_cons_of_mem h₀, h₁⟩)
 #align finsupp.mem_support_multiset_sum Finsupp.mem_support_multiset_sum
 
-/- warning: finsupp.mem_support_finset_sum -> Finsupp.mem_support_finset_sum is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {ι : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {s : Finset.{u2} ι} {h : ι -> (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))} (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finset.sum.{max u1 u3, u2} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) ι (Finsupp.addCommMonoid.{u1, u3} α M _inst_1) s (fun (c : ι) => h c)))) -> (Exists.{succ u2} ι (fun (c : ι) => Exists.{0} (Membership.Mem.{u2, u2} ι (Finset.{u2} ι) (Finset.hasMem.{u2} ι) c s) (fun (H : Membership.Mem.{u2, u2} ι (Finset.{u2} ι) (Finset.hasMem.{u2} ι) c s) => Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (h c)))))
-but is expected to have type
-  forall {α : Type.{u1}} {ι : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {s : Finset.{u2} ι} {h : ι -> (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))} (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a (Finsupp.support.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (Finset.sum.{max u1 u3, u2} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) ι (Finsupp.addCommMonoid.{u1, u3} α M _inst_1) s (fun (c : ι) => h c)))) -> (Exists.{succ u2} ι (fun (c : ι) => And (Membership.mem.{u2, u2} ι (Finset.{u2} ι) (Finset.instMembershipFinset.{u2} ι) c s) (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a (Finsupp.support.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (h c)))))
-Case conversion may be inaccurate. Consider using '#align finsupp.mem_support_finset_sum Finsupp.mem_support_finset_sumₓ'. -/
 theorem mem_support_finset_sum [AddCommMonoid M] {s : Finset ι} {h : ι → α →₀ M} (a : α)
     (ha : a ∈ (∑ c in s, h c).support) : ∃ c ∈ s, a ∈ (h c).support :=
   let ⟨f, hf, hfa⟩ := mem_support_multiset_sum a ha
@@ -1951,12 +1234,6 @@ section CurryUncurry
 
 variable [AddCommMonoid M] [AddCommMonoid N]
 
-/- warning: finsupp.curry -> Finsupp.curry is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], (Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) -> (Finsupp.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], (Finsupp.{max u2 u1, u3} (Prod.{u1, u2} α β) M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) -> (Finsupp.{u1, max u3 u2} α (Finsupp.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.curry Finsupp.curryₓ'. -/
 /-- Given a finitely supported function `f` from a product type `α × β` to `γ`,
 `curry f` is the "curried" finitely supported function from `α` to the type of
 finitely supported functions from `β` to `γ`. -/
@@ -1964,12 +1241,6 @@ protected def curry (f : α × β →₀ M) : α →₀ β →₀ M :=
   f.Sum fun p c => single p.1 (single p.2 c)
 #align finsupp.curry Finsupp.curry
 
-/- warning: finsupp.curry_apply -> Finsupp.curry_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (f : Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (x : α) (y : β), Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => β -> M) (Finsupp.coeFun.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (coeFn.{max (succ u1) (succ (max u2 u3)), max (succ u1) (succ (max u2 u3))} (Finsupp.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) (fun (_x : Finsupp.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) => α -> (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) (Finsupp.coeFun.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) (Finsupp.curry.{u1, u2, u3} α β M _inst_1 f) x) y) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => (Prod.{u1, u2} α β) -> M) (Finsupp.coeFun.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) f (Prod.mk.{u1, u2} α β x y))
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u3}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] (f : Finsupp.{max u3 u2, u1} (Prod.{u2, u3} α β) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (x : α) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) y) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (FunLike.coe.{max (succ u2) (succ (max u3 u1)), succ u2, succ (max u3 u1)} (Finsupp.{u2, max u3 u1} α (Finsupp.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.zero.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => Finsupp.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) _x) (Finsupp.funLike.{u2, max u3 u1} α (Finsupp.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.zero.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)))) (Finsupp.curry.{u2, u3, u1} α β M _inst_1 f) x) y) (FunLike.coe.{max (succ (max u2 u3)) (succ u1), succ (max u2 u3), succ u1} (Finsupp.{max u2 u3, u1} (Prod.{u2, u3} α β) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Prod.{u2, u3} α β) (fun (_x : Prod.{u2, u3} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Prod.{u2, u3} α β) => M) _x) (Finsupp.funLike.{max u2 u3, u1} (Prod.{u2, u3} α β) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) f (Prod.mk.{u2, u3} α β x y))
-Case conversion may be inaccurate. Consider using '#align finsupp.curry_apply Finsupp.curry_applyₓ'. -/
 @[simp]
 theorem curry_apply (f : α × β →₀ M) (x : α) (y : β) : f.curry x y = f (x, y) := by
   classical
@@ -1983,12 +1254,6 @@ theorem curry_apply (f : α × β →₀ M) (x : α) (y : β) : f.curry x y = f
     · intro hxy; rw [this (x, y), if_pos rfl, not_mem_support_iff.mp hxy]
 #align finsupp.curry_apply Finsupp.curry_apply
 
-/- warning: finsupp.sum_curry_index -> Finsupp.sum_curry_index is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u4} N] (f : Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (g : α -> β -> M -> N), (forall (a : α) (b : β), Eq.{succ u4} N (g a b (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))))) (OfNat.ofNat.{u4} N 0 (OfNat.mk.{u4} N 0 (Zero.zero.{u4} N (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))))))) -> (forall (a : α) (b : β) (c₀ : M) (c₁ : M), Eq.{succ u4} N (g a b (HAdd.hAdd.{u3, u3, u3} M M M (instHAdd.{u3} M (AddZeroClass.toHasAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) c₀ c₁)) (HAdd.hAdd.{u4, u4, u4} N N N (instHAdd.{u4} N (AddZeroClass.toHasAdd.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) (g a b c₀) (g a b c₁))) -> (Eq.{succ u4} N (Finsupp.sum.{u1, max u2 u3, u4} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) N (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) _inst_2 (Finsupp.curry.{u1, u2, u3} α β M _inst_1 f) (fun (a : α) (f : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => Finsupp.sum.{u2, u3, u4} β M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) _inst_2 f (g a))) (Finsupp.sum.{max u1 u2, u3, u4} (Prod.{u1, u2} α β) M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) _inst_2 f (fun (p : Prod.{u1, u2} α β) (c : M) => g (Prod.fst.{u1, u2} α β p) (Prod.snd.{u1, u2} α β p) c)))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u4}} {M : Type.{u2}} {N : Type.{u1}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u1} N] (f : Finsupp.{max u4 u3, u2} (Prod.{u3, u4} α β) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (g : α -> β -> M -> N), (forall (a : α) (b : β), Eq.{succ u1} N (g a b (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))) (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (AddMonoid.toZero.{u1} N (AddCommMonoid.toAddMonoid.{u1} N _inst_2))))) -> (forall (a : α) (b : β) (c₀ : M) (c₁ : M), Eq.{succ u1} N (g a b (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)))) c₀ c₁)) (HAdd.hAdd.{u1, u1, u1} N N N (instHAdd.{u1} N (AddZeroClass.toAdd.{u1} N (AddMonoid.toAddZeroClass.{u1} N (AddCommMonoid.toAddMonoid.{u1} N _inst_2)))) (g a b c₀) (g a b c₁))) -> (Eq.{succ u1} N (Finsupp.sum.{u3, max u4 u2, u1} α (Finsupp.{u4, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) N (Finsupp.zero.{u4, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) _inst_2 (Finsupp.curry.{u3, u4, u2} α β M _inst_1 f) (fun (a : α) (f : Finsupp.{u4, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) => Finsupp.sum.{u4, u2, u1} β M N (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) _inst_2 f (g a))) (Finsupp.sum.{max u3 u4, u2, u1} (Prod.{u3, u4} α β) M N (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) _inst_2 f (fun (p : Prod.{u3, u4} α β) (c : M) => g (Prod.fst.{u3, u4} α β p) (Prod.snd.{u3, u4} α β p) c)))
-Case conversion may be inaccurate. Consider using '#align finsupp.sum_curry_index Finsupp.sum_curry_indexₓ'. -/
 theorem sum_curry_index (f : α × β →₀ M) (g : α → β → M → N) (hg₀ : ∀ a b, g a b 0 = 0)
     (hg₁ : ∀ a b c₀ c₁, g a b (c₀ + c₁) = g a b c₀ + g a b c₁) :
     (f.curry.Sum fun a f => f.Sum (g a)) = f.Sum fun p c => g p.1 p.2 c :=
@@ -2005,12 +1270,6 @@ theorem sum_curry_index (f : α × β →₀ M) (g : α → β → M → N) (hg
   exact sum_single_index (hg₀ _ _)
 #align finsupp.sum_curry_index Finsupp.sum_curry_index
 
-/- warning: finsupp.uncurry -> Finsupp.uncurry is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], (Finsupp.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) -> (Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], (Finsupp.{u1, max u3 u2} α (Finsupp.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) -> (Finsupp.{max u2 u1, u3} (Prod.{u1, u2} α β) M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))
-Case conversion may be inaccurate. Consider using '#align finsupp.uncurry Finsupp.uncurryₓ'. -/
 /-- Given a finitely supported function `f` from `α` to the type of
 finitely supported functions from `β` to `M`,
 `uncurry f` is the "uncurried" finitely supported function from `α × β` to `M`. -/
@@ -2018,12 +1277,6 @@ protected def uncurry (f : α →₀ β →₀ M) : α × β →₀ M :=
   f.Sum fun a g => g.Sum fun b c => single (a, b) c
 #align finsupp.uncurry Finsupp.uncurry
 
-/- warning: finsupp.finsupp_prod_equiv -> Finsupp.finsuppProdEquiv is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], Equiv.{max (succ (max u1 u2)) (succ u3), max (succ u1) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], Equiv.{max (succ u3) (succ (max u2 u1)), max (succ (max u3 u2)) (succ u1)} (Finsupp.{max u2 u1, u3} (Prod.{u1, u2} α β) M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, max u3 u2} α (Finsupp.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.finsupp_prod_equiv Finsupp.finsuppProdEquivₓ'. -/
 /-- `finsupp_prod_equiv` defines the `equiv` between `((α × β) →₀ M)` and `(α →₀ (β →₀ M))` given by
 currying and uncurrying. -/
 def finsuppProdEquiv : (α × β →₀ M) ≃ (α →₀ β →₀ M)
@@ -2041,12 +1294,6 @@ def finsuppProdEquiv : (α × β →₀ M) ≃ (α →₀ β →₀ M)
       forall₃_true_iff, Prod.mk.eta, (single_sum _ _ _).symm, sum_single]
 #align finsupp.finsupp_prod_equiv Finsupp.finsuppProdEquiv
 
-/- warning: finsupp.filter_curry -> Finsupp.filter_curry is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (f : Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (p : α -> Prop), Eq.{max (succ u1) (succ (max u2 u3))} (Finsupp.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) (Finsupp.curry.{u1, u2, u3} α β M _inst_1 (Finsupp.filter.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (fun (a : Prod.{u1, u2} α β) => p (Prod.fst.{u1, u2} α β a)) f)) (Finsupp.filter.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) p (Finsupp.curry.{u1, u2, u3} α β M _inst_1 f))
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u3}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] (f : Finsupp.{max u3 u2, u1} (Prod.{u2, u3} α β) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (p : α -> Prop), Eq.{max (max (succ u2) (succ u3)) (succ u1)} (Finsupp.{u2, max u1 u3} α (Finsupp.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.zero.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)))) (Finsupp.curry.{u2, u3, u1} α β M _inst_1 (Finsupp.filter.{max u2 u3, u1} (Prod.{u2, u3} α β) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) (fun (a : Prod.{u2, u3} α β) => p (Prod.fst.{u2, u3} α β a)) f)) (Finsupp.filter.{u2, max u3 u1} α (Finsupp.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.zero.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) p (Finsupp.curry.{u2, u3, u1} α β M _inst_1 f))
-Case conversion may be inaccurate. Consider using '#align finsupp.filter_curry Finsupp.filter_curryₓ'. -/
 theorem filter_curry (f : α × β →₀ M) (p : α → Prop) :
     (f.filterₓ fun a : α × β => p a.1).curry = f.curry.filterₓ p := by
   classical
@@ -2060,12 +1307,6 @@ theorem filter_curry (f : α × β →₀ M) (p : α → Prop) :
     · rwa [filter_single_of_neg]
 #align finsupp.filter_curry Finsupp.filter_curry
 
-/- warning: finsupp.support_curry -> Finsupp.support_curry is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_3 : DecidableEq.{succ u1} α] (f : Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.curry.{u1, u2, u3} α β M _inst_1 f)) (Finset.image.{max u1 u2, u1} (Prod.{u1, u2} α β) α (fun (a : α) (b : α) => _inst_3 a b) (Prod.fst.{u1, u2} α β) (Finsupp.support.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) f))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] [_inst_3 : DecidableEq.{succ u3} α] (f : Finsupp.{max u2 u3, u1} (Prod.{u3, u2} α β) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))), HasSubset.Subset.{u3} (Finset.{u3} α) (Finset.instHasSubsetFinset.{u3} α) (Finsupp.support.{u3, max u2 u1} α (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.zero.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.curry.{u3, u2, u1} α β M _inst_1 f)) (Finset.image.{max u2 u3, u3} (Prod.{u3, u2} α β) α (fun (a : α) (b : α) => _inst_3 a b) (Prod.fst.{u3, u2} α β) (Finsupp.support.{max u3 u2, u1} (Prod.{u3, u2} α β) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) f))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_curry Finsupp.support_curryₓ'. -/
 theorem support_curry [DecidableEq α] (f : α × β →₀ M) :
     f.curry.support ⊆ f.support.image Prod.fst :=
   by
@@ -2093,46 +1334,22 @@ def sumElim {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →₀ γ)
 #align finsupp.sum_elim Finsupp.sumElim
 -/
 
-/- warning: finsupp.coe_sum_elim -> Finsupp.coe_sumElim is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{u1, u3} α γ _inst_1) (g : Finsupp.{u2, u3} β γ _inst_1), Eq.{max (succ (max u1 u2)) (succ u3)} ((Sum.{u1, u2} α β) -> γ) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Finsupp.sumElim.{u1, u2, u3} α β γ _inst_1 f g)) (Sum.elim.{u1, u2, succ u3} α β γ (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α γ _inst_1) (fun (_x : Finsupp.{u1, u3} α γ _inst_1) => α -> γ) (Finsupp.coeFun.{u1, u3} α γ _inst_1) f) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β γ _inst_1) (fun (_x : Finsupp.{u2, u3} β γ _inst_1) => β -> γ) (Finsupp.coeFun.{u2, u3} β γ _inst_1) g))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{u3, u1} α γ _inst_1) (g : Finsupp.{u2, u1} β γ _inst_1), Eq.{max (max (succ u3) (succ u2)) (succ u1)} (forall (ᾰ : Sum.{u3, u2} α β), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) ᾰ) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Finsupp.sumElim.{u3, u2, u1} α β γ _inst_1 f g)) (Sum.elim.{u3, u2, succ u1} α β γ (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α γ _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) _x) (Finsupp.funLike.{u3, u1} α γ _inst_1) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β γ _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) _x) (Finsupp.funLike.{u2, u1} β γ _inst_1) g))
-Case conversion may be inaccurate. Consider using '#align finsupp.coe_sum_elim Finsupp.coe_sumElimₓ'. -/
 @[simp]
 theorem coe_sumElim {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) :
     ⇑(sumElim f g) = Sum.elim f g :=
   rfl
 #align finsupp.coe_sum_elim Finsupp.coe_sumElim
 
-/- warning: finsupp.sum_elim_apply -> Finsupp.sumElim_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{u1, u3} α γ _inst_1) (g : Finsupp.{u2, u3} β γ _inst_1) (x : Sum.{u1, u2} α β), Eq.{succ u3} γ (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Finsupp.sumElim.{u1, u2, u3} α β γ _inst_1 f g) x) (Sum.elim.{u1, u2, succ u3} α β γ (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α γ _inst_1) (fun (_x : Finsupp.{u1, u3} α γ _inst_1) => α -> γ) (Finsupp.coeFun.{u1, u3} α γ _inst_1) f) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β γ _inst_1) (fun (_x : Finsupp.{u2, u3} β γ _inst_1) => β -> γ) (Finsupp.coeFun.{u2, u3} β γ _inst_1) g) x)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{u3, u1} α γ _inst_1) (g : Finsupp.{u2, u1} β γ _inst_1) (x : Sum.{u3, u2} α β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) x) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Finsupp.sumElim.{u3, u2, u1} α β γ _inst_1 f g) x) (Sum.elim.{u3, u2, succ u1} α β γ (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α γ _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) _x) (Finsupp.funLike.{u3, u1} α γ _inst_1) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β γ _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) _x) (Finsupp.funLike.{u2, u1} β γ _inst_1) g) x)
-Case conversion may be inaccurate. Consider using '#align finsupp.sum_elim_apply Finsupp.sumElim_applyₓ'. -/
 theorem sumElim_apply {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) (x : Sum α β) :
     sumElim f g x = Sum.elim f g x :=
   rfl
 #align finsupp.sum_elim_apply Finsupp.sumElim_apply
 
-/- warning: finsupp.sum_elim_inl -> Finsupp.sumElim_inl is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{u1, u3} α γ _inst_1) (g : Finsupp.{u2, u3} β γ _inst_1) (x : α), Eq.{succ u3} γ (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Finsupp.sumElim.{u1, u2, u3} α β γ _inst_1 f g) (Sum.inl.{u1, u2} α β x)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α γ _inst_1) (fun (_x : Finsupp.{u1, u3} α γ _inst_1) => α -> γ) (Finsupp.coeFun.{u1, u3} α γ _inst_1) f x)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{u3, u1} α γ _inst_1) (g : Finsupp.{u2, u1} β γ _inst_1) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Finsupp.sumElim.{u3, u2, u1} α β γ _inst_1 f g) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α γ _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) _x) (Finsupp.funLike.{u3, u1} α γ _inst_1) f x)
-Case conversion may be inaccurate. Consider using '#align finsupp.sum_elim_inl Finsupp.sumElim_inlₓ'. -/
 theorem sumElim_inl {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) (x : α) :
     sumElim f g (Sum.inl x) = f x :=
   rfl
 #align finsupp.sum_elim_inl Finsupp.sumElim_inl
 
-/- warning: finsupp.sum_elim_inr -> Finsupp.sumElim_inr is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{u1, u3} α γ _inst_1) (g : Finsupp.{u2, u3} β γ _inst_1) (x : β), Eq.{succ u3} γ (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Finsupp.sumElim.{u1, u2, u3} α β γ _inst_1 f g) (Sum.inr.{u1, u2} α β x)) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β γ _inst_1) (fun (_x : Finsupp.{u2, u3} β γ _inst_1) => β -> γ) (Finsupp.coeFun.{u2, u3} β γ _inst_1) g x)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{u3, u1} α γ _inst_1) (g : Finsupp.{u2, u1} β γ _inst_1) (x : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) (Sum.inr.{u3, u2} α β x)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Finsupp.sumElim.{u3, u2, u1} α β γ _inst_1 f g) (Sum.inr.{u3, u2} α β x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β γ _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) _x) (Finsupp.funLike.{u2, u1} β γ _inst_1) g x)
-Case conversion may be inaccurate. Consider using '#align finsupp.sum_elim_inr Finsupp.sumElim_inrₓ'. -/
 theorem sumElim_inr {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) (x : β) :
     sumElim f g (Sum.inr x) = g x :=
   rfl
@@ -2154,45 +1371,21 @@ def sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] : (Sum α β →₀
 #align finsupp.sum_finsupp_equiv_prod_finsupp Finsupp.sumFinsuppEquivProdFinsupp
 -/
 
-/- warning: finsupp.fst_sum_finsupp_equiv_prod_finsupp -> Finsupp.fst_sumFinsuppEquivProdFinsupp is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (x : α), Eq.{succ u3} γ (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α γ _inst_1) (fun (_x : Finsupp.{u1, u3} α γ _inst_1) => α -> γ) (Finsupp.coeFun.{u1, u3} α γ _inst_1) (Prod.fst.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))) (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3), max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))} (Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) => (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) -> (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1) f)) x) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) f (Sum.inl.{u1, u2} α β x))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α γ _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) _x) (Finsupp.funLike.{u3, u1} α γ _inst_1) (Prod.fst.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (succ u1) (succ (max u2 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1) f)) x) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) f (Sum.inl.{u3, u2} α β x))
-Case conversion may be inaccurate. Consider using '#align finsupp.fst_sum_finsupp_equiv_prod_finsupp Finsupp.fst_sumFinsuppEquivProdFinsuppₓ'. -/
 theorem fst_sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] (f : Sum α β →₀ γ) (x : α) :
     (sumFinsuppEquivProdFinsupp f).1 x = f (Sum.inl x) :=
   rfl
 #align finsupp.fst_sum_finsupp_equiv_prod_finsupp Finsupp.fst_sumFinsuppEquivProdFinsupp
 
-/- warning: finsupp.snd_sum_finsupp_equiv_prod_finsupp -> Finsupp.snd_sumFinsuppEquivProdFinsupp is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (y : β), Eq.{succ u3} γ (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β γ _inst_1) (fun (_x : Finsupp.{u2, u3} β γ _inst_1) => β -> γ) (Finsupp.coeFun.{u2, u3} β γ _inst_1) (Prod.snd.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))) (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3), max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))} (Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) => (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) -> (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1) f)) y) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) f (Sum.inr.{u1, u2} α β y))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β γ _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) _x) (Finsupp.funLike.{u2, u1} β γ _inst_1) (Prod.snd.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (succ u1) (succ (max u2 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1) f)) y) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) f (Sum.inr.{u3, u2} α β y))
-Case conversion may be inaccurate. Consider using '#align finsupp.snd_sum_finsupp_equiv_prod_finsupp Finsupp.snd_sumFinsuppEquivProdFinsuppₓ'. -/
 theorem snd_sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] (f : Sum α β →₀ γ) (y : β) :
     (sumFinsuppEquivProdFinsupp f).2 y = f (Sum.inr y) :=
   rfl
 #align finsupp.snd_sum_finsupp_equiv_prod_finsupp Finsupp.snd_sumFinsuppEquivProdFinsupp
 
-/- warning: finsupp.sum_finsupp_equiv_prod_finsupp_symm_inl -> Finsupp.sumFinsuppEquivProdFinsupp_symm_inl is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (fg : Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (x : α), Eq.{succ u3} γ (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3)), max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (fun (_x : Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) => (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) -> (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.hasCoeToFun.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.symm.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1)) fg) (Sum.inl.{u1, u2} α β x)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α γ _inst_1) (fun (_x : Finsupp.{u1, u3} α γ _inst_1) => α -> γ) (Finsupp.coeFun.{u1, u3} α γ _inst_1) (Prod.fst.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) fg) x)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Equiv.symm.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1)) fg) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α γ _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) _x) (Finsupp.funLike.{u3, u1} α γ _inst_1) (Prod.fst.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) fg) x)
-Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_equiv_prod_finsupp_symm_inl Finsupp.sumFinsuppEquivProdFinsupp_symm_inlₓ'. -/
 theorem sumFinsuppEquivProdFinsupp_symm_inl {α β γ : Type _} [Zero γ] (fg : (α →₀ γ) × (β →₀ γ))
     (x : α) : (sumFinsuppEquivProdFinsupp.symm fg) (Sum.inl x) = fg.1 x :=
   rfl
 #align finsupp.sum_finsupp_equiv_prod_finsupp_symm_inl Finsupp.sumFinsuppEquivProdFinsupp_symm_inl
 
-/- warning: finsupp.sum_finsupp_equiv_prod_finsupp_symm_inr -> Finsupp.sumFinsuppEquivProdFinsupp_symm_inr is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (fg : Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (y : β), Eq.{succ u3} γ (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3)), max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (fun (_x : Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) => (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) -> (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.hasCoeToFun.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.symm.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1)) fg) (Sum.inr.{u1, u2} α β y)) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β γ _inst_1) (fun (_x : Finsupp.{u2, u3} β γ _inst_1) => β -> γ) (Finsupp.coeFun.{u2, u3} β γ _inst_1) (Prod.snd.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) fg) y)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Equiv.symm.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1)) fg) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β γ _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) _x) (Finsupp.funLike.{u2, u1} β γ _inst_1) (Prod.snd.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) fg) y)
-Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_equiv_prod_finsupp_symm_inr Finsupp.sumFinsuppEquivProdFinsupp_symm_inrₓ'. -/
 theorem sumFinsuppEquivProdFinsupp_symm_inr {α β γ : Type _} [Zero γ] (fg : (α →₀ γ) × (β →₀ γ))
     (y : β) : (sumFinsuppEquivProdFinsupp.symm fg) (Sum.inr y) = fg.2 y :=
   rfl
@@ -2200,12 +1393,6 @@ theorem sumFinsuppEquivProdFinsupp_symm_inr {α β γ : Type _} [Zero γ] (fg :
 
 variable [AddMonoid M]
 
-/- warning: finsupp.sum_finsupp_add_equiv_prod_finsupp -> Finsupp.sumFinsuppAddEquivProdFinsupp is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}}, AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}}, AddEquiv.{max u1 u3 u2, max (max u1 u3) u1 u2} (Finsupp.{max u3 u2, u1} (Sum.{u2, u3} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u2, max u1 u3} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u3, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u2, max u1 u3} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u3, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))
-Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_add_equiv_prod_finsupp Finsupp.sumFinsuppAddEquivProdFinsuppₓ'. -/
 /-- The additive equivalence between `(α ⊕ β) →₀ M` and `(α →₀ M) × (β →₀ M)`.
 
 This is the `finsupp` version of `equiv.sum_arrow_equiv_prod_arrow`. -/
@@ -2218,33 +1405,21 @@ def sumFinsuppAddEquivProdFinsupp {α β : Type _} : (Sum α β →₀ M) ≃+ (
           snd_sum_finsupp_equiv_prod_finsupp, fst_sum_finsupp_equiv_prod_finsupp] }
 #align finsupp.sum_finsupp_add_equiv_prod_finsupp Finsupp.sumFinsuppAddEquivProdFinsupp
 
-/- warning: finsupp.fst_sum_finsupp_add_equiv_prod_finsupp -> Finsupp.fst_sumFinsuppAddEquivProdFinsupp is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align finsupp.fst_sum_finsupp_add_equiv_prod_finsupp Finsupp.fst_sumFinsuppAddEquivProdFinsuppₓ'. -/
 theorem fst_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀ M) (x : α) :
     (sumFinsuppAddEquivProdFinsupp f).1 x = f (Sum.inl x) :=
   rfl
 #align finsupp.fst_sum_finsupp_add_equiv_prod_finsupp Finsupp.fst_sumFinsuppAddEquivProdFinsupp
 
-/- warning: finsupp.snd_sum_finsupp_add_equiv_prod_finsupp -> Finsupp.snd_sumFinsuppAddEquivProdFinsupp is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align finsupp.snd_sum_finsupp_add_equiv_prod_finsupp Finsupp.snd_sumFinsuppAddEquivProdFinsuppₓ'. -/
 theorem snd_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀ M) (y : β) :
     (sumFinsuppAddEquivProdFinsupp f).2 y = f (Sum.inr y) :=
   rfl
 #align finsupp.snd_sum_finsupp_add_equiv_prod_finsupp Finsupp.snd_sumFinsuppAddEquivProdFinsupp
 
-/- warning: finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inl -> Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inl is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inl Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inlₓ'. -/
 theorem sumFinsuppAddEquivProdFinsupp_symm_inl {α β : Type _} (fg : (α →₀ M) × (β →₀ M)) (x : α) :
     (sumFinsuppAddEquivProdFinsupp.symm fg) (Sum.inl x) = fg.1 x :=
   rfl
 #align finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inl Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inl
 
-/- warning: finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inr -> Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inr is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inr Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inrₓ'. -/
 theorem sumFinsuppAddEquivProdFinsupp_symm_inr {α β : Type _} (fg : (α →₀ M) × (β →₀ M)) (y : β) :
     (sumFinsuppAddEquivProdFinsupp.symm fg) (Sum.inr y) = fg.2 y :=
   rfl
@@ -2259,12 +1434,6 @@ section
 
 variable [Zero M] [MonoidWithZero R] [MulActionWithZero R M]
 
-/- warning: finsupp.single_smul -> Finsupp.single_smul is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] [_inst_2 : MonoidWithZero.{u3} R] [_inst_3 : MulActionWithZero.{u3, u2} R M _inst_2 _inst_1] (a : α) (b : α) (f : α -> M) (r : R), Eq.{succ u2} M (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M _inst_1 (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_2))) _inst_1 (MulActionWithZero.toSMulWithZero.{u3, u2} R M _inst_2 _inst_1 _inst_3))) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_2)))) (fun (_x : Finsupp.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_2)))) => α -> R) (Finsupp.coeFun.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_2)))) (Finsupp.single.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_2))) a r) b) (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) (Finsupp.single.{u1, u2} α M _inst_1 a (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M _inst_1 (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_2))) _inst_1 (MulActionWithZero.toSMulWithZero.{u3, u2} R M _inst_2 _inst_1 _inst_3))) r (f b))) b)
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : Zero.{u3} M] [_inst_2 : MonoidWithZero.{u2} R] [_inst_3 : MulActionWithZero.{u2, u3} R M _inst_2 _inst_1] (a : α) (b : α) (f : α -> M) (r : R), Eq.{succ u3} M (HSMul.hSMul.{u2, u3, u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => R) b) M M (instHSMul.{u2, u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => R) b) M (SMulZeroClass.toSMul.{u2, u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => R) b) M _inst_1 (SMulWithZero.toSMulZeroClass.{u2, u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => R) b) M (MonoidWithZero.toZero.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => R) b) _inst_2) _inst_1 (MulActionWithZero.toSMulWithZero.{u2, u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => R) b) M _inst_2 _inst_1 _inst_3)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R _inst_2)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => R) _x) (Finsupp.funLike.{u1, u2} α R (MonoidWithZero.toZero.{u2} R _inst_2)) (Finsupp.single.{u1, u2} α R (MonoidWithZero.toZero.{u2} R _inst_2) a r) b) (f a)) (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) (Finsupp.single.{u1, u3} α M _inst_1 a (HSMul.hSMul.{u2, u3, u3} R M M (instHSMul.{u2, u3} R M (SMulZeroClass.toSMul.{u2, u3} R M _inst_1 (SMulWithZero.toSMulZeroClass.{u2, u3} R M (MonoidWithZero.toZero.{u2} R _inst_2) _inst_1 (MulActionWithZero.toSMulWithZero.{u2, u3} R M _inst_2 _inst_1 _inst_3)))) r (f b))) b)
-Case conversion may be inaccurate. Consider using '#align finsupp.single_smul Finsupp.single_smulₓ'. -/
 @[simp]
 theorem single_smul (a b : α) (f : α → M) (r : R) : single a r b • f a = single a (r • f b) b := by
   by_cases a = b <;> simp [h]
@@ -2276,12 +1445,6 @@ section
 
 variable [Monoid G] [MulAction G α] [AddCommMonoid M]
 
-/- warning: finsupp.comap_has_smul -> Finsupp.comapSMul is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {G : Type.{u3}} [_inst_1 : Monoid.{u3} G] [_inst_2 : MulAction.{u3, u1} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M], SMul.{u3, max u1 u2} G (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {G : Type.{u3}} [_inst_1 : Monoid.{u3} G] [_inst_2 : MulAction.{u3, u1} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M], SMul.{u3, max u2 u1} G (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))
-Case conversion may be inaccurate. Consider using '#align finsupp.comap_has_smul Finsupp.comapSMulₓ'. -/
 /-- Scalar multiplication acting on the domain.
 
 This is not an instance as it would conflict with the action on the range.
@@ -2291,33 +1454,15 @@ def comapSMul : SMul G (α →₀ M) where smul g := mapDomain ((· • ·) g)
 
 attribute [local instance] comap_has_smul
 
-/- warning: finsupp.comap_smul_def -> Finsupp.comapSMul_def is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {G : Type.{u3}} [_inst_1 : Monoid.{u3} G] [_inst_2 : MulAction.{u3, u1} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (SMul.smul.{u3, max u1 u2} G (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (Finsupp.comapSMul.{u1, u2, u3} α M G _inst_1 _inst_2 _inst_3) g f) (Finsupp.mapDomain.{u1, u1, u2} α α M _inst_3 (SMul.smul.{u3, u1} G α (MulAction.toHasSmul.{u3, u1} G α _inst_1 _inst_2) g) f)
-but is expected to have type
-  forall {α : Type.{u3}} {M : Type.{u2}} {G : Type.{u1}} [_inst_1 : Monoid.{u1} G] [_inst_2 : MulAction.{u1, u3} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))), Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (instHSMul.{u1, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.comapSMul.{u3, u2, u1} α M G _inst_1 _inst_2 _inst_3)) g f) (Finsupp.mapDomain.{u3, u3, u2} α α M _inst_3 ((fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.14478 : G) (x._@.Mathlib.Data.Finsupp.Basic._hyg.14480 : α) => HSMul.hSMul.{u1, u3, u3} G α α (instHSMul.{u1, u3} G α (MulAction.toSMul.{u1, u3} G α _inst_1 _inst_2)) x._@.Mathlib.Data.Finsupp.Basic._hyg.14478 x._@.Mathlib.Data.Finsupp.Basic._hyg.14480) g) f)
-Case conversion may be inaccurate. Consider using '#align finsupp.comap_smul_def Finsupp.comapSMul_defₓ'. -/
 theorem comapSMul_def (g : G) (f : α →₀ M) : g • f = mapDomain ((· • ·) g) f :=
   rfl
 #align finsupp.comap_smul_def Finsupp.comapSMul_def
 
-/- warning: finsupp.comap_smul_single -> Finsupp.comapSMul_single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {G : Type.{u3}} [_inst_1 : Monoid.{u3} G] [_inst_2 : MulAction.{u3, u1} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (a : α) (b : M), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (SMul.smul.{u3, max u1 u2} G (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (Finsupp.comapSMul.{u1, u2, u3} α M G _inst_1 _inst_2 _inst_3) g (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) a b)) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (SMul.smul.{u3, u1} G α (MulAction.toHasSmul.{u3, u1} G α _inst_1 _inst_2) g a) b)
-but is expected to have type
-  forall {α : Type.{u3}} {M : Type.{u2}} {G : Type.{u1}} [_inst_1 : Monoid.{u1} G] [_inst_2 : MulAction.{u1, u3} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (a : α) (b : M), Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (HSMul.hSMul.{u1, max u2 u3, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (instHSMul.{u1, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.comapSMul.{u3, u2, u1} α M G _inst_1 _inst_2 _inst_3)) g (Finsupp.single.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)) a b)) (Finsupp.single.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)) (HSMul.hSMul.{u1, u3, u3} G α α (instHSMul.{u1, u3} G α (MulAction.toSMul.{u1, u3} G α _inst_1 _inst_2)) g a) b)
-Case conversion may be inaccurate. Consider using '#align finsupp.comap_smul_single Finsupp.comapSMul_singleₓ'. -/
 @[simp]
 theorem comapSMul_single (g : G) (a : α) (b : M) : g • single a b = single (g • a) b :=
   mapDomain_single
 #align finsupp.comap_smul_single Finsupp.comapSMul_single
 
-/- warning: finsupp.comap_mul_action -> Finsupp.comapMulAction is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {G : Type.{u3}} [_inst_1 : Monoid.{u3} G] [_inst_2 : MulAction.{u3, u1} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M], MulAction.{u3, max u1 u2} G (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) _inst_1
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {G : Type.{u3}} [_inst_1 : Monoid.{u3} G] [_inst_2 : MulAction.{u3, u1} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M], MulAction.{u3, max u2 u1} G (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) _inst_1
-Case conversion may be inaccurate. Consider using '#align finsupp.comap_mul_action Finsupp.comapMulActionₓ'. -/
 /-- `finsupp.comap_has_smul` is multiplicative -/
 def comapMulAction : MulAction G (α →₀ M)
     where
@@ -2328,12 +1473,6 @@ def comapMulAction : MulAction G (α →₀ M)
 
 attribute [local instance] comap_mul_action
 
-/- warning: finsupp.comap_distrib_mul_action -> Finsupp.comapDistribMulAction is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {G : Type.{u3}} [_inst_1 : Monoid.{u3} G] [_inst_2 : MulAction.{u3, u1} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M], DistribMulAction.{u3, max u1 u2} G (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) _inst_1 (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {G : Type.{u3}} [_inst_1 : Monoid.{u3} G] [_inst_2 : MulAction.{u3, u1} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M], DistribMulAction.{u3, max u2 u1} G (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) _inst_1 (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))
-Case conversion may be inaccurate. Consider using '#align finsupp.comap_distrib_mul_action Finsupp.comapDistribMulActionₓ'. -/
 /-- `finsupp.comap_has_smul` is distributive -/
 def comapDistribMulAction : DistribMulAction G (α →₀ M)
     where
@@ -2349,12 +1488,6 @@ variable [Group G] [MulAction G α] [AddCommMonoid M]
 
 attribute [local instance] comap_has_smul comap_mul_action comap_distrib_mul_action
 
-/- warning: finsupp.comap_smul_apply -> Finsupp.comapSMul_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {G : Type.{u3}} [_inst_1 : Group.{u3} G] [_inst_2 : MulAction.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (a : α), Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (SMul.smul.{u3, max u1 u2} G (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (Finsupp.comapSMul.{u1, u2, u3} α M G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)) _inst_2 _inst_3) g f) a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) f (SMul.smul.{u3, u1} G α (MulAction.toHasSmul.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)) _inst_2) (Inv.inv.{u3} G (DivInvMonoid.toHasInv.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)) g) a))
-but is expected to have type
-  forall {α : Type.{u3}} {M : Type.{u2}} {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : MulAction.{u1, u3} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (instHSMul.{u1, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.comapSMul.{u3, u2, u1} α M G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) _inst_2 _inst_3)) g f) a) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) f (HSMul.hSMul.{u1, u3, u3} G α α (instHSMul.{u1, u3} G α (MulAction.toSMul.{u1, u3} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) _inst_2)) (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) g) a))
-Case conversion may be inaccurate. Consider using '#align finsupp.comap_smul_apply Finsupp.comapSMul_applyₓ'. -/
 /-- When `G` is a group, `finsupp.comap_has_smul` acts by precomposition with the action of `g⁻¹`.
 -/
 @[simp]
@@ -2379,34 +1512,16 @@ Throughout this section, some `monoid` and `semiring` arguments are specified wi
 -/
 
 
-/- warning: finsupp.coe_smul -> Finsupp.coe_smul is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M _inst_1] (b : R) (v : Finsupp.{u1, u2} α M _inst_1), Eq.{succ (max u1 u2)} (α -> M) (coeFn.{succ (max u1 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) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M _inst_1) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1) (Finsupp.smulZeroClass.{u1, u2, u3} α M R _inst_1 _inst_2)) b v)) (SMul.smul.{u3, max u1 u2} R (α -> M) (Function.hasSMul.{u1, u3, u2} α R M (SMulZeroClass.toHasSmul.{u3, u2} R M _inst_1 _inst_2)) 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) v))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : Zero.{u3} M] [_inst_2 : SMulZeroClass.{u2, u3} R M _inst_1] (b : R) (v : Finsupp.{u1, u3} α M _inst_1), Eq.{max (succ u1) (succ u3)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (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) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u1, u3} α M _inst_1) (instHSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (Finsupp.zero.{u1, u3} α M _inst_1) (Finsupp.smulZeroClass.{u1, u3, u2} α M R _inst_1 _inst_2))) b v)) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (instHSMul.{u2, max u1 u3} R (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (Pi.instSMul.{u1, u3, u2} α R (fun (a : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (fun (i : α) => SMulZeroClass.toSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) _inst_1 _inst_2))) b (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) v))
-Case conversion may be inaccurate. Consider using '#align finsupp.coe_smul Finsupp.coe_smulₓ'. -/
 @[simp]
 theorem coe_smul [Zero M] [SMulZeroClass R M] (b : R) (v : α →₀ M) : ⇑(b • v) = b • v :=
   rfl
 #align finsupp.coe_smul Finsupp.coe_smul
 
-/- warning: finsupp.smul_apply -> Finsupp.smul_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M _inst_1] (b : R) (v : Finsupp.{u1, u2} α M _inst_1) (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) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M _inst_1) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1) (Finsupp.smulZeroClass.{u1, u2, u3} α M R _inst_1 _inst_2)) b v) a) (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M _inst_1 _inst_2) 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) v a))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : Zero.{u3} M] [_inst_2 : SMulZeroClass.{u2, u3} R M _inst_1] (b : R) (v : Finsupp.{u1, u3} α M _inst_1) (a : α), Eq.{succ u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (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) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u1, u3} α M _inst_1) (instHSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (Finsupp.zero.{u1, u3} α M _inst_1) (Finsupp.smulZeroClass.{u1, u3, u2} α M R _inst_1 _inst_2))) b v) a) (HSMul.hSMul.{u2, u3, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (instHSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (SMulZeroClass.toSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1 _inst_2)) b (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) v a))
-Case conversion may be inaccurate. Consider using '#align finsupp.smul_apply Finsupp.smul_applyₓ'. -/
 theorem smul_apply [Zero M] [SMulZeroClass R M] (b : R) (v : α →₀ M) (a : α) :
     (b • v) a = b • v a :=
   rfl
 #align finsupp.smul_apply Finsupp.smul_apply
 
-/- warning: is_smul_regular.finsupp -> IsSMulRegular.finsupp is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M _inst_1] {k : R}, (IsSMulRegular.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M _inst_1 _inst_2) k) -> (IsSMulRegular.{u3, max u1 u2} R (Finsupp.{u1, u2} α M _inst_1) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1) (Finsupp.smulZeroClass.{u1, u2, u3} α M R _inst_1 _inst_2)) k)
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : Zero.{u3} M] [_inst_2 : SMulZeroClass.{u2, u3} R M _inst_1] {k : R}, (IsSMulRegular.{u2, u3} R M (SMulZeroClass.toSMul.{u2, u3} R M _inst_1 _inst_2) k) -> (IsSMulRegular.{u2, max u3 u1} R (Finsupp.{u1, u3} α M _inst_1) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (Finsupp.zero.{u1, u3} α M _inst_1) (Finsupp.smulZeroClass.{u1, u3, u2} α M R _inst_1 _inst_2)) k)
-Case conversion may be inaccurate. Consider using '#align is_smul_regular.finsupp IsSMulRegular.finsuppₓ'. -/
 theorem IsSMulRegular.finsupp [Zero M] [SMulZeroClass R M] {k : R} (hk : IsSMulRegular M k) :
     IsSMulRegular (α →₀ M) k := fun _ _ h => ext fun i => hk (congr_fun h i)
 #align is_smul_regular.finsupp IsSMulRegular.finsupp
@@ -2447,23 +1562,11 @@ instance [Semiring R] [AddCommMonoid M] [Module R M] : Module R (α →₀ M) :=
 
 variable {α M} {R}
 
-/- warning: finsupp.support_smul -> Finsupp.support_smul is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))] {b : R} {g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2)) b g)) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) g)
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : SMulZeroClass.{u2, u3} R M (AddMonoid.toZero.{u3} M _inst_1)] {b : R} {g : Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finsupp.support.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (instHSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.smulZeroClass.{u1, u3, u2} α M R (AddMonoid.toZero.{u3} M _inst_1) _inst_2))) b g)) (Finsupp.support.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1) g)
-Case conversion may be inaccurate. Consider using '#align finsupp.support_smul Finsupp.support_smulₓ'. -/
 theorem support_smul [AddMonoid M] [SMulZeroClass R M] {b : R} {g : α →₀ M} :
     (b • g).support ⊆ g.support := fun a => by simp only [smul_apply, mem_support_iff, Ne.def];
   exact mt fun h => h.symm ▸ smul_zero _
 #align finsupp.support_smul Finsupp.support_smul
 
-/- warning: finsupp.support_smul_eq -> Finsupp.support_smul_eq is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Semiring.{u3} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : Module.{u3, u2} R M _inst_1 _inst_2] [_inst_4 : NoZeroSMulDivisors.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3))))] {b : R}, (Ne.{succ u3} R b (OfNat.ofNat.{u3} R 0 (OfNat.mk.{u3} R 0 (Zero.zero.{u3} R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))))))) -> (forall {g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))}, Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3))))) b g)) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) g))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Semiring.{u3} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : Module.{u3, u2} R M _inst_1 _inst_2] [_inst_4 : NoZeroSMulDivisors.{u3, u2} R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulZeroClass.toSMul.{u3, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u3, u2} R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3))))] {b : R}, (Ne.{succ u3} R b (OfNat.ofNat.{u3} R 0 (Zero.toOfNat0.{u3} R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))))) -> (forall {g : Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))}, Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (HSMul.hSMul.{u3, max u1 u2, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (instHSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulZeroClass.toSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u3, u2} R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3)))))) b g)) (Finsupp.support.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) g))
-Case conversion may be inaccurate. Consider using '#align finsupp.support_smul_eq Finsupp.support_smul_eqₓ'. -/
 @[simp]
 theorem support_smul_eq [Semiring R] [AddCommMonoid M] [Module R M] [NoZeroSMulDivisors R M] {b : R}
     (hb : b ≠ 0) {g : α →₀ M} : (b • g).support = g.support :=
@@ -2474,12 +1577,6 @@ section
 
 variable {p : α → Prop}
 
-/- warning: finsupp.filter_smul -> Finsupp.filter_smul is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {p : α -> Prop} {_x : Monoid.{u3} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u3, u2} R M _x _inst_1] {b : R} {v : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) p (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2)))) b v)) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2)))) b (Finsupp.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) p v))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {p : α -> Prop} {_x : Monoid.{u3} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u3, u2} R M _x _inst_1] {b : R} {v : Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.filter.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1) p (HSMul.hSMul.{u3, max u1 u2, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (instHSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddMonoid.toZero.{u2} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2))))) b v)) (HSMul.hSMul.{u3, max u2 u1, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (instHSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddMonoid.toZero.{u2} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2))))) b (Finsupp.filter.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1) p v))
-Case conversion may be inaccurate. Consider using '#align finsupp.filter_smul Finsupp.filter_smulₓ'. -/
 @[simp]
 theorem filter_smul {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] {b : R} {v : α →₀ M} :
     (b • v).filterₓ p = b • v.filterₓ p :=
@@ -2488,47 +1585,23 @@ theorem filter_smul {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] {b : R}
 
 end
 
-/- warning: finsupp.map_domain_smul -> Finsupp.mapDomain_smul is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {R : Type.{u4}} {_x : Monoid.{u4} R} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : DistribMulAction.{u4, u3} R M _x (AddCommMonoid.toAddMonoid.{u3} M _inst_1)] {f : α -> β} (b : R) (v : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f (SMul.smul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (SMulZeroClass.toHasSmul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.smulZeroClass.{u1, u3, u4} α M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (DistribMulAction.toDistribSMul.{u4, u3} R M _x (AddCommMonoid.toAddMonoid.{u3} M _inst_1) _inst_2)))) b v)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (DistribMulAction.toDistribSMul.{u4, u3} R M _x (AddCommMonoid.toAddMonoid.{u3} M _inst_1) _inst_2)))) b (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f v))
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} {M : Type.{u3}} {R : Type.{u4}} {_x : Monoid.{u4} R} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : DistribMulAction.{u4, u3} R M _x (AddCommMonoid.toAddMonoid.{u3} M _inst_1)] {f : α -> β} (b : R) (v : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.mapDomain.{u2, u1, u3} α β M _inst_1 f (HSMul.hSMul.{u4, max u2 u3, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (instHSMul.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (SMulZeroClass.toSMul.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} α M R (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (DistribSMul.toSMulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (DistribMulAction.toDistribSMul.{u4, u3} R M _x (AddCommMonoid.toAddMonoid.{u3} M _inst_1) _inst_2))))) b v)) (HSMul.hSMul.{u4, max u3 u1, max u1 u3} R (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (instHSMul.{u4, max u1 u3} R (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (SMulZeroClass.toSMul.{u4, max u1 u3} R (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.zero.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u1, u3, u4} β M R (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (DistribSMul.toSMulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (DistribMulAction.toDistribSMul.{u4, u3} R M _x (AddCommMonoid.toAddMonoid.{u3} M _inst_1) _inst_2))))) b (Finsupp.mapDomain.{u2, u1, u3} α β M _inst_1 f v))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_smul Finsupp.mapDomain_smulₓ'. -/
 theorem mapDomain_smul {_ : Monoid R} [AddCommMonoid M] [DistribMulAction R M] {f : α → β} (b : R)
     (v : α →₀ M) : mapDomain f (b • v) = b • mapDomain f v :=
   mapDomain_mapRange _ _ _ _ (smul_add b)
 #align finsupp.map_domain_smul Finsupp.mapDomain_smul
 
-/- warning: finsupp.smul_single -> Finsupp.smul_single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M _inst_1] (c : R) (a : α) (b : M), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M _inst_1) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M _inst_1) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1) (Finsupp.smulZeroClass.{u1, u2, u3} α M R _inst_1 _inst_2)) c (Finsupp.single.{u1, u2} α M _inst_1 a b)) (Finsupp.single.{u1, u2} α M _inst_1 a (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M _inst_1 _inst_2) c b))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : Zero.{u3} M] [_inst_2 : SMulZeroClass.{u2, u3} R M _inst_1] (c : R) (a : α) (b : M), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (HSMul.hSMul.{u2, max u3 u1, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u1, u3} α M _inst_1) (instHSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (Finsupp.zero.{u1, u3} α M _inst_1) (Finsupp.smulZeroClass.{u1, u3, u2} α M R _inst_1 _inst_2))) c (Finsupp.single.{u1, u3} α M _inst_1 a b)) (Finsupp.single.{u1, u3} α M _inst_1 a (HSMul.hSMul.{u2, u3, u3} R M M (instHSMul.{u2, u3} R M (SMulZeroClass.toSMul.{u2, u3} R M _inst_1 _inst_2)) c b))
-Case conversion may be inaccurate. Consider using '#align finsupp.smul_single Finsupp.smul_singleₓ'. -/
 @[simp]
 theorem smul_single [Zero M] [SMulZeroClass R M] (c : R) (a : α) (b : M) :
     c • Finsupp.single a b = Finsupp.single a (c • b) :=
   mapRange_single
 #align finsupp.smul_single Finsupp.smul_single
 
-/- warning: finsupp.smul_single' -> Finsupp.smul_single' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {R : Type.{u2}} {_x : Semiring.{u2} R} (c : R) (a : α) (b : R), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x))))) (SMul.smul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x))))) (SMulZeroClass.toHasSmul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x))))) (Finsupp.zero.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x))))) (Finsupp.smulZeroClass.{u1, u2, u2} α R R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))) (SMulWithZero.toSmulZeroClass.{u2, u2} R R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))) (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))) (MulZeroClass.toSMulWithZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x))))))) c (Finsupp.single.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))) a b)) (Finsupp.single.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))) a (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x))))) c b))
-but is expected to have type
-  forall {α : Type.{u1}} {R : Type.{u2}} {_x : Semiring.{u2} R} (c : R) (a : α) (b : R), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x))) (HSMul.hSMul.{u2, max u2 u1, max u1 u2} R (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x))) (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x))) (instHSMul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x))) (SMulZeroClass.toSMul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x))) (Finsupp.zero.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x))) (Finsupp.smulZeroClass.{u1, u2, u2} α R R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x)) (SMulWithZero.toSMulZeroClass.{u2, u2} R R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x)) (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x)) (MulZeroClass.toSMulWithZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))))))) c (Finsupp.single.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x)) a b)) (Finsupp.single.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x)) a (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))) c b))
-Case conversion may be inaccurate. Consider using '#align finsupp.smul_single' Finsupp.smul_single'ₓ'. -/
 @[simp]
 theorem smul_single' {_ : Semiring R} (c : R) (a : α) (b : R) :
     c • Finsupp.single a b = Finsupp.single a (c * b) :=
   smul_single _ _ _
 #align finsupp.smul_single' Finsupp.smul_single'
 
-/- warning: finsupp.map_range_smul -> Finsupp.mapRange_smul is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {R : Type.{u4}} {_x : Monoid.{u4} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u4, u2} R M _x _inst_1] [_inst_3 : AddMonoid.{u3} N] [_inst_4 : DistribMulAction.{u4, u3} R N _x _inst_3] {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 (AddMonoid.toAddZeroClass.{u2} M _inst_1)))))) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3)))))} (c : R) (v : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))), (forall (x : M), Eq.{succ u3} N (f (SMul.smul.{u4, u2} R M (SMulZeroClass.toHasSmul.{u4, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u2} R M _x _inst_1 _inst_2))) c x)) (SMul.smul.{u4, u3} R N (SMulZeroClass.toHasSmul.{u4, u3} R N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3)) (DistribSMul.toSmulZeroClass.{u4, u3} R N (AddMonoid.toAddZeroClass.{u3} N _inst_3) (DistribMulAction.toDistribSMul.{u4, u3} R N _x _inst_3 _inst_4))) c (f x))) -> (Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3))) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3)) f hf (SMul.smul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u4} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u2} R M _x _inst_1 _inst_2)))) c v)) (SMul.smul.{u4, max u1 u3} R (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3))) (SMulZeroClass.toHasSmul.{u4, max u1 u3} R (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3))) (Finsupp.zero.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3))) (Finsupp.smulZeroClass.{u1, u3, u4} α N R (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3)) (DistribSMul.toSmulZeroClass.{u4, u3} R N (AddMonoid.toAddZeroClass.{u3} N _inst_3) (DistribMulAction.toDistribSMul.{u4, u3} R N _x _inst_3 _inst_4)))) c (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3)) f hf v)))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} {R : Type.{u4}} {_x : Monoid.{u4} R} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : DistribMulAction.{u4, u3} R M _x _inst_1] [_inst_3 : AddMonoid.{u2} N] [_inst_4 : DistribMulAction.{u4, u2} R N _x _inst_3] {f : M -> N} {hf : Eq.{succ u2} N (f (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddMonoid.toZero.{u3} M _inst_1)))) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N (AddMonoid.toZero.{u2} N _inst_3)))} (c : R) (v : Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)), (forall (x : M), Eq.{succ u2} N (f (HSMul.hSMul.{u4, u3, u3} R M M (instHSMul.{u4, u3} R M (SMulZeroClass.toSMul.{u4, u3} R M (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _x _inst_1 _inst_2)))) c x)) (HSMul.hSMul.{u4, u2, u2} R N N (instHSMul.{u4, u2} R N (SMulZeroClass.toSMul.{u4, u2} R N (AddMonoid.toZero.{u2} N _inst_3) (DistribSMul.toSMulZeroClass.{u4, u2} R N (AddMonoid.toAddZeroClass.{u2} N _inst_3) (DistribMulAction.toDistribSMul.{u4, u2} R N _x _inst_3 _inst_4)))) c (f x))) -> (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N _inst_3)) (Finsupp.mapRange.{u1, u3, u2} α M N (AddMonoid.toZero.{u3} M _inst_1) (AddMonoid.toZero.{u2} N _inst_3) f hf (HSMul.hSMul.{u4, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (instHSMul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (SMulZeroClass.toSMul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.smulZeroClass.{u1, u3, u4} α M R (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _x _inst_1 _inst_2))))) c v)) (HSMul.hSMul.{u4, max u2 u1, max u1 u2} R (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N _inst_3)) (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N _inst_3)) (instHSMul.{u4, max u1 u2} R (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N _inst_3)) (SMulZeroClass.toSMul.{u4, max u1 u2} R (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N _inst_3)) (Finsupp.zero.{u1, u2} α N (AddMonoid.toZero.{u2} N _inst_3)) (Finsupp.smulZeroClass.{u1, u2, u4} α N R (AddMonoid.toZero.{u2} N _inst_3) (DistribSMul.toSMulZeroClass.{u4, u2} R N (AddMonoid.toAddZeroClass.{u2} N _inst_3) (DistribMulAction.toDistribSMul.{u4, u2} R N _x _inst_3 _inst_4))))) c (Finsupp.mapRange.{u1, u3, u2} α M N (AddMonoid.toZero.{u3} M _inst_1) (AddMonoid.toZero.{u2} N _inst_3) f hf v)))
-Case conversion may be inaccurate. Consider using '#align finsupp.map_range_smul Finsupp.mapRange_smulₓ'. -/
 theorem mapRange_smul {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] [AddMonoid N]
     [DistribMulAction R N] {f : M → N} {hf : f 0 = 0} (c : R) (v : α →₀ M)
     (hsmul : ∀ x, f (c • x) = c • f x) : mapRange f hf (c • v) = c • mapRange f hf v :=
@@ -2540,19 +1613,10 @@ theorem mapRange_smul {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] [AddMo
   rw [Function.comp_apply, smul_zero, hf]
 #align finsupp.map_range_smul Finsupp.mapRange_smul
 
-/- warning: finsupp.smul_single_one -> Finsupp.smul_single_one is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] (a : α) (b : R), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) (SMul.smul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) (SMulZeroClass.toHasSmul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) (Finsupp.zero.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) (Finsupp.smulZeroClass.{u1, u2, u2} α R R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (SMulWithZero.toSmulZeroClass.{u2, u2} R R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (MulZeroClass.toSMulWithZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))))) b (Finsupp.single.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) a (OfNat.ofNat.{u2} R 1 (OfNat.mk.{u2} R 1 (One.one.{u2} R (AddMonoidWithOne.toOne.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))))))) (Finsupp.single.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) a b)
-but is expected to have type
-  forall {α : Type.{u1}} {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] (a : α) (b : R), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (HSMul.hSMul.{u2, max u2 u1, max u1 u2} R (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (instHSMul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (SMulZeroClass.toSMul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Finsupp.zero.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u2} α R R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) (SMulWithZero.toSMulZeroClass.{u2, u2} R R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) (MulZeroClass.toSMulWithZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))))))) b (Finsupp.single.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) a (OfNat.ofNat.{u2} R 1 (One.toOfNat1.{u2} R (Semiring.toOne.{u2} R _inst_1))))) (Finsupp.single.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) a b)
-Case conversion may be inaccurate. Consider using '#align finsupp.smul_single_one Finsupp.smul_single_oneₓ'. -/
 theorem smul_single_one [Semiring R] (a : α) (b : R) : b • single a 1 = single a b := by
   rw [smul_single, smul_eq_mul, mul_one]
 #align finsupp.smul_single_one Finsupp.smul_single_one
 
-/- warning: finsupp.comap_domain_smul -> Finsupp.comapDomain_smul is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align finsupp.comap_domain_smul Finsupp.comapDomain_smulₓ'. -/
 theorem comapDomain_smul [AddMonoid M] [Monoid R] [DistribMulAction R M] {f : α → β} (r : R)
     (v : β →₀ M) (hfv : Set.InjOn f (f ⁻¹' ↑v.support))
     (hfrv : Set.InjOn f (f ⁻¹' ↑(r • v).support) :=
@@ -2560,12 +1624,6 @@ theorem comapDomain_smul [AddMonoid M] [Monoid R] [DistribMulAction R M] {f : α
     comapDomain f (r • v) hfrv = r • comapDomain f v hfv := by ext; rfl
 #align finsupp.comap_domain_smul Finsupp.comapDomain_smul
 
-/- warning: finsupp.comap_domain_smul_of_injective -> Finsupp.comapDomain_smul_of_injective is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {R : Type.{u4}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : Monoid.{u4} R] [_inst_3 : DistribMulAction.{u4, u3} R M _inst_2 _inst_1] {f : α -> β} (hf : Function.Injective.{succ u1, succ u2} α β f) (r : R) (v : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) f (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v) (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)))))) (SMul.smul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u1, u3, u4} α M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) f v (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v))))))
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} {M : Type.{u4}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u4} M] [_inst_2 : Monoid.{u3} R] [_inst_3 : DistribMulAction.{u3, u4} R M _inst_2 _inst_1] {f : α -> β} (hf : Function.Injective.{succ u2, succ u1} α β f) (r : R) (v : Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)), Eq.{max (succ u2) (succ u4)} (Finsupp.{u2, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.comapDomain.{u2, u1, u4} α β M (AddMonoid.toZero.{u4} M _inst_1) f (HSMul.hSMul.{u3, max u1 u4, max u1 u4} R (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u1, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v) (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u2, u1} α β f (Finset.toSet.{u1} β (Finsupp.support.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u1 u4, max u1 u4} R (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u1, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)))))) (HSMul.hSMul.{u3, max u4 u2, max u2 u4} R (Finsupp.{u2, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} α M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r (Finsupp.comapDomain.{u2, u1, u4} α β M (AddMonoid.toZero.{u4} M _inst_1) f v (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u2, u1} α β f (Finset.toSet.{u1} β (Finsupp.support.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v))))))
-Case conversion may be inaccurate. Consider using '#align finsupp.comap_domain_smul_of_injective Finsupp.comapDomain_smul_of_injectiveₓ'. -/
 /-- A version of `finsupp.comap_domain_smul` that's easier to use. -/
 theorem comapDomain_smul_of_injective [AddMonoid M] [Monoid R] [DistribMulAction R M] {f : α → β}
     (hf : Function.Injective f) (r : R) (v : β →₀ M) :
@@ -2575,34 +1633,16 @@ theorem comapDomain_smul_of_injective [AddMonoid M] [Monoid R] [DistribMulAction
 
 end
 
-/- warning: finsupp.sum_smul_index -> Finsupp.sum_smul_index is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Semiring.{u3} R] [_inst_2 : AddCommMonoid.{u2} M] {g : Finsupp.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))} {b : R} {h : α -> R -> M}, (forall (i : α), Eq.{succ u2} M (h i (OfNat.ofNat.{u3} R 0 (OfNat.mk.{u3} R 0 (Zero.zero.{u3} R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))))))) (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_2))))))) -> (Eq.{succ u2} M (Finsupp.sum.{u1, u3, u2} α R M (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) _inst_2 (SMul.smul.{u3, max u1 u3} R (Finsupp.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) (SMulZeroClass.toHasSmul.{u3, max u1 u3} R (Finsupp.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) (Finsupp.zero.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) (Finsupp.smulZeroClass.{u1, u3, u3} α R R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) (SMulWithZero.toSmulZeroClass.{u3, u3} R R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) (MulZeroClass.toSMulWithZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))))) b g) h) (Finsupp.sum.{u1, u3, u2} α R M (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) _inst_2 g (fun (i : α) (a : R) => h i (HMul.hMul.{u3, u3, u3} R R R (instHMul.{u3} R (Distrib.toHasMul.{u3} R (NonUnitalNonAssocSemiring.toDistrib.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) b a))))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Semiring.{u3} R] [_inst_2 : AddCommMonoid.{u2} M] {g : Finsupp.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))} {b : R} {h : α -> R -> M}, (forall (i : α), Eq.{succ u2} M (h i (OfNat.ofNat.{u3} R 0 (Zero.toOfNat0.{u3} R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))))) (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))))) -> (Eq.{succ u2} M (Finsupp.sum.{u1, u3, u2} α R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) _inst_2 (HSMul.hSMul.{u3, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) (Finsupp.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) (instHSMul.{u3, max u1 u3} R (Finsupp.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) (SMulZeroClass.toSMul.{u3, max u1 u3} R (Finsupp.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) (Finsupp.zero.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) (Finsupp.smulZeroClass.{u1, u3, u3} α R R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (SMulWithZero.toSMulZeroClass.{u3, u3} R R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (MulZeroClass.toSMulWithZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))))))) b g) h) (Finsupp.sum.{u1, u3, u2} α R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) _inst_2 g (fun (i : α) (a : R) => h i (HMul.hMul.{u3, u3, u3} R R R (instHMul.{u3} R (NonUnitalNonAssocSemiring.toMul.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) b a))))
-Case conversion may be inaccurate. Consider using '#align finsupp.sum_smul_index Finsupp.sum_smul_indexₓ'. -/
 theorem sum_smul_index [Semiring R] [AddCommMonoid M] {g : α →₀ R} {b : R} {h : α → R → M}
     (h0 : ∀ i, h i 0 = 0) : (b • g).Sum h = g.Sum fun i a => h i (b * a) :=
   Finsupp.sum_mapRange_index h0
 #align finsupp.sum_smul_index Finsupp.sum_smul_index
 
-/- warning: finsupp.sum_smul_index' -> Finsupp.sum_smul_index' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {R : Type.{u4}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribSMul.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1)] [_inst_3 : AddCommMonoid.{u3} N] {g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))} {b : R} {h : α -> M -> N}, (forall (i : α), Eq.{succ u3} N (h i (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)))))) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_3))))))) -> (Eq.{succ u3} N (Finsupp.sum.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_3 (SMul.smul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u4} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2))) b g) h) (Finsupp.sum.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_3 g (fun (i : α) (c : M) => h i (SMul.smul.{u4, u2} R M (SMulZeroClass.toHasSmul.{u4, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2)) b c))))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u4}} {N : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u4} M] [_inst_2 : DistribSMul.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1)] [_inst_3 : AddCommMonoid.{u2} N] {g : Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)} {b : R} {h : α -> M -> N}, (forall (i : α), Eq.{succ u2} N (h i (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddMonoid.toZero.{u4} M _inst_1)))) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_3))))) -> (Eq.{succ u2} N (Finsupp.sum.{u1, u4, u2} α M N (AddMonoid.toZero.{u4} M _inst_1) _inst_3 (HSMul.hSMul.{u3, max u1 u4, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u1, u4, u3} α M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) _inst_2)))) b g) h) (Finsupp.sum.{u1, u4, u2} α M N (AddMonoid.toZero.{u4} M _inst_1) _inst_3 g (fun (i : α) (c : M) => h i (HSMul.hSMul.{u3, u4, u4} R M M (instHSMul.{u3, u4} R M (SMulZeroClass.toSMul.{u3, u4} R M (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) _inst_2))) b c))))
-Case conversion may be inaccurate. Consider using '#align finsupp.sum_smul_index' Finsupp.sum_smul_index'ₓ'. -/
 theorem sum_smul_index' [AddMonoid M] [DistribSMul R M] [AddCommMonoid N] {g : α →₀ M} {b : R}
     {h : α → M → N} (h0 : ∀ i, h i 0 = 0) : (b • g).Sum h = g.Sum fun i c => h i (b • c) :=
   Finsupp.sum_mapRange_index h0
 #align finsupp.sum_smul_index' Finsupp.sum_smul_index'
 
-/- warning: finsupp.sum_smul_index_add_monoid_hom -> Finsupp.sum_smul_index_addMonoidHom is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {R : Type.{u4}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] [_inst_3 : DistribSMul.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1)] {g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))} {b : R} {h : α -> (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))}, Eq.{succ u3} N (Finsupp.sum.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2 (SMul.smul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u4} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_3))) b g) (fun (a : α) => coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (fun (_x : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (h a))) (Finsupp.sum.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2 g (fun (i : α) (c : M) => coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (fun (_x : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (h i) (SMul.smul.{u4, u2} R M (SMulZeroClass.toHasSmul.{u4, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_3)) b c)))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u4}} {N : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u4} M] [_inst_2 : AddCommMonoid.{u3} N] [_inst_3 : DistribSMul.{u2, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1)] {g : Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)} {b : R} {h : α -> (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))}, Eq.{succ u3} N (Finsupp.sum.{u1, u4, u3} α M N (AddMonoid.toZero.{u4} M _inst_1) _inst_2 (HSMul.hSMul.{u2, max u1 u4, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u2, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u1, u4, u2} α M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) _inst_3)))) b g) (fun (a : α) => FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M _inst_1)) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) (h a))) (Finsupp.sum.{u1, u4, u3} α M N (AddMonoid.toZero.{u4} M _inst_1) _inst_2 g (fun (i : α) (c : M) => FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M _inst_1)) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) (h i) (HSMul.hSMul.{u2, u4, u4} R M M (instHSMul.{u2, u4} R M (SMulZeroClass.toSMul.{u2, u4} R M (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) _inst_3))) b c)))
-Case conversion may be inaccurate. Consider using '#align finsupp.sum_smul_index_add_monoid_hom Finsupp.sum_smul_index_addMonoidHomₓ'. -/
 /-- A version of `finsupp.sum_smul_index'` for bundled additive maps. -/
 theorem sum_smul_index_addMonoidHom [AddMonoid M] [AddCommMonoid N] [DistribSMul R M] {g : α →₀ M}
     {b : R} {h : α → M →+ N} : ((b • g).Sum fun a => h a) = g.Sum fun i c => h i (b • c) :=
@@ -2621,12 +1661,6 @@ variable [Semiring R]
 
 variable [AddCommMonoid M] [AddCommMonoid N] [DistribMulAction R M] [DistribMulAction R N]
 
-/- warning: finsupp.distrib_mul_action_hom.single -> Finsupp.DistribMulActionHom.single is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Semiring.{u3} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_4 : DistribMulAction.{u3, u2} R M (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2)], α -> (DistribMulActionHom.{u3, u2, max u1 u2} R (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) M (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4 (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u3} α M R (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Semiring.{u3} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_4 : DistribMulAction.{u3, u2} R M (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2)], α -> (DistribMulActionHom.{u3, u2, max u2 u1} R (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) M (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4 (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u3} α M R (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4))
-Case conversion may be inaccurate. Consider using '#align finsupp.distrib_mul_action_hom.single Finsupp.DistribMulActionHom.singleₓ'. -/
 /-- `finsupp.single` as a `distrib_mul_action_hom`.
 
 See also `finsupp.lsingle` for the version as a linear map. -/
@@ -2636,20 +1670,11 @@ def DistribMulActionHom.single (a : α) : M →+[R] α →₀ M :=
       simp only [AddMonoidHom.toFun_eq_coe, single_add_hom_apply, smul_single] }
 #align finsupp.distrib_mul_action_hom.single Finsupp.DistribMulActionHom.single
 
-/- warning: finsupp.distrib_mul_action_hom_ext -> Finsupp.distribMulActionHom_ext is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align finsupp.distrib_mul_action_hom_ext Finsupp.distribMulActionHom_extₓ'. -/
 theorem distribMulActionHom_ext {f g : (α →₀ M) →+[R] N}
     (h : ∀ (a : α) (m : M), f (single a m) = g (single a m)) : f = g :=
   DistribMulActionHom.toAddMonoidHom_injective <| addHom_ext h
 #align finsupp.distrib_mul_action_hom_ext Finsupp.distribMulActionHom_ext
 
-/- warning: finsupp.distrib_mul_action_hom_ext' -> Finsupp.distribMulActionHom_ext' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {R : Type.{u4}} [_inst_1 : Semiring.{u4} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : AddCommMonoid.{u3} N] [_inst_4 : DistribMulAction.{u4, u2} R M (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2)] [_inst_5 : DistribMulAction.{u4, u3} R N (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} N _inst_3)] {f : DistribMulActionHom.{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5} {g : DistribMulActionHom.{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5}, (forall (a : α), Eq.{max (succ u2) (succ u3)} (DistribMulActionHom.{u4, u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) M (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4 N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5) (DistribMulActionHom.comp.{u4, u2, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) M (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4 (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5 f (Finsupp.DistribMulActionHom.single.{u1, u2, u4} α M R _inst_1 _inst_2 _inst_4 a)) (DistribMulActionHom.comp.{u4, u2, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) M (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4 (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5 g (Finsupp.DistribMulActionHom.single.{u1, u2, u4} α M R _inst_1 _inst_2 _inst_4 a))) -> (Eq.{max (succ (max u1 u2)) (succ u3)} (DistribMulActionHom.{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5) f g)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u3}} {N : Type.{u1}} {R : Type.{u4}} [_inst_1 : Semiring.{u4} R] [_inst_2 : AddCommMonoid.{u3} M] [_inst_3 : AddCommMonoid.{u1} N] [_inst_4 : DistribMulAction.{u4, u3} R M (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2)] [_inst_5 : DistribMulAction.{u4, u1} R N (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} N _inst_3)] {f : DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5} {g : DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5}, (forall (a : α), Eq.{max (succ u3) (succ u1)} (DistribMulActionHom.{u4, u3, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) M (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4 N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) (DistribMulActionHom.comp.{u4, u3, max u2 u3, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) M (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4 (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5 f (Finsupp.DistribMulActionHom.single.{u2, u3, u4} α M R _inst_1 _inst_2 _inst_4 a)) (DistribMulActionHom.comp.{u4, u3, max u2 u3, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) M (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4 (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5 g (Finsupp.DistribMulActionHom.single.{u2, u3, u4} α M R _inst_1 _inst_2 _inst_4 a))) -> (Eq.{max (max (succ u2) (succ u3)) (succ u1)} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) f g)
-Case conversion may be inaccurate. Consider using '#align finsupp.distrib_mul_action_hom_ext' Finsupp.distribMulActionHom_ext'ₓ'. -/
 /-- See note [partially-applied ext lemmas]. -/
 @[ext]
 theorem distribMulActionHom_ext' {f g : (α →₀ M) →+[R] N}
@@ -2680,12 +1705,6 @@ instance uniqueOfLeft [IsEmpty α] : Unique (α →₀ R) :=
 
 end
 
-/- warning: finsupp.restrict_support_equiv -> Finsupp.restrictSupportEquiv is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} (s : Set.{u1} α) (M : Type.{u2}) [_inst_1 : AddCommMonoid.{u2} M], Equiv.{max 1 (succ u1) (succ u2), max (succ u1) (succ u2)} (Subtype.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (fun (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) => 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 (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) f)) s)) (Finsupp.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u1}} (s : Set.{u1} α) (M : Type.{u2}) [_inst_1 : AddCommMonoid.{u2} M], Equiv.{max 1 (succ u1) (succ u2), max (succ u2) (succ u1)} (Subtype.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (fun (f : Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) => HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) (Finset.toSet.{u1} α (Finsupp.support.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) f)) s)) (Finsupp.{u1, u2} (Set.Elem.{u1} α s) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))
-Case conversion may be inaccurate. Consider using '#align finsupp.restrict_support_equiv Finsupp.restrictSupportEquivₓ'. -/
 /-- Given an `add_comm_monoid M` and `s : set α`, `restrict_support_equiv s M` is the `equiv`
 between the subtype of finitely supported functions with support contained in `s` and
 the type of finitely supported functions from `s`. -/
@@ -2717,12 +1736,6 @@ def restrictSupportEquiv (s : Set α) (M : Type _) [AddCommMonoid M] :
     rw [subtype_domain_apply, map_domain_apply Subtype.val_injective]
 #align finsupp.restrict_support_equiv Finsupp.restrictSupportEquiv
 
-/- warning: finsupp.dom_congr -> Finsupp.domCongr is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], (Equiv.{succ u1, succ u2} α β) -> (AddEquiv.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u2, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], (Equiv.{succ u1, succ u2} α β) -> (AddEquiv.{max u3 u1, max u3 u2} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u2, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.dom_congr Finsupp.domCongrₓ'. -/
 /-- Given `add_comm_monoid M` and `e : α ≃ β`, `dom_congr e` is the corresponding `equiv` between
 `α →₀ M` and `β →₀ M`.
 
@@ -2742,36 +1755,18 @@ protected def domCongr [AddCommMonoid M] (e : α ≃ β) : (α →₀ M) ≃+ (
   map_add' a b := by simp only [equiv_map_domain_eq_map_domain] <;> exact map_domain_add
 #align finsupp.dom_congr Finsupp.domCongr
 
-/- warning: finsupp.dom_congr_refl -> Finsupp.domCongr_refl is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M], Eq.{succ (max u1 u2)} (AddEquiv.{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.add.{u1, 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.domCongr.{u1, u1, u2} α α M _inst_1 (Equiv.refl.{succ u1} α)) (AddEquiv.refl.{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))))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M], Eq.{max (succ u1) (succ u2)} (AddEquiv.{max u2 u1, max u2 u1} (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.add.{u1, 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.domCongr.{u1, u1, u2} α α M _inst_1 (Equiv.refl.{succ u1} α)) (AddEquiv.refl.{max u2 u1} (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))))
-Case conversion may be inaccurate. Consider using '#align finsupp.dom_congr_refl Finsupp.domCongr_reflₓ'. -/
 @[simp]
 theorem domCongr_refl [AddCommMonoid M] :
     Finsupp.domCongr (Equiv.refl α) = AddEquiv.refl (α →₀ M) :=
   AddEquiv.ext fun _ => equivMapDomain_refl _
 #align finsupp.dom_congr_refl Finsupp.domCongr_refl
 
-/- warning: finsupp.dom_congr_symm -> Finsupp.domCongr_symm is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (e : Equiv.{succ u1, succ u2} α β), Eq.{max (succ (max u2 u3)) (succ (max u1 u3))} (AddEquiv.{max u2 u3, max u1 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.add.{u2, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (AddEquiv.symm.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u2, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.domCongr.{u1, u2, u3} α β M _inst_1 e)) (Finsupp.domCongr.{u2, u1, u3} β α M _inst_1 (Equiv.symm.{succ u1, succ u2} α β e))
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (e : Equiv.{succ u2, succ u1} α β), Eq.{max (max (succ u2) (succ u1)) (succ u3)} (AddEquiv.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u2, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (AddEquiv.symm.{max u2 u3, max u1 u3} (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u2, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.domCongr.{u2, u1, u3} α β M _inst_1 e)) (Finsupp.domCongr.{u1, u2, u3} β α M _inst_1 (Equiv.symm.{succ u2, succ u1} α β e))
-Case conversion may be inaccurate. Consider using '#align finsupp.dom_congr_symm Finsupp.domCongr_symmₓ'. -/
 @[simp]
 theorem domCongr_symm [AddCommMonoid M] (e : α ≃ β) :
     (Finsupp.domCongr e).symm = (Finsupp.domCongr e.symm : (β →₀ M) ≃+ (α →₀ M)) :=
   AddEquiv.ext fun _ => rfl
 #align finsupp.dom_congr_symm Finsupp.domCongr_symm
 
-/- warning: finsupp.dom_congr_trans -> Finsupp.domCongr_trans is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {M : Type.{u4}} [_inst_1 : AddCommMonoid.{u4} M] (e : Equiv.{succ u1, succ u2} α β) (f : Equiv.{succ u2, succ u3} β γ), Eq.{max (succ (max u1 u4)) (succ (max u3 u4))} (AddEquiv.{max u1 u4, max u3 u4} (Finsupp.{u1, u4} α M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.{u3, u4} γ M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.add.{u1, u4} α M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u3, u4} γ M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (AddEquiv.trans.{max u1 u4, max u2 u4, max u3 u4} (Finsupp.{u1, u4} α M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.{u2, u4} β M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.{u3, u4} γ M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.add.{u1, u4} α M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u2, u4} β M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u3, u4} γ M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.domCongr.{u1, u2, u4} α β M _inst_1 e) (Finsupp.domCongr.{u2, u3, u4} β γ M _inst_1 f)) (Finsupp.domCongr.{u1, u3, u4} α γ M _inst_1 (Equiv.trans.{succ u1, succ u2, succ u3} α β γ e f))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} {M : Type.{u4}} [_inst_1 : AddCommMonoid.{u4} M] (e : Equiv.{succ u3, succ u2} α β) (f : Equiv.{succ u2, succ u1} β γ), Eq.{max (max (succ u3) (succ u1)) (succ u4)} (AddEquiv.{max u3 u4, max u4 u1} (Finsupp.{u3, u4} α M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.{u1, u4} γ M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u3, u4} α M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u1, u4} γ M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (AddEquiv.trans.{max u3 u4, max u2 u4, max u4 u1} (Finsupp.{u3, u4} α M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.{u1, u4} γ M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u3, u4} α M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u2, u4} β M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u1, u4} γ M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.domCongr.{u3, u2, u4} α β M _inst_1 e) (Finsupp.domCongr.{u2, u1, u4} β γ M _inst_1 f)) (Finsupp.domCongr.{u3, u1, u4} α γ M _inst_1 (Equiv.trans.{succ u3, succ u2, succ u1} α β γ e f))
-Case conversion may be inaccurate. Consider using '#align finsupp.dom_congr_trans Finsupp.domCongr_transₓ'. -/
 @[simp]
 theorem domCongr_trans [AddCommMonoid M] (e : α ≃ β) (f : β ≃ γ) :
     (Finsupp.domCongr e).trans (Finsupp.domCongr f) =
@@ -2802,12 +1797,6 @@ def split (i : ι) : αs i →₀ M :=
 #align finsupp.split Finsupp.split
 -/
 
-/- warning: finsupp.split_apply -> Finsupp.split_apply is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {M : Type.{u2}} {αs : ι -> Type.{u3}} [_inst_1 : Zero.{u2} M] (l : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) M _inst_1) (i : ι) (x : αs i), Eq.{succ u2} M (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (Finsupp.{u3, u2} ((fun (i : ι) => αs i) i) M _inst_1) (fun (_x : Finsupp.{u3, u2} ((fun (i : ι) => αs i) i) M _inst_1) => (αs i) -> M) (Finsupp.coeFun.{u3, u2} ((fun (i : ι) => αs i) i) M _inst_1) (Finsupp.split.{u1, u2, u3} ι M (fun (i : ι) => αs i) _inst_1 l i) x) (coeFn.{max (succ (max u1 u3)) (succ u2), max (succ (max u1 u3)) (succ u2)} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) M _inst_1) (fun (_x : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) M _inst_1) => (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) -> M) (Finsupp.coeFun.{max u1 u3, u2} (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) M _inst_1) l (Sigma.mk.{u1, u3} ι (fun (i : ι) => αs i) i x))
-but is expected to have type
-  forall {ι : Type.{u1}} {M : Type.{u3}} {αs : ι -> Type.{u2}} [_inst_1 : Zero.{u3} M] (l : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} ι (fun (i : ι) => αs i)) M _inst_1) (i : ι) (x : αs i), Eq.{succ u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : αs i) => M) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (Finsupp.{u2, u3} (αs i) M _inst_1) (αs i) (fun (_x : αs i) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : αs i) => M) _x) (Finsupp.funLike.{u2, u3} (αs i) M _inst_1) (Finsupp.split.{u1, u3, u2} ι M (fun (i : ι) => αs i) _inst_1 l i) x) (FunLike.coe.{max (succ (max u1 u2)) (succ u3), succ (max u1 u2), succ u3} (Finsupp.{max u1 u2, u3} (Sigma.{u1, u2} ι (fun (i : ι) => αs i)) M _inst_1) (Sigma.{u1, u2} ι (fun (i : ι) => αs i)) (fun (_x : Sigma.{u1, u2} ι (fun (i : ι) => αs i)) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sigma.{u1, u2} ι (fun (i : ι) => αs i)) => M) _x) (Finsupp.funLike.{max u1 u2, u3} (Sigma.{u1, u2} ι (fun (i : ι) => αs i)) M _inst_1) l (Sigma.mk.{u1, u2} ι (fun (i : ι) => αs i) i x))
-Case conversion may be inaccurate. Consider using '#align finsupp.split_apply Finsupp.split_applyₓ'. -/
 theorem split_apply (i : ι) (x : αs i) : split l i x = l ⟨i, x⟩ :=
   by
   dsimp only [split]
@@ -2823,12 +1812,6 @@ def splitSupport (l : (Σi, αs i) →₀ M) : Finset ι :=
 #align finsupp.split_support Finsupp.splitSupport
 -/
 
-/- warning: finsupp.mem_split_support_iff_nonzero -> Finsupp.mem_splitSupport_iff_nonzero is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {M : Type.{u2}} {αs : ι -> Type.{u3}} [_inst_1 : Zero.{u2} M] (l : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) M _inst_1) (i : ι), Iff (Membership.Mem.{u1, u1} ι (Finset.{u1} ι) (Finset.hasMem.{u1} ι) i (Finsupp.splitSupport.{u1, u2, u3} ι M (fun (i : ι) => αs i) _inst_1 l)) (Ne.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} (αs i) M _inst_1) (Finsupp.split.{u1, u2, u3} ι M (fun (i : ι) => αs i) _inst_1 l i) (OfNat.ofNat.{max u3 u2} (Finsupp.{u3, u2} (αs i) M _inst_1) 0 (OfNat.mk.{max u3 u2} (Finsupp.{u3, u2} (αs i) M _inst_1) 0 (Zero.zero.{max u3 u2} (Finsupp.{u3, u2} (αs i) M _inst_1) (Finsupp.zero.{u3, u2} (αs i) M _inst_1)))))
-but is expected to have type
-  forall {ι : Type.{u3}} {M : Type.{u2}} {αs : ι -> Type.{u1}} [_inst_1 : Zero.{u2} M] (l : Finsupp.{max u1 u3, u2} (Sigma.{u3, u1} ι (fun (i : ι) => αs i)) M _inst_1) (i : ι), Iff (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i (Finsupp.splitSupport.{u3, u2, u1} ι M (fun (i : ι) => αs i) _inst_1 l)) (Ne.{max (succ u2) (succ u1)} (Finsupp.{u1, u2} (αs i) M _inst_1) (Finsupp.split.{u3, u2, u1} ι M (fun (i : ι) => αs i) _inst_1 l i) (OfNat.ofNat.{max u2 u1} (Finsupp.{u1, u2} (αs i) M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u1, u2} (αs i) M _inst_1) (Finsupp.zero.{u1, u2} (αs i) M _inst_1))))
-Case conversion may be inaccurate. Consider using '#align finsupp.mem_split_support_iff_nonzero Finsupp.mem_splitSupport_iff_nonzeroₓ'. -/
 theorem mem_splitSupport_iff_nonzero (i : ι) : i ∈ splitSupport l ↔ split l i ≠ 0 :=
   by
   rw [split_support, mem_image, Ne.def, ← support_eq_empty, ← Ne.def, ←
@@ -2852,24 +1835,12 @@ def splitComp [Zero N] (g : ∀ i, (αs i →₀ M) → N) (hg : ∀ i x, x = 0
 #align finsupp.split_comp Finsupp.splitComp
 -/
 
-/- warning: finsupp.sigma_support -> Finsupp.sigma_support is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {M : Type.{u2}} {αs : ι -> Type.{u3}} [_inst_1 : Zero.{u2} M] (l : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) M _inst_1), Eq.{succ (max u1 u3)} (Finset.{max u1 u3} (Sigma.{u1, u3} ι (fun (i : ι) => αs i))) (Finsupp.support.{max u1 u3, u2} (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) M _inst_1 l) (Finset.sigma.{u1, u3} ι (fun (i : ι) => αs i) (Finsupp.splitSupport.{u1, u2, u3} ι M (fun (i : ι) => αs i) _inst_1 l) (fun (i : ι) => Finsupp.support.{u3, u2} (αs i) M _inst_1 (Finsupp.split.{u1, u2, u3} ι M (fun (i : ι) => αs i) _inst_1 l i)))
-but is expected to have type
-  forall {ι : Type.{u3}} {M : Type.{u1}} {αs : ι -> Type.{u2}} [_inst_1 : Zero.{u1} M] (l : Finsupp.{max u2 u3, u1} (Sigma.{u3, u2} ι (fun (i : ι) => αs i)) M _inst_1), Eq.{max (succ u3) (succ u2)} (Finset.{max u3 u2} (Sigma.{u3, u2} ι (fun (i : ι) => αs i))) (Finsupp.support.{max u3 u2, u1} (Sigma.{u3, u2} ι (fun (i : ι) => αs i)) M _inst_1 l) (Finset.sigma.{u3, u2} ι (fun (i : ι) => αs i) (Finsupp.splitSupport.{u3, u1, u2} ι M (fun (i : ι) => αs i) _inst_1 l) (fun (i : ι) => Finsupp.support.{u2, u1} (αs i) M _inst_1 (Finsupp.split.{u3, u1, u2} ι M (fun (i : ι) => αs i) _inst_1 l i)))
-Case conversion may be inaccurate. Consider using '#align finsupp.sigma_support Finsupp.sigma_supportₓ'. -/
 theorem sigma_support : l.support = l.splitSupport.Sigma fun i => (l.split i).support := by
   simp only [Finset.ext_iff, split_support, split, comap_domain, mem_image, mem_preimage,
       Sigma.forall, mem_sigma] <;>
     tauto
 #align finsupp.sigma_support Finsupp.sigma_support
 
-/- warning: finsupp.sigma_sum -> Finsupp.sigma_sum is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {αs : ι -> Type.{u4}} [_inst_1 : Zero.{u2} M] (l : Finsupp.{max u1 u4, u2} (Sigma.{u1, u4} ι (fun (i : ι) => αs i)) M _inst_1) [_inst_2 : AddCommMonoid.{u3} N] (f : (Sigma.{u1, u4} ι (fun (i : ι) => αs i)) -> M -> N), Eq.{succ u3} N (Finsupp.sum.{max u1 u4, u2, u3} (Sigma.{u1, u4} ι (fun (i : ι) => αs i)) M N _inst_1 _inst_2 l f) (Finset.sum.{u3, u1} N ι _inst_2 (Finsupp.splitSupport.{u1, u2, u4} ι M (fun (i : ι) => αs i) _inst_1 l) (fun (i : ι) => Finsupp.sum.{u4, u2, u3} (αs i) M N _inst_1 _inst_2 (Finsupp.split.{u1, u2, u4} ι M (fun (i : ι) => αs i) _inst_1 l i) (fun (a : αs i) (b : M) => f (Sigma.mk.{u1, u4} ι (fun (i : ι) => αs i) i a) b)))
-but is expected to have type
-  forall {ι : Type.{u3}} {M : Type.{u1}} {N : Type.{u4}} {αs : ι -> Type.{u2}} [_inst_1 : Zero.{u1} M] (l : Finsupp.{max u2 u3, u1} (Sigma.{u3, u2} ι (fun (i : ι) => αs i)) M _inst_1) [_inst_2 : AddCommMonoid.{u4} N] (f : (Sigma.{u3, u2} ι (fun (i : ι) => αs i)) -> M -> N), Eq.{succ u4} N (Finsupp.sum.{max u3 u2, u1, u4} (Sigma.{u3, u2} ι (fun (i : ι) => αs i)) M N _inst_1 _inst_2 l f) (Finset.sum.{u4, u3} N ι _inst_2 (Finsupp.splitSupport.{u3, u1, u2} ι M (fun (i : ι) => αs i) _inst_1 l) (fun (i : ι) => Finsupp.sum.{u2, u1, u4} (αs i) M N _inst_1 _inst_2 (Finsupp.split.{u3, u1, u2} ι M (fun (i : ι) => αs i) _inst_1 l i) (fun (a : αs i) (b : M) => f (Sigma.mk.{u3, u2} ι (fun (i : ι) => αs i) i a) b)))
-Case conversion may be inaccurate. Consider using '#align finsupp.sigma_sum Finsupp.sigma_sumₓ'. -/
 theorem sigma_sum [AddCommMonoid N] (f : (Σi : ι, αs i) → M → N) :
     l.Sum f = ∑ i in splitSupport l, (split l i).Sum fun (a : αs i) b => f ⟨i, a⟩ b := by
   simp only [Sum, sigma_support, sum_sigma, split_apply]
@@ -2901,12 +1872,6 @@ theorem sigmaFinsuppEquivPiFinsupp_apply (f : (Σj, ιs j) →₀ α) (j i) :
 #align finsupp.sigma_finsupp_equiv_pi_finsupp_apply Finsupp.sigmaFinsuppEquivPiFinsupp_apply
 -/
 
-/- warning: finsupp.sigma_finsupp_add_equiv_pi_finsupp -> Finsupp.sigmaFinsuppAddEquivPiFinsupp is a dubious translation:
-lean 3 declaration is
-  forall {η : Type.{u1}} [_inst_2 : Fintype.{u1} η] {α : Type.{u2}} {ιs : η -> Type.{u3}} [_inst_4 : AddMonoid.{u2} α], AddEquiv.{max (max u1 u3) u2, max u1 u3 u2} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (Finsupp.add.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (i : η) => Finsupp.add.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))
-but is expected to have type
-  forall {η : Type.{u1}} [_inst_2 : Fintype.{u1} η] {α : Type.{u2}} {ιs : η -> Type.{u3}} [_inst_4 : AddMonoid.{u2} α], AddEquiv.{max u2 u3 u1, max (max u1 u2) u3} (Finsupp.{max u3 u1, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u2} α _inst_4)) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddMonoid.toZero.{u2} α _inst_4)) (Finsupp.add.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u2 u3} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddMonoid.toZero.{u2} α _inst_4)) (fun (i : η) => Finsupp.add.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))
-Case conversion may be inaccurate. Consider using '#align finsupp.sigma_finsupp_add_equiv_pi_finsupp Finsupp.sigmaFinsuppAddEquivPiFinsuppₓ'. -/
 /-- On a `fintype η`, `finsupp.split` is an additive equivalence between
 `(Σ (j : η), ιs j) →₀ α` and `Π j, (ιs j →₀ α)`.
 
@@ -2917,9 +1882,6 @@ noncomputable def sigmaFinsuppAddEquivPiFinsupp {α : Type _} {ιs : η → Type
   { sigmaFinsuppEquivPiFinsupp with map_add' := fun f g => by ext; simp }
 #align finsupp.sigma_finsupp_add_equiv_pi_finsupp Finsupp.sigmaFinsuppAddEquivPiFinsupp
 
-/- warning: finsupp.sigma_finsupp_add_equiv_pi_finsupp_apply -> Finsupp.sigmaFinsuppAddEquivPiFinsupp_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align finsupp.sigma_finsupp_add_equiv_pi_finsupp_apply Finsupp.sigmaFinsuppAddEquivPiFinsupp_applyₓ'. -/
 @[simp]
 theorem sigmaFinsuppAddEquivPiFinsupp_apply {α : Type _} {ιs : η → Type _} [AddMonoid α]
     (f : (Σj, ιs j) →₀ α) (j i) : sigmaFinsuppAddEquivPiFinsupp f j i = f ⟨j, i⟩ :=
Diff
@@ -96,9 +96,7 @@ but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {c : Prod.{u2, u1} α M} {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Membership.mem.{max u2 u1, max u2 u1} (Prod.{u2, u1} α M) (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finset.instMembershipFinset.{max u2 u1} (Prod.{u2, u1} α M)) c (Finsupp.graph.{u2, u1} α M _inst_1 f)) (And (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) (Prod.fst.{u2, u1} α M c)) (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 (Prod.fst.{u2, u1} α M c)) (Prod.snd.{u2, u1} α M c)) (Ne.{succ u1} M (Prod.snd.{u2, u1} α M c) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))))
 Case conversion may be inaccurate. Consider using '#align finsupp.mem_graph_iff Finsupp.mem_graph_iffₓ'. -/
 @[simp]
-theorem mem_graph_iff {c : α × M} {f : α →₀ M} : c ∈ f.graph ↔ f c.1 = c.2 ∧ c.2 ≠ 0 :=
-  by
-  cases c
+theorem mem_graph_iff {c : α × M} {f : α →₀ M} : c ∈ f.graph ↔ f c.1 = c.2 ∧ c.2 ≠ 0 := by cases c;
   exact mk_mem_graph_iff
 #align finsupp.mem_graph_iff Finsupp.mem_graph_iff
 
@@ -739,10 +737,8 @@ theorem mapDomain_apply {f : α → β} (hf : Function.Injective f) (x : α →
     mapDomain f x (f a) = x a :=
   by
   rw [map_domain, sum_apply, Sum, Finset.sum_eq_single a, single_eq_same]
-  · intro b _ hba
-    exact single_eq_of_ne (hf.ne hba)
-  · intro h
-    rw [not_mem_support_iff.1 h, single_zero, zero_apply]
+  · intro b _ hba; exact single_eq_of_ne (hf.ne hba)
+  · intro h; rw [not_mem_support_iff.1 h, single_zero, zero_apply]
 #align finsupp.map_domain_apply Finsupp.mapDomain_apply
 
 /- warning: finsupp.map_domain_notin_range -> Finsupp.mapDomain_notin_range is a dubious translation:
@@ -778,10 +774,8 @@ theorem mapDomain_comp {f : α → β} {g : β → γ} :
     mapDomain (g ∘ f) v = mapDomain g (mapDomain f v) :=
   by
   refine' ((sum_sum_index _ _).trans _).symm
-  · intro
-    exact single_zero _
-  · intro
-    exact single_add _
+  · intro ; exact single_zero _
+  · intro ; exact single_add _
   refine' sum_congr fun _ _ => sum_single_index _
   · exact single_zero _
 #align finsupp.map_domain_comp Finsupp.mapDomain_comp
@@ -1037,8 +1031,7 @@ Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_inj
 theorem mapDomain_injective {f : α → β} (hf : Function.Injective f) :
     Function.Injective (mapDomain f : (α →₀ M) → β →₀ M) :=
   by
-  intro v₁ v₂ eq
-  ext a
+  intro v₁ v₂ eq; ext a
   have : map_domain f v₁ (f a) = map_domain f v₂ (f a) := by rw [Eq]
   rwa [map_domain_apply hf, map_domain_apply hf] at this
 #align finsupp.map_domain_injective Finsupp.mapDomain_injective
@@ -1060,9 +1053,7 @@ Case conversion may be inaccurate. Consider using '#align finsupp.map_domain.add
 theorem mapDomain.addMonoidHom_comp_mapRange [AddCommMonoid N] (f : α → β) (g : M →+ N) :
     (mapDomain.addMonoidHom f).comp (mapRange.addMonoidHom g) =
       (mapRange.addMonoidHom g).comp (mapDomain.addMonoidHom f) :=
-  by
-  ext
-  simp
+  by ext; simp
 #align finsupp.map_domain.add_monoid_hom_comp_map_range Finsupp.mapDomain.addMonoidHom_comp_mapRange
 
 /- warning: finsupp.map_domain_map_range -> Finsupp.mapDomain_mapRange is a dubious translation:
@@ -1208,10 +1199,7 @@ Case conversion may be inaccurate. Consider using '#align finsupp.comap_domain_z
 @[simp]
 theorem comapDomain_zero (f : α → β)
     (hif : Set.InjOn f (f ⁻¹' ↑(0 : β →₀ M).support) := Set.injOn_empty _) :
-    comapDomain f (0 : β →₀ M) hif = (0 : α →₀ M) :=
-  by
-  ext
-  rfl
+    comapDomain f (0 : β →₀ M) hif = (0 : α →₀ M) := by ext; rfl
 #align finsupp.comap_domain_zero Finsupp.comapDomain_zero
 
 /- warning: finsupp.comap_domain_single -> Finsupp.comapDomain_single is a dubious translation:
@@ -1247,9 +1235,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align finsupp.comap_domain_add Finsupp.comapDomain_addₓ'. -/
 theorem comapDomain_add (v₁ v₂ : β →₀ M) (hv₁ : Set.InjOn f (f ⁻¹' ↑v₁.support))
     (hv₂ : Set.InjOn f (f ⁻¹' ↑v₂.support)) (hv₁₂ : Set.InjOn f (f ⁻¹' ↑(v₁ + v₂).support)) :
-    comapDomain f (v₁ + v₂) hv₁₂ = comapDomain f v₁ hv₁ + comapDomain f v₂ hv₂ :=
-  by
-  ext
+    comapDomain f (v₁ + v₂) hv₁₂ = comapDomain f v₁ hv₁ + comapDomain f v₂ hv₂ := by ext;
   simp only [comap_domain_apply, coe_add, Pi.add_apply]
 #align finsupp.comap_domain_add Finsupp.comapDomain_add
 
@@ -1328,10 +1314,7 @@ theorem some_apply [Zero M] (f : Option α →₀ M) (a : α) : f.some a = f (Op
 
 #print Finsupp.some_zero /-
 @[simp]
-theorem some_zero [Zero M] : (0 : Option α →₀ M).some = 0 :=
-  by
-  ext
-  simp
+theorem some_zero [Zero M] : (0 : Option α →₀ M).some = 0 := by ext; simp
 #align finsupp.some_zero Finsupp.some_zero
 -/
 
@@ -1342,18 +1325,13 @@ but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] (f : Finsupp.{u1, u2} (Option.{u1} α) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (g : Finsupp.{u1, u2} (Option.{u1} α) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.some.{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} (Option.{u1} α) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u1, u2} (Option.{u1} α) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u1, u2} (Option.{u1} α) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} (Option.{u1} α) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u2} (Option.{u1} α) M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) f g)) (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.some.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) f) (Finsupp.some.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) g))
 Case conversion may be inaccurate. Consider using '#align finsupp.some_add Finsupp.some_addₓ'. -/
 @[simp]
-theorem some_add [AddCommMonoid M] (f g : Option α →₀ M) : (f + g).some = f.some + g.some :=
-  by
-  ext
+theorem some_add [AddCommMonoid M] (f g : Option α →₀ M) : (f + g).some = f.some + g.some := by ext;
   simp
 #align finsupp.some_add Finsupp.some_add
 
 #print Finsupp.some_single_none /-
 @[simp]
-theorem some_single_none [Zero M] (m : M) : (single none m : Option α →₀ M).some = 0 :=
-  by
-  ext
-  simp
+theorem some_single_none [Zero M] (m : M) : (single none m : Option α →₀ M).some = 0 := by ext; simp
 #align finsupp.some_single_none Finsupp.some_single_none
 -/
 
@@ -1424,10 +1402,7 @@ def filter (p : α → Prop) (f : α →₀ M) : α →₀ M
   support :=
     haveI := Classical.decPred p
     f.support.filter fun a => p a
-  mem_support_toFun a := by
-    split_ifs <;>
-      · simp only [h, mem_filter, mem_support_iff]
-        tauto
+  mem_support_toFun a := by split_ifs <;> · simp only [h, mem_filter, mem_support_iff]; tauto
 #align finsupp.filter Finsupp.filter
 -/
 
@@ -2004,10 +1979,8 @@ theorem curry_apply (f : α × β →₀ M) (x : α) (y : β) : f.curry x y = f
       simp [single_apply, ite_apply, Prod.ext_iff, ite_and]
       split_ifs <;> simp [single_apply, *]
     rw [Finsupp.curry, sum_apply, sum_apply, Finsupp.sum, Finset.sum_eq_single, this, if_pos rfl]
-    · intro b hb b_ne
-      rw [this b, if_neg b_ne]
-    · intro hxy
-      rw [this (x, y), if_pos rfl, not_mem_support_iff.mp hxy]
+    · intro b hb b_ne; rw [this b, if_neg b_ne]
+    · intro hxy; rw [this (x, y), if_pos rfl, not_mem_support_iff.mp hxy]
 #align finsupp.curry_apply Finsupp.curry_apply
 
 /- warning: finsupp.sum_curry_index -> Finsupp.sum_curry_index is a dubious translation:
@@ -2060,10 +2033,8 @@ def finsuppProdEquiv : (α × β →₀ M) ≃ (α →₀ β →₀ M)
   left_inv f := by
     rw [Finsupp.uncurry, sum_curry_index]
     · simp_rw [Prod.mk.eta, sum_single]
-    · intros
-      apply single_zero
-    · intros
-      apply single_add
+    · intros ; apply single_zero
+    · intros ; apply single_add
   right_inv f := by
     simp only [Finsupp.curry, Finsupp.uncurry, sum_sum_index, sum_zero_index, sum_add_index,
       sum_single_index, single_zero, single_add, eq_self_iff_true, forall_true_iff,
@@ -2178,9 +2149,7 @@ def sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] : (Sum α β →₀
     ⟨f.comapDomain Sum.inl (Sum.inl_injective.InjOn _),
       f.comapDomain Sum.inr (Sum.inr_injective.InjOn _)⟩
   invFun fg := sumElim fg.1 fg.2
-  left_inv f := by
-    ext ab
-    cases' ab with a b <;> simp
+  left_inv f := by ext ab; cases' ab with a b <;> simp
   right_inv fg := by ext <;> simp
 #align finsupp.sum_finsupp_equiv_prod_finsupp Finsupp.sumFinsuppEquivProdFinsupp
 -/
@@ -2243,8 +2212,7 @@ This is the `finsupp` version of `equiv.sum_arrow_equiv_prod_arrow`. -/
 @[simps apply symm_apply]
 def sumFinsuppAddEquivProdFinsupp {α β : Type _} : (Sum α β →₀ M) ≃+ (α →₀ M) × (β →₀ M) :=
   { sumFinsuppEquivProdFinsupp with
-    map_add' := by
-      intros
+    map_add' := by intros ;
       ext <;>
         simp only [Equiv.toFun_as_coe, Prod.fst_add, Prod.snd_add, add_apply,
           snd_sum_finsupp_equiv_prod_finsupp, fst_sum_finsupp_equiv_prod_finsupp] }
@@ -2369,14 +2337,8 @@ Case conversion may be inaccurate. Consider using '#align finsupp.comap_distrib_
 /-- `finsupp.comap_has_smul` is distributive -/
 def comapDistribMulAction : DistribMulAction G (α →₀ M)
     where
-  smul_zero g := by
-    ext
-    dsimp [(· • ·)]
-    simp
-  smul_add g f f' := by
-    ext
-    dsimp [(· • ·)]
-    simp [map_domain_add]
+  smul_zero g := by ext; dsimp [(· • ·)]; simp
+  smul_add g f f' := by ext; dsimp [(· • ·)]; simp [map_domain_add]
 #align finsupp.comap_distrib_mul_action Finsupp.comapDistribMulAction
 
 end
@@ -2409,9 +2371,7 @@ section
 instance [Zero M] [SMulZeroClass R M] : SMulZeroClass R (α →₀ M)
     where
   smul a v := v.mapRange ((· • ·) a) (smul_zero _)
-  smul_zero a := by
-    ext
-    apply smul_zero
+  smul_zero a := by ext; apply smul_zero
 
 /-!
 Throughout this section, some `monoid` and `semiring` arguments are specified with `{}` instead of
@@ -2494,9 +2454,7 @@ but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : SMulZeroClass.{u2, u3} R M (AddMonoid.toZero.{u3} M _inst_1)] {b : R} {g : Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finsupp.support.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (instHSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.smulZeroClass.{u1, u3, u2} α M R (AddMonoid.toZero.{u3} M _inst_1) _inst_2))) b g)) (Finsupp.support.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1) g)
 Case conversion may be inaccurate. Consider using '#align finsupp.support_smul Finsupp.support_smulₓ'. -/
 theorem support_smul [AddMonoid M] [SMulZeroClass R M] {b : R} {g : α →₀ M} :
-    (b • g).support ⊆ g.support := fun a =>
-  by
-  simp only [smul_apply, mem_support_iff, Ne.def]
+    (b • g).support ⊆ g.support := fun a => by simp only [smul_apply, mem_support_iff, Ne.def];
   exact mt fun h => h.symm ▸ smul_zero _
 #align finsupp.support_smul Finsupp.support_smul
 
@@ -2599,10 +2557,7 @@ theorem comapDomain_smul [AddMonoid M] [Monoid R] [DistribMulAction R M] {f : α
     (v : β →₀ M) (hfv : Set.InjOn f (f ⁻¹' ↑v.support))
     (hfrv : Set.InjOn f (f ⁻¹' ↑(r • v).support) :=
       hfv.mono <| Set.preimage_mono <| Finset.coe_subset.mpr support_smul) :
-    comapDomain f (r • v) hfrv = r • comapDomain f v hfv :=
-  by
-  ext
-  rfl
+    comapDomain f (r • v) hfrv = r • comapDomain f v hfv := by ext; rfl
 #align finsupp.comap_domain_smul Finsupp.comapDomain_smul
 
 /- warning: finsupp.comap_domain_smul_of_injective -> Finsupp.comapDomain_smul_of_injective is a dubious translation:
@@ -2933,12 +2888,8 @@ noncomputable def sigmaFinsuppEquivPiFinsupp : ((Σj, ιs j) →₀ α) ≃ ∀
   invFun f :=
     onFinset (Finset.univ.Sigma fun j => (f j).support) (fun ji => f ji.1 ji.2) fun g hg =>
       Finset.mem_sigma.mpr ⟨Finset.mem_univ _, mem_support_iff.mpr hg⟩
-  left_inv f := by
-    ext
-    simp [split]
-  right_inv f := by
-    ext
-    simp [split]
+  left_inv f := by ext; simp [split]
+  right_inv f := by ext; simp [split]
 #align finsupp.sigma_finsupp_equiv_pi_finsupp Finsupp.sigmaFinsuppEquivPiFinsupp
 -/
 
@@ -2963,10 +2914,7 @@ This is the `add_equiv` version of `finsupp.sigma_finsupp_equiv_pi_finsupp`.
 -/
 noncomputable def sigmaFinsuppAddEquivPiFinsupp {α : Type _} {ιs : η → Type _} [AddMonoid α] :
     ((Σj, ιs j) →₀ α) ≃+ ∀ j, ιs j →₀ α :=
-  { sigmaFinsuppEquivPiFinsupp with
-    map_add' := fun f g => by
-      ext
-      simp }
+  { sigmaFinsuppEquivPiFinsupp with map_add' := fun f g => by ext; simp }
 #align finsupp.sigma_finsupp_add_equiv_pi_finsupp Finsupp.sigmaFinsuppAddEquivPiFinsupp
 
 /- warning: finsupp.sigma_finsupp_add_equiv_pi_finsupp_apply -> Finsupp.sigmaFinsuppAddEquivPiFinsupp_apply is a dubious translation:
Diff
@@ -236,10 +236,7 @@ theorem mapRange.equiv_refl : mapRange.equiv (Equiv.refl M) rfl rfl = Equiv.refl
 #align finsupp.map_range.equiv_refl Finsupp.mapRange.equiv_refl
 
 /- warning: finsupp.map_range.equiv_trans -> Finsupp.mapRange.equiv_trans 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 : Equiv.{succ u2, succ u3} M N) (hf : Eq.{succ u3} N (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) 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)))) (hf' : Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (f₂ : Equiv.{succ u3, succ u4} N P) (hf₂ : Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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)))) (hf₂' : Eq.{succ u3} N (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))), Eq.{max 1 (max (max (succ u1) (succ u2)) (succ u1) (succ u4)) (max (succ u1) (succ u4)) (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u4)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u4} α P _inst_3)) (Finsupp.mapRange.equiv.{u1, u2, u4} α M P _inst_1 _inst_3 (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂) (Eq.mpr.{0} (Eq.{succ u4} P (coeFn.{max 1 (max (succ u2) (succ u4)) (succ u4) (succ u2), max (succ u2) (succ u4)} (Equiv.{succ u2, succ u4} M P) (fun (_x : Equiv.{succ u2, succ u4} M P) => M -> P) (Equiv.hasCoeToFun.{succ u2, succ u4} M P) (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u2) (succ u4)) (succ u4) (succ u2), max (succ u2) (succ u4)} (Equiv.{succ u2, succ u4} M P) (fun (_x : Equiv.{succ u2, succ u4} M P) => M -> P) (Equiv.hasCoeToFun.{succ u2, succ u4} M P) (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (Eq.ndrec.{0, succ u4} P (coeFn.{max 1 (max (succ u2) (succ u4)) (succ u4) (succ u2), max (succ u2) (succ u4)} (Equiv.{succ u2, succ u4} M P) (fun (_x : Equiv.{succ u2, succ u4} M P) => M -> P) (Equiv.hasCoeToFun.{succ u2, succ u4} M P) (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (fun (_a : P) => Eq.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u2) (succ u4)) (succ u4) (succ u2), max (succ u2) (succ u4)} (Equiv.{succ u2, succ u4} M P) (fun (_x : Equiv.{succ u2, succ u4} M P) => M -> P) (Equiv.hasCoeToFun.{succ u2, succ u4} M P) (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (Eq.{succ u4} P _a (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (rfl.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u2) (succ u4)) (succ u4) (succ u2), max (succ u2) (succ u4)} (Equiv.{succ u2, succ u4} M P) (fun (_x : Equiv.{succ u2, succ u4} M P) => M -> P) (Equiv.hasCoeToFun.{succ u2, succ u4} M P) (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (Equiv.trans_apply.{succ u2, succ u3, succ u4} M N P f f₂ (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))))) (Eq.mpr.{0} (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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)))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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))))) (Eq.ndrec.{0, succ u3} N (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (fun (_a : N) => Eq.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ _a) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (rfl.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2))) hf)) (Eq.mpr.{0} (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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)))) (Eq.{succ u4} P (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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)))) (Eq.{succ u4} P (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (Eq.ndrec.{0, succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (fun (_a : P) => Eq.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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)))) (Eq.{succ u4} P _a (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (rfl.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))) hf₂)) (rfl.{succ u4} P (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))))) (Eq.mpr.{0} (Eq.{succ u2} M (coeFn.{max 1 (max (succ u4) (succ u2)) (succ u2) (succ u4), max (succ u4) (succ u2)} (Equiv.{succ u4, succ u2} P M) (fun (_x : Equiv.{succ u4, succ u2} P M) => P -> M) (Equiv.hasCoeToFun.{succ u4, succ u2} P M) (Equiv.symm.{succ u2, succ u4} M P (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂)) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u4) (succ u2)) (succ u2) (succ u4), max (succ u4) (succ u2)} (Equiv.{succ u4, succ u2} P M) (fun (_x : Equiv.{succ u4, succ u2} P M) => P -> M) (Equiv.hasCoeToFun.{succ u4, succ u2} P M) (Equiv.symm.{succ u2, succ u4} M P (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂)) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (Eq.ndrec.{0, succ u2} M (coeFn.{max 1 (max (succ u4) (succ u2)) (succ u2) (succ u4), max (succ u4) (succ u2)} (Equiv.{succ u4, succ u2} P M) (fun (_x : Equiv.{succ u4, succ u2} P M) => P -> M) (Equiv.hasCoeToFun.{succ u4, succ u2} P M) (Equiv.symm.{succ u2, succ u4} M P (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂)) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (fun (_a : M) => Eq.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u4) (succ u2)) (succ u2) (succ u4), max (succ u4) (succ u2)} (Equiv.{succ u4, succ u2} P M) (fun (_x : Equiv.{succ u4, succ u2} P M) => P -> M) (Equiv.hasCoeToFun.{succ u4, succ u2} P M) (Equiv.symm.{succ u2, succ u4} M P (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂)) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M _a (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (rfl.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u4) (succ u2)) (succ u2) (succ u4), max (succ u4) (succ u2)} (Equiv.{succ u4, succ u2} P M) (fun (_x : Equiv.{succ u4, succ u2} P M) => P -> M) (Equiv.hasCoeToFun.{succ u4, succ u2} P M) (Equiv.symm.{succ u2, succ u4} M P (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂)) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (Equiv.symm_trans_apply.{succ u2, succ u3, succ u4} M N P f f₂ (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))))) (Eq.mpr.{0} (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (Eq.ndrec.{0, succ u3} N (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (fun (_a : N) => Eq.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) _a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (rfl.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (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))) hf₂')) (Eq.mpr.{0} (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (Eq.ndrec.{0, succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (fun (_a : M) => Eq.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M _a (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (rfl.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))) hf')) (rfl.{succ u2} M (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))))))) (Equiv.trans.{max (succ u1) (succ u2), max (succ u1) (succ u3), max (succ u1) (succ u4)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u3} α N _inst_2) (Finsupp.{u1, u4} α P _inst_3) (Finsupp.mapRange.equiv.{u1, u2, u3} α M N _inst_1 _inst_2 f hf hf') (Finsupp.mapRange.equiv.{u1, u3, u4} α N P _inst_2 _inst_3 f₂ hf₂ hf₂'))
-but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u4}} {N : Type.{u3}} {P : Type.{u2}} [_inst_1 : Zero.{u4} M] [_inst_2 : Zero.{u3} N] [_inst_3 : Zero.{u2} P] (f : Equiv.{succ u4, succ u3} M N) (hf : Eq.{succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (hf' : Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1))) (f₂ : Equiv.{succ u3, succ u2} N P) (hf₂ : Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3))) (hf₂' : Eq.{succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))), Eq.{max (max (succ u1) (succ u4)) (succ u2)} (Equiv.{max (succ u4) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u1, u4} α M _inst_1) (Finsupp.{u1, u2} α P _inst_3)) (Finsupp.mapRange.equiv.{u1, u4, u2} α M P _inst_1 _inst_3 (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (Eq.mpr.{0} (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (id.{0} (Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.ndrec.{0, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) => Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _a (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.refl.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (Equiv.trans_apply.{succ u4, succ u3, succ u2} M N P f f₂ (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))))) (Eq.mpr.{0} (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (id.{0} (Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.ndrec.{0, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) => Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ _a) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.refl.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2)) hf)) (Eq.mpr.{0} (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (id.{0} (Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.ndrec.{0, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) => Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _a (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.refl.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)) hf₂)) (Eq.refl.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)))))) (Eq.mpr.{0} (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (id.{0} (Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.ndrec.{0, succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) => Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _a (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.refl.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (Equiv.symm_trans_apply.{succ u4, succ u3, succ u2} M N P f f₂ (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))))) (Eq.mpr.{0} (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (id.{0} (Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.ndrec.{0, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) => Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) _a) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.refl.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2)) hf₂')) (Eq.mpr.{0} (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1)) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (id.{0} (Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1)) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.ndrec.{0, succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) => Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _a (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.refl.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1)) hf')) (Eq.refl.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1))))))) (Equiv.trans.{max (succ u4) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u1, u4} α M _inst_1) (Finsupp.{u1, u3} α N _inst_2) (Finsupp.{u1, u2} α P _inst_3) (Finsupp.mapRange.equiv.{u1, u4, u3} α M N _inst_1 _inst_2 f hf hf') (Finsupp.mapRange.equiv.{u1, u3, u2} α N P _inst_2 _inst_3 f₂ hf₂ hf₂'))
+<too large>
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range.equiv_trans Finsupp.mapRange.equiv_transₓ'. -/
 theorem mapRange.equiv_trans (f : M ≃ N) (hf : f 0 = 0) (hf') (f₂ : N ≃ P) (hf₂ : f₂ 0 = 0) (hf₂') :
     (mapRange.equiv (f.trans f₂) (by rw [Equiv.trans_apply, hf, hf₂])
@@ -2254,10 +2251,7 @@ def sumFinsuppAddEquivProdFinsupp {α β : Type _} : (Sum α β →₀ M) ≃+ (
 #align finsupp.sum_finsupp_add_equiv_prod_finsupp Finsupp.sumFinsuppAddEquivProdFinsupp
 
 /- warning: finsupp.fst_sum_finsupp_add_equiv_prod_finsupp -> Finsupp.fst_sumFinsuppAddEquivProdFinsupp is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (f : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (x : α), Eq.{succ u1} M (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => α -> M) (Finsupp.coeFun.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.fst.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1)), max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1))} (AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (fun (_x : AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) => (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) -> (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))) (AddEquiv.hasCoeToFun.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β) f)) x) (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.coeFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) f (Sum.inl.{u2, u3} α β x))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.fst.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) _x) (EmbeddingLike.toFunLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (EquivLike.toEmbeddingLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddEquivClass.toEquivLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β) f)) x) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) f (Sum.inl.{u3, u2} α β x))
+<too large>
 Case conversion may be inaccurate. Consider using '#align finsupp.fst_sum_finsupp_add_equiv_prod_finsupp Finsupp.fst_sumFinsuppAddEquivProdFinsuppₓ'. -/
 theorem fst_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀ M) (x : α) :
     (sumFinsuppAddEquivProdFinsupp f).1 x = f (Sum.inl x) :=
@@ -2265,10 +2259,7 @@ theorem fst_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀
 #align finsupp.fst_sum_finsupp_add_equiv_prod_finsupp Finsupp.fst_sumFinsuppAddEquivProdFinsupp
 
 /- warning: finsupp.snd_sum_finsupp_add_equiv_prod_finsupp -> Finsupp.snd_sumFinsuppAddEquivProdFinsupp is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (f : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (y : β), Eq.{succ u1} M (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => β -> M) (Finsupp.coeFun.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.snd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1)), max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1))} (AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (fun (_x : AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) => (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) -> (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))) (AddEquiv.hasCoeToFun.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β) f)) y) (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.coeFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) f (Sum.inr.{u2, u3} α β y))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.snd.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) _x) (EmbeddingLike.toFunLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (EquivLike.toEmbeddingLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddEquivClass.toEquivLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β) f)) y) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) f (Sum.inr.{u3, u2} α β y))
+<too large>
 Case conversion may be inaccurate. Consider using '#align finsupp.snd_sum_finsupp_add_equiv_prod_finsupp Finsupp.snd_sumFinsuppAddEquivProdFinsuppₓ'. -/
 theorem snd_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀ M) (y : β) :
     (sumFinsuppAddEquivProdFinsupp f).2 y = f (Sum.inr y) :=
@@ -2276,10 +2267,7 @@ theorem snd_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀
 #align finsupp.snd_sum_finsupp_add_equiv_prod_finsupp Finsupp.snd_sumFinsuppAddEquivProdFinsupp
 
 /- warning: finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inl -> Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inl is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (fg : Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (x : α), Eq.{succ u1} M (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.coeFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1)), max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1))} (AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) -> (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (AddEquiv.hasCoeToFun.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β)) fg) (Sum.inl.{u2, u3} α β x)) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => α -> M) (Finsupp.coeFun.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.fst.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) fg) x)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) _x) (EmbeddingLike.toFunLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (EquivLike.toEmbeddingLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddEquivClass.toEquivLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β)) fg) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.fst.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) fg) x)
+<too large>
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inl Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inlₓ'. -/
 theorem sumFinsuppAddEquivProdFinsupp_symm_inl {α β : Type _} (fg : (α →₀ M) × (β →₀ M)) (x : α) :
     (sumFinsuppAddEquivProdFinsupp.symm fg) (Sum.inl x) = fg.1 x :=
@@ -2287,10 +2275,7 @@ theorem sumFinsuppAddEquivProdFinsupp_symm_inl {α β : Type _} (fg : (α →₀
 #align finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inl Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inl
 
 /- warning: finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inr -> Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inr is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (fg : Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (y : β), Eq.{succ u1} M (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.coeFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1)), max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1))} (AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) -> (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (AddEquiv.hasCoeToFun.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β)) fg) (Sum.inr.{u2, u3} α β y)) (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => β -> M) (Finsupp.coeFun.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.snd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) fg) y)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) _x) (EmbeddingLike.toFunLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (EquivLike.toEmbeddingLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddEquivClass.toEquivLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β)) fg) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.snd.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) fg) y)
+<too large>
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inr Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inrₓ'. -/
 theorem sumFinsuppAddEquivProdFinsupp_symm_inr {α β : Type _} (fg : (α →₀ M) × (β →₀ M)) (y : β) :
     (sumFinsuppAddEquivProdFinsupp.symm fg) (Sum.inr y) = fg.2 y :=
@@ -2608,10 +2593,7 @@ theorem smul_single_one [Semiring R] (a : α) (b : R) : b • single a 1 = singl
 #align finsupp.smul_single_one Finsupp.smul_single_one
 
 /- warning: finsupp.comap_domain_smul -> Finsupp.comapDomain_smul is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {R : Type.{u4}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : Monoid.{u4} R] [_inst_3 : DistribMulAction.{u4, u3} R M _inst_2 _inst_1] {f : α -> β} (r : R) (v : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (hfv : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)))) (hfrv : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v))))) (Set.InjOn.mono.{u1, u2} α β (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)))) (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v))) f (Set.preimage_mono.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)) (Iff.mpr (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v))) (HasSubset.Subset.{u2} (Finset.{u2} β) (Finset.hasSubset.{u2} β) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)) (Finset.coe_subset.{u2} β (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)) (Finsupp.support_smul.{u2, u3, u4} β M R _inst_1 (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)) r v))) hfv)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) f (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v) hfrv) (SMul.smul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u1, u3, u4} α M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) f v hfv))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u4}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u4} M] [_inst_2 : Monoid.{u3} R] [_inst_3 : DistribMulAction.{u3, u4} R M _inst_2 _inst_1] {f : α -> β} (r : R) (v : Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (hfv : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)))) (hfrv : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v))))) (Set.InjOn.mono.{u2, u1} α β (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)))) (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v))) f (Set.preimage_mono.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v))) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)) (Iff.mpr (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v))) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v))) (HasSubset.Subset.{u2} (Finset.{u2} β) (Finset.instHasSubsetFinset.{u2} β) (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)) (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)) (Finset.coe_subset.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)) (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)) (Finsupp.support_smul.{u2, u3, u4} β M R _inst_1 (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3)) r v))) hfv)), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.comapDomain.{u1, u2, u4} α β M (AddMonoid.toZero.{u4} M _inst_1) f (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v) hfrv) (HSMul.hSMul.{u3, max u4 u1, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u1, u4, u3} α M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r (Finsupp.comapDomain.{u1, u2, u4} α β M (AddMonoid.toZero.{u4} M _inst_1) f v hfv))
+<too large>
 Case conversion may be inaccurate. Consider using '#align finsupp.comap_domain_smul Finsupp.comapDomain_smulₓ'. -/
 theorem comapDomain_smul [AddMonoid M] [Monoid R] [DistribMulAction R M] {f : α → β} (r : R)
     (v : β →₀ M) (hfv : Set.InjOn f (f ⁻¹' ↑v.support))
@@ -2700,10 +2682,7 @@ def DistribMulActionHom.single (a : α) : M →+[R] α →₀ M :=
 #align finsupp.distrib_mul_action_hom.single Finsupp.DistribMulActionHom.single
 
 /- warning: finsupp.distrib_mul_action_hom_ext -> Finsupp.distribMulActionHom_ext is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {R : Type.{u4}} [_inst_1 : Semiring.{u4} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : AddCommMonoid.{u3} N] [_inst_4 : DistribMulAction.{u4, u2} R M (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2)] [_inst_5 : DistribMulAction.{u4, u3} R N (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} N _inst_3)] {f : DistribMulActionHom.{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5} {g : DistribMulActionHom.{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5}, (forall (a : α) (m : M), Eq.{succ u3} N (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (DistribMulActionHom.{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5) (fun (_x : DistribMulActionHom.{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5) => (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) -> N) ([anonymous].{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5) f (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) a m)) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (DistribMulActionHom.{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5) (fun (_x : DistribMulActionHom.{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5) => (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) -> N) ([anonymous].{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5) g (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) a m))) -> (Eq.{max (succ (max u1 u2)) (succ u3)} (DistribMulActionHom.{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5) f g)
-but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u3}} {N : Type.{u1}} {R : Type.{u4}} [_inst_1 : Semiring.{u4} R] [_inst_2 : AddCommMonoid.{u3} M] [_inst_3 : AddCommMonoid.{u1} N] [_inst_4 : DistribMulAction.{u4, u3} R M (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2)] [_inst_5 : DistribMulAction.{u4, u1} R N (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} N _inst_3)] {f : DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5} {g : DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5}, (forall (a : α) (m : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) => N) (Finsupp.single.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) a m)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u2) (succ u3), succ u1} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (fun (_x : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) => N) _x) (SMulHomClass.toFunLike.{max (max u2 u3) u1, u4, max u2 u3, u1} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) N (SMulZeroClass.toSMul.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (AddMonoid.toZero.{max u2 u3} (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (DistribSMul.toSMulZeroClass.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (AddMonoid.toAddZeroClass.{max u2 u3} (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (DistribMulAction.toDistribSMul.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4)))) (SMulZeroClass.toSMul.{u4, u1} R N (AddMonoid.toZero.{u1} N (AddCommMonoid.toAddMonoid.{u1} N _inst_3)) (DistribSMul.toSMulZeroClass.{u4, u1} R N (AddMonoid.toAddZeroClass.{u1} N (AddCommMonoid.toAddMonoid.{u1} N _inst_3)) (DistribMulAction.toDistribSMul.{u4, u1} R N (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5))) (DistribMulActionHomClass.toSMulHomClass.{max (max u2 u3) u1, u4, max u2 u3, u1} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) N (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (AddCommMonoid.toAddMonoid.{u1} N _inst_3) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) _inst_5 (DistribMulActionHom.instDistribMulActionHomClassDistribMulActionHom.{u4, max u2 u3, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5))) f (Finsupp.single.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) a m)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u2) (succ u3), succ u1} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (fun (_x : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) => N) _x) (SMulHomClass.toFunLike.{max (max u2 u3) u1, u4, max u2 u3, u1} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) N (SMulZeroClass.toSMul.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (AddMonoid.toZero.{max u2 u3} (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (DistribSMul.toSMulZeroClass.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (AddMonoid.toAddZeroClass.{max u2 u3} (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (DistribMulAction.toDistribSMul.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4)))) (SMulZeroClass.toSMul.{u4, u1} R N (AddMonoid.toZero.{u1} N (AddCommMonoid.toAddMonoid.{u1} N _inst_3)) (DistribSMul.toSMulZeroClass.{u4, u1} R N (AddMonoid.toAddZeroClass.{u1} N (AddCommMonoid.toAddMonoid.{u1} N _inst_3)) (DistribMulAction.toDistribSMul.{u4, u1} R N (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5))) (DistribMulActionHomClass.toSMulHomClass.{max (max u2 u3) u1, u4, max u2 u3, u1} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) N (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (AddCommMonoid.toAddMonoid.{u1} N _inst_3) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) _inst_5 (DistribMulActionHom.instDistribMulActionHomClassDistribMulActionHom.{u4, max u2 u3, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5))) g (Finsupp.single.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) a m))) -> (Eq.{max (max (succ u2) (succ u3)) (succ u1)} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) f g)
+<too large>
 Case conversion may be inaccurate. Consider using '#align finsupp.distrib_mul_action_hom_ext Finsupp.distribMulActionHom_extₓ'. -/
 theorem distribMulActionHom_ext {f g : (α →₀ M) →+[R] N}
     (h : ∀ (a : α) (m : M), f (single a m) = g (single a m)) : f = g :=
@@ -2991,10 +2970,7 @@ noncomputable def sigmaFinsuppAddEquivPiFinsupp {α : Type _} {ιs : η → Type
 #align finsupp.sigma_finsupp_add_equiv_pi_finsupp Finsupp.sigmaFinsuppAddEquivPiFinsupp
 
 /- warning: finsupp.sigma_finsupp_add_equiv_pi_finsupp_apply -> Finsupp.sigmaFinsuppAddEquivPiFinsupp_apply is a dubious translation:
-lean 3 declaration is
-  forall {η : Type.{u1}} [_inst_2 : Fintype.{u1} η] {α : Type.{u2}} {ιs : η -> Type.{u3}} [_inst_4 : AddMonoid.{u2} α] (f : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (j : η) (i : ιs j), Eq.{succ u2} α (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (_x : Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) => (ιs j) -> α) (Finsupp.coeFun.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (coeFn.{max (succ (max (max u1 u3) u2)) (succ (max u1 u3 u2)), max (succ (max (max u1 u3) u2)) (succ (max u1 u3 u2))} (AddEquiv.{max (max u1 u3) u2, max u1 u3 u2} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (Finsupp.add.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (i : η) => Finsupp.add.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) (fun (_x : AddEquiv.{max (max u1 u3) u2, max u1 u3 u2} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (Finsupp.add.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (i : η) => Finsupp.add.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) => (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) -> (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) (AddEquiv.hasCoeToFun.{max (max u1 u3) u2, max u1 u3 u2} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (Finsupp.add.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (i : η) => Finsupp.add.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) (Finsupp.sigmaFinsuppAddEquivPiFinsupp.{u1, u2, u3} η _inst_2 α (fun (j : η) => ιs j) _inst_4) f j) i) (coeFn.{max (succ (max u1 u3)) (succ u2), max (succ (max u1 u3)) (succ u2)} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (_x : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) => (Sigma.{u1, u3} η (fun (j : η) => ιs j)) -> α) (Finsupp.coeFun.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) f (Sigma.mk.{u1, u3} η (fun (j : η) => ιs j) j i))
-but is expected to have type
-  forall {η : Type.{u1}} [_inst_2 : Fintype.{u1} η] {α : Type.{u3}} {ιs : η -> Type.{u2}} [_inst_4 : AddMonoid.{u3} α] (f : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (j : η) (i : ιs j), Eq.{succ u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : ιs j) => α) i) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (ιs j) (fun (_x : ιs j) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : ιs j) => α) _x) (Finsupp.funLike.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (FunLike.coe.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (_x : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) => forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) _x) (EmbeddingLike.toFunLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (EquivLike.toEmbeddingLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (AddEquivClass.toEquivLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4))) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4))))))) (Finsupp.sigmaFinsuppAddEquivPiFinsupp.{u1, u3, u2} η _inst_2 α (fun (j : η) => ιs j) _inst_4) f j) i) (FunLike.coe.{max (succ (max u1 u2)) (succ u3), succ (max u1 u2), succ u3} (Finsupp.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (Sigma.{u1, u2} η (fun (j : η) => ιs j)) (fun (_x : Sigma.{u1, u2} η (fun (j : η) => ιs j)) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sigma.{u1, u2} η (fun (j : η) => ιs j)) => α) _x) (Finsupp.funLike.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) f (Sigma.mk.{u1, u2} η (fun (j : η) => ιs j) j i))
+<too large>
 Case conversion may be inaccurate. Consider using '#align finsupp.sigma_finsupp_add_equiv_pi_finsupp_apply Finsupp.sigmaFinsuppAddEquivPiFinsupp_applyₓ'. -/
 @[simp]
 theorem sigmaFinsuppAddEquivPiFinsupp_apply {α : Type _} {ιs : η → Type _} [AddMonoid α]
Diff
@@ -2703,7 +2703,7 @@ def DistribMulActionHom.single (a : α) : M →+[R] α →₀ M :=
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {R : Type.{u4}} [_inst_1 : Semiring.{u4} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : AddCommMonoid.{u3} N] [_inst_4 : DistribMulAction.{u4, u2} R M (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2)] [_inst_5 : DistribMulAction.{u4, u3} R N (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} N _inst_3)] {f : DistribMulActionHom.{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5} {g : DistribMulActionHom.{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5}, (forall (a : α) (m : M), Eq.{succ u3} N (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (DistribMulActionHom.{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5) (fun (_x : DistribMulActionHom.{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5) => (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) -> N) ([anonymous].{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5) f (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) a m)) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (DistribMulActionHom.{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5) (fun (_x : DistribMulActionHom.{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5) => (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) -> N) ([anonymous].{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5) g (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) a m))) -> (Eq.{max (succ (max u1 u2)) (succ u3)} (DistribMulActionHom.{u4, max u1 u2, u3} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.addMonoid.{u1, u2} α M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Finsupp.distribMulAction.{u1, u2, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u2} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u3} N _inst_3) _inst_5) f g)
 but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u3}} {N : Type.{u1}} {R : Type.{u4}} [_inst_1 : Semiring.{u4} R] [_inst_2 : AddCommMonoid.{u3} M] [_inst_3 : AddCommMonoid.{u1} N] [_inst_4 : DistribMulAction.{u4, u3} R M (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2)] [_inst_5 : DistribMulAction.{u4, u1} R N (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} N _inst_3)] {f : DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5} {g : DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5}, (forall (a : α) (m : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) => N) (Finsupp.single.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) a m)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u2) (succ u3), succ u1} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (fun (_x : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) => N) _x) (SMulHomClass.toFunLike.{max (max u2 u3) u1, u4, max u2 u3, u1} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) N (SMulZeroClass.toSMul.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (AddMonoid.toZero.{max u2 u3} (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (DistribSMul.toSMulZeroClass.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (AddMonoid.toAddZeroClass.{max u2 u3} (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (DistribMulAction.toDistribSMul.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4)))) (SMulZeroClass.toSMul.{u4, u1} R N (AddMonoid.toZero.{u1} N (AddCommMonoid.toAddMonoid.{u1} N _inst_3)) (DistribSMul.toSMulZeroClass.{u4, u1} R N (AddMonoid.toAddZeroClass.{u1} N (AddCommMonoid.toAddMonoid.{u1} N _inst_3)) (DistribMulAction.toDistribSMul.{u4, u1} R N (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5))) (DistribMulActionHomClass.toSMulHomClass.{max (max u2 u3) u1, u4, max u2 u3, u1} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) N (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (AddCommMonoid.toAddMonoid.{u1} N _inst_3) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) _inst_5 (DistribMulActionHom.instDistribMulActionHomClassDistribMulActionHom.{u4, max u2 u3, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5))) f (Finsupp.single.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) a m)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u2) (succ u3), succ u1} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (fun (_x : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) => N) _x) (SMulHomClass.toFunLike.{max (max u2 u3) u1, u4, max u2 u3, u1} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) N (SMulZeroClass.toSMul.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (AddMonoid.toZero.{max u2 u3} (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (DistribSMul.toSMulZeroClass.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (AddMonoid.toAddZeroClass.{max u2 u3} (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (DistribMulAction.toDistribSMul.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4)))) (SMulZeroClass.toSMul.{u4, u1} R N (AddMonoid.toZero.{u1} N (AddCommMonoid.toAddMonoid.{u1} N _inst_3)) (DistribSMul.toSMulZeroClass.{u4, u1} R N (AddMonoid.toAddZeroClass.{u1} N (AddCommMonoid.toAddMonoid.{u1} N _inst_3)) (DistribMulAction.toDistribSMul.{u4, u1} R N (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5))) (DistribMulActionHomClass.toSMulHomClass.{max (max u2 u3) u1, u4, max u2 u3, u1} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) N (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (AddCommMonoid.toAddMonoid.{u1} N _inst_3) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) _inst_5 (DistribMulActionHom.instDistribMulActionHomClassDistribMulActionHom.{u4, max u2 u3, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5))) g (Finsupp.single.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) a m))) -> (Eq.{max (max (succ u2) (succ u3)) (succ u1)} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) f g)
+  forall {α : Type.{u2}} {M : Type.{u3}} {N : Type.{u1}} {R : Type.{u4}} [_inst_1 : Semiring.{u4} R] [_inst_2 : AddCommMonoid.{u3} M] [_inst_3 : AddCommMonoid.{u1} N] [_inst_4 : DistribMulAction.{u4, u3} R M (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2)] [_inst_5 : DistribMulAction.{u4, u1} R N (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} N _inst_3)] {f : DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5} {g : DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5}, (forall (a : α) (m : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) => N) (Finsupp.single.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) a m)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u2) (succ u3), succ u1} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (fun (_x : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) => N) _x) (SMulHomClass.toFunLike.{max (max u2 u3) u1, u4, max u2 u3, u1} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) N (SMulZeroClass.toSMul.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (AddMonoid.toZero.{max u2 u3} (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (DistribSMul.toSMulZeroClass.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (AddMonoid.toAddZeroClass.{max u2 u3} (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (DistribMulAction.toDistribSMul.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4)))) (SMulZeroClass.toSMul.{u4, u1} R N (AddMonoid.toZero.{u1} N (AddCommMonoid.toAddMonoid.{u1} N _inst_3)) (DistribSMul.toSMulZeroClass.{u4, u1} R N (AddMonoid.toAddZeroClass.{u1} N (AddCommMonoid.toAddMonoid.{u1} N _inst_3)) (DistribMulAction.toDistribSMul.{u4, u1} R N (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5))) (DistribMulActionHomClass.toSMulHomClass.{max (max u2 u3) u1, u4, max u2 u3, u1} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) N (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (AddCommMonoid.toAddMonoid.{u1} N _inst_3) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) _inst_5 (DistribMulActionHom.instDistribMulActionHomClassDistribMulActionHom.{u4, max u2 u3, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5))) f (Finsupp.single.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) a m)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u2) (succ u3), succ u1} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (fun (_x : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) => N) _x) (SMulHomClass.toFunLike.{max (max u2 u3) u1, u4, max u2 u3, u1} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) N (SMulZeroClass.toSMul.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (AddMonoid.toZero.{max u2 u3} (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (DistribSMul.toSMulZeroClass.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (AddMonoid.toAddZeroClass.{max u2 u3} (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (DistribMulAction.toDistribSMul.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4)))) (SMulZeroClass.toSMul.{u4, u1} R N (AddMonoid.toZero.{u1} N (AddCommMonoid.toAddMonoid.{u1} N _inst_3)) (DistribSMul.toSMulZeroClass.{u4, u1} R N (AddMonoid.toAddZeroClass.{u1} N (AddCommMonoid.toAddMonoid.{u1} N _inst_3)) (DistribMulAction.toDistribSMul.{u4, u1} R N (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5))) (DistribMulActionHomClass.toSMulHomClass.{max (max u2 u3) u1, u4, max u2 u3, u1} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) N (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (AddCommMonoid.toAddMonoid.{u1} N _inst_3) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) _inst_5 (DistribMulActionHom.instDistribMulActionHomClassDistribMulActionHom.{u4, max u2 u3, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5))) g (Finsupp.single.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) a m))) -> (Eq.{max (max (succ u2) (succ u3)) (succ u1)} (DistribMulActionHom.{u4, max u3 u2, u1} R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.addMonoid.{u2, u3} α M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finsupp.distribMulAction.{u2, u3, u4} α M R (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R _inst_1)) (AddCommMonoid.toAddMonoid.{u3} M _inst_2) _inst_4) N (AddCommMonoid.toAddMonoid.{u1} N _inst_3) _inst_5) f g)
 Case conversion may be inaccurate. Consider using '#align finsupp.distrib_mul_action_hom_ext Finsupp.distribMulActionHom_extₓ'. -/
 theorem distribMulActionHom_ext {f g : (α →₀ M) →+[R] N}
     (h : ∀ (a : α) (m : M), f (single a m) = g (single a m)) : f = g :=
Diff
@@ -228,7 +228,7 @@ def mapRange.equiv (f : M ≃ N) (hf : f 0 = 0) (hf' : f.symm 0 = 0) : (α →
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M], Eq.{max 1 (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u2} α M _inst_1)) (Finsupp.mapRange.equiv.{u1, u2, u2} α M M _inst_1 _inst_1 (Equiv.refl.{succ u2} M) (rfl.{succ u2} M (coeFn.{succ u2, succ u2} (Equiv.{succ u2, succ u2} M M) (fun (_x : Equiv.{succ u2, succ u2} M M) => M -> M) (Equiv.hasCoeToFun.{succ u2, succ u2} M M) (Equiv.refl.{succ u2} M) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (rfl.{succ u2} M (coeFn.{succ u2, succ u2} (Equiv.{succ u2, succ u2} M M) (fun (_x : Equiv.{succ u2, succ u2} M M) => M -> M) (Equiv.hasCoeToFun.{succ u2, succ u2} M M) (Equiv.symm.{succ u2, succ u2} M M (Equiv.refl.{succ u2} M)) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))))) (Equiv.refl.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _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)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.{u2, u1} α M _inst_1)) (Finsupp.mapRange.equiv.{u2, u1, u1} α M M _inst_1 _inst_1 (Equiv.refl.{succ u1} M) (rfl.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => M) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} M M) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => M) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} M M) (Equiv.refl.{succ u1} M) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1)))) (rfl.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => M) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} M M) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => M) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} M M) (Equiv.symm.{succ u1, succ u1} M M (Equiv.refl.{succ u1} M)) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))))) (Equiv.refl.{max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1))
+  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M], Eq.{max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.{u2, u1} α M _inst_1)) (Finsupp.mapRange.equiv.{u2, u1, u1} α M M _inst_1 _inst_1 (Equiv.refl.{succ u1} M) (rfl.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => M) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} M M) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => M) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} M M) (Equiv.refl.{succ u1} M) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1)))) (rfl.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => M) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} M M) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => M) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} M M) (Equiv.symm.{succ u1, succ u1} M M (Equiv.refl.{succ u1} M)) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))))) (Equiv.refl.{max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range.equiv_refl Finsupp.mapRange.equiv_reflₓ'. -/
 @[simp]
 theorem mapRange.equiv_refl : mapRange.equiv (Equiv.refl M) rfl rfl = Equiv.refl (α →₀ M) :=
@@ -239,7 +239,7 @@ theorem mapRange.equiv_refl : mapRange.equiv (Equiv.refl M) rfl rfl = Equiv.refl
 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 : Equiv.{succ u2, succ u3} M N) (hf : Eq.{succ u3} N (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) 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)))) (hf' : Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (f₂ : Equiv.{succ u3, succ u4} N P) (hf₂ : Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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)))) (hf₂' : Eq.{succ u3} N (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))), Eq.{max 1 (max (max (succ u1) (succ u2)) (succ u1) (succ u4)) (max (succ u1) (succ u4)) (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u4)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u4} α P _inst_3)) (Finsupp.mapRange.equiv.{u1, u2, u4} α M P _inst_1 _inst_3 (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂) (Eq.mpr.{0} (Eq.{succ u4} P (coeFn.{max 1 (max (succ u2) (succ u4)) (succ u4) (succ u2), max (succ u2) (succ u4)} (Equiv.{succ u2, succ u4} M P) (fun (_x : Equiv.{succ u2, succ u4} M P) => M -> P) (Equiv.hasCoeToFun.{succ u2, succ u4} M P) (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u2) (succ u4)) (succ u4) (succ u2), max (succ u2) (succ u4)} (Equiv.{succ u2, succ u4} M P) (fun (_x : Equiv.{succ u2, succ u4} M P) => M -> P) (Equiv.hasCoeToFun.{succ u2, succ u4} M P) (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (Eq.ndrec.{0, succ u4} P (coeFn.{max 1 (max (succ u2) (succ u4)) (succ u4) (succ u2), max (succ u2) (succ u4)} (Equiv.{succ u2, succ u4} M P) (fun (_x : Equiv.{succ u2, succ u4} M P) => M -> P) (Equiv.hasCoeToFun.{succ u2, succ u4} M P) (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (fun (_a : P) => Eq.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u2) (succ u4)) (succ u4) (succ u2), max (succ u2) (succ u4)} (Equiv.{succ u2, succ u4} M P) (fun (_x : Equiv.{succ u2, succ u4} M P) => M -> P) (Equiv.hasCoeToFun.{succ u2, succ u4} M P) (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (Eq.{succ u4} P _a (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (rfl.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u2) (succ u4)) (succ u4) (succ u2), max (succ u2) (succ u4)} (Equiv.{succ u2, succ u4} M P) (fun (_x : Equiv.{succ u2, succ u4} M P) => M -> P) (Equiv.hasCoeToFun.{succ u2, succ u4} M P) (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (Equiv.trans_apply.{succ u2, succ u3, succ u4} M N P f f₂ (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))))) (Eq.mpr.{0} (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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)))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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))))) (Eq.ndrec.{0, succ u3} N (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (fun (_a : N) => Eq.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ _a) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (rfl.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2))) hf)) (Eq.mpr.{0} (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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)))) (Eq.{succ u4} P (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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)))) (Eq.{succ u4} P (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (Eq.ndrec.{0, succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (fun (_a : P) => Eq.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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)))) (Eq.{succ u4} P _a (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (rfl.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))) hf₂)) (rfl.{succ u4} P (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))))) (Eq.mpr.{0} (Eq.{succ u2} M (coeFn.{max 1 (max (succ u4) (succ u2)) (succ u2) (succ u4), max (succ u4) (succ u2)} (Equiv.{succ u4, succ u2} P M) (fun (_x : Equiv.{succ u4, succ u2} P M) => P -> M) (Equiv.hasCoeToFun.{succ u4, succ u2} P M) (Equiv.symm.{succ u2, succ u4} M P (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂)) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u4) (succ u2)) (succ u2) (succ u4), max (succ u4) (succ u2)} (Equiv.{succ u4, succ u2} P M) (fun (_x : Equiv.{succ u4, succ u2} P M) => P -> M) (Equiv.hasCoeToFun.{succ u4, succ u2} P M) (Equiv.symm.{succ u2, succ u4} M P (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂)) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (Eq.ndrec.{0, succ u2} M (coeFn.{max 1 (max (succ u4) (succ u2)) (succ u2) (succ u4), max (succ u4) (succ u2)} (Equiv.{succ u4, succ u2} P M) (fun (_x : Equiv.{succ u4, succ u2} P M) => P -> M) (Equiv.hasCoeToFun.{succ u4, succ u2} P M) (Equiv.symm.{succ u2, succ u4} M P (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂)) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (fun (_a : M) => Eq.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u4) (succ u2)) (succ u2) (succ u4), max (succ u4) (succ u2)} (Equiv.{succ u4, succ u2} P M) (fun (_x : Equiv.{succ u4, succ u2} P M) => P -> M) (Equiv.hasCoeToFun.{succ u4, succ u2} P M) (Equiv.symm.{succ u2, succ u4} M P (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂)) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M _a (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (rfl.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u4) (succ u2)) (succ u2) (succ u4), max (succ u4) (succ u2)} (Equiv.{succ u4, succ u2} P M) (fun (_x : Equiv.{succ u4, succ u2} P M) => P -> M) (Equiv.hasCoeToFun.{succ u4, succ u2} P M) (Equiv.symm.{succ u2, succ u4} M P (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂)) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (Equiv.symm_trans_apply.{succ u2, succ u3, succ u4} M N P f f₂ (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))))) (Eq.mpr.{0} (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (Eq.ndrec.{0, succ u3} N (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (fun (_a : N) => Eq.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) _a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (rfl.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (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))) hf₂')) (Eq.mpr.{0} (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (Eq.ndrec.{0, succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (fun (_a : M) => Eq.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M _a (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (rfl.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))) hf')) (rfl.{succ u2} M (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))))))) (Equiv.trans.{max (succ u1) (succ u2), max (succ u1) (succ u3), max (succ u1) (succ u4)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u3} α N _inst_2) (Finsupp.{u1, u4} α P _inst_3) (Finsupp.mapRange.equiv.{u1, u2, u3} α M N _inst_1 _inst_2 f hf hf') (Finsupp.mapRange.equiv.{u1, u3, u4} α N P _inst_2 _inst_3 f₂ hf₂ hf₂'))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u4}} {N : Type.{u3}} {P : Type.{u2}} [_inst_1 : Zero.{u4} M] [_inst_2 : Zero.{u3} N] [_inst_3 : Zero.{u2} P] (f : Equiv.{succ u4, succ u3} M N) (hf : Eq.{succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (hf' : Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1))) (f₂ : Equiv.{succ u3, succ u2} N P) (hf₂ : Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3))) (hf₂' : Eq.{succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))), Eq.{max (max (succ u1) (succ u4)) (succ u2)} (Equiv.{max (succ u4) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u1, u4} α M _inst_1) (Finsupp.{u1, u2} α P _inst_3)) (Finsupp.mapRange.equiv.{u1, u4, u2} α M P _inst_1 _inst_3 (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (Eq.mpr.{0} (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (id.{0} (Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.ndrec.{0, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) => Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _a (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.refl.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (Equiv.trans_apply.{succ u4, succ u3, succ u2} M N P f f₂ (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))))) (Eq.mpr.{0} (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (id.{0} (Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.ndrec.{0, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) => Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ _a) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.refl.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2)) hf)) (Eq.mpr.{0} (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (id.{0} (Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.ndrec.{0, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) => Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _a (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.refl.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)) hf₂)) (Eq.refl.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)))))) (Eq.mpr.{0} (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (id.{0} (Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.ndrec.{0, succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) => Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _a (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.refl.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (Equiv.symm_trans_apply.{succ u4, succ u3, succ u2} M N P f f₂ (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))))) (Eq.mpr.{0} (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (id.{0} (Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.ndrec.{0, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) => Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) _a) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.refl.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2)) hf₂')) (Eq.mpr.{0} (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1)) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (id.{0} (Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1)) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.ndrec.{0, succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) => Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _a (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.refl.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1)) hf')) (Eq.refl.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1))))))) (Equiv.trans.{max (succ u4) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u1, u4} α M _inst_1) (Finsupp.{u1, u3} α N _inst_2) (Finsupp.{u1, u2} α P _inst_3) (Finsupp.mapRange.equiv.{u1, u4, u3} α M N _inst_1 _inst_2 f hf hf') (Finsupp.mapRange.equiv.{u1, u3, u2} α N P _inst_2 _inst_3 f₂ hf₂ hf₂'))
+  forall {α : Type.{u1}} {M : Type.{u4}} {N : Type.{u3}} {P : Type.{u2}} [_inst_1 : Zero.{u4} M] [_inst_2 : Zero.{u3} N] [_inst_3 : Zero.{u2} P] (f : Equiv.{succ u4, succ u3} M N) (hf : Eq.{succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (hf' : Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1))) (f₂ : Equiv.{succ u3, succ u2} N P) (hf₂ : Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3))) (hf₂' : Eq.{succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))), Eq.{max (max (succ u1) (succ u4)) (succ u2)} (Equiv.{max (succ u4) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u1, u4} α M _inst_1) (Finsupp.{u1, u2} α P _inst_3)) (Finsupp.mapRange.equiv.{u1, u4, u2} α M P _inst_1 _inst_3 (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (Eq.mpr.{0} (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (id.{0} (Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.ndrec.{0, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) => Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _a (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.refl.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (Equiv.trans_apply.{succ u4, succ u3, succ u2} M N P f f₂ (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))))) (Eq.mpr.{0} (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (id.{0} (Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.ndrec.{0, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) => Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ _a) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.refl.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2)) hf)) (Eq.mpr.{0} (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (id.{0} (Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.ndrec.{0, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) => Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _a (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.refl.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)) hf₂)) (Eq.refl.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)))))) (Eq.mpr.{0} (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (id.{0} (Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.ndrec.{0, succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) => Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _a (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.refl.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (Equiv.symm_trans_apply.{succ u4, succ u3, succ u2} M N P f f₂ (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))))) (Eq.mpr.{0} (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (id.{0} (Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.ndrec.{0, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) => Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) _a) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.refl.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2)) hf₂')) (Eq.mpr.{0} (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1)) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (id.{0} (Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1)) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.ndrec.{0, succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) => Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _a (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.refl.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1)) hf')) (Eq.refl.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1))))))) (Equiv.trans.{max (succ u4) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u1, u4} α M _inst_1) (Finsupp.{u1, u3} α N _inst_2) (Finsupp.{u1, u2} α P _inst_3) (Finsupp.mapRange.equiv.{u1, u4, u3} α M N _inst_1 _inst_2 f hf hf') (Finsupp.mapRange.equiv.{u1, u3, u2} α N P _inst_2 _inst_3 f₂ hf₂ hf₂'))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range.equiv_trans Finsupp.mapRange.equiv_transₓ'. -/
 theorem mapRange.equiv_trans (f : M ≃ N) (hf : f 0 = 0) (hf') (f₂ : N ≃ P) (hf₂ : f₂ 0 = 0) (hf₂') :
     (mapRange.equiv (f.trans f₂) (by rw [Equiv.trans_apply, hf, hf₂])
@@ -253,7 +253,7 @@ theorem mapRange.equiv_trans (f : M ≃ N) (hf : f 0 = 0) (hf') (f₂ : N ≃ P)
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : Zero.{u2} M] [_inst_2 : Zero.{u3} N] (f : Equiv.{succ u2, succ u3} M N) (hf : Eq.{succ u3} N (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) 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)))) (hf' : Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))), Eq.{max 1 (max (max (succ u1) (succ u3)) (succ u1) (succ u2)) (max (succ u1) (succ u2)) (succ u1) (succ u3)} (Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u2)} (Finsupp.{u1, u3} α N _inst_2) (Finsupp.{u1, u2} α M _inst_1)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u1) (succ u3)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u3} α N _inst_2) (Finsupp.mapRange.equiv.{u1, u2, u3} α M N _inst_1 _inst_2 f hf hf')) (Finsupp.mapRange.equiv.{u1, u3, u2} α N M _inst_2 _inst_1 (Equiv.symm.{succ u2, succ u3} M N f) hf' hf)
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : Zero.{u3} M] [_inst_2 : Zero.{u2} N] (f : Equiv.{succ u3, succ u2} M N) (hf : Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} M N) f (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) _inst_2))) (hf' : Eq.{succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} N M) (Equiv.symm.{succ u3, succ u2} M N f) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) _inst_1))), Eq.{max (max (succ u1) (succ u3)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u3) (succ u1)} (Finsupp.{u1, u2} α N _inst_2) (Finsupp.{u1, u3} α M _inst_1)) (Equiv.symm.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u1, u2} α N _inst_2) (Finsupp.mapRange.equiv.{u1, u3, u2} α M N _inst_1 _inst_2 f hf hf')) (Finsupp.mapRange.equiv.{u1, u2, u3} α N M _inst_2 _inst_1 (Equiv.symm.{succ u3, succ u2} M N f) hf' hf)
+  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : Zero.{u3} M] [_inst_2 : Zero.{u2} N] (f : Equiv.{succ u3, succ u2} M N) (hf : Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} M N) f (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) _inst_2))) (hf' : Eq.{succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} N M) (Equiv.symm.{succ u3, succ u2} M N f) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : N) => M) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) _inst_1))), Eq.{max (max (succ u1) (succ u3)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u3) (succ u1)} (Finsupp.{u1, u2} α N _inst_2) (Finsupp.{u1, u3} α M _inst_1)) (Equiv.symm.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u1, u2} α N _inst_2) (Finsupp.mapRange.equiv.{u1, u3, u2} α M N _inst_1 _inst_2 f hf hf')) (Finsupp.mapRange.equiv.{u1, u2, u3} α N M _inst_2 _inst_1 (Equiv.symm.{succ u3, succ u2} M N f) hf' hf)
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range.equiv_symm Finsupp.mapRange.equiv_symmₓ'. -/
 @[simp]
 theorem mapRange.equiv_symm (f : M ≃ N) (hf hf') :
@@ -363,7 +363,7 @@ theorem mapRange.addMonoidHom_toZeroHom (f : M →+ N) :
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (m : Multiset.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (fun (_x : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (Multiset.sum.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.addCommMonoid.{u1, u2} α M _inst_1) m)) (Multiset.sum.{max u1 u3} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.addCommMonoid.{u1, u3} α N _inst_2) (Multiset.map.{max u1 u2, max u1 u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (fun (x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) => Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (fun (_x : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) x) m))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u2} N] (f : AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (m : Multiset.{max u3 u1} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (Finsupp.mapRange.{u1, u3, u2} α M N (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f) (Multiset.sum.{max u1 u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addCommMonoid.{u1, u3} α M _inst_1) m)) (Multiset.sum.{max u1 u2} (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (Finsupp.addCommMonoid.{u1, u2} α N _inst_2) (Multiset.map.{max u3 u1, max u2 u1} (Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (fun (x : Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => Finsupp.mapRange.{u1, u3, u2} α M N (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f) x) m))
+  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u2} N] (f : AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (m : Multiset.{max u3 u1} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (Finsupp.mapRange.{u1, u3, u2} α M N (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f) (Multiset.sum.{max u1 u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addCommMonoid.{u1, u3} α M _inst_1) m)) (Multiset.sum.{max u1 u2} (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (Finsupp.addCommMonoid.{u1, u2} α N _inst_2) (Multiset.map.{max u3 u1, max u2 u1} (Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (fun (x : Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => Finsupp.mapRange.{u1, u3, u2} α M N (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f) x) m))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range_multiset_sum Finsupp.mapRange_multiset_sumₓ'. -/
 theorem mapRange_multiset_sum (f : M →+ N) (m : Multiset (α →₀ M)) :
     mapRange f f.map_zero m.Sum = (m.map fun x => mapRange f f.map_zero x).Sum :=
@@ -374,7 +374,7 @@ theorem mapRange_multiset_sum (f : M →+ N) (m : Multiset (α →₀ M)) :
 lean 3 declaration is
   forall {α : Type.{u1}} {ι : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u4} N] (f : AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (s : Finset.{u2} ι) (g : ι -> (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) (Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (fun (_x : AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)) f) (Finset.sum.{max u1 u3, u2} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) ι (Finsupp.addCommMonoid.{u1, u3} α M _inst_1) s (fun (x : ι) => g x))) (Finset.sum.{max u1 u4, u2} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) ι (Finsupp.addCommMonoid.{u1, u4} α N _inst_2) s (fun (x : ι) => Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (fun (_x : AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)) f) (g x)))
 but is expected to have type
-  forall {α : Type.{u1}} {ι : Type.{u2}} {M : Type.{u4}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u4} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (s : Finset.{u2} ι) (g : ι -> (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.mapRange.{u1, u4, u3} α M N (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (Finset.sum.{max u4 u1, u2} (Finsupp.{u1, u4} α M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) ι (Finsupp.addCommMonoid.{u1, u4} α M _inst_1) s (fun (x : ι) => g x))) (Finset.sum.{max u3 u1, u2} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) ι (Finsupp.addCommMonoid.{u1, u3} α N _inst_2) s (fun (x : ι) => Finsupp.mapRange.{u1, u4, u3} α M N (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (g x)))
+  forall {α : Type.{u1}} {ι : Type.{u2}} {M : Type.{u4}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u4} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (s : Finset.{u2} ι) (g : ι -> (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.mapRange.{u1, u4, u3} α M N (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (Finset.sum.{max u4 u1, u2} (Finsupp.{u1, u4} α M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) ι (Finsupp.addCommMonoid.{u1, u4} α M _inst_1) s (fun (x : ι) => g x))) (Finset.sum.{max u3 u1, u2} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) ι (Finsupp.addCommMonoid.{u1, u3} α N _inst_2) s (fun (x : ι) => Finsupp.mapRange.{u1, u4, u3} α M N (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (g x)))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range_finset_sum Finsupp.mapRange_finset_sumₓ'. -/
 theorem mapRange_finset_sum (f : M →+ N) (s : Finset ι) (g : ι → α →₀ M) :
     mapRange f f.map_zero (∑ x in s, g x) = ∑ x in s, mapRange f f.map_zero (g x) :=
@@ -498,7 +498,7 @@ def equivMapDomain (f : α ≃ β) (l : α →₀ M) : β →₀ M
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Equiv.{succ u1, succ u2} α β) (l : Finsupp.{u1, u3} α M _inst_1) (b : β), 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.equivMapDomain.{u1, u2, u3} α β M _inst_1 f l) b) (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) l (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β f) b))
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (l : Finsupp.{u3, u1} α M _inst_1) (b : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) 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) (Finsupp.equivMapDomain.{u3, u2, u1} α β M _inst_1 f l) b) (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) l (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} β α) (Equiv.symm.{succ u3, succ u2} α β f) b))
+  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (l : Finsupp.{u3, u1} α M _inst_1) (b : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) 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) (Finsupp.equivMapDomain.{u3, u2, u1} α β M _inst_1 f l) b) (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) l (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} β α) (Equiv.symm.{succ u3, succ u2} α β f) b))
 Case conversion may be inaccurate. Consider using '#align finsupp.equiv_map_domain_apply Finsupp.equivMapDomain_applyₓ'. -/
 @[simp]
 theorem equivMapDomain_apply (f : α ≃ β) (l : α →₀ M) (b : β) :
@@ -510,7 +510,7 @@ theorem equivMapDomain_apply (f : α ≃ β) (l : α →₀ M) (b : β) :
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Equiv.{succ u1, succ u2} α β) (l : Finsupp.{u2, u3} β M _inst_1) (a : α), Eq.{succ u3} M (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.equivMapDomain.{u2, u1, u3} β α M _inst_1 (Equiv.symm.{succ u1, succ u2} α β f) l) a) (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) l (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) f a))
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (l : Finsupp.{u2, u1} β M _inst_1) (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) 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) (Finsupp.equivMapDomain.{u2, u3, u1} β α M _inst_1 (Equiv.symm.{succ u3, succ u2} α β f) l) 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) l (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} α β) f a))
+  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (l : Finsupp.{u2, u1} β M _inst_1) (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) 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) (Finsupp.equivMapDomain.{u2, u3, u1} β α M _inst_1 (Equiv.symm.{succ u3, succ u2} α β f) l) 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) l (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} α β) f a))
 Case conversion may be inaccurate. Consider using '#align finsupp.equiv_map_domain_symm_apply Finsupp.equivMapDomain_symm_applyₓ'. -/
 theorem equivMapDomain_symm_apply (f : α ≃ β) (l : β →₀ M) (a : α) :
     equivMapDomain f.symm l a = l (f a) :=
@@ -560,7 +560,7 @@ theorem equivMapDomain_trans' (f : α ≃ β) (g : β ≃ γ) :
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Equiv.{succ u1, succ u2} α β) (a : α) (b : M), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.equivMapDomain.{u1, u2, u3} α β M _inst_1 f (Finsupp.single.{u1, u3} α M _inst_1 a b)) (Finsupp.single.{u2, u3} β M _inst_1 (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) f a) b)
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (a : α) (b : M), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} β M _inst_1) (Finsupp.equivMapDomain.{u3, u2, u1} α β M _inst_1 f (Finsupp.single.{u3, u1} α M _inst_1 a b)) (Finsupp.single.{u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) a) M _inst_1 (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} α β) f a) b)
+  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (a : α) (b : M), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} β M _inst_1) (Finsupp.equivMapDomain.{u3, u2, u1} α β M _inst_1 f (Finsupp.single.{u3, u1} α M _inst_1 a b)) (Finsupp.single.{u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) a) M _inst_1 (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} α β) f a) b)
 Case conversion may be inaccurate. Consider using '#align finsupp.equiv_map_domain_single Finsupp.equivMapDomain_singleₓ'. -/
 @[simp]
 theorem equivMapDomain_single (f : α ≃ β) (a : α) (b : M) :
@@ -597,7 +597,7 @@ def equivCongrLeft (f : α ≃ β) : (α →₀ M) ≃ (β →₀ M) := by
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Equiv.{succ u1, succ u2} α β) (l : Finsupp.{u1, u3} α M _inst_1), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (coeFn.{max 1 (max (max (succ u1) (succ u3)) (succ u2) (succ u3)) (max (succ u2) (succ u3)) (succ u1) (succ u3), max (max (succ u1) (succ u3)) (succ u2) (succ u3)} (Equiv.{max (succ u1) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u2, u3} β M _inst_1)) (fun (_x : Equiv.{max (succ u1) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u2, u3} β M _inst_1)) => (Finsupp.{u1, u3} α M _inst_1) -> (Finsupp.{u2, u3} β M _inst_1)) (Equiv.hasCoeToFun.{max (succ u1) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u2, u3} β M _inst_1)) (Finsupp.equivCongrLeft.{u1, u2, u3} α β M _inst_1 f) l) (Finsupp.equivMapDomain.{u1, u2, u3} α β M _inst_1 f l)
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (l : Finsupp.{u3, u1} α M _inst_1), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Finsupp.{u3, u1} α M _inst_1) => Finsupp.{u2, u1} β M _inst_1) l) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u2)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.{u2, u1} β M _inst_1)) (Finsupp.{u3, u1} α M _inst_1) (fun (_x : Finsupp.{u3, u1} α M _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Finsupp.{u3, u1} α M _inst_1) => Finsupp.{u2, u1} β M _inst_1) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.{u2, u1} β M _inst_1)) (Finsupp.equivCongrLeft.{u3, u2, u1} α β M _inst_1 f) l) (Finsupp.equivMapDomain.{u3, u2, u1} α β M _inst_1 f l)
+  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (l : Finsupp.{u3, u1} α M _inst_1), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Finsupp.{u3, u1} α M _inst_1) => Finsupp.{u2, u1} β M _inst_1) l) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u2)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.{u2, u1} β M _inst_1)) (Finsupp.{u3, u1} α M _inst_1) (fun (_x : Finsupp.{u3, u1} α M _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Finsupp.{u3, u1} α M _inst_1) => Finsupp.{u2, u1} β M _inst_1) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.{u2, u1} β M _inst_1)) (Finsupp.equivCongrLeft.{u3, u2, u1} α β M _inst_1 f) l) (Finsupp.equivMapDomain.{u3, u2, u1} α β M _inst_1 f l)
 Case conversion may be inaccurate. Consider using '#align finsupp.equiv_congr_left_apply Finsupp.equivCongrLeft_applyₓ'. -/
 @[simp]
 theorem equivCongrLeft_apply (f : α ≃ β) (l : α →₀ M) : equivCongrLeft f l = equivMapDomain f l :=
@@ -836,7 +836,7 @@ theorem mapDomain_add {f : α → β} : mapDomain f (v₁ + v₂) = mapDomain f
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {f : Equiv.{succ u1, succ u2} α β} (x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (a : β), Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => β -> M) (Finsupp.coeFun.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) f) x) a) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => α -> M) (Finsupp.coeFun.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) x (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β f) a))
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] {f : Equiv.{succ u3, succ u2} α β} (x : Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{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 (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.mapDomain.{u3, u2, u1} α β M _inst_1 (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} α β) f) x) a) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) x (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} β α) (Equiv.symm.{succ u3, succ u2} α β f) a))
+  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] {f : Equiv.{succ u3, succ u2} α β} (x : Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{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 (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.mapDomain.{u3, u2, u1} α β M _inst_1 (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} α β) f) x) a) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) x (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} β α) (Equiv.symm.{succ u3, succ u2} α β f) a))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_equiv_apply Finsupp.mapDomain_equiv_applyₓ'. -/
 @[simp]
 theorem mapDomain_equiv_apply {f : α ≃ β} (x : α →₀ M) (a : β) : mapDomain f x a = x (f.symm a) :=
@@ -1128,7 +1128,7 @@ theorem mapDomain_injOn (S : Set α) {f : α → β} (hf : Set.InjOn f S) :
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_2 : AddCommMonoid.{u3} M] (f : Equiv.{succ u1, succ u2} α β) (l : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)))), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)))) (Finsupp.equivMapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) f l) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_2 (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) f) l)
 but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} {M : Type.{u3}} [_inst_2 : AddCommMonoid.{u3} M] (f : Equiv.{succ u2, succ u1} α β) (l : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.equivMapDomain.{u2, u1, u3} α β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) f l) (Finsupp.mapDomain.{u2, u1, u3} α β M _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) f) l)
+  forall {α : Type.{u2}} {β : Type.{u1}} {M : Type.{u3}} [_inst_2 : AddCommMonoid.{u3} M] (f : Equiv.{succ u2, succ u1} α β) (l : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.equivMapDomain.{u2, u1, u3} α β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) f l) (Finsupp.mapDomain.{u2, u1, u3} α β M _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) f) l)
 Case conversion may be inaccurate. Consider using '#align finsupp.equiv_map_domain_eq_map_domain Finsupp.equivMapDomain_eq_mapDomainₓ'. -/
 theorem equivMapDomain_eq_mapDomain {M} [AddCommMonoid M] (f : α ≃ β) (l : α →₀ M) :
     equivMapDomain f l = mapDomain f l := by ext x <;> simp [map_domain_equiv_apply]
@@ -2192,7 +2192,7 @@ def sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] : (Sum α β →₀
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (x : α), Eq.{succ u3} γ (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α γ _inst_1) (fun (_x : Finsupp.{u1, u3} α γ _inst_1) => α -> γ) (Finsupp.coeFun.{u1, u3} α γ _inst_1) (Prod.fst.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))) (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3), max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))} (Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) => (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) -> (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1) f)) x) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) f (Sum.inl.{u1, u2} α β x))
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α γ _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) _x) (Finsupp.funLike.{u3, u1} α γ _inst_1) (Prod.fst.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (succ u1) (succ (max u2 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1) f)) x) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) f (Sum.inl.{u3, u2} α β x))
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α γ _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) _x) (Finsupp.funLike.{u3, u1} α γ _inst_1) (Prod.fst.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (succ u1) (succ (max u2 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1) f)) x) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) f (Sum.inl.{u3, u2} α β x))
 Case conversion may be inaccurate. Consider using '#align finsupp.fst_sum_finsupp_equiv_prod_finsupp Finsupp.fst_sumFinsuppEquivProdFinsuppₓ'. -/
 theorem fst_sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] (f : Sum α β →₀ γ) (x : α) :
     (sumFinsuppEquivProdFinsupp f).1 x = f (Sum.inl x) :=
@@ -2203,7 +2203,7 @@ theorem fst_sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] (f : Sum α
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (y : β), Eq.{succ u3} γ (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β γ _inst_1) (fun (_x : Finsupp.{u2, u3} β γ _inst_1) => β -> γ) (Finsupp.coeFun.{u2, u3} β γ _inst_1) (Prod.snd.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))) (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3), max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))} (Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) => (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) -> (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1) f)) y) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) f (Sum.inr.{u1, u2} α β y))
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β γ _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) _x) (Finsupp.funLike.{u2, u1} β γ _inst_1) (Prod.snd.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (succ u1) (succ (max u2 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1) f)) y) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) f (Sum.inr.{u3, u2} α β y))
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β γ _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) _x) (Finsupp.funLike.{u2, u1} β γ _inst_1) (Prod.snd.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (succ u1) (succ (max u2 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1) f)) y) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) f (Sum.inr.{u3, u2} α β y))
 Case conversion may be inaccurate. Consider using '#align finsupp.snd_sum_finsupp_equiv_prod_finsupp Finsupp.snd_sumFinsuppEquivProdFinsuppₓ'. -/
 theorem snd_sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] (f : Sum α β →₀ γ) (y : β) :
     (sumFinsuppEquivProdFinsupp f).2 y = f (Sum.inr y) :=
@@ -2214,7 +2214,7 @@ theorem snd_sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] (f : Sum α
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (fg : Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (x : α), Eq.{succ u3} γ (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3)), max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (fun (_x : Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) => (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) -> (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.hasCoeToFun.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.symm.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1)) fg) (Sum.inl.{u1, u2} α β x)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α γ _inst_1) (fun (_x : Finsupp.{u1, u3} α γ _inst_1) => α -> γ) (Finsupp.coeFun.{u1, u3} α γ _inst_1) (Prod.fst.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) fg) x)
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Equiv.symm.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1)) fg) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α γ _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) _x) (Finsupp.funLike.{u3, u1} α γ _inst_1) (Prod.fst.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) fg) x)
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Equiv.symm.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1)) fg) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α γ _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) _x) (Finsupp.funLike.{u3, u1} α γ _inst_1) (Prod.fst.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) fg) x)
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_equiv_prod_finsupp_symm_inl Finsupp.sumFinsuppEquivProdFinsupp_symm_inlₓ'. -/
 theorem sumFinsuppEquivProdFinsupp_symm_inl {α β γ : Type _} [Zero γ] (fg : (α →₀ γ) × (β →₀ γ))
     (x : α) : (sumFinsuppEquivProdFinsupp.symm fg) (Sum.inl x) = fg.1 x :=
@@ -2225,7 +2225,7 @@ theorem sumFinsuppEquivProdFinsupp_symm_inl {α β γ : Type _} [Zero γ] (fg :
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (fg : Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (y : β), Eq.{succ u3} γ (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3)), max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (fun (_x : Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) => (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) -> (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.hasCoeToFun.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.symm.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1)) fg) (Sum.inr.{u1, u2} α β y)) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β γ _inst_1) (fun (_x : Finsupp.{u2, u3} β γ _inst_1) => β -> γ) (Finsupp.coeFun.{u2, u3} β γ _inst_1) (Prod.snd.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) fg) y)
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Equiv.symm.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1)) fg) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β γ _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) _x) (Finsupp.funLike.{u2, u1} β γ _inst_1) (Prod.snd.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) fg) y)
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Equiv.symm.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1)) fg) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β γ _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) _x) (Finsupp.funLike.{u2, u1} β γ _inst_1) (Prod.snd.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) fg) y)
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_equiv_prod_finsupp_symm_inr Finsupp.sumFinsuppEquivProdFinsupp_symm_inrₓ'. -/
 theorem sumFinsuppEquivProdFinsupp_symm_inr {α β γ : Type _} [Zero γ] (fg : (α →₀ γ) × (β →₀ γ))
     (y : β) : (sumFinsuppEquivProdFinsupp.symm fg) (Sum.inr y) = fg.2 y :=
Diff
@@ -2257,7 +2257,7 @@ def sumFinsuppAddEquivProdFinsupp {α β : Type _} : (Sum α β →₀ M) ≃+ (
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (f : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (x : α), Eq.{succ u1} M (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => α -> M) (Finsupp.coeFun.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.fst.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1)), max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1))} (AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (fun (_x : AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) => (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) -> (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))) (AddEquiv.hasCoeToFun.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β) f)) x) (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.coeFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) f (Sum.inl.{u2, u3} α β x))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.fst.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1)))) (AddMonoidHomClass.toAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddEquivClass.instAddMonoidHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β) f)) x) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) f (Sum.inl.{u3, u2} α β x))
+  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.fst.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) _x) (EmbeddingLike.toFunLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (EquivLike.toEmbeddingLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddEquivClass.toEquivLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β) f)) x) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) f (Sum.inl.{u3, u2} α β x))
 Case conversion may be inaccurate. Consider using '#align finsupp.fst_sum_finsupp_add_equiv_prod_finsupp Finsupp.fst_sumFinsuppAddEquivProdFinsuppₓ'. -/
 theorem fst_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀ M) (x : α) :
     (sumFinsuppAddEquivProdFinsupp f).1 x = f (Sum.inl x) :=
@@ -2268,7 +2268,7 @@ theorem fst_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (f : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (y : β), Eq.{succ u1} M (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => β -> M) (Finsupp.coeFun.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.snd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1)), max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1))} (AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (fun (_x : AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) => (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) -> (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))) (AddEquiv.hasCoeToFun.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β) f)) y) (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.coeFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) f (Sum.inr.{u2, u3} α β y))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.snd.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1)))) (AddMonoidHomClass.toAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddEquivClass.instAddMonoidHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β) f)) y) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) f (Sum.inr.{u3, u2} α β y))
+  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.snd.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) _x) (EmbeddingLike.toFunLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (EquivLike.toEmbeddingLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddEquivClass.toEquivLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β) f)) y) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) f (Sum.inr.{u3, u2} α β y))
 Case conversion may be inaccurate. Consider using '#align finsupp.snd_sum_finsupp_add_equiv_prod_finsupp Finsupp.snd_sumFinsuppAddEquivProdFinsuppₓ'. -/
 theorem snd_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀ M) (y : β) :
     (sumFinsuppAddEquivProdFinsupp f).2 y = f (Sum.inr y) :=
@@ -2279,7 +2279,7 @@ theorem snd_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (fg : Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (x : α), Eq.{succ u1} M (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.coeFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1)), max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1))} (AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) -> (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (AddEquiv.hasCoeToFun.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β)) fg) (Sum.inl.{u2, u3} α β x)) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => α -> M) (Finsupp.coeFun.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.fst.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) fg) x)
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1)))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1))) (AddMonoidHomClass.toAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (AddEquivClass.instAddMonoidHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β)) fg) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.fst.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) fg) x)
+  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) _x) (EmbeddingLike.toFunLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (EquivLike.toEmbeddingLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddEquivClass.toEquivLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β)) fg) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.fst.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) fg) x)
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inl Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inlₓ'. -/
 theorem sumFinsuppAddEquivProdFinsupp_symm_inl {α β : Type _} (fg : (α →₀ M) × (β →₀ M)) (x : α) :
     (sumFinsuppAddEquivProdFinsupp.symm fg) (Sum.inl x) = fg.1 x :=
@@ -2290,7 +2290,7 @@ theorem sumFinsuppAddEquivProdFinsupp_symm_inl {α β : Type _} (fg : (α →₀
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (fg : Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (y : β), Eq.{succ u1} M (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.coeFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1)), max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1))} (AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) -> (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (AddEquiv.hasCoeToFun.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β)) fg) (Sum.inr.{u2, u3} α β y)) (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => β -> M) (Finsupp.coeFun.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.snd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) fg) y)
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1)))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1))) (AddMonoidHomClass.toAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (AddEquivClass.instAddMonoidHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β)) fg) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.snd.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) fg) y)
+  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) _x) (EmbeddingLike.toFunLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (EquivLike.toEmbeddingLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddEquivClass.toEquivLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β)) fg) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.snd.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) fg) y)
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inr Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inrₓ'. -/
 theorem sumFinsuppAddEquivProdFinsupp_symm_inr {α β : Type _} (fg : (α →₀ M) × (β →₀ M)) (y : β) :
     (sumFinsuppAddEquivProdFinsupp.symm fg) (Sum.inr y) = fg.2 y :=
@@ -2994,7 +2994,7 @@ noncomputable def sigmaFinsuppAddEquivPiFinsupp {α : Type _} {ιs : η → Type
 lean 3 declaration is
   forall {η : Type.{u1}} [_inst_2 : Fintype.{u1} η] {α : Type.{u2}} {ιs : η -> Type.{u3}} [_inst_4 : AddMonoid.{u2} α] (f : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (j : η) (i : ιs j), Eq.{succ u2} α (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (_x : Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) => (ιs j) -> α) (Finsupp.coeFun.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (coeFn.{max (succ (max (max u1 u3) u2)) (succ (max u1 u3 u2)), max (succ (max (max u1 u3) u2)) (succ (max u1 u3 u2))} (AddEquiv.{max (max u1 u3) u2, max u1 u3 u2} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (Finsupp.add.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (i : η) => Finsupp.add.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) (fun (_x : AddEquiv.{max (max u1 u3) u2, max u1 u3 u2} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (Finsupp.add.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (i : η) => Finsupp.add.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) => (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) -> (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) (AddEquiv.hasCoeToFun.{max (max u1 u3) u2, max u1 u3 u2} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (Finsupp.add.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (i : η) => Finsupp.add.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) (Finsupp.sigmaFinsuppAddEquivPiFinsupp.{u1, u2, u3} η _inst_2 α (fun (j : η) => ιs j) _inst_4) f j) i) (coeFn.{max (succ (max u1 u3)) (succ u2), max (succ (max u1 u3)) (succ u2)} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (_x : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) => (Sigma.{u1, u3} η (fun (j : η) => ιs j)) -> α) (Finsupp.coeFun.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) f (Sigma.mk.{u1, u3} η (fun (j : η) => ιs j) j i))
 but is expected to have type
-  forall {η : Type.{u1}} [_inst_2 : Fintype.{u1} η] {α : Type.{u3}} {ιs : η -> Type.{u2}} [_inst_4 : AddMonoid.{u3} α] (f : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (j : η) (i : ιs j), Eq.{succ u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : ιs j) => α) i) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (ιs j) (fun (_x : ιs j) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : ιs j) => α) _x) (Finsupp.funLike.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max u3 u2 u1, max (max u1 u3) u2} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (_x : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) => forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u3 u2 u1, max (max u1 u3) u2} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.addMonoid.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α _inst_4))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Pi.addZeroClass.{u1, max u2 u3} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => AddMonoid.toAddZeroClass.{max u2 u3} (Finsupp.{u2, u3} (ιs i) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.addMonoid.{u2, u3} (ιs i) α _inst_4)))) (AddMonoidHomClass.toAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u3 u2 u1, max (max u1 u3) u2} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.addMonoid.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α _inst_4)) (Pi.addZeroClass.{u1, max u2 u3} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => AddMonoid.toAddZeroClass.{max u2 u3} (Finsupp.{u2, u3} (ιs i) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.addMonoid.{u2, u3} (ιs i) α _inst_4))) (AddEquivClass.instAddMonoidHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u3 u2 u1, max (max u1 u3) u2} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.addMonoid.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α _inst_4)) (Pi.addZeroClass.{u1, max u2 u3} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => AddMonoid.toAddZeroClass.{max u2 u3} (Finsupp.{u2, u3} (ιs i) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.addMonoid.{u2, u3} (ιs i) α _inst_4))) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4))))))) (Finsupp.sigmaFinsuppAddEquivPiFinsupp.{u1, u3, u2} η _inst_2 α (fun (j : η) => ιs j) _inst_4) f j) i) (FunLike.coe.{max (succ (max u1 u2)) (succ u3), succ (max u1 u2), succ u3} (Finsupp.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (Sigma.{u1, u2} η (fun (j : η) => ιs j)) (fun (_x : Sigma.{u1, u2} η (fun (j : η) => ιs j)) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sigma.{u1, u2} η (fun (j : η) => ιs j)) => α) _x) (Finsupp.funLike.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) f (Sigma.mk.{u1, u2} η (fun (j : η) => ιs j) j i))
+  forall {η : Type.{u1}} [_inst_2 : Fintype.{u1} η] {α : Type.{u3}} {ιs : η -> Type.{u2}} [_inst_4 : AddMonoid.{u3} α] (f : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (j : η) (i : ιs j), Eq.{succ u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : ιs j) => α) i) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (ιs j) (fun (_x : ιs j) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : ιs j) => α) _x) (Finsupp.funLike.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (FunLike.coe.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (_x : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) => forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) _x) (EmbeddingLike.toFunLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (EquivLike.toEmbeddingLike.{succ (max (max u2 u3) u1), succ (max (max u2 u3) u1), succ (max (max u2 u3) u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (AddEquivClass.toEquivLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4))) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4))))))) (Finsupp.sigmaFinsuppAddEquivPiFinsupp.{u1, u3, u2} η _inst_2 α (fun (j : η) => ιs j) _inst_4) f j) i) (FunLike.coe.{max (succ (max u1 u2)) (succ u3), succ (max u1 u2), succ u3} (Finsupp.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (Sigma.{u1, u2} η (fun (j : η) => ιs j)) (fun (_x : Sigma.{u1, u2} η (fun (j : η) => ιs j)) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sigma.{u1, u2} η (fun (j : η) => ιs j)) => α) _x) (Finsupp.funLike.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) f (Sigma.mk.{u1, u2} η (fun (j : η) => ιs j) j i))
 Case conversion may be inaccurate. Consider using '#align finsupp.sigma_finsupp_add_equiv_pi_finsupp_apply Finsupp.sigmaFinsuppAddEquivPiFinsupp_applyₓ'. -/
 @[simp]
 theorem sigmaFinsuppAddEquivPiFinsupp_apply {α : Type _} {ιs : η → Type _} [AddMonoid α]
Diff
@@ -914,8 +914,8 @@ Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_sup
 theorem mapDomain_support [DecidableEq β] {f : α → β} {s : α →₀ M} :
     (s.mapDomain f).support ⊆ s.support.image f :=
   Finset.Subset.trans support_sum <|
-    Finset.Subset.trans (Finset.bunionᵢ_mono fun a ha => support_single_subset) <| by
-      rw [Finset.bunionᵢ_singleton] <;> exact subset.refl _
+    Finset.Subset.trans (Finset.biUnion_mono fun a ha => support_single_subset) <| by
+      rw [Finset.biUnion_singleton] <;> exact subset.refl _
 #align finsupp.map_domain_support Finsupp.mapDomain_support
 
 /- warning: finsupp.map_domain_apply' -> Finsupp.mapDomain_apply' is a dubious translation:
@@ -2101,9 +2101,9 @@ Case conversion may be inaccurate. Consider using '#align finsupp.support_curry
 theorem support_curry [DecidableEq α] (f : α × β →₀ M) :
     f.curry.support ⊆ f.support.image Prod.fst :=
   by
-  rw [← Finset.bunionᵢ_singleton]
+  rw [← Finset.biUnion_singleton]
   refine' Finset.Subset.trans support_sum _
-  refine' Finset.bunionᵢ_mono fun a _ => support_single_subset
+  refine' Finset.biUnion_mono fun a _ => support_single_subset
 #align finsupp.support_curry Finsupp.support_curry
 
 end CurryUncurry
Diff
@@ -2506,7 +2506,7 @@ variable {α M} {R}
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))] {b : R} {g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2)) b g)) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) g)
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {_inst_1 : Monoid.{u3} R} [_inst_2 : AddMonoid.{u2} M] [b : DistribMulAction.{u3, u2} R M _inst_1 _inst_2] {g : R} {g_1 : Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finsupp.support.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2) (HSMul.hSMul.{u3, max u1 u2, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (instHSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (SMulZeroClass.toSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u3, u2} R M _inst_1 _inst_2 b))))) g g_1)) (Finsupp.support.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2) g_1)
+  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : SMulZeroClass.{u2, u3} R M (AddMonoid.toZero.{u3} M _inst_1)] {b : R} {g : Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finsupp.support.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (instHSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.smulZeroClass.{u1, u3, u2} α M R (AddMonoid.toZero.{u3} M _inst_1) _inst_2))) b g)) (Finsupp.support.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1) g)
 Case conversion may be inaccurate. Consider using '#align finsupp.support_smul Finsupp.support_smulₓ'. -/
 theorem support_smul [AddMonoid M] [SMulZeroClass R M] {b : R} {g : α →₀ M} :
     (b • g).support ⊆ g.support := fun a =>
@@ -2611,7 +2611,7 @@ theorem smul_single_one [Semiring R] (a : α) (b : R) : b • single a 1 = singl
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {R : Type.{u4}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : Monoid.{u4} R] [_inst_3 : DistribMulAction.{u4, u3} R M _inst_2 _inst_1] {f : α -> β} (r : R) (v : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (hfv : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)))) (hfrv : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v))))) (Set.InjOn.mono.{u1, u2} α β (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)))) (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v))) f (Set.preimage_mono.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)) (Iff.mpr (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v))) (HasSubset.Subset.{u2} (Finset.{u2} β) (Finset.hasSubset.{u2} β) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)) (Finset.coe_subset.{u2} β (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)) (Finsupp.support_smul.{u2, u3, u4} β M R _inst_1 (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)) r v))) hfv)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) f (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v) hfrv) (SMul.smul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u1, u3, u4} α M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) f v hfv))
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u4}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u4} M] [_inst_2 : Monoid.{u3} R] [_inst_3 : DistribMulAction.{u3, u4} R M _inst_2 _inst_1] {f : α -> β} (r : R) (v : Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (hfv : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)))) (hfrv : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v))))) (Set.InjOn.mono.{u2, u1} α β (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)))) (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v))) f (Set.preimage_mono.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v))) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)) (Iff.mpr (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v))) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v))) (HasSubset.Subset.{u2} (Finset.{u2} β) (Finset.instHasSubsetFinset.{u2} β) (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)) (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)) (Finset.coe_subset.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)) (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)) (Finsupp.support_smul.{u2, u4, u3} β M R _inst_2 _inst_1 _inst_3 r v))) hfv)), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.comapDomain.{u1, u2, u4} α β M (AddMonoid.toZero.{u4} M _inst_1) f (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v) hfrv) (HSMul.hSMul.{u3, max u4 u1, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u1, u4, u3} α M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r (Finsupp.comapDomain.{u1, u2, u4} α β M (AddMonoid.toZero.{u4} M _inst_1) f v hfv))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u4}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u4} M] [_inst_2 : Monoid.{u3} R] [_inst_3 : DistribMulAction.{u3, u4} R M _inst_2 _inst_1] {f : α -> β} (r : R) (v : Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (hfv : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)))) (hfrv : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v))))) (Set.InjOn.mono.{u2, u1} α β (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)))) (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v))) f (Set.preimage_mono.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v))) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)) (Iff.mpr (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v))) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v))) (HasSubset.Subset.{u2} (Finset.{u2} β) (Finset.instHasSubsetFinset.{u2} β) (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)) (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)) (Finset.coe_subset.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)) (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)) (Finsupp.support_smul.{u2, u3, u4} β M R _inst_1 (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3)) r v))) hfv)), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.comapDomain.{u1, u2, u4} α β M (AddMonoid.toZero.{u4} M _inst_1) f (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v) hfrv) (HSMul.hSMul.{u3, max u4 u1, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u1, u4, u3} α M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r (Finsupp.comapDomain.{u1, u2, u4} α β M (AddMonoid.toZero.{u4} M _inst_1) f v hfv))
 Case conversion may be inaccurate. Consider using '#align finsupp.comap_domain_smul Finsupp.comapDomain_smulₓ'. -/
 theorem comapDomain_smul [AddMonoid M] [Monoid R] [DistribMulAction R M] {f : α → β} (r : R)
     (v : β →₀ M) (hfv : Set.InjOn f (f ⁻¹' ↑v.support))
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.basic
-! leanprover-community/mathlib commit 57911c5a05a1b040598e1e15b189f035ac5cc33c
+! leanprover-community/mathlib commit f69db8cecc668e2d5894d7e9bfc491da60db3b9f
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -2504,11 +2504,11 @@ variable {α M} {R}
 
 /- warning: finsupp.support_smul -> Finsupp.support_smul is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {_x : Monoid.{u3} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u3, u2} R M _x _inst_1] {b : R} {g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2)))) b g)) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) g)
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))] {b : R} {g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2)) b g)) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) g)
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {_x : Monoid.{u3} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u3, u2} R M _x _inst_1] {b : R} {g : Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finsupp.support.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1) (HSMul.hSMul.{u3, max u1 u2, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (instHSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddMonoid.toZero.{u2} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2))))) b g)) (Finsupp.support.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1) g)
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {_inst_1 : Monoid.{u3} R} [_inst_2 : AddMonoid.{u2} M] [b : DistribMulAction.{u3, u2} R M _inst_1 _inst_2] {g : R} {g_1 : Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finsupp.support.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2) (HSMul.hSMul.{u3, max u1 u2, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (instHSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (SMulZeroClass.toSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u3, u2} R M _inst_1 _inst_2 b))))) g g_1)) (Finsupp.support.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2) g_1)
 Case conversion may be inaccurate. Consider using '#align finsupp.support_smul Finsupp.support_smulₓ'. -/
-theorem support_smul {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] {b : R} {g : α →₀ M} :
+theorem support_smul [AddMonoid M] [SMulZeroClass R M] {b : R} {g : α →₀ M} :
     (b • g).support ⊆ g.support := fun a =>
   by
   simp only [smul_apply, mem_support_iff, Ne.def]
@@ -2609,7 +2609,7 @@ theorem smul_single_one [Semiring R] (a : α) (b : R) : b • single a 1 = singl
 
 /- warning: finsupp.comap_domain_smul -> Finsupp.comapDomain_smul is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {R : Type.{u4}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : Monoid.{u4} R] [_inst_3 : DistribMulAction.{u4, u3} R M _inst_2 _inst_1] {f : α -> β} (r : R) (v : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (hfv : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)))) (hfrv : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v))))) (Set.InjOn.mono.{u1, u2} α β (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)))) (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v))) f (Set.preimage_mono.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)) (Iff.mpr (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v))) (HasSubset.Subset.{u2} (Finset.{u2} β) (Finset.hasSubset.{u2} β) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)) (Finset.coe_subset.{u2} β (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)) (Finsupp.support_smul.{u2, u3, u4} β M R _inst_2 _inst_1 _inst_3 r v))) hfv)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) f (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v) hfrv) (SMul.smul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u1, u3, u4} α M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) f v hfv))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {R : Type.{u4}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : Monoid.{u4} R] [_inst_3 : DistribMulAction.{u4, u3} R M _inst_2 _inst_1] {f : α -> β} (r : R) (v : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (hfv : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)))) (hfrv : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v))))) (Set.InjOn.mono.{u1, u2} α β (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)))) (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v))) f (Set.preimage_mono.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)) (Iff.mpr (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v))) (HasSubset.Subset.{u2} (Finset.{u2} β) (Finset.hasSubset.{u2} β) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)) (Finset.coe_subset.{u2} β (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)) (Finsupp.support_smul.{u2, u3, u4} β M R _inst_1 (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)) r v))) hfv)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) f (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v) hfrv) (SMul.smul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u1, u3, u4} α M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) f v hfv))
 but is expected to have type
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u4}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u4} M] [_inst_2 : Monoid.{u3} R] [_inst_3 : DistribMulAction.{u3, u4} R M _inst_2 _inst_1] {f : α -> β} (r : R) (v : Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (hfv : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)))) (hfrv : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v))))) (Set.InjOn.mono.{u2, u1} α β (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)))) (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v))) f (Set.preimage_mono.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v))) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)) (Iff.mpr (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v))) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v))) (HasSubset.Subset.{u2} (Finset.{u2} β) (Finset.instHasSubsetFinset.{u2} β) (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)) (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)) (Finset.coe_subset.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)) (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)) (Finsupp.support_smul.{u2, u4, u3} β M R _inst_2 _inst_1 _inst_3 r v))) hfv)), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.comapDomain.{u1, u2, u4} α β M (AddMonoid.toZero.{u4} M _inst_1) f (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v) hfrv) (HSMul.hSMul.{u3, max u4 u1, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u1, u4, u3} α M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r (Finsupp.comapDomain.{u1, u2, u4} α β M (AddMonoid.toZero.{u4} M _inst_1) f v hfv))
 Case conversion may be inaccurate. Consider using '#align finsupp.comap_domain_smul Finsupp.comapDomain_smulₓ'. -/
Diff
@@ -1205,7 +1205,7 @@ variable [Zero M]
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : α -> β) (hif : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, 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)))))))) (Set.injOn_empty.{u1, u2} α β f)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.comapDomain.{u1, u2, u3} α β M _inst_1 f (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)))) hif) (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 : α -> β) (hif : optParam.{0} (Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f (Finset.toSet.{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))))))) (Eq.rec.{0, succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.7335 : Set.{u2} β) (h._@.Mathlib.Data.Finsupp.Basic._hyg.7336 : Eq.{succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) x._@.Mathlib.Data.Finsupp.Basic._hyg.7335) => Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f x._@.Mathlib.Data.Finsupp.Basic._hyg.7335)) (Set.injOn_empty.{u2, u3} α β f) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (Eq.symm.{succ u2} (Set.{u2} β) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (Finset.coe_empty.{u2} β)))), Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.comapDomain.{u3, 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))) hif) (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)))
+  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : α -> β) (hif : optParam.{0} (Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f (Finset.toSet.{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))))))) (Eq.rec.{0, succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.7315 : Set.{u2} β) (h._@.Mathlib.Data.Finsupp.Basic._hyg.7316 : Eq.{succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) x._@.Mathlib.Data.Finsupp.Basic._hyg.7315) => Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f x._@.Mathlib.Data.Finsupp.Basic._hyg.7315)) (Set.injOn_empty.{u2, u3} α β f) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (Eq.symm.{succ u2} (Set.{u2} β) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (Finset.coe_empty.{u2} β)))), Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.comapDomain.{u3, 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))) hif) (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.comap_domain_zero Finsupp.comapDomain_zeroₓ'. -/
 /-- Note the `hif` argument is needed for this to work in `rw`. -/
 @[simp]
@@ -2342,7 +2342,7 @@ attribute [local instance] comap_has_smul
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {G : Type.{u3}} [_inst_1 : Monoid.{u3} G] [_inst_2 : MulAction.{u3, u1} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (SMul.smul.{u3, max u1 u2} G (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (Finsupp.comapSMul.{u1, u2, u3} α M G _inst_1 _inst_2 _inst_3) g f) (Finsupp.mapDomain.{u1, u1, u2} α α M _inst_3 (SMul.smul.{u3, u1} G α (MulAction.toHasSmul.{u3, u1} G α _inst_1 _inst_2) g) f)
 but is expected to have type
-  forall {α : Type.{u3}} {M : Type.{u2}} {G : Type.{u1}} [_inst_1 : Monoid.{u1} G] [_inst_2 : MulAction.{u1, u3} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))), Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (instHSMul.{u1, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.comapSMul.{u3, u2, u1} α M G _inst_1 _inst_2 _inst_3)) g f) (Finsupp.mapDomain.{u3, u3, u2} α α M _inst_3 ((fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.14504 : G) (x._@.Mathlib.Data.Finsupp.Basic._hyg.14506 : α) => HSMul.hSMul.{u1, u3, u3} G α α (instHSMul.{u1, u3} G α (MulAction.toSMul.{u1, u3} G α _inst_1 _inst_2)) x._@.Mathlib.Data.Finsupp.Basic._hyg.14504 x._@.Mathlib.Data.Finsupp.Basic._hyg.14506) g) f)
+  forall {α : Type.{u3}} {M : Type.{u2}} {G : Type.{u1}} [_inst_1 : Monoid.{u1} G] [_inst_2 : MulAction.{u1, u3} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))), Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (instHSMul.{u1, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.comapSMul.{u3, u2, u1} α M G _inst_1 _inst_2 _inst_3)) g f) (Finsupp.mapDomain.{u3, u3, u2} α α M _inst_3 ((fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.14478 : G) (x._@.Mathlib.Data.Finsupp.Basic._hyg.14480 : α) => HSMul.hSMul.{u1, u3, u3} G α α (instHSMul.{u1, u3} G α (MulAction.toSMul.{u1, u3} G α _inst_1 _inst_2)) x._@.Mathlib.Data.Finsupp.Basic._hyg.14478 x._@.Mathlib.Data.Finsupp.Basic._hyg.14480) g) f)
 Case conversion may be inaccurate. Consider using '#align finsupp.comap_smul_def Finsupp.comapSMul_defₓ'. -/
 theorem comapSMul_def (g : G) (f : α →₀ M) : g • f = mapDomain ((· • ·) g) f :=
   rfl
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.basic
-! leanprover-community/mathlib commit 2651125b48fc5c170ab1111afd0817c903b1fc6c
+! leanprover-community/mathlib commit 57911c5a05a1b040598e1e15b189f035ac5cc33c
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -2436,37 +2436,37 @@ Throughout this section, some `monoid` and `semiring` arguments are specified wi
 
 /- warning: finsupp.coe_smul -> Finsupp.coe_smul is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))] (b : R) (v : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{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 (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2)) b v)) (SMul.smul.{u3, max u1 u2} R (α -> M) (Function.hasSMul.{u1, u3, u2} α R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2)) b (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) v))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M _inst_1] (b : R) (v : Finsupp.{u1, u2} α M _inst_1), Eq.{succ (max u1 u2)} (α -> M) (coeFn.{succ (max u1 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) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M _inst_1) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1) (Finsupp.smulZeroClass.{u1, u2, u3} α M R _inst_1 _inst_2)) b v)) (SMul.smul.{u3, max u1 u2} R (α -> M) (Function.hasSMul.{u1, u3, u2} α R M (SMulZeroClass.toHasSmul.{u3, u2} R M _inst_1 _inst_2)) 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) v))
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : Zero.{u3} M] [_inst_2 : SMulZeroClass.{u2, u3} R M _inst_1] (b : R) (v : Finsupp.{u1, u3} α M _inst_1), Eq.{max (succ u1) (succ u3)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (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) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u1, u3} α M _inst_1) (instHSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (Finsupp.zero.{u1, u3} α M _inst_1) (Finsupp.smulZeroClass.{u1, u3, u2} α M R _inst_1 _inst_2))) b v)) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (instHSMul.{u2, max u1 u3} R (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (Pi.instSMul.{u1, u3, u2} α R (fun (a : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (fun (i : α) => SMulZeroClass.toSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) _inst_1 _inst_2))) b (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) v))
 Case conversion may be inaccurate. Consider using '#align finsupp.coe_smul Finsupp.coe_smulₓ'. -/
 @[simp]
-theorem coe_smul [AddMonoid M] [SMulZeroClass R M] (b : R) (v : α →₀ M) : ⇑(b • v) = b • v :=
+theorem coe_smul [Zero M] [SMulZeroClass R M] (b : R) (v : α →₀ M) : ⇑(b • v) = b • v :=
   rfl
 #align finsupp.coe_smul Finsupp.coe_smul
 
 /- warning: finsupp.smul_apply -> Finsupp.smul_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))] (b : R) (v : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{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 (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2)) b v) a) (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2) b (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) v a))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M _inst_1] (b : R) (v : Finsupp.{u1, u2} α M _inst_1) (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) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M _inst_1) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1) (Finsupp.smulZeroClass.{u1, u2, u3} α M R _inst_1 _inst_2)) b v) a) (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M _inst_1 _inst_2) 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) v a))
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : Zero.{u3} M] [_inst_2 : SMulZeroClass.{u2, u3} R M _inst_1] (b : R) (v : Finsupp.{u1, u3} α M _inst_1) (a : α), Eq.{succ u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (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) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u1, u3} α M _inst_1) (instHSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (Finsupp.zero.{u1, u3} α M _inst_1) (Finsupp.smulZeroClass.{u1, u3, u2} α M R _inst_1 _inst_2))) b v) a) (HSMul.hSMul.{u2, u3, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (instHSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (SMulZeroClass.toSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1 _inst_2)) b (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) v a))
 Case conversion may be inaccurate. Consider using '#align finsupp.smul_apply Finsupp.smul_applyₓ'. -/
-theorem smul_apply [AddMonoid M] [SMulZeroClass R M] (b : R) (v : α →₀ M) (a : α) :
+theorem smul_apply [Zero M] [SMulZeroClass R M] (b : R) (v : α →₀ M) (a : α) :
     (b • v) a = b • v a :=
   rfl
 #align finsupp.smul_apply Finsupp.smul_apply
 
 /- warning: is_smul_regular.finsupp -> IsSMulRegular.finsupp is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))] {k : R}, (IsSMulRegular.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2) k) -> (IsSMulRegular.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2)) k)
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M _inst_1] {k : R}, (IsSMulRegular.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M _inst_1 _inst_2) k) -> (IsSMulRegular.{u3, max u1 u2} R (Finsupp.{u1, u2} α M _inst_1) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1) (Finsupp.smulZeroClass.{u1, u2, u3} α M R _inst_1 _inst_2)) k)
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : Zero.{u3} M] [_inst_2 : SMulZeroClass.{u2, u3} R M _inst_1] {k : R}, (IsSMulRegular.{u2, u3} R M (SMulZeroClass.toSMul.{u2, u3} R M _inst_1 _inst_2) k) -> (IsSMulRegular.{u2, max u3 u1} R (Finsupp.{u1, u3} α M _inst_1) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (Finsupp.zero.{u1, u3} α M _inst_1) (Finsupp.smulZeroClass.{u1, u3, u2} α M R _inst_1 _inst_2)) k)
 Case conversion may be inaccurate. Consider using '#align is_smul_regular.finsupp IsSMulRegular.finsuppₓ'. -/
-theorem IsSMulRegular.finsupp [AddMonoid M] [SMulZeroClass R M] {k : R} (hk : IsSMulRegular M k) :
+theorem IsSMulRegular.finsupp [Zero M] [SMulZeroClass R M] {k : R} (hk : IsSMulRegular M k) :
     IsSMulRegular (α →₀ M) k := fun _ _ h => ext fun i => hk (congr_fun h i)
 #align is_smul_regular.finsupp IsSMulRegular.finsupp
 
-instance [Nonempty α] [AddMonoid M] [SMulZeroClass R M] [FaithfulSMul R M] : FaithfulSMul R (α →₀ M)
+instance [Nonempty α] [Zero M] [SMulZeroClass R M] [FaithfulSMul R M] : FaithfulSMul R (α →₀ M)
     where eq_of_smul_eq_smul r₁ r₂ h :=
     let ⟨a⟩ := ‹Nonempty α›
     eq_of_smul_eq_smul fun m : M => by simpa using congr_fun (h (single a m)) a
Diff
@@ -2438,7 +2438,7 @@ Throughout this section, some `monoid` and `semiring` arguments are specified wi
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))] (b : R) (v : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{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 (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2)) b v)) (SMul.smul.{u3, max u1 u2} R (α -> M) (Function.hasSMul.{u1, u3, u2} α R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2)) b (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) v))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : DistribSMul.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1)] (b : R) (v : Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)), Eq.{max (succ u1) (succ u3)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (instHSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.smulZeroClass.{u1, u3, u2} α M R (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) _inst_2)))) b v)) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (instHSMul.{u2, max u1 u3} R (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (Pi.instSMul.{u1, u3, u2} α R (fun (a : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (fun (i : α) => SMulZeroClass.toSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) (AddMonoid.toZero.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) (AddMonoid.toAddZeroClass.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) _inst_1) _inst_2)))) b (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) v))
+  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : Zero.{u3} M] [_inst_2 : SMulZeroClass.{u2, u3} R M _inst_1] (b : R) (v : Finsupp.{u1, u3} α M _inst_1), Eq.{max (succ u1) (succ u3)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (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) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u1, u3} α M _inst_1) (instHSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (Finsupp.zero.{u1, u3} α M _inst_1) (Finsupp.smulZeroClass.{u1, u3, u2} α M R _inst_1 _inst_2))) b v)) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (instHSMul.{u2, max u1 u3} R (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (Pi.instSMul.{u1, u3, u2} α R (fun (a : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (fun (i : α) => SMulZeroClass.toSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) _inst_1 _inst_2))) b (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) v))
 Case conversion may be inaccurate. Consider using '#align finsupp.coe_smul Finsupp.coe_smulₓ'. -/
 @[simp]
 theorem coe_smul [AddMonoid M] [SMulZeroClass R M] (b : R) (v : α →₀ M) : ⇑(b • v) = b • v :=
@@ -2449,7 +2449,7 @@ theorem coe_smul [AddMonoid M] [SMulZeroClass R M] (b : R) (v : α →₀ M) : 
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))] (b : R) (v : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{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 (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2)) b v) a) (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2) b (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) v a))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : DistribSMul.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1)] (b : R) (v : Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (a : α), Eq.{succ u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (instHSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.smulZeroClass.{u1, u3, u2} α M R (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) _inst_2)))) b v) a) (HSMul.hSMul.{u2, u3, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (instHSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (SMulZeroClass.toSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddMonoid.toZero.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddMonoid.toAddZeroClass.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1) _inst_2))) b (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) v a))
+  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : Zero.{u3} M] [_inst_2 : SMulZeroClass.{u2, u3} R M _inst_1] (b : R) (v : Finsupp.{u1, u3} α M _inst_1) (a : α), Eq.{succ u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (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) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u1, u3} α M _inst_1) (instHSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (Finsupp.zero.{u1, u3} α M _inst_1) (Finsupp.smulZeroClass.{u1, u3, u2} α M R _inst_1 _inst_2))) b v) a) (HSMul.hSMul.{u2, u3, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (instHSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (SMulZeroClass.toSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1 _inst_2)) b (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) v a))
 Case conversion may be inaccurate. Consider using '#align finsupp.smul_apply Finsupp.smul_applyₓ'. -/
 theorem smul_apply [AddMonoid M] [SMulZeroClass R M] (b : R) (v : α →₀ M) (a : α) :
     (b • v) a = b • v a :=
@@ -2460,7 +2460,7 @@ theorem smul_apply [AddMonoid M] [SMulZeroClass R M] (b : R) (v : α →₀ M) (
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))] {k : R}, (IsSMulRegular.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2) k) -> (IsSMulRegular.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2)) k)
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : DistribSMul.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1)] {k : R}, (IsSMulRegular.{u2, u3} R M (SMulZeroClass.toSMul.{u2, u3} R M (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) _inst_2)) k) -> (IsSMulRegular.{u2, max u3 u1} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.smulZeroClass.{u1, u3, u2} α M R (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) _inst_2))) k)
+  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : Zero.{u3} M] [_inst_2 : SMulZeroClass.{u2, u3} R M _inst_1] {k : R}, (IsSMulRegular.{u2, u3} R M (SMulZeroClass.toSMul.{u2, u3} R M _inst_1 _inst_2) k) -> (IsSMulRegular.{u2, max u3 u1} R (Finsupp.{u1, u3} α M _inst_1) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (Finsupp.zero.{u1, u3} α M _inst_1) (Finsupp.smulZeroClass.{u1, u3, u2} α M R _inst_1 _inst_2)) k)
 Case conversion may be inaccurate. Consider using '#align is_smul_regular.finsupp IsSMulRegular.finsuppₓ'. -/
 theorem IsSMulRegular.finsupp [AddMonoid M] [SMulZeroClass R M] {k : R} (hk : IsSMulRegular M k) :
     IsSMulRegular (α →₀ M) k := fun _ _ h => ext fun i => hk (congr_fun h i)
@@ -2560,7 +2560,7 @@ theorem mapDomain_smul {_ : Monoid R} [AddCommMonoid M] [DistribMulAction R M] {
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M _inst_1] (c : R) (a : α) (b : M), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M _inst_1) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M _inst_1) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1) (Finsupp.smulZeroClass.{u1, u2, u3} α M R _inst_1 _inst_2)) c (Finsupp.single.{u1, u2} α M _inst_1 a b)) (Finsupp.single.{u1, u2} α M _inst_1 a (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M _inst_1 _inst_2) c b))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {_inst_1 : Monoid.{u3} R} [_inst_2 : AddMonoid.{u2} M] [c : DistribMulAction.{u3, u2} R M _inst_1 _inst_2] (a : R) (b : α) (b_1 : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (HSMul.hSMul.{u3, max u2 u1, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (instHSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (SMulZeroClass.toSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u3, u2} R M _inst_1 _inst_2 c))))) a (Finsupp.single.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2) b b_1)) (Finsupp.single.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2) b (HSMul.hSMul.{u3, u2, u2} R M M (instHSMul.{u3, u2} R M (SMulZeroClass.toSMul.{u3, u2} R M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u3, u2} R M _inst_1 _inst_2 c)))) a b_1))
+  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : Zero.{u3} M] [_inst_2 : SMulZeroClass.{u2, u3} R M _inst_1] (c : R) (a : α) (b : M), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (HSMul.hSMul.{u2, max u3 u1, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u1, u3} α M _inst_1) (instHSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M _inst_1) (Finsupp.zero.{u1, u3} α M _inst_1) (Finsupp.smulZeroClass.{u1, u3, u2} α M R _inst_1 _inst_2))) c (Finsupp.single.{u1, u3} α M _inst_1 a b)) (Finsupp.single.{u1, u3} α M _inst_1 a (HSMul.hSMul.{u2, u3, u3} R M M (instHSMul.{u2, u3} R M (SMulZeroClass.toSMul.{u2, u3} R M _inst_1 _inst_2)) c b))
 Case conversion may be inaccurate. Consider using '#align finsupp.smul_single Finsupp.smul_singleₓ'. -/
 @[simp]
 theorem smul_single [Zero M] [SMulZeroClass R M] (c : R) (a : α) (b : M) :
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.basic
-! leanprover-community/mathlib commit f16e7a22e11fc09c71f25446ac1db23a24e8a0bd
+! leanprover-community/mathlib commit 2651125b48fc5c170ab1111afd0817c903b1fc6c
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -2436,37 +2436,37 @@ Throughout this section, some `monoid` and `semiring` arguments are specified wi
 
 /- warning: finsupp.coe_smul -> Finsupp.coe_smul is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribSMul.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1)] (b : R) (v : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{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 (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2))) b v)) (SMul.smul.{u3, max u1 u2} R (α -> M) (Function.hasSMul.{u1, u3, u2} α R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2))) b (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) v))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))] (b : R) (v : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{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 (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2)) b v)) (SMul.smul.{u3, max u1 u2} R (α -> M) (Function.hasSMul.{u1, u3, u2} α R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2)) b (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) v))
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : DistribSMul.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1)] (b : R) (v : Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)), Eq.{max (succ u1) (succ u3)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (instHSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.smulZeroClass.{u1, u3, u2} α M R (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) _inst_2)))) b v)) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (instHSMul.{u2, max u1 u3} R (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (Pi.instSMul.{u1, u3, u2} α R (fun (a : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (fun (i : α) => SMulZeroClass.toSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) (AddMonoid.toZero.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) (AddMonoid.toAddZeroClass.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) _inst_1) _inst_2)))) b (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) v))
 Case conversion may be inaccurate. Consider using '#align finsupp.coe_smul Finsupp.coe_smulₓ'. -/
 @[simp]
-theorem coe_smul [AddMonoid M] [DistribSMul R M] (b : R) (v : α →₀ M) : ⇑(b • v) = b • v :=
+theorem coe_smul [AddMonoid M] [SMulZeroClass R M] (b : R) (v : α →₀ M) : ⇑(b • v) = b • v :=
   rfl
 #align finsupp.coe_smul Finsupp.coe_smul
 
 /- warning: finsupp.smul_apply -> Finsupp.smul_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribSMul.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1)] (b : R) (v : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{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 (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2))) b v) a) (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2)) b (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) v a))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))] (b : R) (v : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{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 (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2)) b v) a) (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2) b (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) v a))
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : DistribSMul.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1)] (b : R) (v : Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (a : α), Eq.{succ u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (instHSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.smulZeroClass.{u1, u3, u2} α M R (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) _inst_2)))) b v) a) (HSMul.hSMul.{u2, u3, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (instHSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (SMulZeroClass.toSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddMonoid.toZero.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddMonoid.toAddZeroClass.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1) _inst_2))) b (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) v a))
 Case conversion may be inaccurate. Consider using '#align finsupp.smul_apply Finsupp.smul_applyₓ'. -/
-theorem smul_apply [AddMonoid M] [DistribSMul R M] (b : R) (v : α →₀ M) (a : α) :
+theorem smul_apply [AddMonoid M] [SMulZeroClass R M] (b : R) (v : α →₀ M) (a : α) :
     (b • v) a = b • v a :=
   rfl
 #align finsupp.smul_apply Finsupp.smul_apply
 
 /- warning: is_smul_regular.finsupp -> IsSMulRegular.finsupp is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribSMul.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1)] {k : R}, (IsSMulRegular.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2)) k) -> (IsSMulRegular.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2))) k)
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))] {k : R}, (IsSMulRegular.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2) k) -> (IsSMulRegular.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2)) k)
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : DistribSMul.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1)] {k : R}, (IsSMulRegular.{u2, u3} R M (SMulZeroClass.toSMul.{u2, u3} R M (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) _inst_2)) k) -> (IsSMulRegular.{u2, max u3 u1} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.smulZeroClass.{u1, u3, u2} α M R (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) _inst_2))) k)
 Case conversion may be inaccurate. Consider using '#align is_smul_regular.finsupp IsSMulRegular.finsuppₓ'. -/
-theorem IsSMulRegular.finsupp [AddMonoid M] [DistribSMul R M] {k : R} (hk : IsSMulRegular M k) :
+theorem IsSMulRegular.finsupp [AddMonoid M] [SMulZeroClass R M] {k : R} (hk : IsSMulRegular M k) :
     IsSMulRegular (α →₀ M) k := fun _ _ h => ext fun i => hk (congr_fun h i)
 #align is_smul_regular.finsupp IsSMulRegular.finsupp
 
-instance [Nonempty α] [AddMonoid M] [DistribSMul R M] [FaithfulSMul R M] : FaithfulSMul R (α →₀ M)
+instance [Nonempty α] [AddMonoid M] [SMulZeroClass R M] [FaithfulSMul R M] : FaithfulSMul R (α →₀ M)
     where eq_of_smul_eq_smul r₁ r₂ h :=
     let ⟨a⟩ := ‹Nonempty α›
     eq_of_smul_eq_smul fun m : M => by simpa using congr_fun (h (single a m)) a
@@ -2485,17 +2485,14 @@ instance [Monoid R] [AddMonoid M] [DistribMulAction R M] : DistribMulAction R (
     one_smul := fun x => ext fun _ => one_smul _ _
     mul_smul := fun r s x => ext fun _ => mul_smul _ _ _ }
 
-instance [Monoid R] [Monoid S] [AddMonoid M] [DistribMulAction R M] [DistribMulAction S M]
-    [SMul R S] [IsScalarTower R S M] : IsScalarTower R S (α →₀ M)
-    where smul_assoc r s a := ext fun _ => smul_assoc _ _ _
+instance [Zero M] [SMulZeroClass R M] [SMulZeroClass S M] [SMul R S] [IsScalarTower R S M] :
+    IsScalarTower R S (α →₀ M) where smul_assoc r s a := ext fun _ => smul_assoc _ _ _
 
-instance [Monoid R] [Monoid S] [AddMonoid M] [DistribMulAction R M] [DistribMulAction S M]
-    [SMulCommClass R S M] : SMulCommClass R S (α →₀ M)
-    where smul_comm r s a := ext fun _ => smul_comm _ _ _
+instance [Zero M] [SMulZeroClass R M] [SMulZeroClass S M] [SMulCommClass R S M] :
+    SMulCommClass R S (α →₀ M) where smul_comm r s a := ext fun _ => smul_comm _ _ _
 
-instance [Monoid R] [AddMonoid M] [DistribMulAction R M] [DistribMulAction Rᵐᵒᵖ M]
-    [IsCentralScalar R M] : IsCentralScalar R (α →₀ M)
-    where op_smul_eq_smul r a := ext fun _ => op_smul_eq_smul _ _
+instance [Zero M] [SMulZeroClass R M] [SMulZeroClass Rᵐᵒᵖ M] [IsCentralScalar R M] :
+    IsCentralScalar R (α →₀ M) where op_smul_eq_smul r a := ext fun _ => op_smul_eq_smul _ _
 
 instance [Semiring R] [AddCommMonoid M] [Module R M] : Module R (α →₀ M) :=
   { Finsupp.distribMulAction α M with
@@ -2561,12 +2558,12 @@ theorem mapDomain_smul {_ : Monoid R} [AddCommMonoid M] [DistribMulAction R M] {
 
 /- warning: finsupp.smul_single -> Finsupp.smul_single is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {_x : Monoid.{u3} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u3, u2} R M _x _inst_1] (c : R) (a : α) (b : M), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2)))) c (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) a b)) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) a (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2))) c b))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] [_inst_2 : SMulZeroClass.{u3, u2} R M _inst_1] (c : R) (a : α) (b : M), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M _inst_1) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M _inst_1) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1) (Finsupp.smulZeroClass.{u1, u2, u3} α M R _inst_1 _inst_2)) c (Finsupp.single.{u1, u2} α M _inst_1 a b)) (Finsupp.single.{u1, u2} α M _inst_1 a (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M _inst_1 _inst_2) c b))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {_x : Monoid.{u3} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u3, u2} R M _x _inst_1] (c : R) (a : α) (b : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (HSMul.hSMul.{u3, max u2 u1, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (instHSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddMonoid.toZero.{u2} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2))))) c (Finsupp.single.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1) a b)) (Finsupp.single.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1) a (HSMul.hSMul.{u3, u2, u2} R M M (instHSMul.{u3, u2} R M (SMulZeroClass.toSMul.{u3, u2} R M (AddMonoid.toZero.{u2} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2)))) c b))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {_inst_1 : Monoid.{u3} R} [_inst_2 : AddMonoid.{u2} M] [c : DistribMulAction.{u3, u2} R M _inst_1 _inst_2] (a : R) (b : α) (b_1 : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (HSMul.hSMul.{u3, max u2 u1, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (instHSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (SMulZeroClass.toSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2)) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u3, u2} R M _inst_1 _inst_2 c))))) a (Finsupp.single.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2) b b_1)) (Finsupp.single.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_2) b (HSMul.hSMul.{u3, u2, u2} R M M (instHSMul.{u3, u2} R M (SMulZeroClass.toSMul.{u3, u2} R M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u3, u2} R M _inst_1 _inst_2 c)))) a b_1))
 Case conversion may be inaccurate. Consider using '#align finsupp.smul_single Finsupp.smul_singleₓ'. -/
 @[simp]
-theorem smul_single {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] (c : R) (a : α) (b : M) :
+theorem smul_single [Zero M] [SMulZeroClass R M] (c : R) (a : α) (b : M) :
     c • Finsupp.single a b = Finsupp.single a (c • b) :=
   mapRange_single
 #align finsupp.smul_single Finsupp.smul_single
Diff
@@ -656,7 +656,7 @@ namespace Int
 
 /- warning: int.cast_finsupp_prod -> Int.cast_finsupp_prod is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : CommRing.{u3} R] (g : α -> M -> Int), Eq.{succ u3} R ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Int R (HasLiftT.mk.{1, succ u3} Int R (CoeTCₓ.coe.{1, succ u3} Int R (Int.castCoe.{u3} R (AddGroupWithOne.toHasIntCast.{u3} R (NonAssocRing.toAddGroupWithOne.{u3} R (Ring.toNonAssocRing.{u3} R (CommRing.toRing.{u3} R _inst_2))))))) (Finsupp.prod.{u1, u2, 0} α M Int _inst_1 Int.commMonoid f g)) (Finsupp.prod.{u1, u2, u3} α M R _inst_1 (CommRing.toCommMonoid.{u3} R _inst_2) f (fun (a : α) (b : M) => (fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Int R (HasLiftT.mk.{1, succ u3} Int R (CoeTCₓ.coe.{1, succ u3} Int R (Int.castCoe.{u3} R (AddGroupWithOne.toHasIntCast.{u3} R (NonAssocRing.toAddGroupWithOne.{u3} R (Ring.toNonAssocRing.{u3} R (CommRing.toRing.{u3} R _inst_2))))))) (g a b)))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : CommRing.{u3} R] (g : α -> M -> Int), Eq.{succ u3} R ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Int R (HasLiftT.mk.{1, succ u3} Int R (CoeTCₓ.coe.{1, succ u3} Int R (Int.castCoe.{u3} R (AddGroupWithOne.toHasIntCast.{u3} R (AddCommGroupWithOne.toAddGroupWithOne.{u3} R (Ring.toAddCommGroupWithOne.{u3} R (CommRing.toRing.{u3} R _inst_2))))))) (Finsupp.prod.{u1, u2, 0} α M Int _inst_1 Int.commMonoid f g)) (Finsupp.prod.{u1, u2, u3} α M R _inst_1 (CommRing.toCommMonoid.{u3} R _inst_2) f (fun (a : α) (b : M) => (fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Int R (HasLiftT.mk.{1, succ u3} Int R (CoeTCₓ.coe.{1, succ u3} Int R (Int.castCoe.{u3} R (AddGroupWithOne.toHasIntCast.{u3} R (AddCommGroupWithOne.toAddGroupWithOne.{u3} R (Ring.toAddCommGroupWithOne.{u3} R (CommRing.toRing.{u3} R _inst_2))))))) (g a b)))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} {R : Type.{u3}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) [_inst_2 : CommRing.{u3} R] (g : α -> M -> Int), Eq.{succ u3} R (Int.cast.{u3} R (Ring.toIntCast.{u3} R (CommRing.toRing.{u3} R _inst_2)) (Finsupp.prod.{u2, u1, 0} α M Int _inst_1 Int.instCommMonoidInt f g)) (Finsupp.prod.{u2, u1, u3} α M R _inst_1 (CommRing.toCommMonoid.{u3} R _inst_2) f (fun (a : α) (b : M) => Int.cast.{u3} R (Ring.toIntCast.{u3} R (CommRing.toRing.{u3} R _inst_2)) (g a b)))
 Case conversion may be inaccurate. Consider using '#align int.cast_finsupp_prod Int.cast_finsupp_prodₓ'. -/
@@ -668,7 +668,7 @@ theorem cast_finsupp_prod [CommRing R] (g : α → M → ℤ) :
 
 /- warning: int.cast_finsupp_sum -> Int.cast_finsupp_sum is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : CommRing.{u3} R] (g : α -> M -> Int), Eq.{succ u3} R ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Int R (HasLiftT.mk.{1, succ u3} Int R (CoeTCₓ.coe.{1, succ u3} Int R (Int.castCoe.{u3} R (AddGroupWithOne.toHasIntCast.{u3} R (NonAssocRing.toAddGroupWithOne.{u3} R (Ring.toNonAssocRing.{u3} R (CommRing.toRing.{u3} R _inst_2))))))) (Finsupp.sum.{u1, u2, 0} α M Int _inst_1 Int.addCommMonoid f g)) (Finsupp.sum.{u1, u2, u3} α M R _inst_1 (AddCommGroup.toAddCommMonoid.{u3} R (NonUnitalNonAssocRing.toAddCommGroup.{u3} R (NonAssocRing.toNonUnitalNonAssocRing.{u3} R (Ring.toNonAssocRing.{u3} R (CommRing.toRing.{u3} R _inst_2))))) f (fun (a : α) (b : M) => (fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Int R (HasLiftT.mk.{1, succ u3} Int R (CoeTCₓ.coe.{1, succ u3} Int R (Int.castCoe.{u3} R (AddGroupWithOne.toHasIntCast.{u3} R (NonAssocRing.toAddGroupWithOne.{u3} R (Ring.toNonAssocRing.{u3} R (CommRing.toRing.{u3} R _inst_2))))))) (g a b)))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : CommRing.{u3} R] (g : α -> M -> Int), Eq.{succ u3} R ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Int R (HasLiftT.mk.{1, succ u3} Int R (CoeTCₓ.coe.{1, succ u3} Int R (Int.castCoe.{u3} R (AddGroupWithOne.toHasIntCast.{u3} R (AddCommGroupWithOne.toAddGroupWithOne.{u3} R (Ring.toAddCommGroupWithOne.{u3} R (CommRing.toRing.{u3} R _inst_2))))))) (Finsupp.sum.{u1, u2, 0} α M Int _inst_1 Int.addCommMonoid f g)) (Finsupp.sum.{u1, u2, u3} α M R _inst_1 (AddCommGroup.toAddCommMonoid.{u3} R (NonUnitalNonAssocRing.toAddCommGroup.{u3} R (NonAssocRing.toNonUnitalNonAssocRing.{u3} R (Ring.toNonAssocRing.{u3} R (CommRing.toRing.{u3} R _inst_2))))) f (fun (a : α) (b : M) => (fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Int R (HasLiftT.mk.{1, succ u3} Int R (CoeTCₓ.coe.{1, succ u3} Int R (Int.castCoe.{u3} R (AddGroupWithOne.toHasIntCast.{u3} R (AddCommGroupWithOne.toAddGroupWithOne.{u3} R (Ring.toAddCommGroupWithOne.{u3} R (CommRing.toRing.{u3} R _inst_2))))))) (g a b)))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} {R : Type.{u3}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) [_inst_2 : CommRing.{u3} R] (g : α -> M -> Int), Eq.{succ u3} R (Int.cast.{u3} R (Ring.toIntCast.{u3} R (CommRing.toRing.{u3} R _inst_2)) (Finsupp.sum.{u2, u1, 0} α M Int _inst_1 Int.instAddCommMonoidInt f g)) (Finsupp.sum.{u2, u1, u3} α M R _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} R (NonAssocRing.toNonUnitalNonAssocRing.{u3} R (Ring.toNonAssocRing.{u3} R (CommRing.toRing.{u3} R _inst_2))))) f (fun (a : α) (b : M) => Int.cast.{u3} R (Ring.toIntCast.{u3} R (CommRing.toRing.{u3} R _inst_2)) (g a b)))
 Case conversion may be inaccurate. Consider using '#align int.cast_finsupp_sum Int.cast_finsupp_sumₓ'. -/
@@ -684,7 +684,7 @@ namespace Rat
 
 /- warning: rat.cast_finsupp_sum -> Rat.cast_finsupp_sum is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : DivisionRing.{u3} R] [_inst_3 : CharZero.{u3} R (AddGroupWithOne.toAddMonoidWithOne.{u3} R (NonAssocRing.toAddGroupWithOne.{u3} R (Ring.toNonAssocRing.{u3} R (DivisionRing.toRing.{u3} R _inst_2))))] (g : α -> M -> Rat), Eq.{succ u3} R ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Rat R (HasLiftT.mk.{1, succ u3} Rat R (CoeTCₓ.coe.{1, succ u3} Rat R (Rat.castCoe.{u3} R (DivisionRing.toHasRatCast.{u3} R _inst_2)))) (Finsupp.sum.{u1, u2, 0} α M Rat _inst_1 Rat.addCommMonoid f g)) (Finsupp.sum.{u1, u2, u3} α M R _inst_1 (AddCommGroup.toAddCommMonoid.{u3} R (NonUnitalNonAssocRing.toAddCommGroup.{u3} R (NonAssocRing.toNonUnitalNonAssocRing.{u3} R (Ring.toNonAssocRing.{u3} R (DivisionRing.toRing.{u3} R _inst_2))))) f (fun (a : α) (b : M) => (fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Rat R (HasLiftT.mk.{1, succ u3} Rat R (CoeTCₓ.coe.{1, succ u3} Rat R (Rat.castCoe.{u3} R (DivisionRing.toHasRatCast.{u3} R _inst_2)))) (g a b)))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : DivisionRing.{u3} R] [_inst_3 : CharZero.{u3} R (AddGroupWithOne.toAddMonoidWithOne.{u3} R (AddCommGroupWithOne.toAddGroupWithOne.{u3} R (Ring.toAddCommGroupWithOne.{u3} R (DivisionRing.toRing.{u3} R _inst_2))))] (g : α -> M -> Rat), Eq.{succ u3} R ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Rat R (HasLiftT.mk.{1, succ u3} Rat R (CoeTCₓ.coe.{1, succ u3} Rat R (Rat.castCoe.{u3} R (DivisionRing.toHasRatCast.{u3} R _inst_2)))) (Finsupp.sum.{u1, u2, 0} α M Rat _inst_1 Rat.addCommMonoid f g)) (Finsupp.sum.{u1, u2, u3} α M R _inst_1 (AddCommGroup.toAddCommMonoid.{u3} R (NonUnitalNonAssocRing.toAddCommGroup.{u3} R (NonAssocRing.toNonUnitalNonAssocRing.{u3} R (Ring.toNonAssocRing.{u3} R (DivisionRing.toRing.{u3} R _inst_2))))) f (fun (a : α) (b : M) => (fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Rat R (HasLiftT.mk.{1, succ u3} Rat R (CoeTCₓ.coe.{1, succ u3} Rat R (Rat.castCoe.{u3} R (DivisionRing.toHasRatCast.{u3} R _inst_2)))) (g a b)))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} {R : Type.{u3}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) [_inst_2 : DivisionRing.{u3} R] [_inst_3 : CharZero.{u3} R (AddGroupWithOne.toAddMonoidWithOne.{u3} R (Ring.toAddGroupWithOne.{u3} R (DivisionRing.toRing.{u3} R _inst_2)))] (g : α -> M -> Rat), Eq.{succ u3} R (Rat.cast.{u3} R (DivisionRing.toRatCast.{u3} R _inst_2) (Finsupp.sum.{u2, u1, 0} α M Rat _inst_1 Rat.addCommMonoid f g)) (Finsupp.sum.{u2, u1, u3} α M R _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} R (NonAssocRing.toNonUnitalNonAssocRing.{u3} R (Ring.toNonAssocRing.{u3} R (DivisionRing.toRing.{u3} R _inst_2))))) f (fun (a : α) (b : M) => Rat.cast.{u3} R (DivisionRing.toRatCast.{u3} R _inst_2) (g a b)))
 Case conversion may be inaccurate. Consider using '#align rat.cast_finsupp_sum Rat.cast_finsupp_sumₓ'. -/
@@ -696,7 +696,7 @@ theorem cast_finsupp_sum [DivisionRing R] [CharZero R] (g : α → M → ℚ) :
 
 /- warning: rat.cast_finsupp_prod -> Rat.cast_finsupp_prod is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : Field.{u3} R] [_inst_3 : CharZero.{u3} R (AddGroupWithOne.toAddMonoidWithOne.{u3} R (NonAssocRing.toAddGroupWithOne.{u3} R (Ring.toNonAssocRing.{u3} R (DivisionRing.toRing.{u3} R (Field.toDivisionRing.{u3} R _inst_2)))))] (g : α -> M -> Rat), Eq.{succ u3} R ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Rat R (HasLiftT.mk.{1, succ u3} Rat R (CoeTCₓ.coe.{1, succ u3} Rat R (Rat.castCoe.{u3} R (DivisionRing.toHasRatCast.{u3} R (Field.toDivisionRing.{u3} R _inst_2))))) (Finsupp.prod.{u1, u2, 0} α M Rat _inst_1 Rat.commMonoid f g)) (Finsupp.prod.{u1, u2, u3} α M R _inst_1 (CommRing.toCommMonoid.{u3} R (Field.toCommRing.{u3} R _inst_2)) f (fun (a : α) (b : M) => (fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Rat R (HasLiftT.mk.{1, succ u3} Rat R (CoeTCₓ.coe.{1, succ u3} Rat R (Rat.castCoe.{u3} R (DivisionRing.toHasRatCast.{u3} R (Field.toDivisionRing.{u3} R _inst_2))))) (g a b)))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : Field.{u3} R] [_inst_3 : CharZero.{u3} R (AddGroupWithOne.toAddMonoidWithOne.{u3} R (AddCommGroupWithOne.toAddGroupWithOne.{u3} R (Ring.toAddCommGroupWithOne.{u3} R (DivisionRing.toRing.{u3} R (Field.toDivisionRing.{u3} R _inst_2)))))] (g : α -> M -> Rat), Eq.{succ u3} R ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Rat R (HasLiftT.mk.{1, succ u3} Rat R (CoeTCₓ.coe.{1, succ u3} Rat R (Rat.castCoe.{u3} R (DivisionRing.toHasRatCast.{u3} R (Field.toDivisionRing.{u3} R _inst_2))))) (Finsupp.prod.{u1, u2, 0} α M Rat _inst_1 Rat.commMonoid f g)) (Finsupp.prod.{u1, u2, u3} α M R _inst_1 (CommRing.toCommMonoid.{u3} R (Field.toCommRing.{u3} R _inst_2)) f (fun (a : α) (b : M) => (fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Rat R (HasLiftT.mk.{1, succ u3} Rat R (CoeTCₓ.coe.{1, succ u3} Rat R (Rat.castCoe.{u3} R (DivisionRing.toHasRatCast.{u3} R (Field.toDivisionRing.{u3} R _inst_2))))) (g a b)))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} {R : Type.{u3}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) [_inst_2 : Field.{u3} R] [_inst_3 : CharZero.{u3} R (AddGroupWithOne.toAddMonoidWithOne.{u3} R (Ring.toAddGroupWithOne.{u3} R (DivisionRing.toRing.{u3} R (Field.toDivisionRing.{u3} R _inst_2))))] (g : α -> M -> Rat), Eq.{succ u3} R (Rat.cast.{u3} R (Field.toRatCast.{u3} R _inst_2) (Finsupp.prod.{u2, u1, 0} α M Rat _inst_1 Rat.commMonoid f g)) (Finsupp.prod.{u2, u1, u3} α M R _inst_1 (CommRing.toCommMonoid.{u3} R (Field.toCommRing.{u3} R _inst_2)) f (fun (a : α) (b : M) => Rat.cast.{u3} R (Field.toRatCast.{u3} R _inst_2) (g a b)))
 Case conversion may be inaccurate. Consider using '#align rat.cast_finsupp_prod Rat.cast_finsupp_prodₓ'. -/
Diff
@@ -459,7 +459,7 @@ theorem mapRange.addEquiv_toAddMonoidHom (f : M ≃+ N) :
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddEquiv.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))), Eq.{max 1 (max (succ (max u1 u2)) (succ (max u1 u3))) (succ (max u1 u3)) (succ (max u1 u2))} (Equiv.{succ (max u1 u2), succ (max u1 u3)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) (AddEquiv.toEquiv.{max u1 u2, max u1 u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.mapRange.addEquiv.{u1, u2, u3} α M N _inst_1 _inst_2 f)) (Finsupp.mapRange.equiv.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddEquiv.toEquiv.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) f) (AddEquiv.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (AddEquiv.map_zero.{u3, u2} N M (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddEquiv.symm.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) f)))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u2} N] (f : AddEquiv.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))), Eq.{max (max (succ u1) (succ u3)) (succ u2)} (Equiv.{succ (max u3 u1), succ (max u2 u1)} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (AddEquiv.toEquiv.{max u3 u1, max u2 u1} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u2} α N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.mapRange.addEquiv.{u1, u3, u2} α M N _inst_1 _inst_2 f)) (Finsupp.mapRange.equiv.{u1, u3, u2} α M N (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddEquiv.toEquiv.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) f) (AddEquiv.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f) (AddEquiv.map_zero.{u3, u2} N M (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddEquiv.symm.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) f)))
+  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u2} N] (f : AddEquiv.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))), Eq.{max (max (succ u1) (succ u3)) (succ u2)} (Equiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) (EquivLike.toEquiv.{max (succ u1) (succ u3), max (succ u1) (succ u2), max (max (succ u1) (succ u3)) (succ u2)} (Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (AddEquiv.{max u3 u1, max u2 u1} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u2} α N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (AddEquivClass.toEquivLike.{max (max u1 u3) u2, max u1 u3, max u1 u2} (AddEquiv.{max u3 u1, max u2 u1} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u2} α N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u2} α N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddEquiv.instAddEquivClassAddEquiv.{max u1 u3, max u1 u2} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u2} α N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) (Finsupp.mapRange.addEquiv.{u1, u3, u2} α M N _inst_1 _inst_2 f)) (Finsupp.mapRange.equiv.{u1, u3, u2} α M N (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (EquivLike.toEquiv.{succ u3, succ u2, max (succ u3) (succ u2)} M N (AddEquiv.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (AddEquivClass.toEquivLike.{max u3 u2, u3, u2} (AddEquiv.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddEquiv.instAddEquivClassAddEquiv.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) f) (AddEquiv.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f) (AddEquiv.map_zero.{u3, u2} N M (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddEquiv.symm.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) f)))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range.add_equiv_to_equiv Finsupp.mapRange.addEquiv_toEquivₓ'. -/
 @[simp]
 theorem mapRange.addEquiv_toEquiv (f : M ≃+ N) :
@@ -1205,7 +1205,7 @@ variable [Zero M]
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : α -> β) (hif : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, 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)))))))) (Set.injOn_empty.{u1, u2} α β f)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.comapDomain.{u1, u2, u3} α β M _inst_1 f (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)))) hif) (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 : α -> β) (hif : optParam.{0} (Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f (Finset.toSet.{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))))))) (Eq.rec.{0, succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.7313 : Set.{u2} β) (h._@.Mathlib.Data.Finsupp.Basic._hyg.7314 : Eq.{succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) x._@.Mathlib.Data.Finsupp.Basic._hyg.7313) => Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f x._@.Mathlib.Data.Finsupp.Basic._hyg.7313)) (Set.injOn_empty.{u2, u3} α β f) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (Eq.symm.{succ u2} (Set.{u2} β) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (Finset.coe_empty.{u2} β)))), Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.comapDomain.{u3, 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))) hif) (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)))
+  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : α -> β) (hif : optParam.{0} (Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f (Finset.toSet.{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))))))) (Eq.rec.{0, succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.7335 : Set.{u2} β) (h._@.Mathlib.Data.Finsupp.Basic._hyg.7336 : Eq.{succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) x._@.Mathlib.Data.Finsupp.Basic._hyg.7335) => Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f x._@.Mathlib.Data.Finsupp.Basic._hyg.7335)) (Set.injOn_empty.{u2, u3} α β f) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (Eq.symm.{succ u2} (Set.{u2} β) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (Finset.coe_empty.{u2} β)))), Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.comapDomain.{u3, 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))) hif) (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.comap_domain_zero Finsupp.comapDomain_zeroₓ'. -/
 /-- Note the `hif` argument is needed for this to work in `rw`. -/
 @[simp]
@@ -2342,7 +2342,7 @@ attribute [local instance] comap_has_smul
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {G : Type.{u3}} [_inst_1 : Monoid.{u3} G] [_inst_2 : MulAction.{u3, u1} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (SMul.smul.{u3, max u1 u2} G (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (Finsupp.comapSMul.{u1, u2, u3} α M G _inst_1 _inst_2 _inst_3) g f) (Finsupp.mapDomain.{u1, u1, u2} α α M _inst_3 (SMul.smul.{u3, u1} G α (MulAction.toHasSmul.{u3, u1} G α _inst_1 _inst_2) g) f)
 but is expected to have type
-  forall {α : Type.{u3}} {M : Type.{u2}} {G : Type.{u1}} [_inst_1 : Monoid.{u1} G] [_inst_2 : MulAction.{u1, u3} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))), Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (instHSMul.{u1, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.comapSMul.{u3, u2, u1} α M G _inst_1 _inst_2 _inst_3)) g f) (Finsupp.mapDomain.{u3, u3, u2} α α M _inst_3 ((fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.14482 : G) (x._@.Mathlib.Data.Finsupp.Basic._hyg.14484 : α) => HSMul.hSMul.{u1, u3, u3} G α α (instHSMul.{u1, u3} G α (MulAction.toSMul.{u1, u3} G α _inst_1 _inst_2)) x._@.Mathlib.Data.Finsupp.Basic._hyg.14482 x._@.Mathlib.Data.Finsupp.Basic._hyg.14484) g) f)
+  forall {α : Type.{u3}} {M : Type.{u2}} {G : Type.{u1}} [_inst_1 : Monoid.{u1} G] [_inst_2 : MulAction.{u1, u3} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))), Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (instHSMul.{u1, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.comapSMul.{u3, u2, u1} α M G _inst_1 _inst_2 _inst_3)) g f) (Finsupp.mapDomain.{u3, u3, u2} α α M _inst_3 ((fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.14504 : G) (x._@.Mathlib.Data.Finsupp.Basic._hyg.14506 : α) => HSMul.hSMul.{u1, u3, u3} G α α (instHSMul.{u1, u3} G α (MulAction.toSMul.{u1, u3} G α _inst_1 _inst_2)) x._@.Mathlib.Data.Finsupp.Basic._hyg.14504 x._@.Mathlib.Data.Finsupp.Basic._hyg.14506) g) f)
 Case conversion may be inaccurate. Consider using '#align finsupp.comap_smul_def Finsupp.comapSMul_defₓ'. -/
 theorem comapSMul_def (g : G) (f : α →₀ M) : g • f = mapDomain ((· • ·) g) f :=
   rfl
Diff
@@ -1205,7 +1205,7 @@ variable [Zero M]
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : α -> β) (hif : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, 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)))))))) (Set.injOn_empty.{u1, u2} α β f)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.comapDomain.{u1, u2, u3} α β M _inst_1 f (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)))) hif) (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 : α -> β) (hif : optParam.{0} (Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f (Finset.toSet.{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))))))) (Eq.rec.{0, succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.7251 : Set.{u2} β) (h._@.Mathlib.Data.Finsupp.Basic._hyg.7252 : Eq.{succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) x._@.Mathlib.Data.Finsupp.Basic._hyg.7251) => Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f x._@.Mathlib.Data.Finsupp.Basic._hyg.7251)) (Set.injOn_empty.{u2, u3} α β f) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (Eq.symm.{succ u2} (Set.{u2} β) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (Finset.coe_empty.{u2} β)))), Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.comapDomain.{u3, 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))) hif) (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)))
+  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : α -> β) (hif : optParam.{0} (Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f (Finset.toSet.{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))))))) (Eq.rec.{0, succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.7313 : Set.{u2} β) (h._@.Mathlib.Data.Finsupp.Basic._hyg.7314 : Eq.{succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) x._@.Mathlib.Data.Finsupp.Basic._hyg.7313) => Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f x._@.Mathlib.Data.Finsupp.Basic._hyg.7313)) (Set.injOn_empty.{u2, u3} α β f) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (Eq.symm.{succ u2} (Set.{u2} β) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (Finset.coe_empty.{u2} β)))), Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.comapDomain.{u3, 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))) hif) (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.comap_domain_zero Finsupp.comapDomain_zeroₓ'. -/
 /-- Note the `hif` argument is needed for this to work in `rw`. -/
 @[simp]
@@ -2342,7 +2342,7 @@ attribute [local instance] comap_has_smul
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {G : Type.{u3}} [_inst_1 : Monoid.{u3} G] [_inst_2 : MulAction.{u3, u1} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (SMul.smul.{u3, max u1 u2} G (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (Finsupp.comapSMul.{u1, u2, u3} α M G _inst_1 _inst_2 _inst_3) g f) (Finsupp.mapDomain.{u1, u1, u2} α α M _inst_3 (SMul.smul.{u3, u1} G α (MulAction.toHasSmul.{u3, u1} G α _inst_1 _inst_2) g) f)
 but is expected to have type
-  forall {α : Type.{u3}} {M : Type.{u2}} {G : Type.{u1}} [_inst_1 : Monoid.{u1} G] [_inst_2 : MulAction.{u1, u3} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))), Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (instHSMul.{u1, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.comapSMul.{u3, u2, u1} α M G _inst_1 _inst_2 _inst_3)) g f) (Finsupp.mapDomain.{u3, u3, u2} α α M _inst_3 ((fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.14420 : G) (x._@.Mathlib.Data.Finsupp.Basic._hyg.14422 : α) => HSMul.hSMul.{u1, u3, u3} G α α (instHSMul.{u1, u3} G α (MulAction.toSMul.{u1, u3} G α _inst_1 _inst_2)) x._@.Mathlib.Data.Finsupp.Basic._hyg.14420 x._@.Mathlib.Data.Finsupp.Basic._hyg.14422) g) f)
+  forall {α : Type.{u3}} {M : Type.{u2}} {G : Type.{u1}} [_inst_1 : Monoid.{u1} G] [_inst_2 : MulAction.{u1, u3} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))), Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (instHSMul.{u1, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.comapSMul.{u3, u2, u1} α M G _inst_1 _inst_2 _inst_3)) g f) (Finsupp.mapDomain.{u3, u3, u2} α α M _inst_3 ((fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.14482 : G) (x._@.Mathlib.Data.Finsupp.Basic._hyg.14484 : α) => HSMul.hSMul.{u1, u3, u3} G α α (instHSMul.{u1, u3} G α (MulAction.toSMul.{u1, u3} G α _inst_1 _inst_2)) x._@.Mathlib.Data.Finsupp.Basic._hyg.14482 x._@.Mathlib.Data.Finsupp.Basic._hyg.14484) g) f)
 Case conversion may be inaccurate. Consider using '#align finsupp.comap_smul_def Finsupp.comapSMul_defₓ'. -/
 theorem comapSMul_def (g : G) (f : α →₀ M) : g • f = mapDomain ((· • ·) g) f :=
   rfl
Diff
@@ -228,7 +228,7 @@ def mapRange.equiv (f : M ≃ N) (hf : f 0 = 0) (hf' : f.symm 0 = 0) : (α →
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M], Eq.{max 1 (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u2} α M _inst_1)) (Finsupp.mapRange.equiv.{u1, u2, u2} α M M _inst_1 _inst_1 (Equiv.refl.{succ u2} M) (rfl.{succ u2} M (coeFn.{succ u2, succ u2} (Equiv.{succ u2, succ u2} M M) (fun (_x : Equiv.{succ u2, succ u2} M M) => M -> M) (Equiv.hasCoeToFun.{succ u2, succ u2} M M) (Equiv.refl.{succ u2} M) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (rfl.{succ u2} M (coeFn.{succ u2, succ u2} (Equiv.{succ u2, succ u2} M M) (fun (_x : Equiv.{succ u2, succ u2} M M) => M -> M) (Equiv.hasCoeToFun.{succ u2, succ u2} M M) (Equiv.symm.{succ u2, succ u2} M M (Equiv.refl.{succ u2} M)) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))))) (Equiv.refl.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _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)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.{u2, u1} α M _inst_1)) (Finsupp.mapRange.equiv.{u2, u1, u1} α M M _inst_1 _inst_1 (Equiv.refl.{succ u1} M) (rfl.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => M) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} M M) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => M) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} M M) (Equiv.refl.{succ u1} M) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1)))) (rfl.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => M) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} M M) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => M) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} M M) (Equiv.symm.{succ u1, succ u1} M M (Equiv.refl.{succ u1} M)) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))))) (Equiv.refl.{max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1))
+  forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M], Eq.{max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.{u2, u1} α M _inst_1)) (Finsupp.mapRange.equiv.{u2, u1, u1} α M M _inst_1 _inst_1 (Equiv.refl.{succ u1} M) (rfl.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => M) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} M M) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => M) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} M M) (Equiv.refl.{succ u1} M) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1)))) (rfl.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => M) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} M M) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => M) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} M M) (Equiv.symm.{succ u1, succ u1} M M (Equiv.refl.{succ u1} M)) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))))) (Equiv.refl.{max (succ u1) (succ u2)} (Finsupp.{u2, u1} α M _inst_1))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range.equiv_refl Finsupp.mapRange.equiv_reflₓ'. -/
 @[simp]
 theorem mapRange.equiv_refl : mapRange.equiv (Equiv.refl M) rfl rfl = Equiv.refl (α →₀ M) :=
@@ -239,7 +239,7 @@ theorem mapRange.equiv_refl : mapRange.equiv (Equiv.refl M) rfl rfl = Equiv.refl
 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 : Equiv.{succ u2, succ u3} M N) (hf : Eq.{succ u3} N (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) 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)))) (hf' : Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (f₂ : Equiv.{succ u3, succ u4} N P) (hf₂ : Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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)))) (hf₂' : Eq.{succ u3} N (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))), Eq.{max 1 (max (max (succ u1) (succ u2)) (succ u1) (succ u4)) (max (succ u1) (succ u4)) (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u4)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u4} α P _inst_3)) (Finsupp.mapRange.equiv.{u1, u2, u4} α M P _inst_1 _inst_3 (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂) (Eq.mpr.{0} (Eq.{succ u4} P (coeFn.{max 1 (max (succ u2) (succ u4)) (succ u4) (succ u2), max (succ u2) (succ u4)} (Equiv.{succ u2, succ u4} M P) (fun (_x : Equiv.{succ u2, succ u4} M P) => M -> P) (Equiv.hasCoeToFun.{succ u2, succ u4} M P) (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u2) (succ u4)) (succ u4) (succ u2), max (succ u2) (succ u4)} (Equiv.{succ u2, succ u4} M P) (fun (_x : Equiv.{succ u2, succ u4} M P) => M -> P) (Equiv.hasCoeToFun.{succ u2, succ u4} M P) (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (Eq.ndrec.{0, succ u4} P (coeFn.{max 1 (max (succ u2) (succ u4)) (succ u4) (succ u2), max (succ u2) (succ u4)} (Equiv.{succ u2, succ u4} M P) (fun (_x : Equiv.{succ u2, succ u4} M P) => M -> P) (Equiv.hasCoeToFun.{succ u2, succ u4} M P) (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (fun (_a : P) => Eq.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u2) (succ u4)) (succ u4) (succ u2), max (succ u2) (succ u4)} (Equiv.{succ u2, succ u4} M P) (fun (_x : Equiv.{succ u2, succ u4} M P) => M -> P) (Equiv.hasCoeToFun.{succ u2, succ u4} M P) (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (Eq.{succ u4} P _a (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (rfl.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u2) (succ u4)) (succ u4) (succ u2), max (succ u2) (succ u4)} (Equiv.{succ u2, succ u4} M P) (fun (_x : Equiv.{succ u2, succ u4} M P) => M -> P) (Equiv.hasCoeToFun.{succ u2, succ u4} M P) (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (Equiv.trans_apply.{succ u2, succ u3, succ u4} M N P f f₂ (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))))) (Eq.mpr.{0} (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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)))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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))))) (Eq.ndrec.{0, succ u3} N (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (fun (_a : N) => Eq.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ _a) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (rfl.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) f (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2))) hf)) (Eq.mpr.{0} (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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)))) (Eq.{succ u4} P (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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)))) (Eq.{succ u4} P (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (Eq.ndrec.{0, succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (fun (_a : P) => Eq.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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)))) (Eq.{succ u4} P _a (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (rfl.{1} Prop (Eq.{succ u4} P (coeFn.{max 1 (max (succ u3) (succ u4)) (succ u4) (succ u3), max (succ u3) (succ u4)} (Equiv.{succ u3, succ u4} N P) (fun (_x : Equiv.{succ u3, succ u4} N P) => N -> P) (Equiv.hasCoeToFun.{succ u3, succ u4} N P) f₂ (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))))) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))) hf₂)) (rfl.{succ u4} P (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))))) (Eq.mpr.{0} (Eq.{succ u2} M (coeFn.{max 1 (max (succ u4) (succ u2)) (succ u2) (succ u4), max (succ u4) (succ u2)} (Equiv.{succ u4, succ u2} P M) (fun (_x : Equiv.{succ u4, succ u2} P M) => P -> M) (Equiv.hasCoeToFun.{succ u4, succ u2} P M) (Equiv.symm.{succ u2, succ u4} M P (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂)) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u4) (succ u2)) (succ u2) (succ u4), max (succ u4) (succ u2)} (Equiv.{succ u4, succ u2} P M) (fun (_x : Equiv.{succ u4, succ u2} P M) => P -> M) (Equiv.hasCoeToFun.{succ u4, succ u2} P M) (Equiv.symm.{succ u2, succ u4} M P (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂)) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (Eq.ndrec.{0, succ u2} M (coeFn.{max 1 (max (succ u4) (succ u2)) (succ u2) (succ u4), max (succ u4) (succ u2)} (Equiv.{succ u4, succ u2} P M) (fun (_x : Equiv.{succ u4, succ u2} P M) => P -> M) (Equiv.hasCoeToFun.{succ u4, succ u2} P M) (Equiv.symm.{succ u2, succ u4} M P (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂)) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (fun (_a : M) => Eq.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u4) (succ u2)) (succ u2) (succ u4), max (succ u4) (succ u2)} (Equiv.{succ u4, succ u2} P M) (fun (_x : Equiv.{succ u4, succ u2} P M) => P -> M) (Equiv.hasCoeToFun.{succ u4, succ u2} P M) (Equiv.symm.{succ u2, succ u4} M P (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂)) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M _a (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (rfl.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u4) (succ u2)) (succ u2) (succ u4), max (succ u4) (succ u2)} (Equiv.{succ u4, succ u2} P M) (fun (_x : Equiv.{succ u4, succ u2} P M) => P -> M) (Equiv.hasCoeToFun.{succ u4, succ u2} P M) (Equiv.symm.{succ u2, succ u4} M P (Equiv.trans.{succ u2, succ u3, succ u4} M N P f f₂)) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (Equiv.symm_trans_apply.{succ u2, succ u3, succ u4} M N P f f₂ (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))))) (Eq.mpr.{0} (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (Eq.ndrec.{0, succ u3} N (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3)))) (fun (_a : N) => Eq.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) _a) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (rfl.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (coeFn.{max 1 (max (succ u4) (succ u3)) (succ u3) (succ u4), max (succ u4) (succ u3)} (Equiv.{succ u4, succ u3} P N) (fun (_x : Equiv.{succ u4, succ u3} P N) => P -> N) (Equiv.hasCoeToFun.{succ u4, succ u3} P N) (Equiv.symm.{succ u3, succ u4} N P f₂) (OfNat.ofNat.{u4} P 0 (OfNat.mk.{u4} P 0 (Zero.zero.{u4} P _inst_3))))) (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))) hf₂')) (Eq.mpr.{0} (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (Eq.ndrec.{0, succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (fun (_a : M) => Eq.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Eq.{succ u2} M _a (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (rfl.{1} Prop (Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1))) hf')) (rfl.{succ u2} M (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))))))) (Equiv.trans.{max (succ u1) (succ u2), max (succ u1) (succ u3), max (succ u1) (succ u4)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u3} α N _inst_2) (Finsupp.{u1, u4} α P _inst_3) (Finsupp.mapRange.equiv.{u1, u2, u3} α M N _inst_1 _inst_2 f hf hf') (Finsupp.mapRange.equiv.{u1, u3, u4} α N P _inst_2 _inst_3 f₂ hf₂ hf₂'))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u4}} {N : Type.{u3}} {P : Type.{u2}} [_inst_1 : Zero.{u4} M] [_inst_2 : Zero.{u3} N] [_inst_3 : Zero.{u2} P] (f : Equiv.{succ u4, succ u3} M N) (hf : Eq.{succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (hf' : Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1))) (f₂ : Equiv.{succ u3, succ u2} N P) (hf₂ : Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3))) (hf₂' : Eq.{succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))), Eq.{max (max (succ u1) (succ u4)) (succ u2)} (Equiv.{max (succ u4) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u1, u4} α M _inst_1) (Finsupp.{u1, u2} α P _inst_3)) (Finsupp.mapRange.equiv.{u1, u4, u2} α M P _inst_1 _inst_3 (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (Eq.mpr.{0} (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (id.{0} (Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.ndrec.{0, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) => Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _a (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.refl.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (Equiv.trans_apply.{succ u4, succ u3, succ u2} M N P f f₂ (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))))) (Eq.mpr.{0} (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (id.{0} (Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.ndrec.{0, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) => Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ _a) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.refl.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2)) hf)) (Eq.mpr.{0} (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (id.{0} (Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.ndrec.{0, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) => Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _a (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.refl.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)) hf₂)) (Eq.refl.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)))))) (Eq.mpr.{0} (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (id.{0} (Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.ndrec.{0, succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) => Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _a (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.refl.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (Equiv.symm_trans_apply.{succ u4, succ u3, succ u2} M N P f f₂ (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))))) (Eq.mpr.{0} (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (id.{0} (Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.ndrec.{0, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) => Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) _a) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.refl.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2)) hf₂')) (Eq.mpr.{0} (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1)) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (id.{0} (Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1)) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.ndrec.{0, succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) => Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _a (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.refl.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1)) hf')) (Eq.refl.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1))))))) (Equiv.trans.{max (succ u4) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u1, u4} α M _inst_1) (Finsupp.{u1, u3} α N _inst_2) (Finsupp.{u1, u2} α P _inst_3) (Finsupp.mapRange.equiv.{u1, u4, u3} α M N _inst_1 _inst_2 f hf hf') (Finsupp.mapRange.equiv.{u1, u3, u2} α N P _inst_2 _inst_3 f₂ hf₂ hf₂'))
+  forall {α : Type.{u1}} {M : Type.{u4}} {N : Type.{u3}} {P : Type.{u2}} [_inst_1 : Zero.{u4} M] [_inst_2 : Zero.{u3} N] [_inst_3 : Zero.{u2} P] (f : Equiv.{succ u4, succ u3} M N) (hf : Eq.{succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (hf' : Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1))) (f₂ : Equiv.{succ u3, succ u2} N P) (hf₂ : Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3))) (hf₂' : Eq.{succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))), Eq.{max (max (succ u1) (succ u4)) (succ u2)} (Equiv.{max (succ u4) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u1, u4} α M _inst_1) (Finsupp.{u1, u2} α P _inst_3)) (Finsupp.mapRange.equiv.{u1, u4, u2} α M P _inst_1 _inst_3 (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (Eq.mpr.{0} (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (id.{0} (Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.ndrec.{0, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) => Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _a (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.refl.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u2), succ u4, succ u2} (Equiv.{succ u4, succ u2} M P) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u2} M P) (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (Equiv.trans_apply.{succ u4, succ u3, succ u2} M N P f f₂ (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))))) (Eq.mpr.{0} (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (id.{0} (Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.ndrec.{0, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) => Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ _a) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.refl.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (Equiv.{succ u4, succ u3} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u4, succ u3} M N) f (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2)) hf)) (Eq.mpr.{0} (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (id.{0} (Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.ndrec.{0, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) => Eq.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3))) (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _a (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (Eq.refl.{1} Prop (Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} N P) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} N P) f₂ (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) _inst_3)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)) hf₂)) (Eq.refl.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => P) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => P) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_3)))))) (Eq.mpr.{0} (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (id.{0} (Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.ndrec.{0, succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) => Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _a (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.refl.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u2), succ u2, succ u4} (Equiv.{succ u2, succ u4} P M) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u4} P M) (Equiv.symm.{succ u4, succ u2} M P (Equiv.trans.{succ u4, succ u3, succ u2} M N P f f₂)) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (Equiv.symm_trans_apply.{succ u4, succ u3, succ u2} M N P f f₂ (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))))) (Eq.mpr.{0} (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (id.{0} (Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.ndrec.{0, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) => Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) _a) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.refl.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} P N) P (fun (_x : P) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} P N) (Equiv.symm.{succ u3, succ u2} N P f₂) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2)) hf₂')) (Eq.mpr.{0} (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1)) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (id.{0} (Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1)) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.ndrec.{0, succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) (fun (_a : (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) => Eq.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1))) (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _a (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (Eq.refl.{1} Prop (Eq.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (FunLike.coe.{max (succ u4) (succ u3), succ u3, succ u4} (Equiv.{succ u3, succ u4} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u4} N M) (Equiv.symm.{succ u4, succ u3} M N f) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => N) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_2))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) _inst_1)))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1)) hf')) (Eq.refl.{succ u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : P) => M) (OfNat.ofNat.{u2} P 0 (Zero.toOfNat0.{u2} P _inst_3))) (OfNat.ofNat.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) 0 (Zero.toOfNat0.{u4} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u3} N 0 (Zero.toOfNat0.{u3} N _inst_2))) _inst_1))))))) (Equiv.trans.{max (succ u4) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u1, u4} α M _inst_1) (Finsupp.{u1, u3} α N _inst_2) (Finsupp.{u1, u2} α P _inst_3) (Finsupp.mapRange.equiv.{u1, u4, u3} α M N _inst_1 _inst_2 f hf hf') (Finsupp.mapRange.equiv.{u1, u3, u2} α N P _inst_2 _inst_3 f₂ hf₂ hf₂'))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range.equiv_trans Finsupp.mapRange.equiv_transₓ'. -/
 theorem mapRange.equiv_trans (f : M ≃ N) (hf : f 0 = 0) (hf') (f₂ : N ≃ P) (hf₂ : f₂ 0 = 0) (hf₂') :
     (mapRange.equiv (f.trans f₂) (by rw [Equiv.trans_apply, hf, hf₂])
@@ -253,7 +253,7 @@ theorem mapRange.equiv_trans (f : M ≃ N) (hf : f 0 = 0) (hf') (f₂ : N ≃ P)
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : Zero.{u2} M] [_inst_2 : Zero.{u3} N] (f : Equiv.{succ u2, succ u3} M N) (hf : Eq.{succ u3} N (coeFn.{max 1 (max (succ u2) (succ u3)) (succ u3) (succ u2), max (succ u2) (succ u3)} (Equiv.{succ u2, succ u3} M N) (fun (_x : Equiv.{succ u2, succ u3} M N) => M -> N) (Equiv.hasCoeToFun.{succ u2, succ u3} M N) 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)))) (hf' : Eq.{succ u2} M (coeFn.{max 1 (max (succ u3) (succ u2)) (succ u2) (succ u3), max (succ u3) (succ u2)} (Equiv.{succ u3, succ u2} N M) (fun (_x : Equiv.{succ u3, succ u2} N M) => N -> M) (Equiv.hasCoeToFun.{succ u3, succ u2} N M) (Equiv.symm.{succ u2, succ u3} M N f) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N _inst_2)))) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))), Eq.{max 1 (max (max (succ u1) (succ u3)) (succ u1) (succ u2)) (max (succ u1) (succ u2)) (succ u1) (succ u3)} (Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u2)} (Finsupp.{u1, u3} α N _inst_2) (Finsupp.{u1, u2} α M _inst_1)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u1) (succ u3)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u3} α N _inst_2) (Finsupp.mapRange.equiv.{u1, u2, u3} α M N _inst_1 _inst_2 f hf hf')) (Finsupp.mapRange.equiv.{u1, u3, u2} α N M _inst_2 _inst_1 (Equiv.symm.{succ u2, succ u3} M N f) hf' hf)
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : Zero.{u3} M] [_inst_2 : Zero.{u2} N] (f : Equiv.{succ u3, succ u2} M N) (hf : Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} M N) f (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) _inst_2))) (hf' : Eq.{succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} N M) (Equiv.symm.{succ u3, succ u2} M N f) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : N) => M) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) _inst_1))), Eq.{max (max (succ u1) (succ u3)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u3) (succ u1)} (Finsupp.{u1, u2} α N _inst_2) (Finsupp.{u1, u3} α M _inst_1)) (Equiv.symm.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u1, u2} α N _inst_2) (Finsupp.mapRange.equiv.{u1, u3, u2} α M N _inst_1 _inst_2 f hf hf')) (Finsupp.mapRange.equiv.{u1, u2, u3} α N M _inst_2 _inst_1 (Equiv.symm.{succ u3, succ u2} M N f) hf' hf)
+  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : Zero.{u3} M] [_inst_2 : Zero.{u2} N] (f : Equiv.{succ u3, succ u2} M N) (hf : Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} M N) M (fun (_x : M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} M N) f (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M _inst_1))) _inst_2))) (hf' : Eq.{succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} N M) N (fun (_x : N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} N M) (Equiv.symm.{succ u3, succ u2} M N f) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : N) => M) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N _inst_2))) _inst_1))), Eq.{max (max (succ u1) (succ u3)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u3) (succ u1)} (Finsupp.{u1, u2} α N _inst_2) (Finsupp.{u1, u3} α M _inst_1)) (Equiv.symm.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u1, u2} α N _inst_2) (Finsupp.mapRange.equiv.{u1, u3, u2} α M N _inst_1 _inst_2 f hf hf')) (Finsupp.mapRange.equiv.{u1, u2, u3} α N M _inst_2 _inst_1 (Equiv.symm.{succ u3, succ u2} M N f) hf' hf)
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range.equiv_symm Finsupp.mapRange.equiv_symmₓ'. -/
 @[simp]
 theorem mapRange.equiv_symm (f : M ≃ N) (hf hf') :
@@ -363,7 +363,7 @@ theorem mapRange.addMonoidHom_toZeroHom (f : M →+ N) :
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (m : Multiset.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (fun (_x : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (Multiset.sum.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.addCommMonoid.{u1, u2} α M _inst_1) m)) (Multiset.sum.{max u1 u3} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.addCommMonoid.{u1, u3} α N _inst_2) (Multiset.map.{max u1 u2, max u1 u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (fun (x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) => Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (fun (_x : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) x) m))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u2} N] (f : AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (m : Multiset.{max u3 u1} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (Finsupp.mapRange.{u1, u3, u2} α M N (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f) (Multiset.sum.{max u1 u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addCommMonoid.{u1, u3} α M _inst_1) m)) (Multiset.sum.{max u1 u2} (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (Finsupp.addCommMonoid.{u1, u2} α N _inst_2) (Multiset.map.{max u3 u1, max u2 u1} (Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (fun (x : Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => Finsupp.mapRange.{u1, u3, u2} α M N (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f) x) m))
+  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u2} N] (f : AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (m : Multiset.{max u3 u1} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (Finsupp.mapRange.{u1, u3, u2} α M N (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f) (Multiset.sum.{max u1 u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addCommMonoid.{u1, u3} α M _inst_1) m)) (Multiset.sum.{max u1 u2} (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (Finsupp.addCommMonoid.{u1, u2} α N _inst_2) (Multiset.map.{max u3 u1, max u2 u1} (Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (fun (x : Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => Finsupp.mapRange.{u1, u3, u2} α M N (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f) x) m))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range_multiset_sum Finsupp.mapRange_multiset_sumₓ'. -/
 theorem mapRange_multiset_sum (f : M →+ N) (m : Multiset (α →₀ M)) :
     mapRange f f.map_zero m.Sum = (m.map fun x => mapRange f f.map_zero x).Sum :=
@@ -374,7 +374,7 @@ theorem mapRange_multiset_sum (f : M →+ N) (m : Multiset (α →₀ M)) :
 lean 3 declaration is
   forall {α : Type.{u1}} {ι : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u4} N] (f : AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (s : Finset.{u2} ι) (g : ι -> (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) (Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (fun (_x : AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)) f) (Finset.sum.{max u1 u3, u2} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) ι (Finsupp.addCommMonoid.{u1, u3} α M _inst_1) s (fun (x : ι) => g x))) (Finset.sum.{max u1 u4, u2} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) ι (Finsupp.addCommMonoid.{u1, u4} α N _inst_2) s (fun (x : ι) => Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (fun (_x : AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)) f) (g x)))
 but is expected to have type
-  forall {α : Type.{u1}} {ι : Type.{u2}} {M : Type.{u4}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u4} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (s : Finset.{u2} ι) (g : ι -> (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.mapRange.{u1, u4, u3} α M N (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (Finset.sum.{max u4 u1, u2} (Finsupp.{u1, u4} α M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) ι (Finsupp.addCommMonoid.{u1, u4} α M _inst_1) s (fun (x : ι) => g x))) (Finset.sum.{max u3 u1, u2} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) ι (Finsupp.addCommMonoid.{u1, u3} α N _inst_2) s (fun (x : ι) => Finsupp.mapRange.{u1, u4, u3} α M N (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (g x)))
+  forall {α : Type.{u1}} {ι : Type.{u2}} {M : Type.{u4}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u4} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (s : Finset.{u2} ι) (g : ι -> (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.mapRange.{u1, u4, u3} α M N (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (Finset.sum.{max u4 u1, u2} (Finsupp.{u1, u4} α M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) ι (Finsupp.addCommMonoid.{u1, u4} α M _inst_1) s (fun (x : ι) => g x))) (Finset.sum.{max u3 u1, u2} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) ι (Finsupp.addCommMonoid.{u1, u3} α N _inst_2) s (fun (x : ι) => Finsupp.mapRange.{u1, u4, u3} α M N (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (g x)))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range_finset_sum Finsupp.mapRange_finset_sumₓ'. -/
 theorem mapRange_finset_sum (f : M →+ N) (s : Finset ι) (g : ι → α →₀ M) :
     mapRange f f.map_zero (∑ x in s, g x) = ∑ x in s, mapRange f f.map_zero (g x) :=
@@ -498,7 +498,7 @@ def equivMapDomain (f : α ≃ β) (l : α →₀ M) : β →₀ M
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Equiv.{succ u1, succ u2} α β) (l : Finsupp.{u1, u3} α M _inst_1) (b : β), 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.equivMapDomain.{u1, u2, u3} α β M _inst_1 f l) b) (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) l (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β f) b))
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (l : Finsupp.{u3, u1} α M _inst_1) (b : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) 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) (Finsupp.equivMapDomain.{u3, u2, u1} α β M _inst_1 f l) b) (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) l (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} β α) (Equiv.symm.{succ u3, succ u2} α β f) b))
+  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (l : Finsupp.{u3, u1} α M _inst_1) (b : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) 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) (Finsupp.equivMapDomain.{u3, u2, u1} α β M _inst_1 f l) b) (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) l (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} β α) (Equiv.symm.{succ u3, succ u2} α β f) b))
 Case conversion may be inaccurate. Consider using '#align finsupp.equiv_map_domain_apply Finsupp.equivMapDomain_applyₓ'. -/
 @[simp]
 theorem equivMapDomain_apply (f : α ≃ β) (l : α →₀ M) (b : β) :
@@ -510,7 +510,7 @@ theorem equivMapDomain_apply (f : α ≃ β) (l : α →₀ M) (b : β) :
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Equiv.{succ u1, succ u2} α β) (l : Finsupp.{u2, u3} β M _inst_1) (a : α), Eq.{succ u3} M (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.equivMapDomain.{u2, u1, u3} β α M _inst_1 (Equiv.symm.{succ u1, succ u2} α β f) l) a) (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) l (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) f a))
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (l : Finsupp.{u2, u1} β M _inst_1) (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) 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) (Finsupp.equivMapDomain.{u2, u3, u1} β α M _inst_1 (Equiv.symm.{succ u3, succ u2} α β f) l) 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) l (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} α β) f a))
+  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (l : Finsupp.{u2, u1} β M _inst_1) (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) 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) (Finsupp.equivMapDomain.{u2, u3, u1} β α M _inst_1 (Equiv.symm.{succ u3, succ u2} α β f) l) 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) l (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} α β) f a))
 Case conversion may be inaccurate. Consider using '#align finsupp.equiv_map_domain_symm_apply Finsupp.equivMapDomain_symm_applyₓ'. -/
 theorem equivMapDomain_symm_apply (f : α ≃ β) (l : β →₀ M) (a : α) :
     equivMapDomain f.symm l a = l (f a) :=
@@ -560,7 +560,7 @@ theorem equivMapDomain_trans' (f : α ≃ β) (g : β ≃ γ) :
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Equiv.{succ u1, succ u2} α β) (a : α) (b : M), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.equivMapDomain.{u1, u2, u3} α β M _inst_1 f (Finsupp.single.{u1, u3} α M _inst_1 a b)) (Finsupp.single.{u2, u3} β M _inst_1 (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) f a) b)
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (a : α) (b : M), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} β M _inst_1) (Finsupp.equivMapDomain.{u3, u2, u1} α β M _inst_1 f (Finsupp.single.{u3, u1} α M _inst_1 a b)) (Finsupp.single.{u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α) => β) a) M _inst_1 (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} α β) f a) b)
+  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (a : α) (b : M), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} β M _inst_1) (Finsupp.equivMapDomain.{u3, u2, u1} α β M _inst_1 f (Finsupp.single.{u3, u1} α M _inst_1 a b)) (Finsupp.single.{u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) a) M _inst_1 (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} α β) f a) b)
 Case conversion may be inaccurate. Consider using '#align finsupp.equiv_map_domain_single Finsupp.equivMapDomain_singleₓ'. -/
 @[simp]
 theorem equivMapDomain_single (f : α ≃ β) (a : α) (b : M) :
@@ -597,7 +597,7 @@ def equivCongrLeft (f : α ≃ β) : (α →₀ M) ≃ (β →₀ M) := by
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Equiv.{succ u1, succ u2} α β) (l : Finsupp.{u1, u3} α M _inst_1), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (coeFn.{max 1 (max (max (succ u1) (succ u3)) (succ u2) (succ u3)) (max (succ u2) (succ u3)) (succ u1) (succ u3), max (max (succ u1) (succ u3)) (succ u2) (succ u3)} (Equiv.{max (succ u1) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u2, u3} β M _inst_1)) (fun (_x : Equiv.{max (succ u1) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u2, u3} β M _inst_1)) => (Finsupp.{u1, u3} α M _inst_1) -> (Finsupp.{u2, u3} β M _inst_1)) (Equiv.hasCoeToFun.{max (succ u1) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.{u2, u3} β M _inst_1)) (Finsupp.equivCongrLeft.{u1, u2, u3} α β M _inst_1 f) l) (Finsupp.equivMapDomain.{u1, u2, u3} α β M _inst_1 f l)
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (l : Finsupp.{u3, u1} α M _inst_1), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Finsupp.{u3, u1} α M _inst_1) => Finsupp.{u2, u1} β M _inst_1) l) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u2)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.{u2, u1} β M _inst_1)) (Finsupp.{u3, u1} α M _inst_1) (fun (_x : Finsupp.{u3, u1} α M _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Finsupp.{u3, u1} α M _inst_1) => Finsupp.{u2, u1} β M _inst_1) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.{u2, u1} β M _inst_1)) (Finsupp.equivCongrLeft.{u3, u2, u1} α β M _inst_1 f) l) (Finsupp.equivMapDomain.{u3, u2, u1} α β M _inst_1 f l)
+  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (l : Finsupp.{u3, u1} α M _inst_1), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Finsupp.{u3, u1} α M _inst_1) => Finsupp.{u2, u1} β M _inst_1) l) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u1) (succ u2)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.{u2, u1} β M _inst_1)) (Finsupp.{u3, u1} α M _inst_1) (fun (_x : Finsupp.{u3, u1} α M _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Finsupp.{u3, u1} α M _inst_1) => Finsupp.{u2, u1} β M _inst_1) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.{u2, u1} β M _inst_1)) (Finsupp.equivCongrLeft.{u3, u2, u1} α β M _inst_1 f) l) (Finsupp.equivMapDomain.{u3, u2, u1} α β M _inst_1 f l)
 Case conversion may be inaccurate. Consider using '#align finsupp.equiv_congr_left_apply Finsupp.equivCongrLeft_applyₓ'. -/
 @[simp]
 theorem equivCongrLeft_apply (f : α ≃ β) (l : α →₀ M) : equivCongrLeft f l = equivMapDomain f l :=
@@ -686,7 +686,7 @@ namespace Rat
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : DivisionRing.{u3} R] [_inst_3 : CharZero.{u3} R (AddGroupWithOne.toAddMonoidWithOne.{u3} R (NonAssocRing.toAddGroupWithOne.{u3} R (Ring.toNonAssocRing.{u3} R (DivisionRing.toRing.{u3} R _inst_2))))] (g : α -> M -> Rat), Eq.{succ u3} R ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Rat R (HasLiftT.mk.{1, succ u3} Rat R (CoeTCₓ.coe.{1, succ u3} Rat R (Rat.castCoe.{u3} R (DivisionRing.toHasRatCast.{u3} R _inst_2)))) (Finsupp.sum.{u1, u2, 0} α M Rat _inst_1 Rat.addCommMonoid f g)) (Finsupp.sum.{u1, u2, u3} α M R _inst_1 (AddCommGroup.toAddCommMonoid.{u3} R (NonUnitalNonAssocRing.toAddCommGroup.{u3} R (NonAssocRing.toNonUnitalNonAssocRing.{u3} R (Ring.toNonAssocRing.{u3} R (DivisionRing.toRing.{u3} R _inst_2))))) f (fun (a : α) (b : M) => (fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Rat R (HasLiftT.mk.{1, succ u3} Rat R (CoeTCₓ.coe.{1, succ u3} Rat R (Rat.castCoe.{u3} R (DivisionRing.toHasRatCast.{u3} R _inst_2)))) (g a b)))
 but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} {R : Type.{u3}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) [_inst_2 : DivisionRing.{u3} R] [_inst_3 : CharZero.{u3} R (AddGroupWithOne.toAddMonoidWithOne.{u3} R (Ring.toAddGroupWithOne.{u3} R (DivisionRing.toRing.{u3} R _inst_2)))] (g : α -> M -> Rat), Eq.{succ u3} R (RatCast.ratCast.{u3} R (DivisionRing.toRatCast.{u3} R _inst_2) (Finsupp.sum.{u2, u1, 0} α M Rat _inst_1 Rat.addCommMonoid f g)) (Finsupp.sum.{u2, u1, u3} α M R _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} R (NonAssocRing.toNonUnitalNonAssocRing.{u3} R (Ring.toNonAssocRing.{u3} R (DivisionRing.toRing.{u3} R _inst_2))))) f (fun (a : α) (b : M) => RatCast.ratCast.{u3} R (DivisionRing.toRatCast.{u3} R _inst_2) (g a b)))
+  forall {α : Type.{u2}} {M : Type.{u1}} {R : Type.{u3}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) [_inst_2 : DivisionRing.{u3} R] [_inst_3 : CharZero.{u3} R (AddGroupWithOne.toAddMonoidWithOne.{u3} R (Ring.toAddGroupWithOne.{u3} R (DivisionRing.toRing.{u3} R _inst_2)))] (g : α -> M -> Rat), Eq.{succ u3} R (Rat.cast.{u3} R (DivisionRing.toRatCast.{u3} R _inst_2) (Finsupp.sum.{u2, u1, 0} α M Rat _inst_1 Rat.addCommMonoid f g)) (Finsupp.sum.{u2, u1, u3} α M R _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} R (NonAssocRing.toNonUnitalNonAssocRing.{u3} R (Ring.toNonAssocRing.{u3} R (DivisionRing.toRing.{u3} R _inst_2))))) f (fun (a : α) (b : M) => Rat.cast.{u3} R (DivisionRing.toRatCast.{u3} R _inst_2) (g a b)))
 Case conversion may be inaccurate. Consider using '#align rat.cast_finsupp_sum Rat.cast_finsupp_sumₓ'. -/
 @[simp, norm_cast]
 theorem cast_finsupp_sum [DivisionRing R] [CharZero R] (g : α → M → ℚ) :
@@ -698,7 +698,7 @@ theorem cast_finsupp_sum [DivisionRing R] [CharZero R] (g : α → M → ℚ) :
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : Field.{u3} R] [_inst_3 : CharZero.{u3} R (AddGroupWithOne.toAddMonoidWithOne.{u3} R (NonAssocRing.toAddGroupWithOne.{u3} R (Ring.toNonAssocRing.{u3} R (DivisionRing.toRing.{u3} R (Field.toDivisionRing.{u3} R _inst_2)))))] (g : α -> M -> Rat), Eq.{succ u3} R ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Rat R (HasLiftT.mk.{1, succ u3} Rat R (CoeTCₓ.coe.{1, succ u3} Rat R (Rat.castCoe.{u3} R (DivisionRing.toHasRatCast.{u3} R (Field.toDivisionRing.{u3} R _inst_2))))) (Finsupp.prod.{u1, u2, 0} α M Rat _inst_1 Rat.commMonoid f g)) (Finsupp.prod.{u1, u2, u3} α M R _inst_1 (CommRing.toCommMonoid.{u3} R (Field.toCommRing.{u3} R _inst_2)) f (fun (a : α) (b : M) => (fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Rat R (HasLiftT.mk.{1, succ u3} Rat R (CoeTCₓ.coe.{1, succ u3} Rat R (Rat.castCoe.{u3} R (DivisionRing.toHasRatCast.{u3} R (Field.toDivisionRing.{u3} R _inst_2))))) (g a b)))
 but is expected to have type
-  forall {α : Type.{u2}} {M : Type.{u1}} {R : Type.{u3}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) [_inst_2 : Field.{u3} R] [_inst_3 : CharZero.{u3} R (AddGroupWithOne.toAddMonoidWithOne.{u3} R (Ring.toAddGroupWithOne.{u3} R (DivisionRing.toRing.{u3} R (Field.toDivisionRing.{u3} R _inst_2))))] (g : α -> M -> Rat), Eq.{succ u3} R (RatCast.ratCast.{u3} R (Field.toRatCast.{u3} R _inst_2) (Finsupp.prod.{u2, u1, 0} α M Rat _inst_1 Rat.commMonoid f g)) (Finsupp.prod.{u2, u1, u3} α M R _inst_1 (CommRing.toCommMonoid.{u3} R (Field.toCommRing.{u3} R _inst_2)) f (fun (a : α) (b : M) => RatCast.ratCast.{u3} R (Field.toRatCast.{u3} R _inst_2) (g a b)))
+  forall {α : Type.{u2}} {M : Type.{u1}} {R : Type.{u3}} [_inst_1 : Zero.{u1} M] (f : Finsupp.{u2, u1} α M _inst_1) [_inst_2 : Field.{u3} R] [_inst_3 : CharZero.{u3} R (AddGroupWithOne.toAddMonoidWithOne.{u3} R (Ring.toAddGroupWithOne.{u3} R (DivisionRing.toRing.{u3} R (Field.toDivisionRing.{u3} R _inst_2))))] (g : α -> M -> Rat), Eq.{succ u3} R (Rat.cast.{u3} R (Field.toRatCast.{u3} R _inst_2) (Finsupp.prod.{u2, u1, 0} α M Rat _inst_1 Rat.commMonoid f g)) (Finsupp.prod.{u2, u1, u3} α M R _inst_1 (CommRing.toCommMonoid.{u3} R (Field.toCommRing.{u3} R _inst_2)) f (fun (a : α) (b : M) => Rat.cast.{u3} R (Field.toRatCast.{u3} R _inst_2) (g a b)))
 Case conversion may be inaccurate. Consider using '#align rat.cast_finsupp_prod Rat.cast_finsupp_prodₓ'. -/
 @[simp, norm_cast]
 theorem cast_finsupp_prod [Field R] [CharZero R] (g : α → M → ℚ) :
@@ -836,7 +836,7 @@ theorem mapDomain_add {f : α → β} : mapDomain f (v₁ + v₂) = mapDomain f
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {f : Equiv.{succ u1, succ u2} α β} (x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (a : β), Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => β -> M) (Finsupp.coeFun.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) f) x) a) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => α -> M) (Finsupp.coeFun.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) x (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β f) a))
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] {f : Equiv.{succ u3, succ u2} α β} (x : Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{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 (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.mapDomain.{u3, u2, u1} α β M _inst_1 (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} α β) f) x) a) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) x (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} β α) (Equiv.symm.{succ u3, succ u2} α β f) a))
+  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] {f : Equiv.{succ u3, succ u2} α β} (x : Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{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 (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.mapDomain.{u3, u2, u1} α β M _inst_1 (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} α β) f) x) a) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) x (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} β α) (Equiv.symm.{succ u3, succ u2} α β f) a))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_equiv_apply Finsupp.mapDomain_equiv_applyₓ'. -/
 @[simp]
 theorem mapDomain_equiv_apply {f : α ≃ β} (x : α →₀ M) (a : β) : mapDomain f x a = x (f.symm a) :=
@@ -989,7 +989,7 @@ theorem prod_mapDomain_index [CommMonoid N] {f : α → β} {s : α →₀ M} {h
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u4} N] {f : α -> β} {s : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))} (h : β -> (AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))), Eq.{succ u4} N (Finsupp.sum.{u2, u3, u4} β M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) _inst_2 (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f s) (fun (b : β) (m : M) => coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (fun (_x : AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (h b) m)) (Finsupp.sum.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) _inst_2 s (fun (a : α) (m : M) => coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (fun (_x : AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (h (f a)) m))
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u1}} {M : Type.{u2}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u4} N] {f : α -> β} {s : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))} (h : β -> (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))), Eq.{succ u4} N (Finsupp.sum.{u1, u2, u4} β M N (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) _inst_2 (Finsupp.mapDomain.{u3, u1, u2} α β M _inst_1 f s) (fun (b : β) (m : M) => FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u2 u4, u2, u4} (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) M N (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toAdd.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u2 u4, u2, u4} (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))))) (h b) m)) (Finsupp.sum.{u3, u2, u4} α M N (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) _inst_2 s (fun (a : α) (m : M) => FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u2 u4, u2, u4} (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) M N (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toAdd.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u2 u4, u2, u4} (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))))) (h (f a)) m))
+  forall {α : Type.{u3}} {β : Type.{u1}} {M : Type.{u2}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u4} N] {f : α -> β} {s : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))} (h : β -> (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))), Eq.{succ u4} N (Finsupp.sum.{u1, u2, u4} β M N (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) _inst_2 (Finsupp.mapDomain.{u3, u1, u2} α β M _inst_1 f s) (fun (b : β) (m : M) => FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u2 u4, u2, u4} (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) M N (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toAdd.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u2 u4, u2, u4} (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))))) (h b) m)) (Finsupp.sum.{u3, u2, u4} α M N (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) _inst_2 s (fun (a : α) (m : M) => FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u2 u4, u2, u4} (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) M N (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toAdd.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u2 u4, u2, u4} (AddMonoidHom.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u2, u4} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))))) (h (f a)) m))
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_map_domain_index_add_monoid_hom Finsupp.sum_mapDomain_index_addMonoidHomₓ'. -/
 -- Note that in `prod_map_domain_index`, `M` is still an additive monoid,
 -- so there is no analogous version in terms of `monoid_hom`.
@@ -1128,7 +1128,7 @@ theorem mapDomain_injOn (S : Set α) {f : α → β} (hf : Set.InjOn f S) :
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_2 : AddCommMonoid.{u3} M] (f : Equiv.{succ u1, succ u2} α β) (l : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)))), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)))) (Finsupp.equivMapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) f l) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_2 (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) f) l)
 but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} {M : Type.{u3}} [_inst_2 : AddCommMonoid.{u3} M] (f : Equiv.{succ u2, succ u1} α β) (l : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.equivMapDomain.{u2, u1, u3} α β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) f l) (Finsupp.mapDomain.{u2, u1, u3} α β M _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) f) l)
+  forall {α : Type.{u2}} {β : Type.{u1}} {M : Type.{u3}} [_inst_2 : AddCommMonoid.{u3} M] (f : Equiv.{succ u2, succ u1} α β) (l : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2))) (Finsupp.equivMapDomain.{u2, u1, u3} α β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) f l) (Finsupp.mapDomain.{u2, u1, u3} α β M _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) f) l)
 Case conversion may be inaccurate. Consider using '#align finsupp.equiv_map_domain_eq_map_domain Finsupp.equivMapDomain_eq_mapDomainₓ'. -/
 theorem equivMapDomain_eq_mapDomain {M} [AddCommMonoid M] (f : α ≃ β) (l : α →₀ M) :
     equivMapDomain f l = mapDomain f l := by ext x <;> simp [map_domain_equiv_apply]
@@ -1205,7 +1205,7 @@ variable [Zero M]
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : α -> β) (hif : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, 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)))))))) (Set.injOn_empty.{u1, u2} α β f)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.comapDomain.{u1, u2, u3} α β M _inst_1 f (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)))) hif) (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 : α -> β) (hif : optParam.{0} (Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f (Finset.toSet.{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))))))) (Eq.rec.{0, succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.7192 : Set.{u2} β) (h._@.Mathlib.Data.Finsupp.Basic._hyg.7193 : Eq.{succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) x._@.Mathlib.Data.Finsupp.Basic._hyg.7192) => Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f x._@.Mathlib.Data.Finsupp.Basic._hyg.7192)) (Set.injOn_empty.{u2, u3} α β f) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (Eq.symm.{succ u2} (Set.{u2} β) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (Finset.coe_empty.{u2} β)))), Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.comapDomain.{u3, 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))) hif) (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)))
+  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : α -> β) (hif : optParam.{0} (Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f (Finset.toSet.{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))))))) (Eq.rec.{0, succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.7251 : Set.{u2} β) (h._@.Mathlib.Data.Finsupp.Basic._hyg.7252 : Eq.{succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) x._@.Mathlib.Data.Finsupp.Basic._hyg.7251) => Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f x._@.Mathlib.Data.Finsupp.Basic._hyg.7251)) (Set.injOn_empty.{u2, u3} α β f) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (Eq.symm.{succ u2} (Set.{u2} β) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (Finset.coe_empty.{u2} β)))), Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.comapDomain.{u3, 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))) hif) (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.comap_domain_zero Finsupp.comapDomain_zeroₓ'. -/
 /-- Note the `hif` argument is needed for this to work in `rw`. -/
 @[simp]
@@ -2192,7 +2192,7 @@ def sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] : (Sum α β →₀
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (x : α), Eq.{succ u3} γ (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α γ _inst_1) (fun (_x : Finsupp.{u1, u3} α γ _inst_1) => α -> γ) (Finsupp.coeFun.{u1, u3} α γ _inst_1) (Prod.fst.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))) (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3), max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))} (Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) => (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) -> (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1) f)) x) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) f (Sum.inl.{u1, u2} α β x))
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α γ _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) _x) (Finsupp.funLike.{u3, u1} α γ _inst_1) (Prod.fst.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (succ u1) (succ (max u2 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1) f)) x) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) f (Sum.inl.{u3, u2} α β x))
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α γ _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) _x) (Finsupp.funLike.{u3, u1} α γ _inst_1) (Prod.fst.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (succ u1) (succ (max u2 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1) f)) x) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) f (Sum.inl.{u3, u2} α β x))
 Case conversion may be inaccurate. Consider using '#align finsupp.fst_sum_finsupp_equiv_prod_finsupp Finsupp.fst_sumFinsuppEquivProdFinsuppₓ'. -/
 theorem fst_sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] (f : Sum α β →₀ γ) (x : α) :
     (sumFinsuppEquivProdFinsupp f).1 x = f (Sum.inl x) :=
@@ -2203,7 +2203,7 @@ theorem fst_sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] (f : Sum α
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (y : β), Eq.{succ u3} γ (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β γ _inst_1) (fun (_x : Finsupp.{u2, u3} β γ _inst_1) => β -> γ) (Finsupp.coeFun.{u2, u3} β γ _inst_1) (Prod.snd.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))) (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3), max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))} (Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) => (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) -> (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1) f)) y) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) f (Sum.inr.{u1, u2} α β y))
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β γ _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) _x) (Finsupp.funLike.{u2, u1} β γ _inst_1) (Prod.snd.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (succ u1) (succ (max u2 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1) f)) y) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) f (Sum.inr.{u3, u2} α β y))
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β γ _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) _x) (Finsupp.funLike.{u2, u1} β γ _inst_1) (Prod.snd.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (succ u1) (succ (max u2 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1) f)) y) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) f (Sum.inr.{u3, u2} α β y))
 Case conversion may be inaccurate. Consider using '#align finsupp.snd_sum_finsupp_equiv_prod_finsupp Finsupp.snd_sumFinsuppEquivProdFinsuppₓ'. -/
 theorem snd_sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] (f : Sum α β →₀ γ) (y : β) :
     (sumFinsuppEquivProdFinsupp f).2 y = f (Sum.inr y) :=
@@ -2214,7 +2214,7 @@ theorem snd_sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] (f : Sum α
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (fg : Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (x : α), Eq.{succ u3} γ (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3)), max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (fun (_x : Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) => (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) -> (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.hasCoeToFun.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.symm.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1)) fg) (Sum.inl.{u1, u2} α β x)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α γ _inst_1) (fun (_x : Finsupp.{u1, u3} α γ _inst_1) => α -> γ) (Finsupp.coeFun.{u1, u3} α γ _inst_1) (Prod.fst.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) fg) x)
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Equiv.symm.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1)) fg) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α γ _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) _x) (Finsupp.funLike.{u3, u1} α γ _inst_1) (Prod.fst.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) fg) x)
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Equiv.symm.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1)) fg) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α γ _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) _x) (Finsupp.funLike.{u3, u1} α γ _inst_1) (Prod.fst.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) fg) x)
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_equiv_prod_finsupp_symm_inl Finsupp.sumFinsuppEquivProdFinsupp_symm_inlₓ'. -/
 theorem sumFinsuppEquivProdFinsupp_symm_inl {α β γ : Type _} [Zero γ] (fg : (α →₀ γ) × (β →₀ γ))
     (x : α) : (sumFinsuppEquivProdFinsupp.symm fg) (Sum.inl x) = fg.1 x :=
@@ -2225,7 +2225,7 @@ theorem sumFinsuppEquivProdFinsupp_symm_inl {α β γ : Type _} [Zero γ] (fg :
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (fg : Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (y : β), Eq.{succ u3} γ (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3)), max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (fun (_x : Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) => (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) -> (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.hasCoeToFun.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.symm.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1)) fg) (Sum.inr.{u1, u2} α β y)) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β γ _inst_1) (fun (_x : Finsupp.{u2, u3} β γ _inst_1) => β -> γ) (Finsupp.coeFun.{u2, u3} β γ _inst_1) (Prod.snd.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) fg) y)
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Equiv.symm.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1)) fg) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β γ _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) _x) (Finsupp.funLike.{u2, u1} β γ _inst_1) (Prod.snd.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) fg) y)
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Equiv.symm.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1)) fg) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β γ _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) _x) (Finsupp.funLike.{u2, u1} β γ _inst_1) (Prod.snd.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) fg) y)
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_equiv_prod_finsupp_symm_inr Finsupp.sumFinsuppEquivProdFinsupp_symm_inrₓ'. -/
 theorem sumFinsuppEquivProdFinsupp_symm_inr {α β γ : Type _} [Zero γ] (fg : (α →₀ γ) × (β →₀ γ))
     (y : β) : (sumFinsuppEquivProdFinsupp.symm fg) (Sum.inr y) = fg.2 y :=
@@ -2257,7 +2257,7 @@ def sumFinsuppAddEquivProdFinsupp {α β : Type _} : (Sum α β →₀ M) ≃+ (
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (f : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (x : α), Eq.{succ u1} M (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => α -> M) (Finsupp.coeFun.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.fst.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1)), max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1))} (AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (fun (_x : AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) => (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) -> (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))) (AddEquiv.hasCoeToFun.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β) f)) x) (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.coeFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) f (Sum.inl.{u2, u3} α β x))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.fst.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1)))) (AddMonoidHomClass.toAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddEquivClass.instAddMonoidHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β) f)) x) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) f (Sum.inl.{u3, u2} α β x))
+  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.fst.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1)))) (AddMonoidHomClass.toAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddEquivClass.instAddMonoidHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β) f)) x) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) f (Sum.inl.{u3, u2} α β x))
 Case conversion may be inaccurate. Consider using '#align finsupp.fst_sum_finsupp_add_equiv_prod_finsupp Finsupp.fst_sumFinsuppAddEquivProdFinsuppₓ'. -/
 theorem fst_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀ M) (x : α) :
     (sumFinsuppAddEquivProdFinsupp f).1 x = f (Sum.inl x) :=
@@ -2268,7 +2268,7 @@ theorem fst_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (f : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (y : β), Eq.{succ u1} M (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => β -> M) (Finsupp.coeFun.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.snd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1)), max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1))} (AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (fun (_x : AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) => (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) -> (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))) (AddEquiv.hasCoeToFun.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β) f)) y) (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.coeFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) f (Sum.inr.{u2, u3} α β y))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.snd.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1)))) (AddMonoidHomClass.toAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddEquivClass.instAddMonoidHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β) f)) y) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) f (Sum.inr.{u3, u2} α β y))
+  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.snd.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1)))) (AddMonoidHomClass.toAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddEquivClass.instAddMonoidHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β) f)) y) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) f (Sum.inr.{u3, u2} α β y))
 Case conversion may be inaccurate. Consider using '#align finsupp.snd_sum_finsupp_add_equiv_prod_finsupp Finsupp.snd_sumFinsuppAddEquivProdFinsuppₓ'. -/
 theorem snd_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀ M) (y : β) :
     (sumFinsuppAddEquivProdFinsupp f).2 y = f (Sum.inr y) :=
@@ -2279,7 +2279,7 @@ theorem snd_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (fg : Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (x : α), Eq.{succ u1} M (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.coeFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1)), max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1))} (AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) -> (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (AddEquiv.hasCoeToFun.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β)) fg) (Sum.inl.{u2, u3} α β x)) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => α -> M) (Finsupp.coeFun.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.fst.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) fg) x)
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1)))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1))) (AddMonoidHomClass.toAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (AddEquivClass.instAddMonoidHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β)) fg) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.fst.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) fg) x)
+  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1)))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1))) (AddMonoidHomClass.toAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (AddEquivClass.instAddMonoidHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β)) fg) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.fst.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) fg) x)
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inl Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inlₓ'. -/
 theorem sumFinsuppAddEquivProdFinsupp_symm_inl {α β : Type _} (fg : (α →₀ M) × (β →₀ M)) (x : α) :
     (sumFinsuppAddEquivProdFinsupp.symm fg) (Sum.inl x) = fg.1 x :=
@@ -2290,7 +2290,7 @@ theorem sumFinsuppAddEquivProdFinsupp_symm_inl {α β : Type _} (fg : (α →₀
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (fg : Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (y : β), Eq.{succ u1} M (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.coeFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1)), max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1))} (AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) -> (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (AddEquiv.hasCoeToFun.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β)) fg) (Sum.inr.{u2, u3} α β y)) (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => β -> M) (Finsupp.coeFun.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.snd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) fg) y)
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1)))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1))) (AddMonoidHomClass.toAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (AddEquivClass.instAddMonoidHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β)) fg) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.snd.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) fg) y)
+  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1)))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1))) (AddMonoidHomClass.toAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (AddEquivClass.instAddMonoidHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β)) fg) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.snd.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) fg) y)
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inr Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inrₓ'. -/
 theorem sumFinsuppAddEquivProdFinsupp_symm_inr {α β : Type _} (fg : (α →₀ M) × (β →₀ M)) (y : β) :
     (sumFinsuppAddEquivProdFinsupp.symm fg) (Sum.inr y) = fg.2 y :=
@@ -2342,7 +2342,7 @@ attribute [local instance] comap_has_smul
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {G : Type.{u3}} [_inst_1 : Monoid.{u3} G] [_inst_2 : MulAction.{u3, u1} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (SMul.smul.{u3, max u1 u2} G (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (Finsupp.comapSMul.{u1, u2, u3} α M G _inst_1 _inst_2 _inst_3) g f) (Finsupp.mapDomain.{u1, u1, u2} α α M _inst_3 (SMul.smul.{u3, u1} G α (MulAction.toHasSmul.{u3, u1} G α _inst_1 _inst_2) g) f)
 but is expected to have type
-  forall {α : Type.{u3}} {M : Type.{u2}} {G : Type.{u1}} [_inst_1 : Monoid.{u1} G] [_inst_2 : MulAction.{u1, u3} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))), Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (instHSMul.{u1, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.comapSMul.{u3, u2, u1} α M G _inst_1 _inst_2 _inst_3)) g f) (Finsupp.mapDomain.{u3, u3, u2} α α M _inst_3 ((fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.14291 : G) (x._@.Mathlib.Data.Finsupp.Basic._hyg.14293 : α) => HSMul.hSMul.{u1, u3, u3} G α α (instHSMul.{u1, u3} G α (MulAction.toSMul.{u1, u3} G α _inst_1 _inst_2)) x._@.Mathlib.Data.Finsupp.Basic._hyg.14291 x._@.Mathlib.Data.Finsupp.Basic._hyg.14293) g) f)
+  forall {α : Type.{u3}} {M : Type.{u2}} {G : Type.{u1}} [_inst_1 : Monoid.{u1} G] [_inst_2 : MulAction.{u1, u3} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))), Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (instHSMul.{u1, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.comapSMul.{u3, u2, u1} α M G _inst_1 _inst_2 _inst_3)) g f) (Finsupp.mapDomain.{u3, u3, u2} α α M _inst_3 ((fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.14420 : G) (x._@.Mathlib.Data.Finsupp.Basic._hyg.14422 : α) => HSMul.hSMul.{u1, u3, u3} G α α (instHSMul.{u1, u3} G α (MulAction.toSMul.{u1, u3} G α _inst_1 _inst_2)) x._@.Mathlib.Data.Finsupp.Basic._hyg.14420 x._@.Mathlib.Data.Finsupp.Basic._hyg.14422) g) f)
 Case conversion may be inaccurate. Consider using '#align finsupp.comap_smul_def Finsupp.comapSMul_defₓ'. -/
 theorem comapSMul_def (g : G) (f : α →₀ M) : g • f = mapDomain ((· • ·) g) f :=
   rfl
@@ -2667,7 +2667,7 @@ theorem sum_smul_index' [AddMonoid M] [DistribSMul R M] [AddCommMonoid N] {g : 
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {R : Type.{u4}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] [_inst_3 : DistribSMul.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1)] {g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))} {b : R} {h : α -> (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))}, Eq.{succ u3} N (Finsupp.sum.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2 (SMul.smul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u4} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_3))) b g) (fun (a : α) => coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (fun (_x : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (h a))) (Finsupp.sum.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2 g (fun (i : α) (c : M) => coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (fun (_x : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (h i) (SMul.smul.{u4, u2} R M (SMulZeroClass.toHasSmul.{u4, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_3)) b c)))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u4}} {N : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u4} M] [_inst_2 : AddCommMonoid.{u3} N] [_inst_3 : DistribSMul.{u2, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1)] {g : Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)} {b : R} {h : α -> (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))}, Eq.{succ u3} N (Finsupp.sum.{u1, u4, u3} α M N (AddMonoid.toZero.{u4} M _inst_1) _inst_2 (HSMul.hSMul.{u2, max u1 u4, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u2, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u1, u4, u2} α M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) _inst_3)))) b g) (fun (a : α) => FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M _inst_1)) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) (h a))) (Finsupp.sum.{u1, u4, u3} α M N (AddMonoid.toZero.{u4} M _inst_1) _inst_2 g (fun (i : α) (c : M) => FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M _inst_1)) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) (h i) (HSMul.hSMul.{u2, u4, u4} R M M (instHSMul.{u2, u4} R M (SMulZeroClass.toSMul.{u2, u4} R M (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) _inst_3))) b c)))
+  forall {α : Type.{u1}} {M : Type.{u4}} {N : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u4} M] [_inst_2 : AddCommMonoid.{u3} N] [_inst_3 : DistribSMul.{u2, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1)] {g : Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)} {b : R} {h : α -> (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))}, Eq.{succ u3} N (Finsupp.sum.{u1, u4, u3} α M N (AddMonoid.toZero.{u4} M _inst_1) _inst_2 (HSMul.hSMul.{u2, max u1 u4, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u2, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u1, u4, u2} α M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) _inst_3)))) b g) (fun (a : α) => FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M _inst_1)) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) (h a))) (Finsupp.sum.{u1, u4, u3} α M N (AddMonoid.toZero.{u4} M _inst_1) _inst_2 g (fun (i : α) (c : M) => FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M _inst_1)) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) (h i) (HSMul.hSMul.{u2, u4, u4} R M M (instHSMul.{u2, u4} R M (SMulZeroClass.toSMul.{u2, u4} R M (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) _inst_3))) b c)))
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_smul_index_add_monoid_hom Finsupp.sum_smul_index_addMonoidHomₓ'. -/
 /-- A version of `finsupp.sum_smul_index'` for bundled additive maps. -/
 theorem sum_smul_index_addMonoidHom [AddMonoid M] [AddCommMonoid N] [DistribSMul R M] {g : α →₀ M}
@@ -2997,7 +2997,7 @@ noncomputable def sigmaFinsuppAddEquivPiFinsupp {α : Type _} {ιs : η → Type
 lean 3 declaration is
   forall {η : Type.{u1}} [_inst_2 : Fintype.{u1} η] {α : Type.{u2}} {ιs : η -> Type.{u3}} [_inst_4 : AddMonoid.{u2} α] (f : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (j : η) (i : ιs j), Eq.{succ u2} α (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (_x : Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) => (ιs j) -> α) (Finsupp.coeFun.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (coeFn.{max (succ (max (max u1 u3) u2)) (succ (max u1 u3 u2)), max (succ (max (max u1 u3) u2)) (succ (max u1 u3 u2))} (AddEquiv.{max (max u1 u3) u2, max u1 u3 u2} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (Finsupp.add.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (i : η) => Finsupp.add.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) (fun (_x : AddEquiv.{max (max u1 u3) u2, max u1 u3 u2} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (Finsupp.add.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (i : η) => Finsupp.add.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) => (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) -> (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) (AddEquiv.hasCoeToFun.{max (max u1 u3) u2, max u1 u3 u2} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (Finsupp.add.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (i : η) => Finsupp.add.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) (Finsupp.sigmaFinsuppAddEquivPiFinsupp.{u1, u2, u3} η _inst_2 α (fun (j : η) => ιs j) _inst_4) f j) i) (coeFn.{max (succ (max u1 u3)) (succ u2), max (succ (max u1 u3)) (succ u2)} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (_x : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) => (Sigma.{u1, u3} η (fun (j : η) => ιs j)) -> α) (Finsupp.coeFun.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) f (Sigma.mk.{u1, u3} η (fun (j : η) => ιs j) j i))
 but is expected to have type
-  forall {η : Type.{u1}} [_inst_2 : Fintype.{u1} η] {α : Type.{u3}} {ιs : η -> Type.{u2}} [_inst_4 : AddMonoid.{u3} α] (f : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (j : η) (i : ιs j), Eq.{succ u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : ιs j) => α) i) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (ιs j) (fun (_x : ιs j) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : ιs j) => α) _x) (Finsupp.funLike.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max u3 u2 u1, max (max u1 u3) u2} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (_x : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) => forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u3 u2 u1, max (max u1 u3) u2} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4))) (AddEquivClass.instAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u3 u2 u1, max (max u1 u3) u2} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4))) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))))) (Finsupp.sigmaFinsuppAddEquivPiFinsupp.{u1, u3, u2} η _inst_2 α (fun (j : η) => ιs j) _inst_4) f j) i) (FunLike.coe.{max (succ (max u1 u2)) (succ u3), succ (max u1 u2), succ u3} (Finsupp.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (Sigma.{u1, u2} η (fun (j : η) => ιs j)) (fun (_x : Sigma.{u1, u2} η (fun (j : η) => ιs j)) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sigma.{u1, u2} η (fun (j : η) => ιs j)) => α) _x) (Finsupp.funLike.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) f (Sigma.mk.{u1, u2} η (fun (j : η) => ιs j) j i))
+  forall {η : Type.{u1}} [_inst_2 : Fintype.{u1} η] {α : Type.{u3}} {ιs : η -> Type.{u2}} [_inst_4 : AddMonoid.{u3} α] (f : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (j : η) (i : ιs j), Eq.{succ u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : ιs j) => α) i) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (ιs j) (fun (_x : ιs j) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : ιs j) => α) _x) (Finsupp.funLike.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max u3 u2 u1, max (max u1 u3) u2} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (_x : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) => forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u3 u2 u1, max (max u1 u3) u2} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.addMonoid.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α _inst_4))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Pi.addZeroClass.{u1, max u2 u3} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => AddMonoid.toAddZeroClass.{max u2 u3} (Finsupp.{u2, u3} (ιs i) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.addMonoid.{u2, u3} (ιs i) α _inst_4)))) (AddMonoidHomClass.toAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u3 u2 u1, max (max u1 u3) u2} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.addMonoid.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α _inst_4)) (Pi.addZeroClass.{u1, max u2 u3} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => AddMonoid.toAddZeroClass.{max u2 u3} (Finsupp.{u2, u3} (ιs i) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.addMonoid.{u2, u3} (ιs i) α _inst_4))) (AddEquivClass.instAddMonoidHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u3 u2 u1, max (max u1 u3) u2} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.addMonoid.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α _inst_4)) (Pi.addZeroClass.{u1, max u2 u3} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => AddMonoid.toAddZeroClass.{max u2 u3} (Finsupp.{u2, u3} (ιs i) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.addMonoid.{u2, u3} (ιs i) α _inst_4))) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4))))))) (Finsupp.sigmaFinsuppAddEquivPiFinsupp.{u1, u3, u2} η _inst_2 α (fun (j : η) => ιs j) _inst_4) f j) i) (FunLike.coe.{max (succ (max u1 u2)) (succ u3), succ (max u1 u2), succ u3} (Finsupp.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (Sigma.{u1, u2} η (fun (j : η) => ιs j)) (fun (_x : Sigma.{u1, u2} η (fun (j : η) => ιs j)) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sigma.{u1, u2} η (fun (j : η) => ιs j)) => α) _x) (Finsupp.funLike.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) f (Sigma.mk.{u1, u2} η (fun (j : η) => ιs j) j i))
 Case conversion may be inaccurate. Consider using '#align finsupp.sigma_finsupp_add_equiv_pi_finsupp_apply Finsupp.sigmaFinsuppAddEquivPiFinsupp_applyₓ'. -/
 @[simp]
 theorem sigmaFinsuppAddEquivPiFinsupp_apply {α : Type _} {ιs : η → Type _} [AddMonoid α]
Diff
@@ -363,7 +363,7 @@ theorem mapRange.addMonoidHom_toZeroHom (f : M →+ N) :
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (m : Multiset.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (fun (_x : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (Multiset.sum.{max u1 u2} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.addCommMonoid.{u1, u2} α M _inst_1) m)) (Multiset.sum.{max u1 u3} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.addCommMonoid.{u1, u3} α N _inst_2) (Multiset.map.{max u1 u2, max u1 u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (fun (x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) => Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (fun (_x : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) x) m))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u2} N] (f : AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (m : Multiset.{max u3 u1} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (Finsupp.mapRange.{u1, u3, u2} α M N (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f) (Multiset.sum.{max u1 u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addCommMonoid.{u1, u3} α M _inst_1) m)) (Multiset.sum.{max u1 u2} (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (Finsupp.addCommMonoid.{u1, u2} α N _inst_2) (Multiset.map.{max u3 u1, max u2 u1} (Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (fun (x : Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => Finsupp.mapRange.{u1, u3, u2} α M N (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f) x) m))
+  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u2} N] (f : AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (m : Multiset.{max u3 u1} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (Finsupp.mapRange.{u1, u3, u2} α M N (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f) (Multiset.sum.{max u1 u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.addCommMonoid.{u1, u3} α M _inst_1) m)) (Multiset.sum.{max u1 u2} (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (Finsupp.addCommMonoid.{u1, u2} α N _inst_2) (Multiset.map.{max u3 u1, max u2 u1} (Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u2} α N (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (fun (x : Finsupp.{u1, u3} α M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => Finsupp.mapRange.{u1, u3, u2} α M N (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u3, u2} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))))) f) (AddMonoidHom.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f) x) m))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range_multiset_sum Finsupp.mapRange_multiset_sumₓ'. -/
 theorem mapRange_multiset_sum (f : M →+ N) (m : Multiset (α →₀ M)) :
     mapRange f f.map_zero m.Sum = (m.map fun x => mapRange f f.map_zero x).Sum :=
@@ -374,7 +374,7 @@ theorem mapRange_multiset_sum (f : M →+ N) (m : Multiset (α →₀ M)) :
 lean 3 declaration is
   forall {α : Type.{u1}} {ι : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u4} N] (f : AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (s : Finset.{u2} ι) (g : ι -> (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) (Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (fun (_x : AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)) f) (Finset.sum.{max u1 u3, u2} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) ι (Finsupp.addCommMonoid.{u1, u3} α M _inst_1) s (fun (x : ι) => g x))) (Finset.sum.{max u1 u4, u2} (Finsupp.{u1, u4} α N (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) ι (Finsupp.addCommMonoid.{u1, u4} α N _inst_2) s (fun (x : ι) => Finsupp.mapRange.{u1, u3, u4} α M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) (fun (_x : AddMonoidHom.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)) f) (g x)))
 but is expected to have type
-  forall {α : Type.{u1}} {ι : Type.{u2}} {M : Type.{u4}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u4} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (s : Finset.{u2} ι) (g : ι -> (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.mapRange.{u1, u4, u3} α M N (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (Finset.sum.{max u4 u1, u2} (Finsupp.{u1, u4} α M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) ι (Finsupp.addCommMonoid.{u1, u4} α M _inst_1) s (fun (x : ι) => g x))) (Finset.sum.{max u3 u1, u2} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) ι (Finsupp.addCommMonoid.{u1, u3} α N _inst_2) s (fun (x : ι) => Finsupp.mapRange.{u1, u4, u3} α M N (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (g x)))
+  forall {α : Type.{u1}} {ι : Type.{u2}} {M : Type.{u4}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u4} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (s : Finset.{u2} ι) (g : ι -> (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.mapRange.{u1, u4, u3} α M N (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (Finset.sum.{max u4 u1, u2} (Finsupp.{u1, u4} α M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) ι (Finsupp.addCommMonoid.{u1, u4} α M _inst_1) s (fun (x : ι) => g x))) (Finset.sum.{max u3 u1, u2} (Finsupp.{u1, u3} α N (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) ι (Finsupp.addCommMonoid.{u1, u3} α N _inst_2) s (fun (x : ι) => Finsupp.mapRange.{u1, u4, u3} α M N (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddZeroClass.toZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) f) (AddMonoidHom.map_zero.{u3, u4} M N (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (g x)))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range_finset_sum Finsupp.mapRange_finset_sumₓ'. -/
 theorem mapRange_finset_sum (f : M →+ N) (s : Finset ι) (g : ι → α →₀ M) :
     mapRange f f.map_zero (∑ x in s, g x) = ∑ x in s, mapRange f f.map_zero (g x) :=
Diff
@@ -1205,7 +1205,7 @@ variable [Zero M]
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : α -> β) (hif : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, 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)))))))) (Set.injOn_empty.{u1, u2} α β f)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.comapDomain.{u1, u2, u3} α β M _inst_1 f (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)))) hif) (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 : α -> β) (hif : optParam.{0} (Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f (Finset.toSet.{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))))))) (Eq.rec.{0, succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.7194 : Set.{u2} β) (h._@.Mathlib.Data.Finsupp.Basic._hyg.7195 : Eq.{succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) x._@.Mathlib.Data.Finsupp.Basic._hyg.7194) => Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f x._@.Mathlib.Data.Finsupp.Basic._hyg.7194)) (Set.injOn_empty.{u2, u3} α β f) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (Eq.symm.{succ u2} (Set.{u2} β) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (Finset.coe_empty.{u2} β)))), Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.comapDomain.{u3, 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))) hif) (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)))
+  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : α -> β) (hif : optParam.{0} (Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f (Finset.toSet.{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))))))) (Eq.rec.{0, succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.7192 : Set.{u2} β) (h._@.Mathlib.Data.Finsupp.Basic._hyg.7193 : Eq.{succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) x._@.Mathlib.Data.Finsupp.Basic._hyg.7192) => Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f x._@.Mathlib.Data.Finsupp.Basic._hyg.7192)) (Set.injOn_empty.{u2, u3} α β f) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (Eq.symm.{succ u2} (Set.{u2} β) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (Finset.coe_empty.{u2} β)))), Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.comapDomain.{u3, 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))) hif) (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.comap_domain_zero Finsupp.comapDomain_zeroₓ'. -/
 /-- Note the `hif` argument is needed for this to work in `rw`. -/
 @[simp]
@@ -2342,7 +2342,7 @@ attribute [local instance] comap_has_smul
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {G : Type.{u3}} [_inst_1 : Monoid.{u3} G] [_inst_2 : MulAction.{u3, u1} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (SMul.smul.{u3, max u1 u2} G (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (Finsupp.comapSMul.{u1, u2, u3} α M G _inst_1 _inst_2 _inst_3) g f) (Finsupp.mapDomain.{u1, u1, u2} α α M _inst_3 (SMul.smul.{u3, u1} G α (MulAction.toHasSmul.{u3, u1} G α _inst_1 _inst_2) g) f)
 but is expected to have type
-  forall {α : Type.{u3}} {M : Type.{u2}} {G : Type.{u1}} [_inst_1 : Monoid.{u1} G] [_inst_2 : MulAction.{u1, u3} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))), Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (instHSMul.{u1, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.comapSMul.{u3, u2, u1} α M G _inst_1 _inst_2 _inst_3)) g f) (Finsupp.mapDomain.{u3, u3, u2} α α M _inst_3 ((fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.14297 : G) (x._@.Mathlib.Data.Finsupp.Basic._hyg.14299 : α) => HSMul.hSMul.{u1, u3, u3} G α α (instHSMul.{u1, u3} G α (MulAction.toSMul.{u1, u3} G α _inst_1 _inst_2)) x._@.Mathlib.Data.Finsupp.Basic._hyg.14297 x._@.Mathlib.Data.Finsupp.Basic._hyg.14299) g) f)
+  forall {α : Type.{u3}} {M : Type.{u2}} {G : Type.{u1}} [_inst_1 : Monoid.{u1} G] [_inst_2 : MulAction.{u1, u3} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))), Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (instHSMul.{u1, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.comapSMul.{u3, u2, u1} α M G _inst_1 _inst_2 _inst_3)) g f) (Finsupp.mapDomain.{u3, u3, u2} α α M _inst_3 ((fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.14291 : G) (x._@.Mathlib.Data.Finsupp.Basic._hyg.14293 : α) => HSMul.hSMul.{u1, u3, u3} G α α (instHSMul.{u1, u3} G α (MulAction.toSMul.{u1, u3} G α _inst_1 _inst_2)) x._@.Mathlib.Data.Finsupp.Basic._hyg.14291 x._@.Mathlib.Data.Finsupp.Basic._hyg.14293) g) f)
 Case conversion may be inaccurate. Consider using '#align finsupp.comap_smul_def Finsupp.comapSMul_defₓ'. -/
 theorem comapSMul_def (g : G) (f : α →₀ M) : g • f = mapDomain ((· • ·) g) f :=
   rfl
Diff
@@ -75,7 +75,7 @@ def graph (f : α →₀ M) : Finset (α × M) :=
 
 /- warning: finsupp.mk_mem_graph_iff -> Finsupp.mk_mem_graph_iff is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {m : M} {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} α M) (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finset.hasMem.{max u1 u2} (Prod.{u1, u2} α M)) (Prod.mk.{u1, u2} α M a m) (Finsupp.graph.{u1, u2} α M _inst_1 f)) (And (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) m) (Ne.{succ u2} M m (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 : α} {m : M} {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} α M) (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finset.hasMem.{max u1 u2} (Prod.{u1, u2} α M)) (Prod.mk.{u1, u2} α M a m) (Finsupp.graph.{u1, u2} α M _inst_1 f)) (And (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) m) (Ne.{succ u2} M m (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 : α} {m : M} {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Membership.mem.{max u1 u2, max u2 u1} (Prod.{u2, u1} α M) (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finset.instMembershipFinset.{max u2 u1} (Prod.{u2, u1} α M)) (Prod.mk.{u2, u1} α M a m) (Finsupp.graph.{u2, u1} α M _inst_1 f)) (And (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) m) (Ne.{succ u1} M m (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))))
 Case conversion may be inaccurate. Consider using '#align finsupp.mk_mem_graph_iff Finsupp.mk_mem_graph_iffₓ'. -/
@@ -91,7 +91,7 @@ theorem mk_mem_graph_iff {a : α} {m : M} {f : α →₀ M} : (a, m) ∈ f.graph
 
 /- warning: finsupp.mem_graph_iff -> Finsupp.mem_graph_iff is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {c : Prod.{u1, u2} α M} {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} α M) (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finset.hasMem.{max u1 u2} (Prod.{u1, u2} α M)) c (Finsupp.graph.{u1, u2} α M _inst_1 f)) (And (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 (Prod.fst.{u1, u2} α M c)) (Prod.snd.{u1, u2} α M c)) (Ne.{succ u2} M (Prod.snd.{u1, u2} α M c) (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] {c : Prod.{u1, u2} α M} {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} α M) (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finset.hasMem.{max u1 u2} (Prod.{u1, u2} α M)) c (Finsupp.graph.{u1, u2} α M _inst_1 f)) (And (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 (Prod.fst.{u1, u2} α M c)) (Prod.snd.{u1, u2} α M c)) (Ne.{succ u2} M (Prod.snd.{u1, u2} α M c) (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] {c : Prod.{u2, u1} α M} {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Membership.mem.{max u2 u1, max u2 u1} (Prod.{u2, u1} α M) (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finset.instMembershipFinset.{max u2 u1} (Prod.{u2, u1} α M)) c (Finsupp.graph.{u2, u1} α M _inst_1 f)) (And (Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) (Prod.fst.{u2, u1} α M c)) (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 (Prod.fst.{u2, u1} α M c)) (Prod.snd.{u2, u1} α M c)) (Ne.{succ u1} M (Prod.snd.{u2, u1} α M c) (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))))
 Case conversion may be inaccurate. Consider using '#align finsupp.mem_graph_iff Finsupp.mem_graph_iffₓ'. -/
@@ -104,7 +104,7 @@ theorem mem_graph_iff {c : α × M} {f : α →₀ M} : c ∈ f.graph ↔ f c.1
 
 /- warning: finsupp.mk_mem_graph -> Finsupp.mk_mem_graph 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 : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M _inst_1 f)) -> (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} α M) (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finset.hasMem.{max u1 u2} (Prod.{u1, u2} α M)) (Prod.mk.{u1, u2} α M 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)) (Finsupp.graph.{u1, u2} α M _inst_1 f))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (f : Finsupp.{u1, u2} α M _inst_1) {a : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a (Finsupp.support.{u1, u2} α M _inst_1 f)) -> (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} α M) (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finset.hasMem.{max u1 u2} (Prod.{u1, u2} α M)) (Prod.mk.{u1, u2} α M 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)) (Finsupp.graph.{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 : α}, (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) a (Finsupp.support.{u2, u1} α M _inst_1 f)) -> (Membership.mem.{max u1 u2, max u2 u1} (Prod.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a)) (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finset.instMembershipFinset.{max u2 u1} (Prod.{u2, u1} α M)) (Prod.mk.{u2, u1} α ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) 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)) (Finsupp.graph.{u2, u1} α M _inst_1 f))
 Case conversion may be inaccurate. Consider using '#align finsupp.mk_mem_graph Finsupp.mk_mem_graphₓ'. -/
@@ -114,7 +114,7 @@ theorem mk_mem_graph (f : α →₀ M) {a : α} (ha : a ∈ f.support) : (a, f a
 
 /- warning: finsupp.apply_eq_of_mem_graph -> Finsupp.apply_eq_of_mem_graph is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {m : M} {f : Finsupp.{u1, u2} α M _inst_1}, (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} α M) (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finset.hasMem.{max u1 u2} (Prod.{u1, u2} α M)) (Prod.mk.{u1, u2} α M a m) (Finsupp.graph.{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) m)
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {a : α} {m : M} {f : Finsupp.{u1, u2} α M _inst_1}, (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} α M) (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finset.hasMem.{max u1 u2} (Prod.{u1, u2} α M)) (Prod.mk.{u1, u2} α M a m) (Finsupp.graph.{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) m)
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {a : α} {m : M} {f : Finsupp.{u2, u1} α M _inst_1}, (Membership.mem.{max u1 u2, max u2 u1} (Prod.{u2, u1} α M) (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finset.instMembershipFinset.{max u2 u1} (Prod.{u2, u1} α M)) (Prod.mk.{u2, u1} α M a m) (Finsupp.graph.{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) m)
 Case conversion may be inaccurate. Consider using '#align finsupp.apply_eq_of_mem_graph Finsupp.apply_eq_of_mem_graphₓ'. -/
@@ -172,7 +172,7 @@ theorem graph_inj {f g : α →₀ M} : f.graph = g.graph ↔ f = g :=
 
 /- warning: finsupp.graph_zero -> Finsupp.graph_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)} (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finsupp.graph.{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.{max u1 u2} (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finset.hasEmptyc.{max u1 u2} (Prod.{u1, u2} α M)))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M], Eq.{succ (max u1 u2)} (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finsupp.graph.{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.{max u1 u2} (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finset.hasEmptyc.{max u1 u2} (Prod.{u1, u2} α M)))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M], Eq.{max (succ u2) (succ u1)} (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finsupp.graph.{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.{max u2 u1} (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finset.instEmptyCollectionFinset.{max u2 u1} (Prod.{u2, u1} α M)))
 Case conversion may be inaccurate. Consider using '#align finsupp.graph_zero Finsupp.graph_zeroₓ'. -/
@@ -182,7 +182,7 @@ theorem graph_zero : graph (0 : α →₀ M) = ∅ := by simp [graph]
 
 /- warning: finsupp.graph_eq_empty -> Finsupp.graph_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 (max u1 u2)} (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finsupp.graph.{u1, u2} α M _inst_1 f) (EmptyCollection.emptyCollection.{max u1 u2} (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finset.hasEmptyc.{max u1 u2} (Prod.{u1, u2} α M)))) (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 (max u1 u2)} (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finsupp.graph.{u1, u2} α M _inst_1 f) (EmptyCollection.emptyCollection.{max u1 u2} (Finset.{max u1 u2} (Prod.{u1, u2} α M)) (Finset.hasEmptyc.{max u1 u2} (Prod.{u1, u2} α M)))) (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)} (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finsupp.graph.{u2, u1} α M _inst_1 f) (EmptyCollection.emptyCollection.{max u2 u1} (Finset.{max u1 u2} (Prod.{u2, u1} α M)) (Finset.instEmptyCollectionFinset.{max u2 u1} (Prod.{u2, u1} α M)))) (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.graph_eq_empty Finsupp.graph_eq_emptyₓ'. -/
@@ -280,7 +280,7 @@ def mapRange.zeroHom (f : ZeroHom M N) : ZeroHom (α →₀ M) (α →₀ N)
 
 /- warning: finsupp.map_range.zero_hom_id -> Finsupp.mapRange.zeroHom_id is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M], Eq.{succ (max u1 u2)} (ZeroHom.{max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u2} α M _inst_1)) (Finsupp.mapRange.zeroHom.{u1, u2, u2} α M M _inst_1 _inst_1 (ZeroHom.id.{u2} M _inst_1)) (ZeroHom.id.{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], Eq.{succ (max u1 u2)} (ZeroHom.{max u1 u2, max u1 u2} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u2} α M _inst_1)) (Finsupp.mapRange.zeroHom.{u1, u2, u2} α M M _inst_1 _inst_1 (ZeroHom.id.{u2} M _inst_1)) (ZeroHom.id.{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], Eq.{max (succ u2) (succ u1)} (ZeroHom.{max u1 u2, max u1 u2} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1)) (Finsupp.mapRange.zeroHom.{u2, u1, u1} α M M _inst_1 _inst_1 (ZeroHom.id.{u1} M _inst_1)) (ZeroHom.id.{max u1 u2} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.zero.{u2, u1} α M _inst_1))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range.zero_hom_id Finsupp.mapRange.zeroHom_idₓ'. -/
@@ -291,7 +291,7 @@ theorem mapRange.zeroHom_id : mapRange.zeroHom (ZeroHom.id M) = ZeroHom.id (α 
 
 /- warning: finsupp.map_range.zero_hom_comp -> Finsupp.mapRange.zeroHom_comp 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 : ZeroHom.{u3, u4} N P _inst_2 _inst_3) (f₂ : ZeroHom.{u2, u3} M N _inst_1 _inst_2), Eq.{max (succ (max u1 u4)) (succ (max u1 u2))} (ZeroHom.{max u1 u2, max u1 u4} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u4} α P _inst_3) (Finsupp.hasZero.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u4} α P _inst_3)) (Finsupp.mapRange.zeroHom.{u1, u2, u4} α M P _inst_1 _inst_3 (ZeroHom.comp.{u2, u3, u4} M N P _inst_1 _inst_2 _inst_3 f f₂)) (ZeroHom.comp.{max u1 u2, max u1 u3, max u1 u4} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u3} α N _inst_2) (Finsupp.{u1, u4} α P _inst_3) (Finsupp.hasZero.{u1, u2} α M _inst_1) (Finsupp.hasZero.{u1, u3} α N _inst_2) (Finsupp.hasZero.{u1, u4} α P _inst_3) (Finsupp.mapRange.zeroHom.{u1, u3, u4} α N P _inst_2 _inst_3 f) (Finsupp.mapRange.zeroHom.{u1, u2, u3} α M N _inst_1 _inst_2 f₂))
+  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 : ZeroHom.{u3, u4} N P _inst_2 _inst_3) (f₂ : ZeroHom.{u2, u3} M N _inst_1 _inst_2), Eq.{max (succ (max u1 u4)) (succ (max u1 u2))} (ZeroHom.{max u1 u2, max u1 u4} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u4} α P _inst_3) (Finsupp.zero.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u4} α P _inst_3)) (Finsupp.mapRange.zeroHom.{u1, u2, u4} α M P _inst_1 _inst_3 (ZeroHom.comp.{u2, u3, u4} M N P _inst_1 _inst_2 _inst_3 f f₂)) (ZeroHom.comp.{max u1 u2, max u1 u3, max u1 u4} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u3} α N _inst_2) (Finsupp.{u1, u4} α P _inst_3) (Finsupp.zero.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u3} α N _inst_2) (Finsupp.zero.{u1, u4} α P _inst_3) (Finsupp.mapRange.zeroHom.{u1, u3, u4} α N P _inst_2 _inst_3 f) (Finsupp.mapRange.zeroHom.{u1, u2, u3} α M N _inst_1 _inst_2 f₂))
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u4}} {P : Type.{u3}} [_inst_1 : Zero.{u2} M] [_inst_2 : Zero.{u4} N] [_inst_3 : Zero.{u3} P] (f : ZeroHom.{u4, u3} N P _inst_2 _inst_3) (f₂ : ZeroHom.{u2, u4} M N _inst_1 _inst_2), Eq.{max (max (succ u1) (succ u2)) (succ u3)} (ZeroHom.{max u2 u1, max u3 u1} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u3} α P _inst_3) (Finsupp.zero.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u3} α P _inst_3)) (Finsupp.mapRange.zeroHom.{u1, u2, u3} α M P _inst_1 _inst_3 (ZeroHom.comp.{u2, u4, u3} M N P _inst_1 _inst_2 _inst_3 f f₂)) (ZeroHom.comp.{max u2 u1, max u4 u1, max u3 u1} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.{u1, u4} α N _inst_2) (Finsupp.{u1, u3} α P _inst_3) (Finsupp.zero.{u1, u2} α M _inst_1) (Finsupp.zero.{u1, u4} α N _inst_2) (Finsupp.zero.{u1, u3} α P _inst_3) (Finsupp.mapRange.zeroHom.{u1, u4, u3} α N P _inst_2 _inst_3 f) (Finsupp.mapRange.zeroHom.{u1, u2, u4} α M N _inst_1 _inst_2 f₂))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range.zero_hom_comp Finsupp.mapRange.zeroHom_compₓ'. -/
@@ -383,7 +383,7 @@ theorem mapRange_finset_sum (f : M →+ N) (s : Finset ι) (g : ι → α →₀
 
 /- warning: finsupp.map_range.add_equiv -> Finsupp.mapRange.addEquiv is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N], (AddEquiv.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) -> (AddEquiv.{max u1 u2, max u1 u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.hasAdd.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.hasAdd.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))
+  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N], (AddEquiv.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) -> (AddEquiv.{max u1 u2, max u1 u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N], (AddEquiv.{u2, u3} M N (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) -> (AddEquiv.{max u2 u1, max u3 u1} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u1, u3} α N (AddMonoid.toZero.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range.add_equiv Finsupp.mapRange.addEquivₓ'. -/
@@ -409,7 +409,7 @@ def mapRange.addEquiv (f : M ≃+ N) : (α →₀ M) ≃+ (α →₀ N) :=
 
 /- warning: finsupp.map_range.add_equiv_refl -> Finsupp.mapRange.addEquiv_refl is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M], Eq.{succ (max u1 u2)} (AddEquiv.{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.hasAdd.{u1, 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.mapRange.addEquiv.{u1, u2, u2} α M M _inst_1 _inst_1 (AddEquiv.refl.{u2} M (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))) (AddEquiv.refl.{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))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M], Eq.{succ (max u1 u2)} (AddEquiv.{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.add.{u1, 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.mapRange.addEquiv.{u1, u2, u2} α M M _inst_1 _inst_1 (AddEquiv.refl.{u2} M (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))) (AddEquiv.refl.{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))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M], Eq.{max (succ u2) (succ u1)} (AddEquiv.{max u1 u2, max u1 u2} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)))) (Finsupp.mapRange.addEquiv.{u2, u1, u1} α M M _inst_1 _inst_1 (AddEquiv.refl.{u1} M (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))))) (AddEquiv.refl.{max u1 u2} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range.add_equiv_refl Finsupp.mapRange.addEquiv_reflₓ'. -/
@@ -420,7 +420,7 @@ theorem mapRange.addEquiv_refl : mapRange.addEquiv (AddEquiv.refl M) = AddEquiv.
 
 /- warning: finsupp.map_range.add_equiv_trans -> Finsupp.mapRange.addEquiv_trans is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {P : Type.{u4}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] [_inst_3 : AddCommMonoid.{u4} P] (f : AddEquiv.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (f₂ : AddEquiv.{u3, u4} N P (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddZeroClass.toHasAdd.{u4} P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3)))), Eq.{max (succ (max u1 u2)) (succ (max u1 u4))} (AddEquiv.{max u1 u2, max u1 u4} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u4} α P (AddZeroClass.toHasZero.{u4} P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3)))) (Finsupp.hasAdd.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.hasAdd.{u1, u4} α P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3)))) (Finsupp.mapRange.addEquiv.{u1, u2, u4} α M P _inst_1 _inst_3 (AddEquiv.trans.{u2, u3, u4} M N P (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddZeroClass.toHasAdd.{u4} P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3))) f f₂)) (AddEquiv.trans.{max u1 u2, max u1 u3, max u1 u4} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.{u1, u4} α P (AddZeroClass.toHasZero.{u4} P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3)))) (Finsupp.hasAdd.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.hasAdd.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.hasAdd.{u1, u4} α P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3))) (Finsupp.mapRange.addEquiv.{u1, u2, u3} α M N _inst_1 _inst_2 f) (Finsupp.mapRange.addEquiv.{u1, u3, u4} α N P _inst_2 _inst_3 f₂))
+  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {P : Type.{u4}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] [_inst_3 : AddCommMonoid.{u4} P] (f : AddEquiv.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (f₂ : AddEquiv.{u3, u4} N P (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddZeroClass.toHasAdd.{u4} P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3)))), Eq.{max (succ (max u1 u2)) (succ (max u1 u4))} (AddEquiv.{max u1 u2, max u1 u4} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u4} α P (AddZeroClass.toHasZero.{u4} P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3)))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u4} α P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3)))) (Finsupp.mapRange.addEquiv.{u1, u2, u4} α M P _inst_1 _inst_3 (AddEquiv.trans.{u2, u3, u4} M N P (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddZeroClass.toHasAdd.{u4} P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3))) f f₂)) (AddEquiv.trans.{max u1 u2, max u1 u3, max u1 u4} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.{u1, u4} α P (AddZeroClass.toHasZero.{u4} P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3)))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.add.{u1, u4} α P (AddMonoid.toAddZeroClass.{u4} P (AddCommMonoid.toAddMonoid.{u4} P _inst_3))) (Finsupp.mapRange.addEquiv.{u1, u2, u3} α M N _inst_1 _inst_2 f) (Finsupp.mapRange.addEquiv.{u1, u3, u4} α N P _inst_2 _inst_3 f₂))
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u4}} {N : Type.{u3}} {P : Type.{u2}} [_inst_1 : AddCommMonoid.{u4} M] [_inst_2 : AddCommMonoid.{u3} N] [_inst_3 : AddCommMonoid.{u2} P] (f : AddEquiv.{u4, u3} M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (f₂ : AddEquiv.{u3, u2} N P (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddZeroClass.toAdd.{u2} P (AddMonoid.toAddZeroClass.{u2} P (AddCommMonoid.toAddMonoid.{u2} P _inst_3)))), Eq.{max (max (succ u1) (succ u4)) (succ u2)} (AddEquiv.{max u4 u1, max u2 u1} (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.{u1, u2} α P (AddMonoid.toZero.{u2} P (AddCommMonoid.toAddMonoid.{u2} P _inst_3))) (Finsupp.add.{u1, u4} α M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u1, u2} α P (AddMonoid.toAddZeroClass.{u2} P (AddCommMonoid.toAddMonoid.{u2} P _inst_3)))) (Finsupp.mapRange.addEquiv.{u1, u4, u2} α M P _inst_1 _inst_3 (AddEquiv.trans.{u4, u3, u2} M N P (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddZeroClass.toAdd.{u2} P (AddMonoid.toAddZeroClass.{u2} P (AddCommMonoid.toAddMonoid.{u2} P _inst_3))) f f₂)) (AddEquiv.trans.{max u4 u1, max u3 u1, max u2 u1} (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.{u1, u3} α N (AddMonoid.toZero.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.{u1, u2} α P (AddMonoid.toZero.{u2} P (AddCommMonoid.toAddMonoid.{u2} P _inst_3))) (Finsupp.add.{u1, u4} α M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.add.{u1, u2} α P (AddMonoid.toAddZeroClass.{u2} P (AddCommMonoid.toAddMonoid.{u2} P _inst_3))) (Finsupp.mapRange.addEquiv.{u1, u4, u3} α M N _inst_1 _inst_2 f) (Finsupp.mapRange.addEquiv.{u1, u3, u2} α N P _inst_2 _inst_3 f₂))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range.add_equiv_trans Finsupp.mapRange.addEquiv_transₓ'. -/
@@ -432,7 +432,7 @@ theorem mapRange.addEquiv_trans (f : M ≃+ N) (f₂ : N ≃+ P) :
 
 /- warning: finsupp.map_range.add_equiv_symm -> Finsupp.mapRange.addEquiv_symm is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddEquiv.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))), Eq.{max (succ (max u1 u3)) (succ (max u1 u2))} (AddEquiv.{max u1 u3, max u1 u2} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.hasAdd.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.hasAdd.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (AddEquiv.symm.{max u1 u2, max u1 u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.hasAdd.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.hasAdd.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.mapRange.addEquiv.{u1, u2, u3} α M N _inst_1 _inst_2 f)) (Finsupp.mapRange.addEquiv.{u1, u3, u2} α N M _inst_2 _inst_1 (AddEquiv.symm.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) f))
+  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddEquiv.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))), Eq.{max (succ (max u1 u3)) (succ (max u1 u2))} (AddEquiv.{max u1 u3, max u1 u2} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.add.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (AddEquiv.symm.{max u1 u2, max u1 u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.mapRange.addEquiv.{u1, u2, u3} α M N _inst_1 _inst_2 f)) (Finsupp.mapRange.addEquiv.{u1, u3, u2} α N M _inst_2 _inst_1 (AddEquiv.symm.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) f))
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u2} N] (f : AddEquiv.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))), Eq.{max (max (succ u1) (succ u3)) (succ u2)} (AddEquiv.{max u2 u1, max u3 u1} (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u2} α N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (AddEquiv.symm.{max u3 u1, max u2 u1} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u2} α N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.mapRange.addEquiv.{u1, u3, u2} α M N _inst_1 _inst_2 f)) (Finsupp.mapRange.addEquiv.{u1, u2, u3} α N M _inst_2 _inst_1 (AddEquiv.symm.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) f))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range.add_equiv_symm Finsupp.mapRange.addEquiv_symmₓ'. -/
@@ -457,7 +457,7 @@ theorem mapRange.addEquiv_toAddMonoidHom (f : M ≃+ N) :
 
 /- warning: finsupp.map_range.add_equiv_to_equiv -> Finsupp.mapRange.addEquiv_toEquiv is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddEquiv.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))), Eq.{max 1 (max (succ (max u1 u2)) (succ (max u1 u3))) (succ (max u1 u3)) (succ (max u1 u2))} (Equiv.{succ (max u1 u2), succ (max u1 u3)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) (AddEquiv.toEquiv.{max u1 u2, max u1 u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.hasAdd.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.hasAdd.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.mapRange.addEquiv.{u1, u2, u3} α M N _inst_1 _inst_2 f)) (Finsupp.mapRange.equiv.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddEquiv.toEquiv.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) f) (AddEquiv.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (AddEquiv.map_zero.{u3, u2} N M (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddEquiv.symm.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) f)))
+  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] (f : AddEquiv.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))), Eq.{max 1 (max (succ (max u1 u2)) (succ (max u1 u3))) (succ (max u1 u3)) (succ (max u1 u2))} (Equiv.{succ (max u1 u2), succ (max u1 u3)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) (AddEquiv.toEquiv.{max u1 u2, max u1 u3} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))) (Finsupp.add.{u1, u2} α M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u3} α N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (Finsupp.mapRange.addEquiv.{u1, u2, u3} α M N _inst_1 _inst_2 f)) (Finsupp.mapRange.equiv.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddEquiv.toEquiv.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) f) (AddEquiv.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) f) (AddEquiv.map_zero.{u3, u2} N M (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) (AddEquiv.symm.{u2, u3} M N (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (AddZeroClass.toHasAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) f)))
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u2} N] (f : AddEquiv.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))), Eq.{max (max (succ u1) (succ u3)) (succ u2)} (Equiv.{succ (max u3 u1), succ (max u2 u1)} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)))) (AddEquiv.toEquiv.{max u3 u1, max u2 u1} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u2} α N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (Finsupp.mapRange.addEquiv.{u1, u3, u2} α M N _inst_1 _inst_2 f)) (Finsupp.mapRange.equiv.{u1, u3, u2} α M N (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => N) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddZeroClass.toZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) (AddEquiv.toEquiv.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) f) (AddEquiv.map_zero.{u2, u3} M N (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) f) (AddEquiv.map_zero.{u3, u2} N M (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2)) (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (AddEquiv.symm.{u3, u2} M N (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_2))) f)))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range.add_equiv_to_equiv Finsupp.mapRange.addEquiv_toEquivₓ'. -/
@@ -496,7 +496,7 @@ def equivMapDomain (f : α ≃ β) (l : α →₀ M) : β →₀ M
 
 /- warning: finsupp.equiv_map_domain_apply -> Finsupp.equivMapDomain_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Equiv.{succ u1, succ u2} α β) (l : Finsupp.{u1, u3} α M _inst_1) (b : β), 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.equivMapDomain.{u1, u2, u3} α β M _inst_1 f l) b) (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) l (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β f) b))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Equiv.{succ u1, succ u2} α β) (l : Finsupp.{u1, u3} α M _inst_1) (b : β), 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.equivMapDomain.{u1, u2, u3} α β M _inst_1 f l) b) (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) l (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β f) b))
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (l : Finsupp.{u3, u1} α M _inst_1) (b : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) 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) (Finsupp.equivMapDomain.{u3, u2, u1} α β M _inst_1 f l) b) (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) l (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} β α) (Equiv.symm.{succ u3, succ u2} α β f) b))
 Case conversion may be inaccurate. Consider using '#align finsupp.equiv_map_domain_apply Finsupp.equivMapDomain_applyₓ'. -/
@@ -508,7 +508,7 @@ theorem equivMapDomain_apply (f : α ≃ β) (l : α →₀ M) (b : β) :
 
 /- warning: finsupp.equiv_map_domain_symm_apply -> Finsupp.equivMapDomain_symm_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Equiv.{succ u1, succ u2} α β) (l : Finsupp.{u2, u3} β M _inst_1) (a : α), Eq.{succ u3} M (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.equivMapDomain.{u2, u1, u3} β α M _inst_1 (Equiv.symm.{succ u1, succ u2} α β f) l) a) (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) l (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) f a))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : Equiv.{succ u1, succ u2} α β) (l : Finsupp.{u2, u3} β M _inst_1) (a : α), Eq.{succ u3} M (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.equivMapDomain.{u2, u1, u3} β α M _inst_1 (Equiv.symm.{succ u1, succ u2} α β f) l) a) (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) l (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) f a))
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : Equiv.{succ u3, succ u2} α β) (l : Finsupp.{u2, u1} β M _inst_1) (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) 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) (Finsupp.equivMapDomain.{u2, u3, u1} β α M _inst_1 (Equiv.symm.{succ u3, succ u2} α β f) l) 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) l (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} α β) f a))
 Case conversion may be inaccurate. Consider using '#align finsupp.equiv_map_domain_symm_apply Finsupp.equivMapDomain_symm_applyₓ'. -/
@@ -572,7 +572,7 @@ theorem equivMapDomain_single (f : α ≃ β) (a : α) (b : M) :
 
 /- warning: finsupp.equiv_map_domain_zero -> Finsupp.equivMapDomain_zero is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] {f : Equiv.{succ u1, succ u2} α β}, Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.equivMapDomain.{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 : Equiv.{succ u1, succ u2} α β}, Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M _inst_1) (Finsupp.equivMapDomain.{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 : Equiv.{succ u3, succ u2} α β}, Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} β M _inst_1) (Finsupp.equivMapDomain.{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.equiv_map_domain_zero Finsupp.equivMapDomain_zeroₓ'. -/
@@ -734,7 +734,7 @@ def mapDomain (f : α → β) (v : α →₀ M) : β →₀ M :=
 
 /- warning: finsupp.map_domain_apply -> Finsupp.mapDomain_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {f : α -> β}, (Function.Injective.{succ u1, succ u2} α β f) -> (forall (x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (a : α), Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => β -> M) (Finsupp.hasCoeToFun.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f x) (f a)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => α -> M) (Finsupp.hasCoeToFun.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) x a))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {f : α -> β}, (Function.Injective.{succ u1, succ u2} α β f) -> (forall (x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (a : α), Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => β -> M) (Finsupp.coeFun.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f x) (f a)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => α -> M) (Finsupp.coeFun.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) x a))
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] {f : α -> β}, (Function.Injective.{succ u3, succ u2} α β f) -> (forall (x : Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) (f a)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.mapDomain.{u3, u2, u1} α β M _inst_1 f x) (f a)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) x a))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_apply Finsupp.mapDomain_applyₓ'. -/
@@ -750,7 +750,7 @@ theorem mapDomain_apply {f : α → β} (hf : Function.Injective f) (x : α →
 
 /- warning: finsupp.map_domain_notin_range -> Finsupp.mapDomain_notin_range is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {f : α -> β} (x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (a : β), (Not (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) a (Set.range.{u2, succ u1} β α f))) -> (Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => β -> M) (Finsupp.hasCoeToFun.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f x) a) (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {f : α -> β} (x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (a : β), (Not (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) a (Set.range.{u2, succ u1} β α f))) -> (Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => β -> M) (Finsupp.coeFun.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f x) a) (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))))
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] {f : α -> β} (x : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (a : β), (Not (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) a (Set.range.{u1, succ u3} β α f))) -> (Eq.{succ u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u1, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.mapDomain.{u3, u1, u2} α β M _inst_1 f x) a) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) a) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) a) (AddMonoid.toZero.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) a) (AddCommMonoid.toAddMonoid.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) a) _inst_1)))))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_notin_range Finsupp.mapDomain_notin_rangeₓ'. -/
@@ -802,7 +802,7 @@ theorem mapDomain_single {f : α → β} {a : α} {b : M} : mapDomain f (single
 
 /- warning: finsupp.map_domain_zero -> Finsupp.mapDomain_zero is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {f : α -> β}, Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f (OfNat.ofNat.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (OfNat.mk.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (Zero.zero.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasZero.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))))) (OfNat.ofNat.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (OfNat.mk.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (Zero.zero.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {f : α -> β}, Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f (OfNat.ofNat.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (OfNat.mk.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (Zero.zero.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))))) (OfNat.ofNat.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (OfNat.mk.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (Zero.zero.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))))
 but is expected to have type
   forall {α : Type.{u1}} {β : Type.{u3}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] {f : α -> β}, Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.mapDomain.{u1, u3, u2} α β M _inst_1 f (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) 0 (Zero.toOfNat0.{max u1 u2} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))))) (OfNat.ofNat.{max u3 u2} (Finsupp.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) 0 (Zero.toOfNat0.{max u3 u2} (Finsupp.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.zero.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_zero Finsupp.mapDomain_zeroₓ'. -/
@@ -824,7 +824,7 @@ theorem mapDomain_congr {f g : α → β} (h : ∀ x ∈ v.support, f x = g x) :
 
 /- warning: finsupp.map_domain_add -> Finsupp.mapDomain_add is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {v₁ : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))} {v₂ : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))} {f : α -> β}, Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f (HAdd.hAdd.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (instHAdd.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasAdd.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) v₁ v₂)) (HAdd.hAdd.{max u2 u3, max u2 u3, max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (instHAdd.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasAdd.{u2, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f v₁) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f v₂))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {v₁ : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))} {v₂ : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))} {f : α -> β}, Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f (HAdd.hAdd.{max u1 u3, max u1 u3, max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (instHAdd.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) v₁ v₂)) (HAdd.hAdd.{max u2 u3, max u2 u3, max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (instHAdd.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.add.{u2, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f v₁) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f v₂))
 but is expected to have type
   forall {α : Type.{u1}} {β : Type.{u3}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] {v₁ : Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))} {v₂ : Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))} {f : α -> β}, Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.mapDomain.{u1, u3, u2} α β M _inst_1 f (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)))) v₁ v₂)) (HAdd.hAdd.{max u3 u2, max u3 u2, max u3 u2} (Finsupp.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (instHAdd.{max u3 u2} (Finsupp.{u3, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u3, u2} β M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.mapDomain.{u1, u3, u2} α β M _inst_1 f v₁) (Finsupp.mapDomain.{u1, u3, u2} α β M _inst_1 f v₂))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_add Finsupp.mapDomain_addₓ'. -/
@@ -834,7 +834,7 @@ theorem mapDomain_add {f : α → β} : mapDomain f (v₁ + v₂) = mapDomain f
 
 /- warning: finsupp.map_domain_equiv_apply -> Finsupp.mapDomain_equiv_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {f : Equiv.{succ u1, succ u2} α β} (x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (a : β), Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => β -> M) (Finsupp.hasCoeToFun.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) f) x) a) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => α -> M) (Finsupp.hasCoeToFun.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) x (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β f) a))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] {f : Equiv.{succ u1, succ u2} α β} (x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (a : β), Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => β -> M) (Finsupp.coeFun.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) f) x) a) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => α -> M) (Finsupp.coeFun.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) x (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β f) a))
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] {f : Equiv.{succ u3, succ u2} α β} (x : Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{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 (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.mapDomain.{u3, u2, u1} α β M _inst_1 (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Equiv.{succ u3, succ u2} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u3, succ u2} α β) f) x) a) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) x (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (Equiv.{succ u2, succ u3} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u3} β α) (Equiv.symm.{succ u3, succ u2} α β f) a))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_equiv_apply Finsupp.mapDomain_equiv_applyₓ'. -/
@@ -920,7 +920,7 @@ theorem mapDomain_support [DecidableEq β] {f : α → β} {s : α →₀ M} :
 
 /- warning: finsupp.map_domain_apply' -> Finsupp.mapDomain_apply' is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (S : Set.{u1} α) {f : α -> β} (x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), (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, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) x)) S) -> (Set.InjOn.{u1, u2} α β f S) -> (forall {a : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a S) -> (Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => β -> M) (Finsupp.hasCoeToFun.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f x) (f a)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => α -> M) (Finsupp.hasCoeToFun.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) x a)))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (S : Set.{u1} α) {f : α -> β} (x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), (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, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) x)) S) -> (Set.InjOn.{u1, u2} α β f S) -> (forall {a : α}, (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) a S) -> (Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => β -> M) (Finsupp.coeFun.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f x) (f a)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => α -> M) (Finsupp.coeFun.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) x a)))
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] (S : Set.{u3} α) {f : α -> β} (x : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))), (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) (Finset.toSet.{u3} α (Finsupp.support.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) x)) S) -> (Set.InjOn.{u3, u1} α β f S) -> (forall {a : α}, (Membership.mem.{u3, u3} α (Set.{u3} α) (Set.instMembershipSet.{u3} α) a S) -> (Eq.{succ u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) (f a)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u1, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.mapDomain.{u3, u1, u2} α β M _inst_1 f x) (f a)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) x a)))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_apply' Finsupp.mapDomain_apply'ₓ'. -/
@@ -1087,7 +1087,7 @@ theorem mapDomain_mapRange [AddCommMonoid N] (f : α → β) (v : α →₀ M) (
 
 /- warning: finsupp.sum_update_add -> Finsupp.sum_update_add is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {ι : Type.{u3}} [_inst_2 : AddCommMonoid.{u1} α] [_inst_3 : AddCommMonoid.{u2} β] (f : Finsupp.{u3, u1} ι α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2)))) (i : ι) (a : α) (g : ι -> α -> β), (forall (i : ι), Eq.{succ u2} β (g i (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2))))))) (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β (AddZeroClass.toHasZero.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3))))))) -> (forall (j : ι) (a₁ : α) (a₂ : α), Eq.{succ u2} β (g j (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (AddZeroClass.toHasAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2)))) a₁ a₂)) (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β (AddZeroClass.toHasAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3)))) (g j a₁) (g j a₂))) -> (Eq.{succ u2} β (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β (AddZeroClass.toHasAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3)))) (Finsupp.sum.{u3, u1, u2} ι α β (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2))) _inst_3 (Finsupp.update.{u3, u1} ι α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2))) f i a) g) (g i (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (Finsupp.{u3, u1} ι α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2)))) (fun (_x : Finsupp.{u3, u1} ι α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2)))) => ι -> α) (Finsupp.hasCoeToFun.{u3, u1} ι α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2)))) f i))) (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β (AddZeroClass.toHasAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3)))) (Finsupp.sum.{u3, u1, u2} ι α β (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2))) _inst_3 f g) (g i a)))
+  forall {α : Type.{u1}} {β : Type.{u2}} {ι : Type.{u3}} [_inst_2 : AddCommMonoid.{u1} α] [_inst_3 : AddCommMonoid.{u2} β] (f : Finsupp.{u3, u1} ι α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2)))) (i : ι) (a : α) (g : ι -> α -> β), (forall (i : ι), Eq.{succ u2} β (g i (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2))))))) (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β (AddZeroClass.toHasZero.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3))))))) -> (forall (j : ι) (a₁ : α) (a₂ : α), Eq.{succ u2} β (g j (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (AddZeroClass.toHasAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2)))) a₁ a₂)) (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β (AddZeroClass.toHasAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3)))) (g j a₁) (g j a₂))) -> (Eq.{succ u2} β (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β (AddZeroClass.toHasAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3)))) (Finsupp.sum.{u3, u1, u2} ι α β (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2))) _inst_3 (Finsupp.update.{u3, u1} ι α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2))) f i a) g) (g i (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (Finsupp.{u3, u1} ι α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2)))) (fun (_x : Finsupp.{u3, u1} ι α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2)))) => ι -> α) (Finsupp.coeFun.{u3, u1} ι α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2)))) f i))) (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β (AddZeroClass.toHasAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3)))) (Finsupp.sum.{u3, u1, u2} ι α β (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α _inst_2))) _inst_3 f g) (g i a)))
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {ι : Type.{u1}} [_inst_2 : AddCommMonoid.{u3} α] [_inst_3 : AddCommMonoid.{u2} β] (f : Finsupp.{u1, u3} ι α (AddMonoid.toZero.{u3} α (AddCommMonoid.toAddMonoid.{u3} α _inst_2))) (i : ι) (a : α) (g : ι -> α -> β), (forall (i : ι), Eq.{succ u2} β (g i (OfNat.ofNat.{u3} α 0 (Zero.toOfNat0.{u3} α (AddMonoid.toZero.{u3} α (AddCommMonoid.toAddMonoid.{u3} α _inst_2))))) (OfNat.ofNat.{u2} β 0 (Zero.toOfNat0.{u2} β (AddMonoid.toZero.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3))))) -> (forall (j : ι) (a₁ : α) (a₂ : α), Eq.{succ u2} β (g j (HAdd.hAdd.{u3, u3, u3} α α α (instHAdd.{u3} α (AddZeroClass.toAdd.{u3} α (AddMonoid.toAddZeroClass.{u3} α (AddCommMonoid.toAddMonoid.{u3} α _inst_2)))) a₁ a₂)) (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3)))) (g j a₁) (g j a₂))) -> (Eq.{succ u2} β (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3)))) (Finsupp.sum.{u1, u3, u2} ι α β (AddMonoid.toZero.{u3} α (AddCommMonoid.toAddMonoid.{u3} α _inst_2)) _inst_3 (Finsupp.update.{u1, u3} ι α (AddMonoid.toZero.{u3} α (AddCommMonoid.toAddMonoid.{u3} α _inst_2)) f i a) g) (g i (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} ι α (AddMonoid.toZero.{u3} α (AddCommMonoid.toAddMonoid.{u3} α _inst_2))) ι (fun (_x : ι) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : ι) => α) _x) (Finsupp.funLike.{u1, u3} ι α (AddMonoid.toZero.{u3} α (AddCommMonoid.toAddMonoid.{u3} α _inst_2))) f i))) (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β _inst_3)))) (Finsupp.sum.{u1, u3, u2} ι α β (AddMonoid.toZero.{u3} α (AddCommMonoid.toAddMonoid.{u3} α _inst_2)) _inst_3 f g) (g i a)))
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_update_add Finsupp.sum_update_addₓ'. -/
@@ -1181,7 +1181,7 @@ theorem sum_comapDomain [Zero M] [AddCommMonoid N] (f : α → β) (l : β →
 
 /- warning: finsupp.eq_zero_of_comap_domain_eq_zero -> Finsupp.eq_zero_of_comapDomain_eq_zero is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (f : α -> β) (l : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (hf : Set.BijOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) l))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) l))), (Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) f l (Set.BijOn.injOn.{u1, u2} α β (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) l))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) l)) f hf)) (OfNat.ofNat.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (OfNat.mk.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (Zero.zero.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasZero.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))))) -> (Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) l (OfNat.ofNat.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (OfNat.mk.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (Zero.zero.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))))))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (f : α -> β) (l : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (hf : Set.BijOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) l))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) l))), (Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) f l (Set.BijOn.injOn.{u1, u2} α β (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) l))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) l)) f hf)) (OfNat.ofNat.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (OfNat.mk.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (Zero.zero.{max u1 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))))) -> (Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) l (OfNat.ofNat.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (OfNat.mk.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) 0 (Zero.zero.{max u2 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))))))
 but is expected to have type
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (f : α -> β) (l : Finsupp.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (hf : Set.BijOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) l))) (Finset.toSet.{u2} β (Finsupp.support.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) l))), (Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) f l (Set.BijOn.injOn.{u2, u1} α β (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) l))) (Finset.toSet.{u2} β (Finsupp.support.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) l)) f hf)) (OfNat.ofNat.{max u1 u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) 0 (Zero.toOfNat0.{max u1 u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))) -> (Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) l (OfNat.ofNat.{max u2 u3} (Finsupp.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) 0 (Zero.toOfNat0.{max u2 u3} (Finsupp.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))))
 Case conversion may be inaccurate. Consider using '#align finsupp.eq_zero_of_comap_domain_eq_zero Finsupp.eq_zero_of_comapDomain_eq_zeroₓ'. -/
@@ -1203,7 +1203,7 @@ variable [Zero M]
 
 /- warning: finsupp.comap_domain_zero -> Finsupp.comapDomain_zero is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : α -> β) (hif : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, 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)))))))) (Set.injOn_empty.{u1, u2} α β f)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.comapDomain.{u1, u2, u3} α β M _inst_1 f (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)))) hif) (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 : α -> β) (hif : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, 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)))))))) (Set.injOn_empty.{u1, u2} α β f)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.comapDomain.{u1, u2, u3} α β M _inst_1 f (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)))) hif) (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 : α -> β) (hif : optParam.{0} (Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f (Finset.toSet.{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))))))) (Eq.rec.{0, succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.7194 : Set.{u2} β) (h._@.Mathlib.Data.Finsupp.Basic._hyg.7195 : Eq.{succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) x._@.Mathlib.Data.Finsupp.Basic._hyg.7194) => Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f x._@.Mathlib.Data.Finsupp.Basic._hyg.7194)) (Set.injOn_empty.{u2, u3} α β f) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (Eq.symm.{succ u2} (Set.{u2} β) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (Finset.coe_empty.{u2} β)))), Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.comapDomain.{u3, 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))) hif) (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.comap_domain_zero Finsupp.comapDomain_zeroₓ'. -/
@@ -1244,7 +1244,7 @@ variable [AddZeroClass M] {f : α → β}
 
 /- warning: finsupp.comap_domain_add -> Finsupp.comapDomain_add is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddZeroClass.{u3} M] {f : α -> β} (v₁ : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (v₂ : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (hv₁ : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1) v₁)))) (hv₂ : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1) v₂)))) (hv₁₂ : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1) (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)) v₁ v₂))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f (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)) v₁ v₂) hv₁₂) (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)) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f v₁ hv₁) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f v₂ hv₂))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddZeroClass.{u3} M] {f : α -> β} (v₁ : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (v₂ : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (hv₁ : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1) v₁)))) (hv₂ : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1) v₂)))) (hv₁₂ : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1) (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)) v₁ v₂))))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f (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)) v₁ v₂) hv₁₂) (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)) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f v₁ hv₁) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f v₂ hv₂))
 but is expected to have type
   forall {α : Type.{u1}} {β : Type.{u3}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] {f : α -> β} (v₁ : Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (v₂ : Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (hv₁ : Set.InjOn.{u1, u3} α β f (Set.preimage.{u1, u3} α β f (Finset.toSet.{u3} β (Finsupp.support.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1) v₁)))) (hv₂ : Set.InjOn.{u1, u3} α β f (Set.preimage.{u1, u3} α β f (Finset.toSet.{u3} β (Finsupp.support.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1) v₂)))) (hv₁₂ : Set.InjOn.{u1, u3} α β f (Set.preimage.{u1, u3} α β f (Finset.toSet.{u3} β (Finsupp.support.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1) (HAdd.hAdd.{max u3 u2, max u3 u2, max u3 u2} (Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (instHAdd.{max u3 u2} (Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.add.{u3, u2} β M _inst_1)) v₁ v₂))))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.comapDomain.{u1, u3, u2} α β M (AddZeroClass.toZero.{u2} M _inst_1) f (HAdd.hAdd.{max u3 u2, max u3 u2, max u3 u2} (Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (instHAdd.{max u3 u2} (Finsupp.{u3, u2} β M (AddZeroClass.toZero.{u2} M _inst_1)) (Finsupp.add.{u3, u2} β M _inst_1)) v₁ v₂) hv₁₂) (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)) (Finsupp.comapDomain.{u1, u3, u2} α β M (AddZeroClass.toZero.{u2} M _inst_1) f v₁ hv₁) (Finsupp.comapDomain.{u1, u3, u2} α β M (AddZeroClass.toZero.{u2} M _inst_1) f v₂ hv₂))
 Case conversion may be inaccurate. Consider using '#align finsupp.comap_domain_add Finsupp.comapDomain_addₓ'. -/
@@ -1258,7 +1258,7 @@ theorem comapDomain_add (v₁ v₂ : β →₀ M) (hv₁ : Set.InjOn f (f ⁻¹'
 
 /- warning: finsupp.comap_domain_add_of_injective -> Finsupp.comapDomain_add_of_injective is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddZeroClass.{u3} M] {f : α -> β} (hf : Function.Injective.{succ u1, succ u2} α β f) (v₁ : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (v₂ : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f (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)) v₁ v₂) (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1) (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)) v₁ v₂)))))) (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)) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f v₁ (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1) v₁))))) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f v₂ (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1) v₂))))))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddZeroClass.{u3} M] {f : α -> β} (hf : Function.Injective.{succ u1, succ u2} α β f) (v₁ : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)) (v₂ : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M _inst_1)) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f (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)) v₁ v₂) (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1) (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)) v₁ v₂)))))) (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)) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f v₁ (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1) v₁))))) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M _inst_1) f v₂ (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M _inst_1) v₂))))))
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] {f : α -> β} (hf : Function.Injective.{succ u3, succ u2} α β f) (v₁ : Finsupp.{u2, u1} β M (AddZeroClass.toZero.{u1} M _inst_1)) (v₂ : Finsupp.{u2, u1} β M (AddZeroClass.toZero.{u1} M _inst_1)), Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.comapDomain.{u3, u2, u1} α β M (AddZeroClass.toZero.{u1} M _inst_1) 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)) v₁ v₂) (Function.Injective.injOn.{u2, u3} α β f hf (Set.preimage.{u3, u2} α β f (Finset.toSet.{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)) v₁ v₂)))))) (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)) (Finsupp.comapDomain.{u3, u2, u1} α β M (AddZeroClass.toZero.{u1} M _inst_1) f v₁ (Function.Injective.injOn.{u2, u3} α β f hf (Set.preimage.{u3, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u1} β M (AddZeroClass.toZero.{u1} M _inst_1) v₁))))) (Finsupp.comapDomain.{u3, u2, u1} α β M (AddZeroClass.toZero.{u1} M _inst_1) f v₂ (Function.Injective.injOn.{u2, u3} α β f hf (Set.preimage.{u3, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u1} β M (AddZeroClass.toZero.{u1} M _inst_1) v₂))))))
 Case conversion may be inaccurate. Consider using '#align finsupp.comap_domain_add_of_injective Finsupp.comapDomain_add_of_injectiveₓ'. -/
@@ -1340,7 +1340,7 @@ theorem some_zero [Zero M] : (0 : Option α →₀ M).some = 0 :=
 
 /- warning: finsupp.some_add -> Finsupp.some_add is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] (f : Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (g : Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.some.{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} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.hasAdd.{u1, u2} (Option.{u1} α) M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) f g)) (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.some.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) f) (Finsupp.some.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) g))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] (f : Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (g : Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.some.{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} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.add.{u1, u2} (Option.{u1} α) M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) f g)) (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.some.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) f) (Finsupp.some.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) g))
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] (f : Finsupp.{u1, u2} (Option.{u1} α) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (g : Finsupp.{u1, u2} (Option.{u1} α) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.some.{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} (Option.{u1} α) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u1, u2} (Option.{u1} α) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.{u1, u2} (Option.{u1} α) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} (Option.{u1} α) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (Finsupp.add.{u1, u2} (Option.{u1} α) M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) f g)) (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.some.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) f) (Finsupp.some.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) g))
 Case conversion may be inaccurate. Consider using '#align finsupp.some_add Finsupp.some_addₓ'. -/
@@ -1372,7 +1372,7 @@ theorem some_single_some [Zero M] (a : α) (m : M) :
 
 /- warning: finsupp.prod_option_index -> Finsupp.prod_option_index is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : CommMonoid.{u3} N] (f : Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (b : (Option.{u1} α) -> M -> N), (forall (o : Option.{u1} α), Eq.{succ u3} N (b o (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))))))) (OfNat.ofNat.{u3} N 1 (OfNat.mk.{u3} N 1 (One.one.{u3} N (MulOneClass.toHasOne.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) -> (forall (o : Option.{u1} α) (m₁ : M) (m₂ : M), Eq.{succ u3} N (b o (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)))) m₁ m₂)) (HMul.hMul.{u3, u3, u3} N N N (instHMul.{u3} N (MulOneClass.toHasMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) (b o m₁) (b o m₂))) -> (Eq.{succ u3} N (Finsupp.prod.{u1, u2, u3} (Option.{u1} α) M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) _inst_2 f b) (HMul.hMul.{u3, u3, u3} N N N (instHMul.{u3} N (MulOneClass.toHasMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) (b (Option.none.{u1} α) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (fun (_x : Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) => (Option.{u1} α) -> M) (Finsupp.hasCoeToFun.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) f (Option.none.{u1} α))) (Finsupp.prod.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) _inst_2 (Finsupp.some.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) f) (fun (a : α) => b (Option.some.{u1} α a)))))
+  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : CommMonoid.{u3} N] (f : Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (b : (Option.{u1} α) -> M -> N), (forall (o : Option.{u1} α), Eq.{succ u3} N (b o (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))))))) (OfNat.ofNat.{u3} N 1 (OfNat.mk.{u3} N 1 (One.one.{u3} N (MulOneClass.toHasOne.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) -> (forall (o : Option.{u1} α) (m₁ : M) (m₂ : M), Eq.{succ u3} N (b o (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)))) m₁ m₂)) (HMul.hMul.{u3, u3, u3} N N N (instHMul.{u3} N (MulOneClass.toHasMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) (b o m₁) (b o m₂))) -> (Eq.{succ u3} N (Finsupp.prod.{u1, u2, u3} (Option.{u1} α) M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) _inst_2 f b) (HMul.hMul.{u3, u3, u3} N N N (instHMul.{u3} N (MulOneClass.toHasMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) (b (Option.none.{u1} α) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (fun (_x : Finsupp.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) => (Option.{u1} α) -> M) (Finsupp.coeFun.{u1, u2} (Option.{u1} α) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) f (Option.none.{u1} α))) (Finsupp.prod.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) _inst_2 (Finsupp.some.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) f) (fun (a : α) => b (Option.some.{u1} α a)))))
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : CommMonoid.{u2} N] (f : Finsupp.{u1, u3} (Option.{u1} α) M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (b : (Option.{u1} α) -> M -> N), (forall (o : Option.{u1} α), Eq.{succ u2} N (b o (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) (OfNat.ofNat.{u2} N 1 (One.toOfNat1.{u2} N (Monoid.toOne.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) -> (forall (o : Option.{u1} α) (m₁ : M) (m₂ : M), Eq.{succ u2} N (b o (HAdd.hAdd.{u3, u3, u3} M M M (instHAdd.{u3} M (AddZeroClass.toAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) m₁ m₂)) (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (b o m₁) (b o m₂))) -> (Eq.{succ u2} N (Finsupp.prod.{u1, u3, u2} (Option.{u1} α) M N (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) _inst_2 f b) (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (b (Option.none.{u1} α) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} (Option.{u1} α) M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Option.{u1} α) (fun (_x : Option.{u1} α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => M) _x) (Finsupp.funLike.{u1, u3} (Option.{u1} α) M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) f (Option.none.{u1} α))) (Finsupp.prod.{u1, u3, u2} α M N (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) _inst_2 (Finsupp.some.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) f) (fun (a : α) => b (Option.some.{u1} α a)))))
 Case conversion may be inaccurate. Consider using '#align finsupp.prod_option_index Finsupp.prod_option_indexₓ'. -/
@@ -1395,7 +1395,7 @@ theorem prod_option_index [AddCommMonoid M] [CommMonoid N] (f : Option α →₀
 
 /- warning: finsupp.sum_option_index_smul -> Finsupp.sum_option_index_smul is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Semiring.{u3} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : Module.{u3, u2} R M _inst_1 _inst_2] (f : Finsupp.{u1, u3} (Option.{u1} α) R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) (b : (Option.{u1} α) -> M), Eq.{succ u2} M (Finsupp.sum.{u1, u3, u2} (Option.{u1} α) R M (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) _inst_2 f (fun (o : Option.{u1} α) (r : R) => SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3)))) r (b o))) (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3)))) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} (Option.{u1} α) R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) (fun (_x : Finsupp.{u1, u3} (Option.{u1} α) R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) => (Option.{u1} α) -> R) (Finsupp.hasCoeToFun.{u1, u3} (Option.{u1} α) R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) f (Option.none.{u1} α)) (b (Option.none.{u1} α))) (Finsupp.sum.{u1, u3, u2} α R M (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) _inst_2 (Finsupp.some.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) f) (fun (a : α) (r : R) => SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3)))) r (b (Option.some.{u1} α a)))))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Semiring.{u3} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : Module.{u3, u2} R M _inst_1 _inst_2] (f : Finsupp.{u1, u3} (Option.{u1} α) R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) (b : (Option.{u1} α) -> M), Eq.{succ u2} M (Finsupp.sum.{u1, u3, u2} (Option.{u1} α) R M (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) _inst_2 f (fun (o : Option.{u1} α) (r : R) => SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3)))) r (b o))) (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3)))) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} (Option.{u1} α) R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) (fun (_x : Finsupp.{u1, u3} (Option.{u1} α) R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) => (Option.{u1} α) -> R) (Finsupp.coeFun.{u1, u3} (Option.{u1} α) R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) f (Option.none.{u1} α)) (b (Option.none.{u1} α))) (Finsupp.sum.{u1, u3, u2} α R M (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) _inst_2 (Finsupp.some.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) f) (fun (a : α) (r : R) => SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3)))) r (b (Option.some.{u1} α a)))))
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Semiring.{u3} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : Module.{u3, u2} R M _inst_1 _inst_2] (f : Finsupp.{u1, u3} (Option.{u1} α) R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) (b : (Option.{u1} α) -> M), Eq.{succ u2} M (Finsupp.sum.{u1, u3, u2} (Option.{u1} α) R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) _inst_2 f (fun (o : Option.{u1} α) (r : R) => HSMul.hSMul.{u3, u2, u2} R M M (instHSMul.{u3, u2} R M (SMulZeroClass.toSMul.{u3, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u3, u2} R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3))))) r (b o))) (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (HSMul.hSMul.{u3, u2, u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) (Option.none.{u1} α)) M M (instHSMul.{u3, u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) (Option.none.{u1} α)) M (SMulZeroClass.toSMul.{u3, u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) (Option.none.{u1} α)) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u3, u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) (Option.none.{u1} α)) M (MonoidWithZero.toZero.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) (Option.none.{u1} α)) (Semiring.toMonoidWithZero.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) (Option.none.{u1} α)) _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u3, u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) (Option.none.{u1} α)) M (Semiring.toMonoidWithZero.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) (Option.none.{u1} α)) _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u3, u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) (Option.none.{u1} α)) M _inst_1 _inst_2 _inst_3))))) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} (Option.{u1} α) R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) (Option.{u1} α) (fun (_x : Option.{u1} α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Option.{u1} α) => R) _x) (Finsupp.funLike.{u1, u3} (Option.{u1} α) R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) f (Option.none.{u1} α)) (b (Option.none.{u1} α))) (Finsupp.sum.{u1, u3, u2} α R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) _inst_2 (Finsupp.some.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) f) (fun (a : α) (r : R) => HSMul.hSMul.{u3, u2, u2} R M M (instHSMul.{u3, u2} R M (SMulZeroClass.toSMul.{u3, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u3, u2} R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3))))) r (b (Option.some.{u1} α a)))))
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_option_index_smul Finsupp.sum_option_index_smulₓ'. -/
@@ -1442,7 +1442,7 @@ theorem filter_apply (a : α) [D : Decidable (p a)] : f.filterₓ p a = if p a t
 
 /- warning: finsupp.filter_eq_indicator -> Finsupp.filter_eq_indicator is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (p : α -> Prop) (f : Finsupp.{u1, 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.filter.{u1, u2} α M _inst_1 p f)) (Set.indicator.{u1, u2} α M _inst_1 (setOf.{u1} α (fun (x : α) => p 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) f))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (p : α -> Prop) (f : Finsupp.{u1, 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.filter.{u1, u2} α M _inst_1 p f)) (Set.indicator.{u1, u2} α M _inst_1 (setOf.{u1} α (fun (x : α) => p 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) f))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (p : α -> Prop) (f : Finsupp.{u2, 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.filter.{u2, u1} α M _inst_1 p f)) (Set.indicator.{u2, u1} α M _inst_1 (setOf.{u2} α (fun (x : α) => p 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))
 Case conversion may be inaccurate. Consider using '#align finsupp.filter_eq_indicator Finsupp.filter_eq_indicatorₓ'. -/
@@ -1452,7 +1452,7 @@ theorem filter_eq_indicator : ⇑(f.filterₓ p) = Set.indicator { x | p x } f :
 
 /- warning: finsupp.filter_eq_zero_iff -> Finsupp.filter_eq_zero_iff is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (p : α -> Prop) (f : Finsupp.{u1, u2} α M _inst_1), Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.filter.{u1, u2} α M _inst_1 p 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 (x : α), (p x) -> (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) (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] (p : α -> Prop) (f : Finsupp.{u1, u2} α M _inst_1), Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.filter.{u1, u2} α M _inst_1 p 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))))) (forall (x : α), (p x) -> (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) (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] (p : α -> Prop) (f : Finsupp.{u2, u1} α M _inst_1), Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.filter.{u2, u1} α M _inst_1 p 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)))) (forall (x : α), (p x) -> (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) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) _inst_1))))
 Case conversion may be inaccurate. Consider using '#align finsupp.filter_eq_zero_iff Finsupp.filter_eq_zero_iffₓ'. -/
@@ -1463,7 +1463,7 @@ theorem filter_eq_zero_iff : f.filterₓ p = 0 ↔ ∀ x, p x → f x = 0 := by
 
 /- warning: finsupp.filter_eq_self_iff -> Finsupp.filter_eq_self_iff is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (p : α -> Prop) (f : Finsupp.{u1, u2} α M _inst_1), Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.filter.{u1, u2} α M _inst_1 p f) f) (forall (x : α), (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 x) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) -> (p x))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (p : α -> Prop) (f : Finsupp.{u1, u2} α M _inst_1), Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.filter.{u1, u2} α M _inst_1 p f) f) (forall (x : α), (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 x) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) -> (p x))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (p : α -> Prop) (f : Finsupp.{u2, u1} α M _inst_1), Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.filter.{u2, u1} α M _inst_1 p f) f) (forall (x : α), (Ne.{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) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) _inst_1))) -> (p x))
 Case conversion may be inaccurate. Consider using '#align finsupp.filter_eq_self_iff Finsupp.filter_eq_self_iffₓ'. -/
@@ -1497,7 +1497,7 @@ theorem support_filter [D : DecidablePred p] : (f.filterₓ p).support = f.suppo
 
 /- warning: finsupp.filter_zero -> Finsupp.filter_zero is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (p : α -> Prop), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.filter.{u1, u2} α M _inst_1 p (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] (p : α -> Prop), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.filter.{u1, u2} α M _inst_1 p (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] (p : α -> Prop), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.filter.{u2, u1} α M _inst_1 p (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.filter_zero Finsupp.filter_zeroₓ'. -/
@@ -1518,7 +1518,7 @@ theorem filter_single_of_pos {a : α} {b : M} (h : p a) : (single a b).filterₓ
 
 /- warning: finsupp.filter_single_of_neg -> Finsupp.filter_single_of_neg is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] (p : α -> Prop) {a : α} {b : M}, (Not (p a)) -> (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.filter.{u1, u2} α M _inst_1 p (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] (p : α -> Prop) {a : α} {b : M}, (Not (p a)) -> (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M _inst_1) (Finsupp.filter.{u1, u2} α M _inst_1 p (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] (p : α -> Prop) {a : α} {b : M}, (Not (p a)) -> (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M _inst_1) (Finsupp.filter.{u2, u1} α M _inst_1 p (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.filter_single_of_neg Finsupp.filter_single_of_negₓ'. -/
@@ -1530,7 +1530,7 @@ theorem filter_single_of_neg {a : α} {b : M} (h : ¬p a) : (single a b).filter
 
 /- warning: finsupp.prod_filter_index -> Finsupp.prod_filter_index is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : Zero.{u2} M] (p : α -> Prop) (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : CommMonoid.{u3} N] (g : α -> M -> N), Eq.{succ u3} N (Finsupp.prod.{u1, u2, u3} α M N _inst_1 _inst_2 (Finsupp.filter.{u1, u2} α M _inst_1 p f) g) (Finset.prod.{u3, u1} N α _inst_2 (Finsupp.support.{u1, u2} α M _inst_1 (Finsupp.filter.{u1, u2} α M _inst_1 p f)) (fun (x : α) => g 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) f x)))
+  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} [_inst_1 : Zero.{u2} M] (p : α -> Prop) (f : Finsupp.{u1, u2} α M _inst_1) [_inst_2 : CommMonoid.{u3} N] (g : α -> M -> N), Eq.{succ u3} N (Finsupp.prod.{u1, u2, u3} α M N _inst_1 _inst_2 (Finsupp.filter.{u1, u2} α M _inst_1 p f) g) (Finset.prod.{u3, u1} N α _inst_2 (Finsupp.support.{u1, u2} α M _inst_1 (Finsupp.filter.{u1, u2} α M _inst_1 p f)) (fun (x : α) => g 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) f x)))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} {N : Type.{u3}} [_inst_1 : Zero.{u1} M] (p : α -> Prop) (f : Finsupp.{u2, u1} α M _inst_1) [_inst_2 : CommMonoid.{u3} N] (g : α -> M -> N), Eq.{succ u3} N (Finsupp.prod.{u2, u1, u3} α M N _inst_1 _inst_2 (Finsupp.filter.{u2, u1} α M _inst_1 p f) g) (Finset.prod.{u3, u2} N α _inst_2 (Finsupp.support.{u2, u1} α M _inst_1 (Finsupp.filter.{u2, u1} α M _inst_1 p f)) (fun (x : α) => g 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)))
 Case conversion may be inaccurate. Consider using '#align finsupp.prod_filter_index Finsupp.prod_filter_indexₓ'. -/
@@ -1575,7 +1575,7 @@ end Zero
 
 /- warning: finsupp.filter_pos_add_filter_neg -> Finsupp.filter_pos_add_filter_neg 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)) (p : α -> Prop), 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.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) p f) (Finsupp.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) (fun (a : α) => Not (p a)) f)) f
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (p : α -> Prop), 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.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) p f) (Finsupp.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) (fun (a : α) => Not (p a)) f)) f
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] (f : Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (p : α -> Prop), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1)) (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)) (Finsupp.filter.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) p f) (Finsupp.filter.{u1, u2} α M (AddZeroClass.toZero.{u2} M _inst_1) (fun (a : α) => Not (p a)) f)) f
 Case conversion may be inaccurate. Consider using '#align finsupp.filter_pos_add_filter_neg Finsupp.filter_pos_add_filter_negₓ'. -/
@@ -1603,7 +1603,7 @@ def frange (f : α →₀ M) : Finset M :=
 
 /- warning: finsupp.mem_frange -> Finsupp.mem_frange 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} {y : M}, Iff (Membership.Mem.{u2, u2} M (Finset.{u2} M) (Finset.hasMem.{u2} M) y (Finsupp.frange.{u1, u2} α M _inst_1 f)) (And (Ne.{succ u2} M y (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Exists.{succ u1} α (fun (x : α) => 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) y)))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {f : Finsupp.{u1, u2} α M _inst_1} {y : M}, Iff (Membership.Mem.{u2, u2} M (Finset.{u2} M) (Finset.hasMem.{u2} M) y (Finsupp.frange.{u1, u2} α M _inst_1 f)) (And (Ne.{succ u2} M y (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_1)))) (Exists.{succ u1} α (fun (x : α) => 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) y)))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {f : Finsupp.{u2, u1} α M _inst_1} {y : M}, Iff (Membership.mem.{u1, u1} M (Finset.{u1} M) (Finset.instMembershipFinset.{u1} M) y (Finsupp.frange.{u2, u1} α M _inst_1 f)) (And (Ne.{succ u1} M y (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M _inst_1))) (Exists.{succ u2} α (fun (x : α) => 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) y)))
 Case conversion may be inaccurate. Consider using '#align finsupp.mem_frange Finsupp.mem_frangeₓ'. -/
@@ -1672,7 +1672,7 @@ theorem support_subtypeDomain [D : DecidablePred p] {f : α →₀ M} :
 
 /- warning: finsupp.subtype_domain_apply -> Finsupp.subtypeDomain_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {p : α -> Prop} {a : Subtype.{succ u1} α p} {v : Finsupp.{u1, u2} α M _inst_1}, Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (fun (_x : Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) => (Subtype.{succ u1} α p) -> M) (Finsupp.hasCoeToFun.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.subtypeDomain.{u1, u2} α M _inst_1 p v) 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) v (Subtype.val.{succ u1} α p a))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {p : α -> Prop} {a : Subtype.{succ u1} α p} {v : Finsupp.{u1, u2} α M _inst_1}, Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (fun (_x : Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) => (Subtype.{succ u1} α p) -> M) (Finsupp.coeFun.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.subtypeDomain.{u1, u2} α M _inst_1 p v) 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) v (Subtype.val.{succ u1} α p a))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {p : α -> Prop} {a : Subtype.{succ u2} α p} {v : Finsupp.{u2, u1} α M _inst_1}, Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Subtype.{succ u2} α p) => M) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) (Subtype.{succ u2} α p) (fun (_x : Subtype.{succ u2} α p) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Subtype.{succ u2} α p) => M) _x) (Finsupp.funLike.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) (Finsupp.subtypeDomain.{u2, u1} α M _inst_1 p v) 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) v (Subtype.val.{succ u2} α p a))
 Case conversion may be inaccurate. Consider using '#align finsupp.subtype_domain_apply Finsupp.subtypeDomain_applyₓ'. -/
@@ -1683,7 +1683,7 @@ theorem subtypeDomain_apply {a : Subtype p} {v : α →₀ M} : (subtypeDomain p
 
 /- warning: finsupp.subtype_domain_zero -> Finsupp.subtypeDomain_zero is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {p : α -> Prop}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.subtypeDomain.{u1, u2} α M _inst_1 p (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} (Subtype.{succ u1} α p) M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.hasZero.{u1, u2} (Subtype.{succ u1} α p) M _inst_1))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {p : α -> Prop}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.subtypeDomain.{u1, u2} α M _inst_1 p (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} (Subtype.{succ u1} α p) M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.zero.{u1, u2} (Subtype.{succ u1} α p) M _inst_1))))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] {p : α -> Prop}, Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) (Finsupp.subtypeDomain.{u2, u1} α M _inst_1 p (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} (Subtype.{succ u2} α p) M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) (Finsupp.zero.{u2, u1} (Subtype.{succ u2} α p) M _inst_1)))
 Case conversion may be inaccurate. Consider using '#align finsupp.subtype_domain_zero Finsupp.subtypeDomain_zeroₓ'. -/
@@ -1694,7 +1694,7 @@ theorem subtypeDomain_zero : subtypeDomain p (0 : α →₀ M) = 0 :=
 
 /- warning: finsupp.subtype_domain_eq_zero_iff' -> Finsupp.subtypeDomain_eq_zero_iff' is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {p : α -> Prop} {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.subtypeDomain.{u1, u2} α M _inst_1 p f) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.hasZero.{u1, u2} (Subtype.{succ u1} α p) M _inst_1))))) (forall (x : α), (p x) -> (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) (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] {p : α -> Prop} {f : Finsupp.{u1, u2} α M _inst_1}, Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.subtypeDomain.{u1, u2} α M _inst_1 p f) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.zero.{u1, u2} (Subtype.{succ u1} α p) M _inst_1))))) (forall (x : α), (p x) -> (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) (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] {p : α -> Prop} {f : Finsupp.{u2, u1} α M _inst_1}, Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) (Finsupp.subtypeDomain.{u2, u1} α M _inst_1 p f) (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) (Finsupp.zero.{u2, u1} (Subtype.{succ u2} α p) M _inst_1)))) (forall (x : α), (p x) -> (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) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) _inst_1))))
 Case conversion may be inaccurate. Consider using '#align finsupp.subtype_domain_eq_zero_iff' Finsupp.subtypeDomain_eq_zero_iff'ₓ'. -/
@@ -1705,7 +1705,7 @@ theorem subtypeDomain_eq_zero_iff' {f : α →₀ M} : f.subtypeDomain p = 0 ↔
 
 /- warning: finsupp.subtype_domain_eq_zero_iff -> Finsupp.subtypeDomain_eq_zero_iff is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Zero.{u2} M] {p : α -> Prop} {f : Finsupp.{u1, u2} α M _inst_1}, (forall (x : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) x (Finsupp.support.{u1, u2} α M _inst_1 f)) -> (p x)) -> (Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.subtypeDomain.{u1, u2} α M _inst_1 p f) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.hasZero.{u1, u2} (Subtype.{succ u1} α p) M _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] {p : α -> Prop} {f : Finsupp.{u1, u2} α M _inst_1}, (forall (x : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) x (Finsupp.support.{u1, u2} α M _inst_1 f)) -> (p x)) -> (Iff (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.subtypeDomain.{u1, u2} α M _inst_1 p f) (OfNat.ofNat.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) 0 (OfNat.mk.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) 0 (Zero.zero.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M _inst_1) (Finsupp.zero.{u1, u2} (Subtype.{succ u1} α p) M _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] {p : α -> Prop} {f : Finsupp.{u2, u1} α M _inst_1}, (forall (x : α), (Membership.mem.{u2, u2} α (Finset.{u2} α) (Finset.instMembershipFinset.{u2} α) x (Finsupp.support.{u2, u1} α M _inst_1 f)) -> (p x)) -> (Iff (Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) (Finsupp.subtypeDomain.{u2, u1} α M _inst_1 p f) (OfNat.ofNat.{max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M _inst_1) (Finsupp.zero.{u2, u1} (Subtype.{succ u2} α p) M _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.subtype_domain_eq_zero_iff Finsupp.subtypeDomain_eq_zero_iffₓ'. -/
@@ -1740,7 +1740,7 @@ variable [AddZeroClass M] {p : α → Prop} {v v' : α →₀ M}
 
 /- warning: finsupp.subtype_domain_add -> Finsupp.subtypeDomain_add is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] {p : α -> Prop} {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 u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.subtypeDomain.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) 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)) v v')) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.hasAdd.{u1, u2} (Subtype.{succ u1} α p) M _inst_1)) (Finsupp.subtypeDomain.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) p v) (Finsupp.subtypeDomain.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) p v'))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] {p : α -> Prop} {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 u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.subtypeDomain.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) 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)) v v')) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u2} M _inst_1)) (instHAdd.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.add.{u1, u2} (Subtype.{succ u1} α p) M _inst_1)) (Finsupp.subtypeDomain.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) p v) (Finsupp.subtypeDomain.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) p v'))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] {p : α -> Prop} {v : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)} {v' : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)}, Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.subtypeDomain.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) 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)) v v')) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M (AddZeroClass.toZero.{u1} M _inst_1)) (instHAdd.{max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) M (AddZeroClass.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} (Subtype.{succ u2} α p) M _inst_1)) (Finsupp.subtypeDomain.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) p v) (Finsupp.subtypeDomain.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) p v'))
 Case conversion may be inaccurate. Consider using '#align finsupp.subtype_domain_add Finsupp.subtypeDomain_addₓ'. -/
@@ -1780,7 +1780,7 @@ def filterAddHom (p : α → Prop) : (α →₀ M) →+ α →₀ M
 
 /- warning: finsupp.filter_add -> Finsupp.filter_add is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] {p : α -> Prop} {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 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) 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)) v v')) (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.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) p v) (Finsupp.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) p v'))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u2} M] {p : α -> Prop} {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 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1)) (Finsupp.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) 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)) v v')) (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.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) p v) (Finsupp.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M _inst_1) p v'))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u1} M] {p : α -> Prop} {v : Finsupp.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1)} {v' : 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.filter.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) 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)) v v')) (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.filter.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) p v) (Finsupp.filter.{u2, u1} α M (AddZeroClass.toZero.{u1} M _inst_1) p v'))
 Case conversion may be inaccurate. Consider using '#align finsupp.filter_add Finsupp.filter_addₓ'. -/
@@ -1830,7 +1830,7 @@ theorem filter_sum (s : Finset ι) (f : ι → α →₀ M) :
 
 /- warning: finsupp.filter_eq_sum -> Finsupp.filter_eq_sum is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] (p : α -> Prop) [D : DecidablePred.{succ u1} α p] (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) p f) (Finset.sum.{max u1 u2, u1} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) α (Finsupp.addCommMonoid.{u1, u2} α M _inst_1) (Finset.filter.{u1} α p (fun (a : α) => D a) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) f)) (fun (i : α) => Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) i (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) f i)))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M] (p : α -> Prop) [D : DecidablePred.{succ u1} α p] (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (Finsupp.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) p f) (Finset.sum.{max u1 u2, u1} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) α (Finsupp.addCommMonoid.{u1, u2} α M _inst_1) (Finset.filter.{u1} α p (fun (a : α) => D a) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) f)) (fun (i : α) => Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) i (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)))) f i)))
 but is expected to have type
   forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] (p : α -> Prop) [D : DecidablePred.{succ u2} α p] (f : Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.filter.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) p f) (Finset.sum.{max u1 u2, u2} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) α (Finsupp.addCommMonoid.{u2, u1} α M _inst_1) (Finset.filter.{u2} α p (fun (a : α) => D a) (Finsupp.support.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) f)) (fun (i : α) => Finsupp.single.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) i (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u2, u1} α M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) f i)))
 Case conversion may be inaccurate. Consider using '#align finsupp.filter_eq_sum Finsupp.filter_eq_sumₓ'. -/
@@ -1849,9 +1849,9 @@ variable [AddGroup G] {p : α → Prop} {v v' : α →₀ G}
 
 /- warning: finsupp.subtype_domain_neg -> Finsupp.subtypeDomain_neg is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] {p : α -> Prop} {v : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.subtypeDomain.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p (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)))) v)) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.hasNeg.{u1, u2} (Subtype.{succ u1} α p) G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) (Finsupp.subtypeDomain.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p v))
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] {p : α -> Prop} {v : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.subtypeDomain.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p (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)))) v)) (Neg.neg.{max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.neg.{u1, u2} (Subtype.{succ u1} α p) G (SubNegZeroMonoid.toNegZeroClass.{u2} G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) (Finsupp.subtypeDomain.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p v))
 but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] {p : α -> Prop} {v : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))}, Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.subtypeDomain.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.instNegFinsuppToZero.{u2, u1} α G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) v)) (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.instNegFinsuppToZero.{u2, u1} (Subtype.{succ u2} α p) G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.subtypeDomain.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p v))
+  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] {p : α -> Prop} {v : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))}, Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.subtypeDomain.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.neg.{u2, u1} α G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) v)) (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.neg.{u2, u1} (Subtype.{succ u2} α p) G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.subtypeDomain.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p v))
 Case conversion may be inaccurate. Consider using '#align finsupp.subtype_domain_neg Finsupp.subtypeDomain_negₓ'. -/
 @[simp]
 theorem subtypeDomain_neg : (-v).subtypeDomain p = -v.subtypeDomain p :=
@@ -1860,9 +1860,9 @@ theorem subtypeDomain_neg : (-v).subtypeDomain p = -v.subtypeDomain p :=
 
 /- warning: finsupp.subtype_domain_sub -> Finsupp.subtypeDomain_sub is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] {p : α -> Prop} {v : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))} {v' : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.subtypeDomain.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p (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)))) v v')) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} (Subtype.{succ u1} α p) G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} (Subtype.{succ u1} α p) 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} (Subtype.{succ u1} α p) G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.hasSub.{u1, u2} (Subtype.{succ u1} α p) G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) (Finsupp.subtypeDomain.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p v) (Finsupp.subtypeDomain.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p v'))
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] {p : α -> Prop} {v : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))} {v' : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.subtypeDomain.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p (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)))) v v')) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (Finsupp.{u1, u2} (Subtype.{succ u1} α p) G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} (Subtype.{succ u1} α p) G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.{u1, u2} (Subtype.{succ u1} α p) 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} (Subtype.{succ u1} α p) G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (Finsupp.sub.{u1, u2} (Subtype.{succ u1} α p) G (SubtractionMonoid.toSubNegZeroMonoid.{u2} G (AddGroup.toSubtractionMonoid.{u2} G _inst_1)))) (Finsupp.subtypeDomain.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p v) (Finsupp.subtypeDomain.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p v'))
 but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] {p : α -> Prop} {v : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))} {v' : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))}, Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.subtypeDomain.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p (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_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (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_1))))) (Finsupp.instSubFinsuppToZeroToNegZeroClass.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) v v')) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (instHSub.{max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.instSubFinsuppToZeroToNegZeroClass.{u2, u1} (Subtype.{succ u2} α p) G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.subtypeDomain.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p v) (Finsupp.subtypeDomain.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p v'))
+  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] {p : α -> Prop} {v : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))} {v' : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))}, Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.subtypeDomain.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p (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_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (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_1))))) (Finsupp.sub.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) v v')) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (instHSub.{max u2 u1} (Finsupp.{u2, u1} (Subtype.{succ u2} α p) G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.sub.{u2, u1} (Subtype.{succ u2} α p) G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.subtypeDomain.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p v) (Finsupp.subtypeDomain.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p v'))
 Case conversion may be inaccurate. Consider using '#align finsupp.subtype_domain_sub Finsupp.subtypeDomain_subₓ'. -/
 @[simp]
 theorem subtypeDomain_sub : (v - v').subtypeDomain p = v.subtypeDomain p - v'.subtypeDomain p :=
@@ -1871,9 +1871,9 @@ theorem subtypeDomain_sub : (v - v').subtypeDomain p = v.subtypeDomain p - v'.su
 
 /- warning: finsupp.single_neg -> Finsupp.single_neg is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (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.single.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) a (Neg.neg.{u2} G (SubNegMonoid.toHasNeg.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)) b)) (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)))) (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] (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.single.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) a (Neg.neg.{u2} G (SubNegMonoid.toHasNeg.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)) b)) (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)))) (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.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] (a : α) (b : G), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.single.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a (Neg.neg.{u1} G (NegZeroClass.toNeg.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) b)) (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.instNegFinsuppToZero.{u2, u1} α G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.single.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a b))
+  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] (a : α) (b : G), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.single.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a (Neg.neg.{u1} G (NegZeroClass.toNeg.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) b)) (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.neg.{u2, u1} α G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.single.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a b))
 Case conversion may be inaccurate. Consider using '#align finsupp.single_neg Finsupp.single_negₓ'. -/
 @[simp]
 theorem single_neg (a : α) (b : G) : single a (-b) = -single a b :=
@@ -1882,9 +1882,9 @@ theorem single_neg (a : α) (b : G) : single a (-b) = -single a b :=
 
 /- warning: finsupp.single_sub -> Finsupp.single_sub is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (a : α) (b₁ : G) (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.single.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) a (HSub.hSub.{u2, u2, u2} G G G (instHSub.{u2} G (SubNegMonoid.toHasSub.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))) b₁ b₂)) (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)))) (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₁) (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] (a : α) (b₁ : G) (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.single.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) a (HSub.hSub.{u2, u2, u2} G G G (instHSub.{u2} G (SubNegMonoid.toHasSub.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))) b₁ b₂)) (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)))) (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₁) (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.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] (a : α) (b₁ : G) (b₂ : G), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.single.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a (HSub.hSub.{u1, u1, u1} G G G (instHSub.{u1} G (SubNegMonoid.toSub.{u1} G (AddGroup.toSubNegMonoid.{u1} G _inst_1))) b₁ b₂)) (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_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (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_1))))) (Finsupp.instSubFinsuppToZeroToNegZeroClass.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.single.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a b₁) (Finsupp.single.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a b₂))
+  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] (a : α) (b₁ : G) (b₂ : G), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.single.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a (HSub.hSub.{u1, u1, u1} G G G (instHSub.{u1} G (SubNegMonoid.toSub.{u1} G (AddGroup.toSubNegMonoid.{u1} G _inst_1))) b₁ b₂)) (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_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (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_1))))) (Finsupp.sub.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.single.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a b₁) (Finsupp.single.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a b₂))
 Case conversion may be inaccurate. Consider using '#align finsupp.single_sub Finsupp.single_subₓ'. -/
 @[simp]
 theorem single_sub (a : α) (b₁ b₂ : G) : single a (b₁ - b₂) = single a b₁ - single a b₂ :=
@@ -1893,9 +1893,9 @@ theorem single_sub (a : α) (b₁ b₂ : G) : single a (b₁ - b₂) = single a
 
 /- warning: finsupp.erase_neg -> Finsupp.erase_neg is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (a : α) (f : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))), 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 (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)) (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)))) (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))
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (a : α) (f : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))), 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 (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)) (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)))) (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))
 but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] (a : α) (f : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.erase.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.instNegFinsuppToZero.{u2, u1} α G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) f)) (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.instNegFinsuppToZero.{u2, u1} α G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.erase.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a f))
+  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] (a : α) (f : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.erase.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.neg.{u2, u1} α G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) f)) (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.neg.{u2, u1} α G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.erase.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a f))
 Case conversion may be inaccurate. Consider using '#align finsupp.erase_neg Finsupp.erase_negₓ'. -/
 @[simp]
 theorem erase_neg (a : α) (f : α →₀ G) : erase a (-f) = -erase a f :=
@@ -1904,9 +1904,9 @@ theorem erase_neg (a : α) (f : α →₀ G) : erase a (-f) = -erase a f :=
 
 /- warning: finsupp.erase_sub -> Finsupp.erase_sub is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (a : α) (f₁ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (f₂ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))), 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 (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₁ 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)))) (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₁) (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₂))
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (a : α) (f₁ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (f₂ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))), 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 (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₁ 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)))) (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₁) (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₂))
 but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] (a : α) (f₁ : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (f₂ : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.erase.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a (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_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (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_1))))) (Finsupp.instSubFinsuppToZeroToNegZeroClass.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) f₁ f₂)) (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_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (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_1))))) (Finsupp.instSubFinsuppToZeroToNegZeroClass.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.erase.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a f₁) (Finsupp.erase.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a f₂))
+  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] (a : α) (f₁ : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (f₂ : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.erase.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a (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_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (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_1))))) (Finsupp.sub.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) f₁ f₂)) (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_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (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_1))))) (Finsupp.sub.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.erase.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a f₁) (Finsupp.erase.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) a f₂))
 Case conversion may be inaccurate. Consider using '#align finsupp.erase_sub Finsupp.erase_subₓ'. -/
 @[simp]
 theorem erase_sub (a : α) (f₁ f₂ : α →₀ G) : erase a (f₁ - f₂) = erase a f₁ - erase a f₂ :=
@@ -1915,9 +1915,9 @@ theorem erase_sub (a : α) (f₁ f₂ : α →₀ G) : erase a (f₁ - f₂) = e
 
 /- warning: finsupp.filter_neg -> Finsupp.filter_neg is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (p : α -> Prop) (f : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))), 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.filter.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p (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)) (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)))) (Finsupp.filter.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p f))
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (p : α -> Prop) (f : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))), 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.filter.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p (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)) (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)))) (Finsupp.filter.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p f))
 but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] (p : α -> Prop) (f : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.filter.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.instNegFinsuppToZero.{u2, u1} α G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) f)) (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.instNegFinsuppToZero.{u2, u1} α G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.filter.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p f))
+  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] (p : α -> Prop) (f : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.filter.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.neg.{u2, u1} α G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) f)) (Neg.neg.{max u2 u1} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.neg.{u2, u1} α G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.filter.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p f))
 Case conversion may be inaccurate. Consider using '#align finsupp.filter_neg Finsupp.filter_negₓ'. -/
 @[simp]
 theorem filter_neg (p : α → Prop) (f : α →₀ G) : filter p (-f) = -filter p f :=
@@ -1926,9 +1926,9 @@ theorem filter_neg (p : α → Prop) (f : α →₀ G) : filter p (-f) = -filter
 
 /- warning: finsupp.filter_sub -> Finsupp.filter_sub is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (p : α -> Prop) (f₁ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (f₂ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))), 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.filter.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p (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₁ 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)))) (Finsupp.filter.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p f₁) (Finsupp.filter.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p f₂))
+  forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : AddGroup.{u2} G] (p : α -> Prop) (f₁ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))) (f₂ : Finsupp.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1))))), 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.filter.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p (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₁ 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)))) (Finsupp.filter.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p f₁) (Finsupp.filter.{u1, u2} α G (AddZeroClass.toHasZero.{u2} G (AddMonoid.toAddZeroClass.{u2} G (SubNegMonoid.toAddMonoid.{u2} G (AddGroup.toSubNegMonoid.{u2} G _inst_1)))) p f₂))
 but is expected to have type
-  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] (p : α -> Prop) (f₁ : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (f₂ : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.filter.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p (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_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (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_1))))) (Finsupp.instSubFinsuppToZeroToNegZeroClass.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) f₁ f₂)) (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_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (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_1))))) (Finsupp.instSubFinsuppToZeroToNegZeroClass.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.filter.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p f₁) (Finsupp.filter.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p f₂))
+  forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : AddGroup.{u1} G] (p : α -> Prop) (f₁ : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (f₂ : Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))), Eq.{max (succ u2) (succ u1)} (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.filter.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p (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_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (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_1))))) (Finsupp.sub.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) f₁ f₂)) (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_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (Finsupp.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1))))) (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_1))))) (Finsupp.sub.{u2, u1} α G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) (Finsupp.filter.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p f₁) (Finsupp.filter.{u2, u1} α G (NegZeroClass.toZero.{u1} G (SubNegZeroMonoid.toNegZeroClass.{u1} G (SubtractionMonoid.toSubNegZeroMonoid.{u1} G (AddGroup.toSubtractionMonoid.{u1} G _inst_1)))) p f₂))
 Case conversion may be inaccurate. Consider using '#align finsupp.filter_sub Finsupp.filter_subₓ'. -/
 @[simp]
 theorem filter_sub (p : α → Prop) (f₁ f₂ : α →₀ G) :
@@ -1981,7 +1981,7 @@ variable [AddCommMonoid M] [AddCommMonoid N]
 
 /- warning: finsupp.curry -> Finsupp.curry is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], (Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) -> (Finsupp.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], (Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) -> (Finsupp.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))
 but is expected to have type
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], (Finsupp.{max u2 u1, u3} (Prod.{u1, u2} α β) M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) -> (Finsupp.{u1, max u3 u2} α (Finsupp.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))
 Case conversion may be inaccurate. Consider using '#align finsupp.curry Finsupp.curryₓ'. -/
@@ -1994,7 +1994,7 @@ protected def curry (f : α × β →₀ M) : α →₀ β →₀ M :=
 
 /- warning: finsupp.curry_apply -> Finsupp.curry_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (f : Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (x : α) (y : β), Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => β -> M) (Finsupp.hasCoeToFun.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (coeFn.{max (succ u1) (succ (max u2 u3)), max (succ u1) (succ (max u2 u3))} (Finsupp.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) (fun (_x : Finsupp.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) => α -> (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) (Finsupp.hasCoeToFun.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) (Finsupp.curry.{u1, u2, u3} α β M _inst_1 f) x) y) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => (Prod.{u1, u2} α β) -> M) (Finsupp.hasCoeToFun.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) f (Prod.mk.{u1, u2} α β x y))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (f : Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (x : α) (y : β), Eq.{succ u3} M (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => β -> M) (Finsupp.coeFun.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (coeFn.{max (succ u1) (succ (max u2 u3)), max (succ u1) (succ (max u2 u3))} (Finsupp.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) (fun (_x : Finsupp.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) => α -> (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) (Finsupp.coeFun.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) (Finsupp.curry.{u1, u2, u3} α β M _inst_1 f) x) y) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (fun (_x : Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => (Prod.{u1, u2} α β) -> M) (Finsupp.coeFun.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) f (Prod.mk.{u1, u2} α β x y))
 but is expected to have type
   forall {α : Type.{u2}} {β : Type.{u3}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] (f : Finsupp.{max u3 u2, u1} (Prod.{u2, u3} α β) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (x : α) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) y) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (FunLike.coe.{max (succ u2) (succ (max u3 u1)), succ u2, succ (max u3 u1)} (Finsupp.{u2, max u3 u1} α (Finsupp.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.zero.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => Finsupp.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) _x) (Finsupp.funLike.{u2, max u3 u1} α (Finsupp.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.zero.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)))) (Finsupp.curry.{u2, u3, u1} α β M _inst_1 f) x) y) (FunLike.coe.{max (succ (max u2 u3)) (succ u1), succ (max u2 u3), succ u1} (Finsupp.{max u2 u3, u1} (Prod.{u2, u3} α β) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Prod.{u2, u3} α β) (fun (_x : Prod.{u2, u3} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Prod.{u2, u3} α β) => M) _x) (Finsupp.funLike.{max u2 u3, u1} (Prod.{u2, u3} α β) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) f (Prod.mk.{u2, u3} α β x y))
 Case conversion may be inaccurate. Consider using '#align finsupp.curry_apply Finsupp.curry_applyₓ'. -/
@@ -2015,7 +2015,7 @@ theorem curry_apply (f : α × β →₀ M) (x : α) (y : β) : f.curry x y = f
 
 /- warning: finsupp.sum_curry_index -> Finsupp.sum_curry_index is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u4} N] (f : Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (g : α -> β -> M -> N), (forall (a : α) (b : β), Eq.{succ u4} N (g a b (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))))) (OfNat.ofNat.{u4} N 0 (OfNat.mk.{u4} N 0 (Zero.zero.{u4} N (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))))))) -> (forall (a : α) (b : β) (c₀ : M) (c₁ : M), Eq.{succ u4} N (g a b (HAdd.hAdd.{u3, u3, u3} M M M (instHAdd.{u3} M (AddZeroClass.toHasAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) c₀ c₁)) (HAdd.hAdd.{u4, u4, u4} N N N (instHAdd.{u4} N (AddZeroClass.toHasAdd.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) (g a b c₀) (g a b c₁))) -> (Eq.{succ u4} N (Finsupp.sum.{u1, max u2 u3, u4} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) N (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) _inst_2 (Finsupp.curry.{u1, u2, u3} α β M _inst_1 f) (fun (a : α) (f : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => Finsupp.sum.{u2, u3, u4} β M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) _inst_2 f (g a))) (Finsupp.sum.{max u1 u2, u3, u4} (Prod.{u1, u2} α β) M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) _inst_2 f (fun (p : Prod.{u1, u2} α β) (c : M) => g (Prod.fst.{u1, u2} α β p) (Prod.snd.{u1, u2} α β p) c)))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {N : Type.{u4}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : AddCommMonoid.{u4} N] (f : Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (g : α -> β -> M -> N), (forall (a : α) (b : β), Eq.{succ u4} N (g a b (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))))) (OfNat.ofNat.{u4} N 0 (OfNat.mk.{u4} N 0 (Zero.zero.{u4} N (AddZeroClass.toHasZero.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2))))))) -> (forall (a : α) (b : β) (c₀ : M) (c₁ : M), Eq.{succ u4} N (g a b (HAdd.hAdd.{u3, u3, u3} M M M (instHAdd.{u3} M (AddZeroClass.toHasAdd.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) c₀ c₁)) (HAdd.hAdd.{u4, u4, u4} N N N (instHAdd.{u4} N (AddZeroClass.toHasAdd.{u4} N (AddMonoid.toAddZeroClass.{u4} N (AddCommMonoid.toAddMonoid.{u4} N _inst_2)))) (g a b c₀) (g a b c₁))) -> (Eq.{succ u4} N (Finsupp.sum.{u1, max u2 u3, u4} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) N (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) _inst_2 (Finsupp.curry.{u1, u2, u3} α β M _inst_1 f) (fun (a : α) (f : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) => Finsupp.sum.{u2, u3, u4} β M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) _inst_2 f (g a))) (Finsupp.sum.{max u1 u2, u3, u4} (Prod.{u1, u2} α β) M N (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) _inst_2 f (fun (p : Prod.{u1, u2} α β) (c : M) => g (Prod.fst.{u1, u2} α β p) (Prod.snd.{u1, u2} α β p) c)))
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u4}} {M : Type.{u2}} {N : Type.{u1}} [_inst_1 : AddCommMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u1} N] (f : Finsupp.{max u4 u3, u2} (Prod.{u3, u4} α β) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) (g : α -> β -> M -> N), (forall (a : α) (b : β), Eq.{succ u1} N (g a b (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))))) (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (AddMonoid.toZero.{u1} N (AddCommMonoid.toAddMonoid.{u1} N _inst_2))))) -> (forall (a : α) (b : β) (c₀ : M) (c₁ : M), Eq.{succ u1} N (g a b (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)))) c₀ c₁)) (HAdd.hAdd.{u1, u1, u1} N N N (instHAdd.{u1} N (AddZeroClass.toAdd.{u1} N (AddMonoid.toAddZeroClass.{u1} N (AddCommMonoid.toAddMonoid.{u1} N _inst_2)))) (g a b c₀) (g a b c₁))) -> (Eq.{succ u1} N (Finsupp.sum.{u3, max u4 u2, u1} α (Finsupp.{u4, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) N (Finsupp.zero.{u4, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) _inst_2 (Finsupp.curry.{u3, u4, u2} α β M _inst_1 f) (fun (a : α) (f : Finsupp.{u4, u2} β M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1))) => Finsupp.sum.{u4, u2, u1} β M N (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) _inst_2 f (g a))) (Finsupp.sum.{max u3 u4, u2, u1} (Prod.{u3, u4} α β) M N (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_1)) _inst_2 f (fun (p : Prod.{u3, u4} α β) (c : M) => g (Prod.fst.{u3, u4} α β p) (Prod.snd.{u3, u4} α β p) c)))
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_curry_index Finsupp.sum_curry_indexₓ'. -/
@@ -2037,7 +2037,7 @@ theorem sum_curry_index (f : α × β →₀ M) (g : α → β → M → N) (hg
 
 /- warning: finsupp.uncurry -> Finsupp.uncurry is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], (Finsupp.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) -> (Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], (Finsupp.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) -> (Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))
 but is expected to have type
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], (Finsupp.{u1, max u3 u2} α (Finsupp.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) -> (Finsupp.{max u2 u1, u3} (Prod.{u1, u2} α β) M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))
 Case conversion may be inaccurate. Consider using '#align finsupp.uncurry Finsupp.uncurryₓ'. -/
@@ -2050,7 +2050,7 @@ protected def uncurry (f : α →₀ β →₀ M) : α × β →₀ M :=
 
 /- warning: finsupp.finsupp_prod_equiv -> Finsupp.finsuppProdEquiv is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], Equiv.{max (succ (max u1 u2)) (succ u3), max (succ u1) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], Equiv.{max (succ (max u1 u2)) (succ u3), max (succ u1) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))))
 but is expected to have type
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], Equiv.{max (succ u3) (succ (max u2 u1)), max (succ (max u3 u2)) (succ u1)} (Finsupp.{max u2 u1, u3} (Prod.{u1, u2} α β) M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, max u3 u2} α (Finsupp.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))
 Case conversion may be inaccurate. Consider using '#align finsupp.finsupp_prod_equiv Finsupp.finsuppProdEquivₓ'. -/
@@ -2075,7 +2075,7 @@ def finsuppProdEquiv : (α × β →₀ M) ≃ (α →₀ β →₀ M)
 
 /- warning: finsupp.filter_curry -> Finsupp.filter_curry is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (f : Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (p : α -> Prop), Eq.{max (succ u1) (succ (max u2 u3))} (Finsupp.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) (Finsupp.curry.{u1, u2, u3} α β M _inst_1 (Finsupp.filter.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (fun (a : Prod.{u1, u2} α β) => p (Prod.fst.{u1, u2} α β a)) f)) (Finsupp.filter.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) p (Finsupp.curry.{u1, u2, u3} α β M _inst_1 f))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (f : Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (p : α -> Prop), Eq.{max (succ u1) (succ (max u2 u3))} (Finsupp.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))) (Finsupp.curry.{u1, u2, u3} α β M _inst_1 (Finsupp.filter.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (fun (a : Prod.{u1, u2} α β) => p (Prod.fst.{u1, u2} α β a)) f)) (Finsupp.filter.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) p (Finsupp.curry.{u1, u2, u3} α β M _inst_1 f))
 but is expected to have type
   forall {α : Type.{u2}} {β : Type.{u3}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] (f : Finsupp.{max u3 u2, u1} (Prod.{u2, u3} α β) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (p : α -> Prop), Eq.{max (max (succ u2) (succ u3)) (succ u1)} (Finsupp.{u2, max u1 u3} α (Finsupp.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.zero.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)))) (Finsupp.curry.{u2, u3, u1} α β M _inst_1 (Finsupp.filter.{max u2 u3, u1} (Prod.{u2, u3} α β) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) (fun (a : Prod.{u2, u3} α β) => p (Prod.fst.{u2, u3} α β a)) f)) (Finsupp.filter.{u2, max u3 u1} α (Finsupp.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.zero.{u3, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) p (Finsupp.curry.{u2, u3, u1} α β M _inst_1 f))
 Case conversion may be inaccurate. Consider using '#align finsupp.filter_curry Finsupp.filter_curryₓ'. -/
@@ -2094,7 +2094,7 @@ theorem filter_curry (f : α × β →₀ M) (p : α → Prop) :
 
 /- warning: finsupp.support_curry -> Finsupp.support_curry is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_3 : DecidableEq.{succ u1} α] (f : Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.curry.{u1, u2, u3} α β M _inst_1 f)) (Finset.image.{max u1 u2, u1} (Prod.{u1, u2} α β) α (fun (a : α) (b : α) => _inst_3 a b) (Prod.fst.{u1, u2} α β) (Finsupp.support.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) f))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] [_inst_3 : DecidableEq.{succ u1} α] (f : Finsupp.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, max u2 u3} α (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.curry.{u1, u2, u3} α β M _inst_1 f)) (Finset.image.{max u1 u2, u1} (Prod.{u1, u2} α β) α (fun (a : α) (b : α) => _inst_3 a b) (Prod.fst.{u1, u2} α β) (Finsupp.support.{max u1 u2, u3} (Prod.{u1, u2} α β) M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) f))
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddCommMonoid.{u1} M] [_inst_3 : DecidableEq.{succ u3} α] (f : Finsupp.{max u2 u3, u1} (Prod.{u3, u2} α β) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))), HasSubset.Subset.{u3} (Finset.{u3} α) (Finset.instHasSubsetFinset.{u3} α) (Finsupp.support.{u3, max u2 u1} α (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.zero.{u2, u1} β M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1))) (Finsupp.curry.{u3, u2, u1} α β M _inst_1 f)) (Finset.image.{max u2 u3, u3} (Prod.{u3, u2} α β) α (fun (a : α) (b : α) => _inst_3 a b) (Prod.fst.{u3, u2} α β) (Finsupp.support.{max u3 u2, u1} (Prod.{u3, u2} α β) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_1)) f))
 Case conversion may be inaccurate. Consider using '#align finsupp.support_curry Finsupp.support_curryₓ'. -/
@@ -2127,7 +2127,7 @@ def sumElim {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →₀ γ)
 
 /- warning: finsupp.coe_sum_elim -> Finsupp.coe_sumElim is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{u1, u3} α γ _inst_1) (g : Finsupp.{u2, u3} β γ _inst_1), Eq.{max (succ (max u1 u2)) (succ u3)} ((Sum.{u1, u2} α β) -> γ) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.hasCoeToFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Finsupp.sumElim.{u1, u2, u3} α β γ _inst_1 f g)) (Sum.elim.{u1, u2, succ u3} α β γ (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α γ _inst_1) (fun (_x : Finsupp.{u1, u3} α γ _inst_1) => α -> γ) (Finsupp.hasCoeToFun.{u1, u3} α γ _inst_1) f) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β γ _inst_1) (fun (_x : Finsupp.{u2, u3} β γ _inst_1) => β -> γ) (Finsupp.hasCoeToFun.{u2, u3} β γ _inst_1) g))
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{u1, u3} α γ _inst_1) (g : Finsupp.{u2, u3} β γ _inst_1), Eq.{max (succ (max u1 u2)) (succ u3)} ((Sum.{u1, u2} α β) -> γ) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Finsupp.sumElim.{u1, u2, u3} α β γ _inst_1 f g)) (Sum.elim.{u1, u2, succ u3} α β γ (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α γ _inst_1) (fun (_x : Finsupp.{u1, u3} α γ _inst_1) => α -> γ) (Finsupp.coeFun.{u1, u3} α γ _inst_1) f) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β γ _inst_1) (fun (_x : Finsupp.{u2, u3} β γ _inst_1) => β -> γ) (Finsupp.coeFun.{u2, u3} β γ _inst_1) g))
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{u3, u1} α γ _inst_1) (g : Finsupp.{u2, u1} β γ _inst_1), Eq.{max (max (succ u3) (succ u2)) (succ u1)} (forall (ᾰ : Sum.{u3, u2} α β), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) ᾰ) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Finsupp.sumElim.{u3, u2, u1} α β γ _inst_1 f g)) (Sum.elim.{u3, u2, succ u1} α β γ (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α γ _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) _x) (Finsupp.funLike.{u3, u1} α γ _inst_1) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β γ _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) _x) (Finsupp.funLike.{u2, u1} β γ _inst_1) g))
 Case conversion may be inaccurate. Consider using '#align finsupp.coe_sum_elim Finsupp.coe_sumElimₓ'. -/
@@ -2139,7 +2139,7 @@ theorem coe_sumElim {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →
 
 /- warning: finsupp.sum_elim_apply -> Finsupp.sumElim_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{u1, u3} α γ _inst_1) (g : Finsupp.{u2, u3} β γ _inst_1) (x : Sum.{u1, u2} α β), Eq.{succ u3} γ (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.hasCoeToFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Finsupp.sumElim.{u1, u2, u3} α β γ _inst_1 f g) x) (Sum.elim.{u1, u2, succ u3} α β γ (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α γ _inst_1) (fun (_x : Finsupp.{u1, u3} α γ _inst_1) => α -> γ) (Finsupp.hasCoeToFun.{u1, u3} α γ _inst_1) f) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β γ _inst_1) (fun (_x : Finsupp.{u2, u3} β γ _inst_1) => β -> γ) (Finsupp.hasCoeToFun.{u2, u3} β γ _inst_1) g) x)
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{u1, u3} α γ _inst_1) (g : Finsupp.{u2, u3} β γ _inst_1) (x : Sum.{u1, u2} α β), Eq.{succ u3} γ (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Finsupp.sumElim.{u1, u2, u3} α β γ _inst_1 f g) x) (Sum.elim.{u1, u2, succ u3} α β γ (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α γ _inst_1) (fun (_x : Finsupp.{u1, u3} α γ _inst_1) => α -> γ) (Finsupp.coeFun.{u1, u3} α γ _inst_1) f) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β γ _inst_1) (fun (_x : Finsupp.{u2, u3} β γ _inst_1) => β -> γ) (Finsupp.coeFun.{u2, u3} β γ _inst_1) g) x)
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{u3, u1} α γ _inst_1) (g : Finsupp.{u2, u1} β γ _inst_1) (x : Sum.{u3, u2} α β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) x) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Finsupp.sumElim.{u3, u2, u1} α β γ _inst_1 f g) x) (Sum.elim.{u3, u2, succ u1} α β γ (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α γ _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) _x) (Finsupp.funLike.{u3, u1} α γ _inst_1) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β γ _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) _x) (Finsupp.funLike.{u2, u1} β γ _inst_1) g) x)
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_elim_apply Finsupp.sumElim_applyₓ'. -/
@@ -2150,7 +2150,7 @@ theorem sumElim_apply {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β 
 
 /- warning: finsupp.sum_elim_inl -> Finsupp.sumElim_inl is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{u1, u3} α γ _inst_1) (g : Finsupp.{u2, u3} β γ _inst_1) (x : α), Eq.{succ u3} γ (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.hasCoeToFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Finsupp.sumElim.{u1, u2, u3} α β γ _inst_1 f g) (Sum.inl.{u1, u2} α β x)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α γ _inst_1) (fun (_x : Finsupp.{u1, u3} α γ _inst_1) => α -> γ) (Finsupp.hasCoeToFun.{u1, u3} α γ _inst_1) f x)
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{u1, u3} α γ _inst_1) (g : Finsupp.{u2, u3} β γ _inst_1) (x : α), Eq.{succ u3} γ (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Finsupp.sumElim.{u1, u2, u3} α β γ _inst_1 f g) (Sum.inl.{u1, u2} α β x)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α γ _inst_1) (fun (_x : Finsupp.{u1, u3} α γ _inst_1) => α -> γ) (Finsupp.coeFun.{u1, u3} α γ _inst_1) f x)
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{u3, u1} α γ _inst_1) (g : Finsupp.{u2, u1} β γ _inst_1) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Finsupp.sumElim.{u3, u2, u1} α β γ _inst_1 f g) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α γ _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) _x) (Finsupp.funLike.{u3, u1} α γ _inst_1) f x)
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_elim_inl Finsupp.sumElim_inlₓ'. -/
@@ -2161,7 +2161,7 @@ theorem sumElim_inl {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →
 
 /- warning: finsupp.sum_elim_inr -> Finsupp.sumElim_inr is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{u1, u3} α γ _inst_1) (g : Finsupp.{u2, u3} β γ _inst_1) (x : β), Eq.{succ u3} γ (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.hasCoeToFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Finsupp.sumElim.{u1, u2, u3} α β γ _inst_1 f g) (Sum.inr.{u1, u2} α β x)) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β γ _inst_1) (fun (_x : Finsupp.{u2, u3} β γ _inst_1) => β -> γ) (Finsupp.hasCoeToFun.{u2, u3} β γ _inst_1) g x)
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{u1, u3} α γ _inst_1) (g : Finsupp.{u2, u3} β γ _inst_1) (x : β), Eq.{succ u3} γ (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Finsupp.sumElim.{u1, u2, u3} α β γ _inst_1 f g) (Sum.inr.{u1, u2} α β x)) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β γ _inst_1) (fun (_x : Finsupp.{u2, u3} β γ _inst_1) => β -> γ) (Finsupp.coeFun.{u2, u3} β γ _inst_1) g x)
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{u3, u1} α γ _inst_1) (g : Finsupp.{u2, u1} β γ _inst_1) (x : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) (Sum.inr.{u3, u2} α β x)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Finsupp.sumElim.{u3, u2, u1} α β γ _inst_1 f g) (Sum.inr.{u3, u2} α β x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β γ _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) _x) (Finsupp.funLike.{u2, u1} β γ _inst_1) g x)
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_elim_inr Finsupp.sumElim_inrₓ'. -/
@@ -2190,7 +2190,7 @@ def sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] : (Sum α β →₀
 
 /- warning: finsupp.fst_sum_finsupp_equiv_prod_finsupp -> Finsupp.fst_sumFinsuppEquivProdFinsupp is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (x : α), Eq.{succ u3} γ (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α γ _inst_1) (fun (_x : Finsupp.{u1, u3} α γ _inst_1) => α -> γ) (Finsupp.hasCoeToFun.{u1, u3} α γ _inst_1) (Prod.fst.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))) (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3), max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))} (Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) => (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) -> (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1) f)) x) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.hasCoeToFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) f (Sum.inl.{u1, u2} α β x))
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (x : α), Eq.{succ u3} γ (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α γ _inst_1) (fun (_x : Finsupp.{u1, u3} α γ _inst_1) => α -> γ) (Finsupp.coeFun.{u1, u3} α γ _inst_1) (Prod.fst.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))) (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3), max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))} (Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) => (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) -> (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1) f)) x) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) f (Sum.inl.{u1, u2} α β x))
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α γ _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) _x) (Finsupp.funLike.{u3, u1} α γ _inst_1) (Prod.fst.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (succ u1) (succ (max u2 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1) f)) x) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) f (Sum.inl.{u3, u2} α β x))
 Case conversion may be inaccurate. Consider using '#align finsupp.fst_sum_finsupp_equiv_prod_finsupp Finsupp.fst_sumFinsuppEquivProdFinsuppₓ'. -/
@@ -2201,7 +2201,7 @@ theorem fst_sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] (f : Sum α
 
 /- warning: finsupp.snd_sum_finsupp_equiv_prod_finsupp -> Finsupp.snd_sumFinsuppEquivProdFinsupp is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (y : β), Eq.{succ u3} γ (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β γ _inst_1) (fun (_x : Finsupp.{u2, u3} β γ _inst_1) => β -> γ) (Finsupp.hasCoeToFun.{u2, u3} β γ _inst_1) (Prod.snd.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))) (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3), max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))} (Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) => (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) -> (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1) f)) y) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.hasCoeToFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) f (Sum.inr.{u1, u2} α β y))
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (f : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (y : β), Eq.{succ u3} γ (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β γ _inst_1) (fun (_x : Finsupp.{u2, u3} β γ _inst_1) => β -> γ) (Finsupp.coeFun.{u2, u3} β γ _inst_1) (Prod.snd.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))) (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3), max (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3))} (Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) => (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) -> (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1) f)) y) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) f (Sum.inr.{u1, u2} α β y))
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β γ _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) _x) (Finsupp.funLike.{u2, u1} β γ _inst_1) (Prod.snd.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (succ u1) (succ (max u2 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1))) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1) f)) y) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) f (Sum.inr.{u3, u2} α β y))
 Case conversion may be inaccurate. Consider using '#align finsupp.snd_sum_finsupp_equiv_prod_finsupp Finsupp.snd_sumFinsuppEquivProdFinsuppₓ'. -/
@@ -2212,7 +2212,7 @@ theorem snd_sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] (f : Sum α
 
 /- warning: finsupp.sum_finsupp_equiv_prod_finsupp_symm_inl -> Finsupp.sumFinsuppEquivProdFinsupp_symm_inl is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (fg : Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (x : α), Eq.{succ u3} γ (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.hasCoeToFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3)), max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (fun (_x : Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) => (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) -> (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.hasCoeToFun.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.symm.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1)) fg) (Sum.inl.{u1, u2} α β x)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α γ _inst_1) (fun (_x : Finsupp.{u1, u3} α γ _inst_1) => α -> γ) (Finsupp.hasCoeToFun.{u1, u3} α γ _inst_1) (Prod.fst.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) fg) x)
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (fg : Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (x : α), Eq.{succ u3} γ (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3)), max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (fun (_x : Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) => (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) -> (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.hasCoeToFun.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.symm.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1)) fg) (Sum.inl.{u1, u2} α β x)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α γ _inst_1) (fun (_x : Finsupp.{u1, u3} α γ _inst_1) => α -> γ) (Finsupp.coeFun.{u1, u3} α γ _inst_1) (Prod.fst.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) fg) x)
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Equiv.symm.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1)) fg) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α γ _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => γ) _x) (Finsupp.funLike.{u3, u1} α γ _inst_1) (Prod.fst.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) fg) x)
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_equiv_prod_finsupp_symm_inl Finsupp.sumFinsuppEquivProdFinsupp_symm_inlₓ'. -/
@@ -2223,7 +2223,7 @@ theorem sumFinsuppEquivProdFinsupp_symm_inl {α β γ : Type _} [Zero γ] (fg :
 
 /- warning: finsupp.sum_finsupp_equiv_prod_finsupp_symm_inr -> Finsupp.sumFinsuppEquivProdFinsupp_symm_inr is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (fg : Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (y : β), Eq.{succ u3} γ (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.hasCoeToFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3)), max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (fun (_x : Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) => (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) -> (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.hasCoeToFun.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.symm.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1)) fg) (Sum.inr.{u1, u2} α β y)) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β γ _inst_1) (fun (_x : Finsupp.{u2, u3} β γ _inst_1) => β -> γ) (Finsupp.hasCoeToFun.{u2, u3} β γ _inst_1) (Prod.snd.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) fg) y)
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Zero.{u3} γ] (fg : Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (y : β), Eq.{succ u3} γ (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (fun (_x : Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) => (Sum.{u1, u2} α β) -> γ) (Finsupp.coeFun.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (coeFn.{max 1 (max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ (max u1 u3)) (succ (max u2 u3)), max (max (succ (max u1 u3)) (succ (max u2 u3))) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (fun (_x : Equiv.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) => (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) -> (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.hasCoeToFun.{max (succ (max u1 u3)) (succ (max u2 u3)), max (succ (max u1 u2)) (succ u3)} (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1)) (Equiv.symm.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u3)) (succ (max u2 u3))} (Finsupp.{max u1 u2, u3} (Sum.{u1, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u1, u2, u3} α β γ _inst_1)) fg) (Sum.inr.{u1, u2} α β y)) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (Finsupp.{u2, u3} β γ _inst_1) (fun (_x : Finsupp.{u2, u3} β γ _inst_1) => β -> γ) (Finsupp.coeFun.{u2, u3} β γ _inst_1) (Prod.snd.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α γ _inst_1) (Finsupp.{u2, u3} β γ _inst_1) fg) y)
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Zero.{u1} γ] (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => γ) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) γ _inst_1) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) _x) (Equiv.instFunLikeEquiv.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1)) (Equiv.symm.{max (max (succ u1) (succ u2)) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) γ _inst_1) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1)) (Finsupp.sumFinsuppEquivProdFinsupp.{u3, u2, u1} α β γ _inst_1)) fg) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β γ _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => γ) _x) (Finsupp.funLike.{u2, u1} β γ _inst_1) (Prod.snd.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α γ _inst_1) (Finsupp.{u2, u1} β γ _inst_1) fg) y)
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_equiv_prod_finsupp_symm_inr Finsupp.sumFinsuppEquivProdFinsupp_symm_inrₓ'. -/
@@ -2236,7 +2236,7 @@ variable [AddMonoid M]
 
 /- warning: finsupp.sum_finsupp_add_equiv_prod_finsupp -> Finsupp.sumFinsuppAddEquivProdFinsupp is a dubious translation:
 lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}}, AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.hasAdd.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.hasAdd.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))
+  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}}, AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))
 but is expected to have type
   forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}}, AddEquiv.{max u1 u3 u2, max (max u1 u3) u1 u2} (Finsupp.{max u3 u2, u1} (Sum.{u2, u3} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u2, max u1 u3} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u3, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u2, max u1 u3} (Finsupp.{u2, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u3, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_add_equiv_prod_finsupp Finsupp.sumFinsuppAddEquivProdFinsuppₓ'. -/
@@ -2255,7 +2255,7 @@ def sumFinsuppAddEquivProdFinsupp {α β : Type _} : (Sum α β →₀ M) ≃+ (
 
 /- warning: finsupp.fst_sum_finsupp_add_equiv_prod_finsupp -> Finsupp.fst_sumFinsuppAddEquivProdFinsupp is a dubious translation:
 lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (f : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (x : α), Eq.{succ u1} M (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => α -> M) (Finsupp.hasCoeToFun.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.fst.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1)), max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1))} (AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.hasAdd.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.hasAdd.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (fun (_x : AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.hasAdd.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.hasAdd.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) => (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) -> (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))) (AddEquiv.hasCoeToFun.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.hasAdd.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.hasAdd.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β) f)) x) (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.hasCoeToFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) f (Sum.inl.{u2, u3} α β x))
+  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (f : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (x : α), Eq.{succ u1} M (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => α -> M) (Finsupp.coeFun.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.fst.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1)), max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1))} (AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (fun (_x : AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) => (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) -> (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))) (AddEquiv.hasCoeToFun.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β) f)) x) (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.coeFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) f (Sum.inl.{u2, u3} α β x))
 but is expected to have type
   forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.fst.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1)))) (AddMonoidHomClass.toAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddEquivClass.instAddMonoidHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β) f)) x) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) f (Sum.inl.{u3, u2} α β x))
 Case conversion may be inaccurate. Consider using '#align finsupp.fst_sum_finsupp_add_equiv_prod_finsupp Finsupp.fst_sumFinsuppAddEquivProdFinsuppₓ'. -/
@@ -2266,7 +2266,7 @@ theorem fst_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀
 
 /- warning: finsupp.snd_sum_finsupp_add_equiv_prod_finsupp -> Finsupp.snd_sumFinsuppAddEquivProdFinsupp is a dubious translation:
 lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (f : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (y : β), Eq.{succ u1} M (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => β -> M) (Finsupp.hasCoeToFun.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.snd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1)), max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1))} (AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.hasAdd.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.hasAdd.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (fun (_x : AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.hasAdd.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.hasAdd.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) => (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) -> (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))) (AddEquiv.hasCoeToFun.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.hasAdd.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.hasAdd.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β) f)) y) (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.hasCoeToFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) f (Sum.inr.{u2, u3} α β y))
+  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (f : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (y : β), Eq.{succ u1} M (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => β -> M) (Finsupp.coeFun.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.snd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1)), max (succ (max (max u2 u3) u1)) (succ (max (max u2 u1) u3 u1))} (AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (fun (_x : AddEquiv.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) => (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) -> (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))) (AddEquiv.hasCoeToFun.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β) f)) y) (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.coeFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) f (Sum.inr.{u2, u3} α β y))
 but is expected to have type
   forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (f : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.snd.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) => Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1)))) (AddMonoidHomClass.toAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddEquivClass.instAddMonoidHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u1 u2 u3, max (max u1 u2) u1 u3} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))))))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β) f)) y) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) f (Sum.inr.{u3, u2} α β y))
 Case conversion may be inaccurate. Consider using '#align finsupp.snd_sum_finsupp_add_equiv_prod_finsupp Finsupp.snd_sumFinsuppAddEquivProdFinsuppₓ'. -/
@@ -2277,7 +2277,7 @@ theorem snd_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀
 
 /- warning: finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inl -> Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inl is a dubious translation:
 lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (fg : Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (x : α), Eq.{succ u1} M (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.hasCoeToFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1)), max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1))} (AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.hasAdd.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.hasAdd.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) -> (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (AddEquiv.hasCoeToFun.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.hasAdd.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.hasAdd.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.hasAdd.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β)) fg) (Sum.inl.{u2, u3} α β x)) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => α -> M) (Finsupp.hasCoeToFun.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.fst.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) fg) x)
+  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (fg : Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (x : α), Eq.{succ u1} M (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.coeFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1)), max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1))} (AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) -> (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (AddEquiv.hasCoeToFun.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β)) fg) (Sum.inl.{u2, u3} α β x)) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => α -> M) (Finsupp.coeFun.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.fst.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) fg) x)
 but is expected to have type
   forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1)))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1))) (AddMonoidHomClass.toAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (AddEquivClass.instAddMonoidHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β)) fg) (Sum.inl.{u3, u2} α β x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.fst.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) fg) x)
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inl Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inlₓ'. -/
@@ -2288,7 +2288,7 @@ theorem sumFinsuppAddEquivProdFinsupp_symm_inl {α β : Type _} (fg : (α →₀
 
 /- warning: finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inr -> Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inr is a dubious translation:
 lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (fg : Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (y : β), Eq.{succ u1} M (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.hasCoeToFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1)), max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1))} (AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.hasAdd.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.hasAdd.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) -> (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (AddEquiv.hasCoeToFun.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.hasAdd.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.hasAdd.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.hasAdd.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.hasAdd.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β)) fg) (Sum.inr.{u2, u3} α β y)) (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => β -> M) (Finsupp.hasCoeToFun.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.snd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) fg) y)
+  forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u2}} {β : Type.{u3}} (fg : Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (y : β), Eq.{succ u1} M (coeFn.{max (succ (max u2 u3)) (succ u1), max (succ (max u2 u3)) (succ u1)} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Sum.{u2, u3} α β) -> M) (Finsupp.coeFun.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (coeFn.{max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1)), max (succ (max (max u2 u1) u3 u1)) (succ (max (max u2 u3) u1))} (AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : AddEquiv.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) -> (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (AddEquiv.hasCoeToFun.{max (max u2 u1) u3 u1, max (max u2 u3) u1} (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u1) u3 u1} (Finsupp.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))) (Finsupp.add.{max u2 u3, u1} (Sum.{u2, u3} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.hasAdd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{u2, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u3, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u2, u3} M _inst_1 α β)) fg) (Sum.inr.{u2, u3} α β y)) (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (fun (_x : Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) => β -> M) (Finsupp.coeFun.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.snd.{max u2 u1, max u3 u1} (Finsupp.{u2, u1} α M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.{u3, u1} β M (AddZeroClass.toHasZero.{u1} M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) fg) y)
 but is expected to have type
   forall {M : Type.{u1}} [_inst_1 : AddMonoid.{u1} M] {α : Type.{u3}} {β : Type.{u2}} (fg : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (y : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ (max u3 u2)) (succ u1), succ (max u3 u2), succ u1} (Finsupp.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Sum.{u3, u2} α β) (fun (_x : Sum.{u3, u2} α β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sum.{u3, u2} α β) => M) _x) (Finsupp.funLike.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (fun (_x : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) => Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1)))) (AddZeroClass.toAdd.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1))) (AddMonoidHomClass.toAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (AddEquivClass.instAddMonoidHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddZeroClassSum.{max u3 u1, max u2 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (AddMonoid.toAddZeroClass.{max u3 u1} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u3, u1} α M _inst_1)) (AddMonoid.toAddZeroClass.{max u2 u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{u2, u1} β M _inst_1))) (AddMonoid.toAddZeroClass.{max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.addMonoid.{max u2 u3, u1} (Sum.{u3, u2} α β) M _inst_1)) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)))))) (AddEquiv.symm.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u3, u1} (Sum.{u3, u2} α β) M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1))) (Finsupp.add.{max u3 u2, u1} (Sum.{u3, u2} α β) M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Prod.instAddSum.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.add.{u3, u1} α M (AddMonoid.toAddZeroClass.{u1} M _inst_1)) (Finsupp.add.{u2, u1} β M (AddMonoid.toAddZeroClass.{u1} M _inst_1))) (Finsupp.sumFinsuppAddEquivProdFinsupp.{u1, u3, u2} M _inst_1 α β)) fg) (Sum.inr.{u3, u2} α β y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) β (fun (_x : β) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : β) => M) _x) (Finsupp.funLike.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) (Prod.snd.{max u1 u3, max u1 u2} (Finsupp.{u3, u1} α M (AddMonoid.toZero.{u1} M _inst_1)) (Finsupp.{u2, u1} β M (AddMonoid.toZero.{u1} M _inst_1)) fg) y)
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inr Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inrₓ'. -/
@@ -2308,7 +2308,7 @@ variable [Zero M] [MonoidWithZero R] [MulActionWithZero R M]
 
 /- warning: finsupp.single_smul -> Finsupp.single_smul is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] [_inst_2 : MonoidWithZero.{u3} R] [_inst_3 : MulActionWithZero.{u3, u2} R M _inst_2 _inst_1] (a : α) (b : α) (f : α -> M) (r : R), Eq.{succ u2} M (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M _inst_1 (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_2))) _inst_1 (MulActionWithZero.toSMulWithZero.{u3, u2} R M _inst_2 _inst_1 _inst_3))) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_2)))) (fun (_x : Finsupp.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_2)))) => α -> R) (Finsupp.hasCoeToFun.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_2)))) (Finsupp.single.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_2))) a r) b) (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) (Finsupp.single.{u1, u2} α M _inst_1 a (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M _inst_1 (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_2))) _inst_1 (MulActionWithZero.toSMulWithZero.{u3, u2} R M _inst_2 _inst_1 _inst_3))) r (f b))) b)
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Zero.{u2} M] [_inst_2 : MonoidWithZero.{u3} R] [_inst_3 : MulActionWithZero.{u3, u2} R M _inst_2 _inst_1] (a : α) (b : α) (f : α -> M) (r : R), Eq.{succ u2} M (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M _inst_1 (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_2))) _inst_1 (MulActionWithZero.toSMulWithZero.{u3, u2} R M _inst_2 _inst_1 _inst_3))) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (Finsupp.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_2)))) (fun (_x : Finsupp.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_2)))) => α -> R) (Finsupp.coeFun.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_2)))) (Finsupp.single.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_2))) a r) b) (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) (Finsupp.single.{u1, u2} α M _inst_1 a (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M _inst_1 (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_2))) _inst_1 (MulActionWithZero.toSMulWithZero.{u3, u2} R M _inst_2 _inst_1 _inst_3))) r (f b))) b)
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : Zero.{u3} M] [_inst_2 : MonoidWithZero.{u2} R] [_inst_3 : MulActionWithZero.{u2, u3} R M _inst_2 _inst_1] (a : α) (b : α) (f : α -> M) (r : R), Eq.{succ u3} M (HSMul.hSMul.{u2, u3, u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => R) b) M M (instHSMul.{u2, u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => R) b) M (SMulZeroClass.toSMul.{u2, u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => R) b) M _inst_1 (SMulWithZero.toSMulZeroClass.{u2, u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => R) b) M (MonoidWithZero.toZero.{u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => R) b) _inst_2) _inst_1 (MulActionWithZero.toSMulWithZero.{u2, u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => R) b) M _inst_2 _inst_1 _inst_3)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R _inst_2)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => R) _x) (Finsupp.funLike.{u1, u2} α R (MonoidWithZero.toZero.{u2} R _inst_2)) (Finsupp.single.{u1, u2} α R (MonoidWithZero.toZero.{u2} R _inst_2) a r) b) (f a)) (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) (Finsupp.single.{u1, u3} α M _inst_1 a (HSMul.hSMul.{u2, u3, u3} R M M (instHSMul.{u2, u3} R M (SMulZeroClass.toSMul.{u2, u3} R M _inst_1 (SMulWithZero.toSMulZeroClass.{u2, u3} R M (MonoidWithZero.toZero.{u2} R _inst_2) _inst_1 (MulActionWithZero.toSMulWithZero.{u2, u3} R M _inst_2 _inst_1 _inst_3)))) r (f b))) b)
 Case conversion may be inaccurate. Consider using '#align finsupp.single_smul Finsupp.single_smulₓ'. -/
@@ -2404,7 +2404,7 @@ attribute [local instance] comap_has_smul comap_mul_action comap_distrib_mul_act
 
 /- warning: finsupp.comap_smul_apply -> Finsupp.comapSMul_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {G : Type.{u3}} [_inst_1 : Group.{u3} G] [_inst_2 : MulAction.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (a : α), Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (SMul.smul.{u3, max u1 u2} G (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (Finsupp.comapSMul.{u1, u2, u3} α M G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)) _inst_2 _inst_3) g f) a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) f (SMul.smul.{u3, u1} G α (MulAction.toHasSmul.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)) _inst_2) (Inv.inv.{u3} G (DivInvMonoid.toHasInv.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)) g) a))
+  forall {α : Type.{u1}} {M : Type.{u2}} {G : Type.{u3}} [_inst_1 : Group.{u3} G] [_inst_2 : MulAction.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1))] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (a : α), Eq.{succ u2} M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (SMul.smul.{u3, max u1 u2} G (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (Finsupp.comapSMul.{u1, u2, u3} α M G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)) _inst_2 _inst_3) g f) a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) f (SMul.smul.{u3, u1} G α (MulAction.toHasSmul.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)) _inst_2) (Inv.inv.{u3} G (DivInvMonoid.toHasInv.{u3} G (Group.toDivInvMonoid.{u3} G _inst_1)) g) a))
 but is expected to have type
   forall {α : Type.{u3}} {M : Type.{u2}} {G : Type.{u1}} [_inst_1 : Group.{u1} G] [_inst_2 : MulAction.{u1, u3} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (instHSMul.{u1, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.comapSMul.{u3, u2, u1} α M G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) _inst_2 _inst_3)) g f) a) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) f (HSMul.hSMul.{u1, u3, u3} G α α (instHSMul.{u1, u3} G α (MulAction.toSMul.{u1, u3} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) _inst_2)) (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) g) a))
 Case conversion may be inaccurate. Consider using '#align finsupp.comap_smul_apply Finsupp.comapSMul_applyₓ'. -/
@@ -2436,9 +2436,9 @@ Throughout this section, some `monoid` and `semiring` arguments are specified wi
 
 /- warning: finsupp.coe_smul -> Finsupp.coe_smul is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribSMul.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1)] (b : R) (v : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{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 (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.hasZero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2))) b v)) (SMul.smul.{u3, max u1 u2} R (α -> M) (Function.hasSMul.{u1, u3, u2} α R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2))) b (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) v))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribSMul.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1)] (b : R) (v : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{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 (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2))) b v)) (SMul.smul.{u3, max u1 u2} R (α -> M) (Function.hasSMul.{u1, u3, u2} α R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2))) b (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) v))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : DistribSMul.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1)] (b : R) (v : Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)), Eq.{max (succ u1) (succ u3)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (instHSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u1, u3, u2} α M R (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) _inst_2)))) b v)) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (instHSMul.{u2, max u1 u3} R (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (Pi.instSMul.{u1, u3, u2} α R (fun (a : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (fun (i : α) => SMulZeroClass.toSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) (AddMonoid.toZero.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) (AddMonoid.toAddZeroClass.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) _inst_1) _inst_2)))) b (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) v))
+  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : DistribSMul.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1)] (b : R) (v : Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)), Eq.{max (succ u1) (succ u3)} (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (instHSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.smulZeroClass.{u1, u3, u2} α M R (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) _inst_2)))) b v)) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (forall (ᾰ : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) ᾰ) (instHSMul.{u2, max u1 u3} R (forall (a : α), (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (Pi.instSMul.{u1, u3, u2} α R (fun (a : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (fun (i : α) => SMulZeroClass.toSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) (AddMonoid.toZero.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) (AddMonoid.toAddZeroClass.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) i) _inst_1) _inst_2)))) b (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) v))
 Case conversion may be inaccurate. Consider using '#align finsupp.coe_smul Finsupp.coe_smulₓ'. -/
 @[simp]
 theorem coe_smul [AddMonoid M] [DistribSMul R M] (b : R) (v : α →₀ M) : ⇑(b • v) = b • v :=
@@ -2447,9 +2447,9 @@ theorem coe_smul [AddMonoid M] [DistribSMul R M] (b : R) (v : α →₀ M) : ⇑
 
 /- warning: finsupp.smul_apply -> Finsupp.smul_apply is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribSMul.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1)] (b : R) (v : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{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 (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.hasZero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2))) b v) a) (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2)) b (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.hasCoeToFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) v a))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribSMul.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1)] (b : R) (v : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{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 (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2))) b v) a) (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2)) b (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (fun (_x : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) => α -> M) (Finsupp.coeFun.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) v a))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : DistribSMul.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1)] (b : R) (v : Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (a : α), Eq.{succ u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (instHSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u1, u3, u2} α M R (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) _inst_2)))) b v) a) (HSMul.hSMul.{u2, u3, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (instHSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (SMulZeroClass.toSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddMonoid.toZero.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddMonoid.toAddZeroClass.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1) _inst_2))) b (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) v a))
+  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : DistribSMul.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1)] (b : R) (v : Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (a : α), Eq.{succ u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (HSMul.hSMul.{u2, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (instHSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.smulZeroClass.{u1, u3, u2} α M R (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) _inst_2)))) b v) a) (HSMul.hSMul.{u2, u3, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (instHSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (SMulZeroClass.toSMul.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddMonoid.toZero.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) (AddMonoid.toAddZeroClass.{u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) a) _inst_1) _inst_2))) b (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) α (fun (_x : α) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : α) => M) _x) (Finsupp.funLike.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) v a))
 Case conversion may be inaccurate. Consider using '#align finsupp.smul_apply Finsupp.smul_applyₓ'. -/
 theorem smul_apply [AddMonoid M] [DistribSMul R M] (b : R) (v : α →₀ M) (a : α) :
     (b • v) a = b • v a :=
@@ -2458,9 +2458,9 @@ theorem smul_apply [AddMonoid M] [DistribSMul R M] (b : R) (v : α →₀ M) (a
 
 /- warning: is_smul_regular.finsupp -> IsSMulRegular.finsupp is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribSMul.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1)] {k : R}, (IsSMulRegular.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2)) k) -> (IsSMulRegular.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.hasZero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2))) k)
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribSMul.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1)] {k : R}, (IsSMulRegular.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2)) k) -> (IsSMulRegular.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2))) k)
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : DistribSMul.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1)] {k : R}, (IsSMulRegular.{u2, u3} R M (SMulZeroClass.toSMul.{u2, u3} R M (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) _inst_2)) k) -> (IsSMulRegular.{u2, max u3 u1} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u1, u3, u2} α M R (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) _inst_2))) k)
+  forall {α : Type.{u1}} {M : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : DistribSMul.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1)] {k : R}, (IsSMulRegular.{u2, u3} R M (SMulZeroClass.toSMul.{u2, u3} R M (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) _inst_2)) k) -> (IsSMulRegular.{u2, max u3 u1} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.smulZeroClass.{u1, u3, u2} α M R (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) _inst_2))) k)
 Case conversion may be inaccurate. Consider using '#align is_smul_regular.finsupp IsSMulRegular.finsuppₓ'. -/
 theorem IsSMulRegular.finsupp [AddMonoid M] [DistribSMul R M] {k : R} (hk : IsSMulRegular M k) :
     IsSMulRegular (α →₀ M) k := fun _ _ h => ext fun i => hk (congr_fun h i)
@@ -2507,9 +2507,9 @@ variable {α M} {R}
 
 /- warning: finsupp.support_smul -> Finsupp.support_smul is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {_x : Monoid.{u3} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u3, u2} R M _x _inst_1] {b : R} {g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.hasZero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2)))) b g)) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) g)
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {_x : Monoid.{u3} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u3, u2} R M _x _inst_1] {b : R} {g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2)))) b g)) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) g)
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {_x : Monoid.{u3} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u3, u2} R M _x _inst_1] {b : R} {g : Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finsupp.support.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1) (HSMul.hSMul.{u3, max u1 u2, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (instHSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u1, u2, u3} α M R (AddMonoid.toZero.{u2} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2))))) b g)) (Finsupp.support.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1) g)
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {_x : Monoid.{u3} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u3, u2} R M _x _inst_1] {b : R} {g : Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finsupp.support.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1) (HSMul.hSMul.{u3, max u1 u2, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (instHSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddMonoid.toZero.{u2} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2))))) b g)) (Finsupp.support.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1) g)
 Case conversion may be inaccurate. Consider using '#align finsupp.support_smul Finsupp.support_smulₓ'. -/
 theorem support_smul {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] {b : R} {g : α →₀ M} :
     (b • g).support ⊆ g.support := fun a =>
@@ -2520,9 +2520,9 @@ theorem support_smul {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] {b : R}
 
 /- warning: finsupp.support_smul_eq -> Finsupp.support_smul_eq is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Semiring.{u3} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : Module.{u3, u2} R M _inst_1 _inst_2] [_inst_4 : NoZeroSMulDivisors.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3))))] {b : R}, (Ne.{succ u3} R b (OfNat.ofNat.{u3} R 0 (OfNat.mk.{u3} R 0 (Zero.zero.{u3} R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))))))) -> (forall {g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))}, Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.hasZero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3))))) b g)) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) g))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Semiring.{u3} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : Module.{u3, u2} R M _inst_1 _inst_2] [_inst_4 : NoZeroSMulDivisors.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3))))] {b : R}, (Ne.{succ u3} R b (OfNat.ofNat.{u3} R 0 (OfNat.mk.{u3} R 0 (Zero.zero.{u3} R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))))))) -> (forall {g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))}, Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u3, u2} R M (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3))))) b g)) (Finsupp.support.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) g))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Semiring.{u3} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : Module.{u3, u2} R M _inst_1 _inst_2] [_inst_4 : NoZeroSMulDivisors.{u3, u2} R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulZeroClass.toSMul.{u3, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u3, u2} R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3))))] {b : R}, (Ne.{succ u3} R b (OfNat.ofNat.{u3} R 0 (Zero.toOfNat0.{u3} R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))))) -> (forall {g : Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))}, Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (HSMul.hSMul.{u3, max u1 u2, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (instHSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulZeroClass.toSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Finsupp.instSMulZeroClassFinsuppZero.{u1, u2, u3} α M R (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u3, u2} R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3)))))) b g)) (Finsupp.support.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) g))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Semiring.{u3} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : Module.{u3, u2} R M _inst_1 _inst_2] [_inst_4 : NoZeroSMulDivisors.{u3, u2} R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulZeroClass.toSMul.{u3, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u3, u2} R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3))))] {b : R}, (Ne.{succ u3} R b (OfNat.ofNat.{u3} R 0 (Zero.toOfNat0.{u3} R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))))) -> (forall {g : Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))}, Eq.{succ u1} (Finset.{u1} α) (Finsupp.support.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (HSMul.hSMul.{u3, max u1 u2, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (instHSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulZeroClass.toSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u3, u2} R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u3, u2} R M (Semiring.toMonoidWithZero.{u3} R _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u3, u2} R M _inst_1 _inst_2 _inst_3)))))) b g)) (Finsupp.support.{u1, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) g))
 Case conversion may be inaccurate. Consider using '#align finsupp.support_smul_eq Finsupp.support_smul_eqₓ'. -/
 @[simp]
 theorem support_smul_eq [Semiring R] [AddCommMonoid M] [Module R M] [NoZeroSMulDivisors R M] {b : R}
@@ -2536,9 +2536,9 @@ variable {p : α → Prop}
 
 /- warning: finsupp.filter_smul -> Finsupp.filter_smul is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {p : α -> Prop} {_x : Monoid.{u3} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u3, u2} R M _x _inst_1] {b : R} {v : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) p (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.hasZero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2)))) b v)) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.hasZero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2)))) b (Finsupp.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) p v))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {p : α -> Prop} {_x : Monoid.{u3} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u3, u2} R M _x _inst_1] {b : R} {v : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) p (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2)))) b v)) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2)))) b (Finsupp.filter.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) p v))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {p : α -> Prop} {_x : Monoid.{u3} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u3, u2} R M _x _inst_1] {b : R} {v : Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.filter.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1) p (HSMul.hSMul.{u3, max u1 u2, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (instHSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u1, u2, u3} α M R (AddMonoid.toZero.{u2} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2))))) b v)) (HSMul.hSMul.{u3, max u2 u1, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (instHSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u1, u2, u3} α M R (AddMonoid.toZero.{u2} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2))))) b (Finsupp.filter.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1) p v))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {p : α -> Prop} {_x : Monoid.{u3} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u3, u2} R M _x _inst_1] {b : R} {v : Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)}, Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.filter.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1) p (HSMul.hSMul.{u3, max u1 u2, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (instHSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddMonoid.toZero.{u2} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2))))) b v)) (HSMul.hSMul.{u3, max u2 u1, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (instHSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddMonoid.toZero.{u2} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2))))) b (Finsupp.filter.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1) p v))
 Case conversion may be inaccurate. Consider using '#align finsupp.filter_smul Finsupp.filter_smulₓ'. -/
 @[simp]
 theorem filter_smul {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] {b : R} {v : α →₀ M} :
@@ -2550,9 +2550,9 @@ end
 
 /- warning: finsupp.map_domain_smul -> Finsupp.mapDomain_smul is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {R : Type.{u4}} {_x : Monoid.{u4} R} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : DistribMulAction.{u4, u3} R M _x (AddCommMonoid.toAddMonoid.{u3} M _inst_1)] {f : α -> β} (b : R) (v : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f (SMul.smul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (SMulZeroClass.toHasSmul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasZero.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.smulZeroClass.{u1, u3, u4} α M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (DistribMulAction.toDistribSMul.{u4, u3} R M _x (AddCommMonoid.toAddMonoid.{u3} M _inst_1) _inst_2)))) b v)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (DistribMulAction.toDistribSMul.{u4, u3} R M _x (AddCommMonoid.toAddMonoid.{u3} M _inst_1) _inst_2)))) b (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f v))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {R : Type.{u4}} {_x : Monoid.{u4} R} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : DistribMulAction.{u4, u3} R M _x (AddCommMonoid.toAddMonoid.{u3} M _inst_1)] {f : α -> β} (b : R) (v : Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))), Eq.{max (succ u2) (succ u3)} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f (SMul.smul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (SMulZeroClass.toHasSmul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.smulZeroClass.{u1, u3, u4} α M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (DistribMulAction.toDistribSMul.{u4, u3} R M _x (AddCommMonoid.toAddMonoid.{u3} M _inst_1) _inst_2)))) b v)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (DistribMulAction.toDistribSMul.{u4, u3} R M _x (AddCommMonoid.toAddMonoid.{u3} M _inst_1) _inst_2)))) b (Finsupp.mapDomain.{u1, u2, u3} α β M _inst_1 f v))
 but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} {M : Type.{u3}} {R : Type.{u4}} {_x : Monoid.{u4} R} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : DistribMulAction.{u4, u3} R M _x (AddCommMonoid.toAddMonoid.{u3} M _inst_1)] {f : α -> β} (b : R) (v : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.mapDomain.{u2, u1, u3} α β M _inst_1 f (HSMul.hSMul.{u4, max u2 u3, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (instHSMul.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (SMulZeroClass.toSMul.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.instSMulZeroClassFinsuppZero.{u2, u3, u4} α M R (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (DistribSMul.toSMulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (DistribMulAction.toDistribSMul.{u4, u3} R M _x (AddCommMonoid.toAddMonoid.{u3} M _inst_1) _inst_2))))) b v)) (HSMul.hSMul.{u4, max u3 u1, max u1 u3} R (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (instHSMul.{u4, max u1 u3} R (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (SMulZeroClass.toSMul.{u4, max u1 u3} R (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.zero.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.instSMulZeroClassFinsuppZero.{u1, u3, u4} β M R (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (DistribSMul.toSMulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (DistribMulAction.toDistribSMul.{u4, u3} R M _x (AddCommMonoid.toAddMonoid.{u3} M _inst_1) _inst_2))))) b (Finsupp.mapDomain.{u2, u1, u3} α β M _inst_1 f v))
+  forall {α : Type.{u2}} {β : Type.{u1}} {M : Type.{u3}} {R : Type.{u4}} {_x : Monoid.{u4} R} [_inst_1 : AddCommMonoid.{u3} M] [_inst_2 : DistribMulAction.{u4, u3} R M _x (AddCommMonoid.toAddMonoid.{u3} M _inst_1)] {f : α -> β} (b : R) (v : Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.mapDomain.{u2, u1, u3} α β M _inst_1 f (HSMul.hSMul.{u4, max u2 u3, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (instHSMul.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (SMulZeroClass.toSMul.{u4, max u2 u3} R (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} α M R (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (DistribSMul.toSMulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (DistribMulAction.toDistribSMul.{u4, u3} R M _x (AddCommMonoid.toAddMonoid.{u3} M _inst_1) _inst_2))))) b v)) (HSMul.hSMul.{u4, max u3 u1, max u1 u3} R (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (instHSMul.{u4, max u1 u3} R (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (SMulZeroClass.toSMul.{u4, max u1 u3} R (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.zero.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u1, u3, u4} β M R (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (DistribSMul.toSMulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)) (DistribMulAction.toDistribSMul.{u4, u3} R M _x (AddCommMonoid.toAddMonoid.{u3} M _inst_1) _inst_2))))) b (Finsupp.mapDomain.{u2, u1, u3} α β M _inst_1 f v))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_domain_smul Finsupp.mapDomain_smulₓ'. -/
 theorem mapDomain_smul {_ : Monoid R} [AddCommMonoid M] [DistribMulAction R M] {f : α → β} (b : R)
     (v : α →₀ M) : mapDomain f (b • v) = b • mapDomain f v :=
@@ -2561,9 +2561,9 @@ theorem mapDomain_smul {_ : Monoid R} [AddCommMonoid M] [DistribMulAction R M] {
 
 /- warning: finsupp.smul_single -> Finsupp.smul_single is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {_x : Monoid.{u3} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u3, u2} R M _x _inst_1] (c : R) (a : α) (b : M), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.hasZero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2)))) c (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) a b)) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) a (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2))) c b))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {_x : Monoid.{u3} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u3, u2} R M _x _inst_1] (c : R) (a : α) (b : M), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMul.smul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2)))) c (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) a b)) (Finsupp.single.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) a (SMul.smul.{u3, u2} R M (SMulZeroClass.toHasSmul.{u3, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2))) c b))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {_x : Monoid.{u3} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u3, u2} R M _x _inst_1] (c : R) (a : α) (b : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (HSMul.hSMul.{u3, max u2 u1, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (instHSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u1, u2, u3} α M R (AddMonoid.toZero.{u2} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2))))) c (Finsupp.single.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1) a b)) (Finsupp.single.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1) a (HSMul.hSMul.{u3, u2, u2} R M M (instHSMul.{u3, u2} R M (SMulZeroClass.toSMul.{u3, u2} R M (AddMonoid.toZero.{u2} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2)))) c b))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} {_x : Monoid.{u3} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u3, u2} R M _x _inst_1] (c : R) (a : α) (b : M), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (HSMul.hSMul.{u3, max u2 u1, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (instHSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u2} R (Finsupp.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.zero.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1)) (Finsupp.smulZeroClass.{u1, u2, u3} α M R (AddMonoid.toZero.{u2} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2))))) c (Finsupp.single.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1) a b)) (Finsupp.single.{u1, u2} α M (AddMonoid.toZero.{u2} M _inst_1) a (HSMul.hSMul.{u3, u2, u2} R M M (instHSMul.{u3, u2} R M (SMulZeroClass.toSMul.{u3, u2} R M (AddMonoid.toZero.{u2} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u2} R M _x _inst_1 _inst_2)))) c b))
 Case conversion may be inaccurate. Consider using '#align finsupp.smul_single Finsupp.smul_singleₓ'. -/
 @[simp]
 theorem smul_single {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] (c : R) (a : α) (b : M) :
@@ -2573,9 +2573,9 @@ theorem smul_single {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] (c : R)
 
 /- warning: finsupp.smul_single' -> Finsupp.smul_single' is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {R : Type.{u2}} {_x : Semiring.{u2} R} (c : R) (a : α) (b : R), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x))))) (SMul.smul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x))))) (SMulZeroClass.toHasSmul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x))))) (Finsupp.hasZero.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x))))) (Finsupp.smulZeroClass.{u1, u2, u2} α R R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))) (SMulWithZero.toSmulZeroClass.{u2, u2} R R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))) (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))) (MulZeroClass.toSMulWithZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x))))))) c (Finsupp.single.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))) a b)) (Finsupp.single.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))) a (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x))))) c b))
+  forall {α : Type.{u1}} {R : Type.{u2}} {_x : Semiring.{u2} R} (c : R) (a : α) (b : R), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x))))) (SMul.smul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x))))) (SMulZeroClass.toHasSmul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x))))) (Finsupp.zero.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x))))) (Finsupp.smulZeroClass.{u1, u2, u2} α R R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))) (SMulWithZero.toSmulZeroClass.{u2, u2} R R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))) (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))) (MulZeroClass.toSMulWithZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x))))))) c (Finsupp.single.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))) a b)) (Finsupp.single.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))) a (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x))))) c b))
 but is expected to have type
-  forall {α : Type.{u1}} {R : Type.{u2}} {_x : Semiring.{u2} R} (c : R) (a : α) (b : R), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x))) (HSMul.hSMul.{u2, max u2 u1, max u1 u2} R (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x))) (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x))) (instHSMul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x))) (SMulZeroClass.toSMul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x))) (Finsupp.zero.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x))) (Finsupp.instSMulZeroClassFinsuppZero.{u1, u2, u2} α R R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x)) (SMulWithZero.toSMulZeroClass.{u2, u2} R R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x)) (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x)) (MulZeroClass.toSMulWithZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))))))) c (Finsupp.single.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x)) a b)) (Finsupp.single.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x)) a (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))) c b))
+  forall {α : Type.{u1}} {R : Type.{u2}} {_x : Semiring.{u2} R} (c : R) (a : α) (b : R), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x))) (HSMul.hSMul.{u2, max u2 u1, max u1 u2} R (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x))) (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x))) (instHSMul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x))) (SMulZeroClass.toSMul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x))) (Finsupp.zero.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x))) (Finsupp.smulZeroClass.{u1, u2, u2} α R R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x)) (SMulWithZero.toSMulZeroClass.{u2, u2} R R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x)) (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x)) (MulZeroClass.toSMulWithZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))))))) c (Finsupp.single.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x)) a b)) (Finsupp.single.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _x)) a (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _x)))) c b))
 Case conversion may be inaccurate. Consider using '#align finsupp.smul_single' Finsupp.smul_single'ₓ'. -/
 @[simp]
 theorem smul_single' {_ : Semiring R} (c : R) (a : α) (b : R) :
@@ -2585,9 +2585,9 @@ theorem smul_single' {_ : Semiring R} (c : R) (a : α) (b : R) :
 
 /- warning: finsupp.map_range_smul -> Finsupp.mapRange_smul is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {R : Type.{u4}} {_x : Monoid.{u4} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u4, u2} R M _x _inst_1] [_inst_3 : AddMonoid.{u3} N] [_inst_4 : DistribMulAction.{u4, u3} R N _x _inst_3] {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 (AddMonoid.toAddZeroClass.{u2} M _inst_1)))))) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3)))))} (c : R) (v : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))), (forall (x : M), Eq.{succ u3} N (f (SMul.smul.{u4, u2} R M (SMulZeroClass.toHasSmul.{u4, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u2} R M _x _inst_1 _inst_2))) c x)) (SMul.smul.{u4, u3} R N (SMulZeroClass.toHasSmul.{u4, u3} R N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3)) (DistribSMul.toSmulZeroClass.{u4, u3} R N (AddMonoid.toAddZeroClass.{u3} N _inst_3) (DistribMulAction.toDistribSMul.{u4, u3} R N _x _inst_3 _inst_4))) c (f x))) -> (Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3))) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3)) f hf (SMul.smul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.hasZero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u4} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u2} R M _x _inst_1 _inst_2)))) c v)) (SMul.smul.{u4, max u1 u3} R (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3))) (SMulZeroClass.toHasSmul.{u4, max u1 u3} R (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3))) (Finsupp.hasZero.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3))) (Finsupp.smulZeroClass.{u1, u3, u4} α N R (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3)) (DistribSMul.toSmulZeroClass.{u4, u3} R N (AddMonoid.toAddZeroClass.{u3} N _inst_3) (DistribMulAction.toDistribSMul.{u4, u3} R N _x _inst_3 _inst_4)))) c (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3)) f hf v)))
+  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {R : Type.{u4}} {_x : Monoid.{u4} R} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribMulAction.{u4, u2} R M _x _inst_1] [_inst_3 : AddMonoid.{u3} N] [_inst_4 : DistribMulAction.{u4, u3} R N _x _inst_3] {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 (AddMonoid.toAddZeroClass.{u2} M _inst_1)))))) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3)))))} (c : R) (v : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))), (forall (x : M), Eq.{succ u3} N (f (SMul.smul.{u4, u2} R M (SMulZeroClass.toHasSmul.{u4, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u2} R M _x _inst_1 _inst_2))) c x)) (SMul.smul.{u4, u3} R N (SMulZeroClass.toHasSmul.{u4, u3} R N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3)) (DistribSMul.toSmulZeroClass.{u4, u3} R N (AddMonoid.toAddZeroClass.{u3} N _inst_3) (DistribMulAction.toDistribSMul.{u4, u3} R N _x _inst_3 _inst_4))) c (f x))) -> (Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3))) (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3)) f hf (SMul.smul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u4} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u2} R M _x _inst_1 _inst_2)))) c v)) (SMul.smul.{u4, max u1 u3} R (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3))) (SMulZeroClass.toHasSmul.{u4, max u1 u3} R (Finsupp.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3))) (Finsupp.zero.{u1, u3} α N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3))) (Finsupp.smulZeroClass.{u1, u3, u4} α N R (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3)) (DistribSMul.toSmulZeroClass.{u4, u3} R N (AddMonoid.toAddZeroClass.{u3} N _inst_3) (DistribMulAction.toDistribSMul.{u4, u3} R N _x _inst_3 _inst_4)))) c (Finsupp.mapRange.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N _inst_3)) f hf v)))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} {R : Type.{u4}} {_x : Monoid.{u4} R} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : DistribMulAction.{u4, u3} R M _x _inst_1] [_inst_3 : AddMonoid.{u2} N] [_inst_4 : DistribMulAction.{u4, u2} R N _x _inst_3] {f : M -> N} {hf : Eq.{succ u2} N (f (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddMonoid.toZero.{u3} M _inst_1)))) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N (AddMonoid.toZero.{u2} N _inst_3)))} (c : R) (v : Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)), (forall (x : M), Eq.{succ u2} N (f (HSMul.hSMul.{u4, u3, u3} R M M (instHSMul.{u4, u3} R M (SMulZeroClass.toSMul.{u4, u3} R M (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _x _inst_1 _inst_2)))) c x)) (HSMul.hSMul.{u4, u2, u2} R N N (instHSMul.{u4, u2} R N (SMulZeroClass.toSMul.{u4, u2} R N (AddMonoid.toZero.{u2} N _inst_3) (DistribSMul.toSMulZeroClass.{u4, u2} R N (AddMonoid.toAddZeroClass.{u2} N _inst_3) (DistribMulAction.toDistribSMul.{u4, u2} R N _x _inst_3 _inst_4)))) c (f x))) -> (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N _inst_3)) (Finsupp.mapRange.{u1, u3, u2} α M N (AddMonoid.toZero.{u3} M _inst_1) (AddMonoid.toZero.{u2} N _inst_3) f hf (HSMul.hSMul.{u4, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (instHSMul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (SMulZeroClass.toSMul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u1, u3, u4} α M R (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _x _inst_1 _inst_2))))) c v)) (HSMul.hSMul.{u4, max u2 u1, max u1 u2} R (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N _inst_3)) (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N _inst_3)) (instHSMul.{u4, max u1 u2} R (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N _inst_3)) (SMulZeroClass.toSMul.{u4, max u1 u2} R (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N _inst_3)) (Finsupp.zero.{u1, u2} α N (AddMonoid.toZero.{u2} N _inst_3)) (Finsupp.instSMulZeroClassFinsuppZero.{u1, u2, u4} α N R (AddMonoid.toZero.{u2} N _inst_3) (DistribSMul.toSMulZeroClass.{u4, u2} R N (AddMonoid.toAddZeroClass.{u2} N _inst_3) (DistribMulAction.toDistribSMul.{u4, u2} R N _x _inst_3 _inst_4))))) c (Finsupp.mapRange.{u1, u3, u2} α M N (AddMonoid.toZero.{u3} M _inst_1) (AddMonoid.toZero.{u2} N _inst_3) f hf v)))
+  forall {α : Type.{u1}} {M : Type.{u3}} {N : Type.{u2}} {R : Type.{u4}} {_x : Monoid.{u4} R} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : DistribMulAction.{u4, u3} R M _x _inst_1] [_inst_3 : AddMonoid.{u2} N] [_inst_4 : DistribMulAction.{u4, u2} R N _x _inst_3] {f : M -> N} {hf : Eq.{succ u2} N (f (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddMonoid.toZero.{u3} M _inst_1)))) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N (AddMonoid.toZero.{u2} N _inst_3)))} (c : R) (v : Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)), (forall (x : M), Eq.{succ u2} N (f (HSMul.hSMul.{u4, u3, u3} R M M (instHSMul.{u4, u3} R M (SMulZeroClass.toSMul.{u4, u3} R M (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _x _inst_1 _inst_2)))) c x)) (HSMul.hSMul.{u4, u2, u2} R N N (instHSMul.{u4, u2} R N (SMulZeroClass.toSMul.{u4, u2} R N (AddMonoid.toZero.{u2} N _inst_3) (DistribSMul.toSMulZeroClass.{u4, u2} R N (AddMonoid.toAddZeroClass.{u2} N _inst_3) (DistribMulAction.toDistribSMul.{u4, u2} R N _x _inst_3 _inst_4)))) c (f x))) -> (Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N _inst_3)) (Finsupp.mapRange.{u1, u3, u2} α M N (AddMonoid.toZero.{u3} M _inst_1) (AddMonoid.toZero.{u2} N _inst_3) f hf (HSMul.hSMul.{u4, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (instHSMul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (SMulZeroClass.toSMul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.zero.{u1, u3} α M (AddMonoid.toZero.{u3} M _inst_1)) (Finsupp.smulZeroClass.{u1, u3, u4} α M R (AddMonoid.toZero.{u3} M _inst_1) (DistribSMul.toSMulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _x _inst_1 _inst_2))))) c v)) (HSMul.hSMul.{u4, max u2 u1, max u1 u2} R (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N _inst_3)) (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N _inst_3)) (instHSMul.{u4, max u1 u2} R (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N _inst_3)) (SMulZeroClass.toSMul.{u4, max u1 u2} R (Finsupp.{u1, u2} α N (AddMonoid.toZero.{u2} N _inst_3)) (Finsupp.zero.{u1, u2} α N (AddMonoid.toZero.{u2} N _inst_3)) (Finsupp.smulZeroClass.{u1, u2, u4} α N R (AddMonoid.toZero.{u2} N _inst_3) (DistribSMul.toSMulZeroClass.{u4, u2} R N (AddMonoid.toAddZeroClass.{u2} N _inst_3) (DistribMulAction.toDistribSMul.{u4, u2} R N _x _inst_3 _inst_4))))) c (Finsupp.mapRange.{u1, u3, u2} α M N (AddMonoid.toZero.{u3} M _inst_1) (AddMonoid.toZero.{u2} N _inst_3) f hf v)))
 Case conversion may be inaccurate. Consider using '#align finsupp.map_range_smul Finsupp.mapRange_smulₓ'. -/
 theorem mapRange_smul {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] [AddMonoid N]
     [DistribMulAction R N] {f : M → N} {hf : f 0 = 0} (c : R) (v : α →₀ M)
@@ -2602,9 +2602,9 @@ theorem mapRange_smul {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] [AddMo
 
 /- warning: finsupp.smul_single_one -> Finsupp.smul_single_one is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] (a : α) (b : R), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) (SMul.smul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) (SMulZeroClass.toHasSmul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) (Finsupp.hasZero.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) (Finsupp.smulZeroClass.{u1, u2, u2} α R R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (SMulWithZero.toSmulZeroClass.{u2, u2} R R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (MulZeroClass.toSMulWithZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))))) b (Finsupp.single.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) a (OfNat.ofNat.{u2} R 1 (OfNat.mk.{u2} R 1 (One.one.{u2} R (AddMonoidWithOne.toOne.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))))))) (Finsupp.single.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) a b)
+  forall {α : Type.{u1}} {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] (a : α) (b : R), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) (SMul.smul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) (SMulZeroClass.toHasSmul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) (Finsupp.zero.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) (Finsupp.smulZeroClass.{u1, u2, u2} α R R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (SMulWithZero.toSmulZeroClass.{u2, u2} R R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (MulZeroClass.toSMulWithZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))))) b (Finsupp.single.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) a (OfNat.ofNat.{u2} R 1 (OfNat.mk.{u2} R 1 (One.one.{u2} R (AddMonoidWithOne.toOne.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))))))) (Finsupp.single.{u1, u2} α R (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) a b)
 but is expected to have type
-  forall {α : Type.{u1}} {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] (a : α) (b : R), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (HSMul.hSMul.{u2, max u2 u1, max u1 u2} R (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (instHSMul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (SMulZeroClass.toSMul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Finsupp.zero.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Finsupp.instSMulZeroClassFinsuppZero.{u1, u2, u2} α R R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) (SMulWithZero.toSMulZeroClass.{u2, u2} R R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) (MulZeroClass.toSMulWithZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))))))) b (Finsupp.single.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) a (OfNat.ofNat.{u2} R 1 (One.toOfNat1.{u2} R (Semiring.toOne.{u2} R _inst_1))))) (Finsupp.single.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) a b)
+  forall {α : Type.{u1}} {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] (a : α) (b : R), Eq.{max (succ u1) (succ u2)} (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (HSMul.hSMul.{u2, max u2 u1, max u1 u2} R (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (instHSMul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (SMulZeroClass.toSMul.{u2, max u1 u2} R (Finsupp.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Finsupp.zero.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u2} α R R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) (SMulWithZero.toSMulZeroClass.{u2, u2} R R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) (MulZeroClass.toSMulWithZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))))))) b (Finsupp.single.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) a (OfNat.ofNat.{u2} R 1 (One.toOfNat1.{u2} R (Semiring.toOne.{u2} R _inst_1))))) (Finsupp.single.{u1, u2} α R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) a b)
 Case conversion may be inaccurate. Consider using '#align finsupp.smul_single_one Finsupp.smul_single_oneₓ'. -/
 theorem smul_single_one [Semiring R] (a : α) (b : R) : b • single a 1 = single a b := by
   rw [smul_single, smul_eq_mul, mul_one]
@@ -2612,9 +2612,9 @@ theorem smul_single_one [Semiring R] (a : α) (b : R) : b • single a 1 = singl
 
 /- warning: finsupp.comap_domain_smul -> Finsupp.comapDomain_smul is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {R : Type.{u4}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : Monoid.{u4} R] [_inst_3 : DistribMulAction.{u4, u3} R M _inst_2 _inst_1] {f : α -> β} (r : R) (v : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (hfv : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)))) (hfrv : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v))))) (Set.InjOn.mono.{u1, u2} α β (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)))) (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v))) f (Set.preimage_mono.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)) (Iff.mpr (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v))) (HasSubset.Subset.{u2} (Finset.{u2} β) (Finset.hasSubset.{u2} β) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)) (Finset.coe_subset.{u2} β (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)) (Finsupp.support_smul.{u2, u3, u4} β M R _inst_2 _inst_1 _inst_3 r v))) hfv)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) f (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v) hfrv) (SMul.smul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.hasZero.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u1, u3, u4} α M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) f v hfv))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {R : Type.{u4}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : Monoid.{u4} R] [_inst_3 : DistribMulAction.{u4, u3} R M _inst_2 _inst_1] {f : α -> β} (r : R) (v : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (hfv : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)))) (hfrv : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v))))) (Set.InjOn.mono.{u1, u2} α β (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)))) (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v))) f (Set.preimage_mono.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)) (Iff.mpr (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v))) (HasSubset.Subset.{u2} (Finset.{u2} β) (Finset.hasSubset.{u2} β) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)) (Finset.coe_subset.{u2} β (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v)) (Finsupp.support_smul.{u2, u3, u4} β M R _inst_2 _inst_1 _inst_3 r v))) hfv)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) f (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v) hfrv) (SMul.smul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u1, u3, u4} α M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) f v hfv))
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u4}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u4} M] [_inst_2 : Monoid.{u3} R] [_inst_3 : DistribMulAction.{u3, u4} R M _inst_2 _inst_1] {f : α -> β} (r : R) (v : Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (hfv : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)))) (hfrv : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v))))) (Set.InjOn.mono.{u2, u1} α β (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)))) (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v))) f (Set.preimage_mono.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v))) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)) (Iff.mpr (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v))) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v))) (HasSubset.Subset.{u2} (Finset.{u2} β) (Finset.instHasSubsetFinset.{u2} β) (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)) (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)) (Finset.coe_subset.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)) (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)) (Finsupp.support_smul.{u2, u4, u3} β M R _inst_2 _inst_1 _inst_3 r v))) hfv)), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.comapDomain.{u1, u2, u4} α β M (AddMonoid.toZero.{u4} M _inst_1) f (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v) hfrv) (HSMul.hSMul.{u3, max u4 u1, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u1, u4, u3} α M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r (Finsupp.comapDomain.{u1, u2, u4} α β M (AddMonoid.toZero.{u4} M _inst_1) f v hfv))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u4}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u4} M] [_inst_2 : Monoid.{u3} R] [_inst_3 : DistribMulAction.{u3, u4} R M _inst_2 _inst_1] {f : α -> β} (r : R) (v : Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (hfv : Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)))) (hfrv : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v))))) (Set.InjOn.mono.{u2, u1} α β (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)))) (Set.preimage.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v))) f (Set.preimage_mono.{u1, u2} α β f (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v))) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)) (Iff.mpr (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v))) (Finset.toSet.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v))) (HasSubset.Subset.{u2} (Finset.{u2} β) (Finset.instHasSubsetFinset.{u2} β) (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)) (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)) (Finset.coe_subset.{u2} β (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)) (Finsupp.support.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v)) (Finsupp.support_smul.{u2, u4, u3} β M R _inst_2 _inst_1 _inst_3 r v))) hfv)), Eq.{max (succ u1) (succ u4)} (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.comapDomain.{u1, u2, u4} α β M (AddMonoid.toZero.{u4} M _inst_1) f (HSMul.hSMul.{u3, max u2 u4, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v) hfrv) (HSMul.hSMul.{u3, max u4 u1, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u1, u4, u3} α M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r (Finsupp.comapDomain.{u1, u2, u4} α β M (AddMonoid.toZero.{u4} M _inst_1) f v hfv))
 Case conversion may be inaccurate. Consider using '#align finsupp.comap_domain_smul Finsupp.comapDomain_smulₓ'. -/
 theorem comapDomain_smul [AddMonoid M] [Monoid R] [DistribMulAction R M] {f : α → β} (r : R)
     (v : β →₀ M) (hfv : Set.InjOn f (f ⁻¹' ↑v.support))
@@ -2628,9 +2628,9 @@ theorem comapDomain_smul [AddMonoid M] [Monoid R] [DistribMulAction R M] {f : α
 
 /- warning: finsupp.comap_domain_smul_of_injective -> Finsupp.comapDomain_smul_of_injective is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {R : Type.{u4}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : Monoid.{u4} R] [_inst_3 : DistribMulAction.{u4, u3} R M _inst_2 _inst_1] {f : α -> β} (hf : Function.Injective.{succ u1, succ u2} α β f) (r : R) (v : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) f (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v) (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.hasZero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)))))) (SMul.smul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.hasZero.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u1, u3, u4} α M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) f v (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v))))))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} {R : Type.{u4}} [_inst_1 : AddMonoid.{u3} M] [_inst_2 : Monoid.{u4} R] [_inst_3 : DistribMulAction.{u4, u3} R M _inst_2 _inst_1] {f : α -> β} (hf : Function.Injective.{succ u1, succ u2} α β f) (r : R) (v : Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) f (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v) (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (SMul.smul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u2 u3} R (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u2, u3, u4} β M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r v)))))) (SMul.smul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u1 u3} R (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.zero.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1))) (Finsupp.smulZeroClass.{u1, u3, u4} α M R (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u3} R M (AddMonoid.toAddZeroClass.{u3} M _inst_1) (DistribMulAction.toDistribSMul.{u4, u3} R M _inst_2 _inst_1 _inst_3)))) r (Finsupp.comapDomain.{u1, u2, u3} α β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) f v (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M _inst_1)) v))))))
 but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} {M : Type.{u4}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u4} M] [_inst_2 : Monoid.{u3} R] [_inst_3 : DistribMulAction.{u3, u4} R M _inst_2 _inst_1] {f : α -> β} (hf : Function.Injective.{succ u2, succ u1} α β f) (r : R) (v : Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)), Eq.{max (succ u2) (succ u4)} (Finsupp.{u2, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.comapDomain.{u2, u1, u4} α β M (AddMonoid.toZero.{u4} M _inst_1) f (HSMul.hSMul.{u3, max u1 u4, max u1 u4} R (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u1, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v) (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u2, u1} α β f (Finset.toSet.{u1} β (Finsupp.support.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u1 u4, max u1 u4} R (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u1, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)))))) (HSMul.hSMul.{u3, max u4 u2, max u2 u4} R (Finsupp.{u2, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u2, u4, u3} α M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r (Finsupp.comapDomain.{u2, u1, u4} α β M (AddMonoid.toZero.{u4} M _inst_1) f v (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u2, u1} α β f (Finset.toSet.{u1} β (Finsupp.support.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v))))))
+  forall {α : Type.{u2}} {β : Type.{u1}} {M : Type.{u4}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u4} M] [_inst_2 : Monoid.{u3} R] [_inst_3 : DistribMulAction.{u3, u4} R M _inst_2 _inst_1] {f : α -> β} (hf : Function.Injective.{succ u2, succ u1} α β f) (r : R) (v : Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)), Eq.{max (succ u2) (succ u4)} (Finsupp.{u2, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.comapDomain.{u2, u1, u4} α β M (AddMonoid.toZero.{u4} M _inst_1) f (HSMul.hSMul.{u3, max u1 u4, max u1 u4} R (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u1, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v) (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u2, u1} α β f (Finset.toSet.{u1} β (Finsupp.support.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1) (HSMul.hSMul.{u3, max u1 u4, max u1 u4} R (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u1, u4, u3} β M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r v)))))) (HSMul.hSMul.{u3, max u4 u2, max u2 u4} R (Finsupp.{u2, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u2, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u2 u4} R (Finsupp.{u2, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u2, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u2, u4, u3} α M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) (DistribMulAction.toDistribSMul.{u3, u4} R M _inst_2 _inst_1 _inst_3))))) r (Finsupp.comapDomain.{u2, u1, u4} α β M (AddMonoid.toZero.{u4} M _inst_1) f v (Function.Injective.injOn.{u1, u2} α β f hf (Set.preimage.{u2, u1} α β f (Finset.toSet.{u1} β (Finsupp.support.{u1, u4} β M (AddMonoid.toZero.{u4} M _inst_1) v))))))
 Case conversion may be inaccurate. Consider using '#align finsupp.comap_domain_smul_of_injective Finsupp.comapDomain_smul_of_injectiveₓ'. -/
 /-- A version of `finsupp.comap_domain_smul` that's easier to use. -/
 theorem comapDomain_smul_of_injective [AddMonoid M] [Monoid R] [DistribMulAction R M] {f : α → β}
@@ -2643,9 +2643,9 @@ end
 
 /- warning: finsupp.sum_smul_index -> Finsupp.sum_smul_index is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Semiring.{u3} R] [_inst_2 : AddCommMonoid.{u2} M] {g : Finsupp.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))} {b : R} {h : α -> R -> M}, (forall (i : α), Eq.{succ u2} M (h i (OfNat.ofNat.{u3} R 0 (OfNat.mk.{u3} R 0 (Zero.zero.{u3} R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))))))) (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_2))))))) -> (Eq.{succ u2} M (Finsupp.sum.{u1, u3, u2} α R M (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) _inst_2 (SMul.smul.{u3, max u1 u3} R (Finsupp.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) (SMulZeroClass.toHasSmul.{u3, max u1 u3} R (Finsupp.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) (Finsupp.hasZero.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) (Finsupp.smulZeroClass.{u1, u3, u3} α R R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) (SMulWithZero.toSmulZeroClass.{u3, u3} R R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) (MulZeroClass.toSMulWithZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))))) b g) h) (Finsupp.sum.{u1, u3, u2} α R M (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) _inst_2 g (fun (i : α) (a : R) => h i (HMul.hMul.{u3, u3, u3} R R R (instHMul.{u3} R (Distrib.toHasMul.{u3} R (NonUnitalNonAssocSemiring.toDistrib.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) b a))))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Semiring.{u3} R] [_inst_2 : AddCommMonoid.{u2} M] {g : Finsupp.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))} {b : R} {h : α -> R -> M}, (forall (i : α), Eq.{succ u2} M (h i (OfNat.ofNat.{u3} R 0 (OfNat.mk.{u3} R 0 (Zero.zero.{u3} R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))))))) (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_2))))))) -> (Eq.{succ u2} M (Finsupp.sum.{u1, u3, u2} α R M (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) _inst_2 (SMul.smul.{u3, max u1 u3} R (Finsupp.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) (SMulZeroClass.toHasSmul.{u3, max u1 u3} R (Finsupp.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) (Finsupp.zero.{u1, u3} α R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) (Finsupp.smulZeroClass.{u1, u3, u3} α R R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) (SMulWithZero.toSmulZeroClass.{u3, u3} R R (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) (MulZeroClass.toSMulWithZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))))) b g) h) (Finsupp.sum.{u1, u3, u2} α R M (MulZeroClass.toHasZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) _inst_2 g (fun (i : α) (a : R) => h i (HMul.hMul.{u3, u3, u3} R R R (instHMul.{u3} R (Distrib.toHasMul.{u3} R (NonUnitalNonAssocSemiring.toDistrib.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1))))) b a))))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Semiring.{u3} R] [_inst_2 : AddCommMonoid.{u2} M] {g : Finsupp.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))} {b : R} {h : α -> R -> M}, (forall (i : α), Eq.{succ u2} M (h i (OfNat.ofNat.{u3} R 0 (Zero.toOfNat0.{u3} R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))))) (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))))) -> (Eq.{succ u2} M (Finsupp.sum.{u1, u3, u2} α R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) _inst_2 (HSMul.hSMul.{u3, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) (Finsupp.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) (instHSMul.{u3, max u1 u3} R (Finsupp.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) (SMulZeroClass.toSMul.{u3, max u1 u3} R (Finsupp.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) (Finsupp.zero.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) (Finsupp.instSMulZeroClassFinsuppZero.{u1, u3, u3} α R R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (SMulWithZero.toSMulZeroClass.{u3, u3} R R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (MulZeroClass.toSMulWithZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))))))) b g) h) (Finsupp.sum.{u1, u3, u2} α R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) _inst_2 g (fun (i : α) (a : R) => h i (HMul.hMul.{u3, u3, u3} R R R (instHMul.{u3} R (NonUnitalNonAssocSemiring.toMul.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) b a))))
+  forall {α : Type.{u1}} {M : Type.{u2}} {R : Type.{u3}} [_inst_1 : Semiring.{u3} R] [_inst_2 : AddCommMonoid.{u2} M] {g : Finsupp.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))} {b : R} {h : α -> R -> M}, (forall (i : α), Eq.{succ u2} M (h i (OfNat.ofNat.{u3} R 0 (Zero.toOfNat0.{u3} R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))))) (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))))) -> (Eq.{succ u2} M (Finsupp.sum.{u1, u3, u2} α R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) _inst_2 (HSMul.hSMul.{u3, max u1 u3, max u1 u3} R (Finsupp.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) (Finsupp.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) (instHSMul.{u3, max u1 u3} R (Finsupp.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) (SMulZeroClass.toSMul.{u3, max u1 u3} R (Finsupp.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) (Finsupp.zero.{u1, u3} α R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1))) (Finsupp.smulZeroClass.{u1, u3, u3} α R R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (SMulWithZero.toSMulZeroClass.{u3, u3} R R (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) (MulZeroClass.toSMulWithZero.{u3} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))))))) b g) h) (Finsupp.sum.{u1, u3, u2} α R M (MonoidWithZero.toZero.{u3} R (Semiring.toMonoidWithZero.{u3} R _inst_1)) _inst_2 g (fun (i : α) (a : R) => h i (HMul.hMul.{u3, u3, u3} R R R (instHMul.{u3} R (NonUnitalNonAssocSemiring.toMul.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_1)))) b a))))
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_smul_index Finsupp.sum_smul_indexₓ'. -/
 theorem sum_smul_index [Semiring R] [AddCommMonoid M] {g : α →₀ R} {b : R} {h : α → R → M}
     (h0 : ∀ i, h i 0 = 0) : (b • g).Sum h = g.Sum fun i a => h i (b * a) :=
@@ -2654,9 +2654,9 @@ theorem sum_smul_index [Semiring R] [AddCommMonoid M] {g : α →₀ R} {b : R}
 
 /- warning: finsupp.sum_smul_index' -> Finsupp.sum_smul_index' is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {R : Type.{u4}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribSMul.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1)] [_inst_3 : AddCommMonoid.{u3} N] {g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))} {b : R} {h : α -> M -> N}, (forall (i : α), Eq.{succ u3} N (h i (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)))))) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_3))))))) -> (Eq.{succ u3} N (Finsupp.sum.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_3 (SMul.smul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.hasZero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u4} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2))) b g) h) (Finsupp.sum.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_3 g (fun (i : α) (c : M) => h i (SMul.smul.{u4, u2} R M (SMulZeroClass.toHasSmul.{u4, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2)) b c))))
+  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {R : Type.{u4}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : DistribSMul.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1)] [_inst_3 : AddCommMonoid.{u3} N] {g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))} {b : R} {h : α -> M -> N}, (forall (i : α), Eq.{succ u3} N (h i (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)))))) (OfNat.ofNat.{u3} N 0 (OfNat.mk.{u3} N 0 (Zero.zero.{u3} N (AddZeroClass.toHasZero.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_3))))))) -> (Eq.{succ u3} N (Finsupp.sum.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_3 (SMul.smul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u4} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2))) b g) h) (Finsupp.sum.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_3 g (fun (i : α) (c : M) => h i (SMul.smul.{u4, u2} R M (SMulZeroClass.toHasSmul.{u4, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_2)) b c))))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u4}} {N : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u4} M] [_inst_2 : DistribSMul.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1)] [_inst_3 : AddCommMonoid.{u2} N] {g : Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)} {b : R} {h : α -> M -> N}, (forall (i : α), Eq.{succ u2} N (h i (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddMonoid.toZero.{u4} M _inst_1)))) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_3))))) -> (Eq.{succ u2} N (Finsupp.sum.{u1, u4, u2} α M N (AddMonoid.toZero.{u4} M _inst_1) _inst_3 (HSMul.hSMul.{u3, max u1 u4, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u1, u4, u3} α M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) _inst_2)))) b g) h) (Finsupp.sum.{u1, u4, u2} α M N (AddMonoid.toZero.{u4} M _inst_1) _inst_3 g (fun (i : α) (c : M) => h i (HSMul.hSMul.{u3, u4, u4} R M M (instHSMul.{u3, u4} R M (SMulZeroClass.toSMul.{u3, u4} R M (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) _inst_2))) b c))))
+  forall {α : Type.{u1}} {M : Type.{u4}} {N : Type.{u2}} {R : Type.{u3}} [_inst_1 : AddMonoid.{u4} M] [_inst_2 : DistribSMul.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1)] [_inst_3 : AddCommMonoid.{u2} N] {g : Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)} {b : R} {h : α -> M -> N}, (forall (i : α), Eq.{succ u2} N (h i (OfNat.ofNat.{u4} M 0 (Zero.toOfNat0.{u4} M (AddMonoid.toZero.{u4} M _inst_1)))) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N (AddMonoid.toZero.{u2} N (AddCommMonoid.toAddMonoid.{u2} N _inst_3))))) -> (Eq.{succ u2} N (Finsupp.sum.{u1, u4, u2} α M N (AddMonoid.toZero.{u4} M _inst_1) _inst_3 (HSMul.hSMul.{u3, max u1 u4, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u3, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u1, u4, u3} α M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) _inst_2)))) b g) h) (Finsupp.sum.{u1, u4, u2} α M N (AddMonoid.toZero.{u4} M _inst_1) _inst_3 g (fun (i : α) (c : M) => h i (HSMul.hSMul.{u3, u4, u4} R M M (instHSMul.{u3, u4} R M (SMulZeroClass.toSMul.{u3, u4} R M (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u3, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) _inst_2))) b c))))
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_smul_index' Finsupp.sum_smul_index'ₓ'. -/
 theorem sum_smul_index' [AddMonoid M] [DistribSMul R M] [AddCommMonoid N] {g : α →₀ M} {b : R}
     {h : α → M → N} (h0 : ∀ i, h i 0 = 0) : (b • g).Sum h = g.Sum fun i c => h i (b • c) :=
@@ -2665,9 +2665,9 @@ theorem sum_smul_index' [AddMonoid M] [DistribSMul R M] [AddCommMonoid N] {g : 
 
 /- warning: finsupp.sum_smul_index_add_monoid_hom -> Finsupp.sum_smul_index_addMonoidHom is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {R : Type.{u4}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] [_inst_3 : DistribSMul.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1)] {g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))} {b : R} {h : α -> (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))}, Eq.{succ u3} N (Finsupp.sum.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2 (SMul.smul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.hasZero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u4} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_3))) b g) (fun (a : α) => coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (fun (_x : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (h a))) (Finsupp.sum.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2 g (fun (i : α) (c : M) => coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (fun (_x : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (h i) (SMul.smul.{u4, u2} R M (SMulZeroClass.toHasSmul.{u4, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_3)) b c)))
+  forall {α : Type.{u1}} {M : Type.{u2}} {N : Type.{u3}} {R : Type.{u4}} [_inst_1 : AddMonoid.{u2} M] [_inst_2 : AddCommMonoid.{u3} N] [_inst_3 : DistribSMul.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1)] {g : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))} {b : R} {h : α -> (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))}, Eq.{succ u3} N (Finsupp.sum.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2 (SMul.smul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (SMulZeroClass.toHasSmul.{u4, max u1 u2} R (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.zero.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1))) (Finsupp.smulZeroClass.{u1, u2, u4} α M R (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_3))) b g) (fun (a : α) => coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (fun (_x : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (h a))) (Finsupp.sum.{u1, u2, u3} α M N (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) _inst_2 g (fun (i : α) (c : M) => coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (fun (_x : AddMonoidHom.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) => M -> N) (AddMonoidHom.hasCoeToFun.{u2, u3} M N (AddMonoid.toAddZeroClass.{u2} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (h i) (SMul.smul.{u4, u2} R M (SMulZeroClass.toHasSmul.{u4, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_1)) (DistribSMul.toSmulZeroClass.{u4, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_1) _inst_3)) b c)))
 but is expected to have type
-  forall {α : Type.{u1}} {M : Type.{u4}} {N : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u4} M] [_inst_2 : AddCommMonoid.{u3} N] [_inst_3 : DistribSMul.{u2, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1)] {g : Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)} {b : R} {h : α -> (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))}, Eq.{succ u3} N (Finsupp.sum.{u1, u4, u3} α M N (AddMonoid.toZero.{u4} M _inst_1) _inst_2 (HSMul.hSMul.{u2, max u1 u4, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u2, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.instSMulZeroClassFinsuppZero.{u1, u4, u2} α M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) _inst_3)))) b g) (fun (a : α) => FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M _inst_1)) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) (h a))) (Finsupp.sum.{u1, u4, u3} α M N (AddMonoid.toZero.{u4} M _inst_1) _inst_2 g (fun (i : α) (c : M) => FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M _inst_1)) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) (h i) (HSMul.hSMul.{u2, u4, u4} R M M (instHSMul.{u2, u4} R M (SMulZeroClass.toSMul.{u2, u4} R M (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) _inst_3))) b c)))
+  forall {α : Type.{u1}} {M : Type.{u4}} {N : Type.{u3}} {R : Type.{u2}} [_inst_1 : AddMonoid.{u4} M] [_inst_2 : AddCommMonoid.{u3} N] [_inst_3 : DistribSMul.{u2, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1)] {g : Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)} {b : R} {h : α -> (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)))}, Eq.{succ u3} N (Finsupp.sum.{u1, u4, u3} α M N (AddMonoid.toZero.{u4} M _inst_1) _inst_2 (HSMul.hSMul.{u2, max u1 u4, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (instHSMul.{u2, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (SMulZeroClass.toSMul.{u2, max u1 u4} R (Finsupp.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.zero.{u1, u4} α M (AddMonoid.toZero.{u4} M _inst_1)) (Finsupp.smulZeroClass.{u1, u4, u2} α M R (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) _inst_3)))) b g) (fun (a : α) => FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M _inst_1)) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) (h a))) (Finsupp.sum.{u1, u4, u3} α M N (AddMonoid.toZero.{u4} M _inst_1) _inst_2 g (fun (i : α) (c : M) => FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => N) _x) (AddHomClass.toFunLike.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddZeroClass.toAdd.{u4} M (AddMonoid.toAddZeroClass.{u4} M _inst_1)) (AddZeroClass.toAdd.{u3} N (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) (AddMonoidHomClass.toAddHomClass.{max u4 u3, u4, u3} (AddMonoidHom.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))) M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2)) (AddMonoidHom.addMonoidHomClass.{u4, u3} M N (AddMonoid.toAddZeroClass.{u4} M _inst_1) (AddMonoid.toAddZeroClass.{u3} N (AddCommMonoid.toAddMonoid.{u3} N _inst_2))))) (h i) (HSMul.hSMul.{u2, u4, u4} R M M (instHSMul.{u2, u4} R M (SMulZeroClass.toSMul.{u2, u4} R M (AddMonoid.toZero.{u4} M _inst_1) (DistribSMul.toSMulZeroClass.{u2, u4} R M (AddMonoid.toAddZeroClass.{u4} M _inst_1) _inst_3))) b c)))
 Case conversion may be inaccurate. Consider using '#align finsupp.sum_smul_index_add_monoid_hom Finsupp.sum_smul_index_addMonoidHomₓ'. -/
 /-- A version of `finsupp.sum_smul_index'` for bundled additive maps. -/
 theorem sum_smul_index_addMonoidHom [AddMonoid M] [AddCommMonoid N] [DistribSMul R M] {g : α →₀ M}
@@ -2788,7 +2788,7 @@ def restrictSupportEquiv (s : Set α) (M : Type _) [AddCommMonoid M] :
 
 /- warning: finsupp.dom_congr -> Finsupp.domCongr is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], (Equiv.{succ u1, succ u2} α β) -> (AddEquiv.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasAdd.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.hasAdd.{u2, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], (Equiv.{succ u1, succ u2} α β) -> (AddEquiv.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u2, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))
 but is expected to have type
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M], (Equiv.{succ u1, succ u2} α β) -> (AddEquiv.{max u3 u1, max u3 u2} (Finsupp.{u1, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u2, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u2, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))))
 Case conversion may be inaccurate. Consider using '#align finsupp.dom_congr Finsupp.domCongrₓ'. -/
@@ -2813,7 +2813,7 @@ protected def domCongr [AddCommMonoid M] (e : α ≃ β) : (α →₀ M) ≃+ (
 
 /- warning: finsupp.dom_congr_refl -> Finsupp.domCongr_refl is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M], Eq.{succ (max u1 u2)} (AddEquiv.{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.hasAdd.{u1, 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.domCongr.{u1, u1, u2} α α M _inst_1 (Equiv.refl.{succ u1} α)) (AddEquiv.refl.{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))))
+  forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M], Eq.{succ (max u1 u2)} (AddEquiv.{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.add.{u1, 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.domCongr.{u1, u1, u2} α α M _inst_1 (Equiv.refl.{succ u1} α)) (AddEquiv.refl.{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))))
 but is expected to have type
   forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddCommMonoid.{u2} M], Eq.{max (succ u1) (succ u2)} (AddEquiv.{max u2 u1, max u2 u1} (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.add.{u1, 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.domCongr.{u1, u1, u2} α α M _inst_1 (Equiv.refl.{succ u1} α)) (AddEquiv.refl.{max u2 u1} (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))))
 Case conversion may be inaccurate. Consider using '#align finsupp.dom_congr_refl Finsupp.domCongr_reflₓ'. -/
@@ -2825,7 +2825,7 @@ theorem domCongr_refl [AddCommMonoid M] :
 
 /- warning: finsupp.dom_congr_symm -> Finsupp.domCongr_symm is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (e : Equiv.{succ u1, succ u2} α β), Eq.{max (succ (max u2 u3)) (succ (max u1 u3))} (AddEquiv.{max u2 u3, max u1 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasAdd.{u2, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.hasAdd.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (AddEquiv.symm.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.hasAdd.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.hasAdd.{u2, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.domCongr.{u1, u2, u3} α β M _inst_1 e)) (Finsupp.domCongr.{u2, u1, u3} β α M _inst_1 (Equiv.symm.{succ u1, succ u2} α β e))
+  forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (e : Equiv.{succ u1, succ u2} α β), Eq.{max (succ (max u2 u3)) (succ (max u1 u3))} (AddEquiv.{max u2 u3, max u1 u3} (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.add.{u2, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (AddEquiv.symm.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} α M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.{u2, u3} β M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (Finsupp.add.{u1, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u2, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.domCongr.{u1, u2, u3} α β M _inst_1 e)) (Finsupp.domCongr.{u2, u1, u3} β α M _inst_1 (Equiv.symm.{succ u1, succ u2} α β e))
 but is expected to have type
   forall {α : Type.{u2}} {β : Type.{u1}} {M : Type.{u3}} [_inst_1 : AddCommMonoid.{u3} M] (e : Equiv.{succ u2, succ u1} α β), Eq.{max (max (succ u2) (succ u1)) (succ u3)} (AddEquiv.{max u1 u3, max u2 u3} (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u2, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1)))) (AddEquiv.symm.{max u2 u3, max u1 u3} (Finsupp.{u2, u3} α M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.{u1, u3} β M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u2, u3} α M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.add.{u1, u3} β M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_1))) (Finsupp.domCongr.{u2, u1, u3} α β M _inst_1 e)) (Finsupp.domCongr.{u1, u2, u3} β α M _inst_1 (Equiv.symm.{succ u2, succ u1} α β e))
 Case conversion may be inaccurate. Consider using '#align finsupp.dom_congr_symm Finsupp.domCongr_symmₓ'. -/
@@ -2837,7 +2837,7 @@ theorem domCongr_symm [AddCommMonoid M] (e : α ≃ β) :
 
 /- warning: finsupp.dom_congr_trans -> Finsupp.domCongr_trans is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {M : Type.{u4}} [_inst_1 : AddCommMonoid.{u4} M] (e : Equiv.{succ u1, succ u2} α β) (f : Equiv.{succ u2, succ u3} β γ), Eq.{max (succ (max u1 u4)) (succ (max u3 u4))} (AddEquiv.{max u1 u4, max u3 u4} (Finsupp.{u1, u4} α M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.{u3, u4} γ M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.hasAdd.{u1, u4} α M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.hasAdd.{u3, u4} γ M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (AddEquiv.trans.{max u1 u4, max u2 u4, max u3 u4} (Finsupp.{u1, u4} α M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.{u2, u4} β M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.{u3, u4} γ M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.hasAdd.{u1, u4} α M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.hasAdd.{u2, u4} β M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.hasAdd.{u3, u4} γ M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.domCongr.{u1, u2, u4} α β M _inst_1 e) (Finsupp.domCongr.{u2, u3, u4} β γ M _inst_1 f)) (Finsupp.domCongr.{u1, u3, u4} α γ M _inst_1 (Equiv.trans.{succ u1, succ u2, succ u3} α β γ e f))
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {M : Type.{u4}} [_inst_1 : AddCommMonoid.{u4} M] (e : Equiv.{succ u1, succ u2} α β) (f : Equiv.{succ u2, succ u3} β γ), Eq.{max (succ (max u1 u4)) (succ (max u3 u4))} (AddEquiv.{max u1 u4, max u3 u4} (Finsupp.{u1, u4} α M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.{u3, u4} γ M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.add.{u1, u4} α M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u3, u4} γ M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (AddEquiv.trans.{max u1 u4, max u2 u4, max u3 u4} (Finsupp.{u1, u4} α M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.{u2, u4} β M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.{u3, u4} γ M (AddZeroClass.toHasZero.{u4} M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (Finsupp.add.{u1, u4} α M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u2, u4} β M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u3, u4} γ M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.domCongr.{u1, u2, u4} α β M _inst_1 e) (Finsupp.domCongr.{u2, u3, u4} β γ M _inst_1 f)) (Finsupp.domCongr.{u1, u3, u4} α γ M _inst_1 (Equiv.trans.{succ u1, succ u2, succ u3} α β γ e f))
 but is expected to have type
   forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} {M : Type.{u4}} [_inst_1 : AddCommMonoid.{u4} M] (e : Equiv.{succ u3, succ u2} α β) (f : Equiv.{succ u2, succ u1} β γ), Eq.{max (max (succ u3) (succ u1)) (succ u4)} (AddEquiv.{max u3 u4, max u4 u1} (Finsupp.{u3, u4} α M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.{u1, u4} γ M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u3, u4} α M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u1, u4} γ M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1)))) (AddEquiv.trans.{max u3 u4, max u2 u4, max u4 u1} (Finsupp.{u3, u4} α M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.{u2, u4} β M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.{u1, u4} γ M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u3, u4} α M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u2, u4} β M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.add.{u1, u4} γ M (AddMonoid.toAddZeroClass.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_1))) (Finsupp.domCongr.{u3, u2, u4} α β M _inst_1 e) (Finsupp.domCongr.{u2, u1, u4} β γ M _inst_1 f)) (Finsupp.domCongr.{u3, u1, u4} α γ M _inst_1 (Equiv.trans.{succ u3, succ u2, succ u1} α β γ e f))
 Case conversion may be inaccurate. Consider using '#align finsupp.dom_congr_trans Finsupp.domCongr_transₓ'. -/
@@ -2873,7 +2873,7 @@ def split (i : ι) : αs i →₀ M :=
 
 /- warning: finsupp.split_apply -> Finsupp.split_apply is a dubious translation:
 lean 3 declaration is
-  forall {ι : Type.{u1}} {M : Type.{u2}} {αs : ι -> Type.{u3}} [_inst_1 : Zero.{u2} M] (l : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) M _inst_1) (i : ι) (x : αs i), Eq.{succ u2} M (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (Finsupp.{u3, u2} ((fun (i : ι) => αs i) i) M _inst_1) (fun (_x : Finsupp.{u3, u2} ((fun (i : ι) => αs i) i) M _inst_1) => (αs i) -> M) (Finsupp.hasCoeToFun.{u3, u2} ((fun (i : ι) => αs i) i) M _inst_1) (Finsupp.split.{u1, u2, u3} ι M (fun (i : ι) => αs i) _inst_1 l i) x) (coeFn.{max (succ (max u1 u3)) (succ u2), max (succ (max u1 u3)) (succ u2)} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) M _inst_1) (fun (_x : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) M _inst_1) => (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) -> M) (Finsupp.hasCoeToFun.{max u1 u3, u2} (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) M _inst_1) l (Sigma.mk.{u1, u3} ι (fun (i : ι) => αs i) i x))
+  forall {ι : Type.{u1}} {M : Type.{u2}} {αs : ι -> Type.{u3}} [_inst_1 : Zero.{u2} M] (l : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) M _inst_1) (i : ι) (x : αs i), Eq.{succ u2} M (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (Finsupp.{u3, u2} ((fun (i : ι) => αs i) i) M _inst_1) (fun (_x : Finsupp.{u3, u2} ((fun (i : ι) => αs i) i) M _inst_1) => (αs i) -> M) (Finsupp.coeFun.{u3, u2} ((fun (i : ι) => αs i) i) M _inst_1) (Finsupp.split.{u1, u2, u3} ι M (fun (i : ι) => αs i) _inst_1 l i) x) (coeFn.{max (succ (max u1 u3)) (succ u2), max (succ (max u1 u3)) (succ u2)} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) M _inst_1) (fun (_x : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) M _inst_1) => (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) -> M) (Finsupp.coeFun.{max u1 u3, u2} (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) M _inst_1) l (Sigma.mk.{u1, u3} ι (fun (i : ι) => αs i) i x))
 but is expected to have type
   forall {ι : Type.{u1}} {M : Type.{u3}} {αs : ι -> Type.{u2}} [_inst_1 : Zero.{u3} M] (l : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} ι (fun (i : ι) => αs i)) M _inst_1) (i : ι) (x : αs i), Eq.{succ u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : αs i) => M) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (Finsupp.{u2, u3} (αs i) M _inst_1) (αs i) (fun (_x : αs i) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : αs i) => M) _x) (Finsupp.funLike.{u2, u3} (αs i) M _inst_1) (Finsupp.split.{u1, u3, u2} ι M (fun (i : ι) => αs i) _inst_1 l i) x) (FunLike.coe.{max (succ (max u1 u2)) (succ u3), succ (max u1 u2), succ u3} (Finsupp.{max u1 u2, u3} (Sigma.{u1, u2} ι (fun (i : ι) => αs i)) M _inst_1) (Sigma.{u1, u2} ι (fun (i : ι) => αs i)) (fun (_x : Sigma.{u1, u2} ι (fun (i : ι) => αs i)) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sigma.{u1, u2} ι (fun (i : ι) => αs i)) => M) _x) (Finsupp.funLike.{max u1 u2, u3} (Sigma.{u1, u2} ι (fun (i : ι) => αs i)) M _inst_1) l (Sigma.mk.{u1, u2} ι (fun (i : ι) => αs i) i x))
 Case conversion may be inaccurate. Consider using '#align finsupp.split_apply Finsupp.split_applyₓ'. -/
@@ -2894,7 +2894,7 @@ def splitSupport (l : (Σi, αs i) →₀ M) : Finset ι :=
 
 /- warning: finsupp.mem_split_support_iff_nonzero -> Finsupp.mem_splitSupport_iff_nonzero is a dubious translation:
 lean 3 declaration is
-  forall {ι : Type.{u1}} {M : Type.{u2}} {αs : ι -> Type.{u3}} [_inst_1 : Zero.{u2} M] (l : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) M _inst_1) (i : ι), Iff (Membership.Mem.{u1, u1} ι (Finset.{u1} ι) (Finset.hasMem.{u1} ι) i (Finsupp.splitSupport.{u1, u2, u3} ι M (fun (i : ι) => αs i) _inst_1 l)) (Ne.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} (αs i) M _inst_1) (Finsupp.split.{u1, u2, u3} ι M (fun (i : ι) => αs i) _inst_1 l i) (OfNat.ofNat.{max u3 u2} (Finsupp.{u3, u2} (αs i) M _inst_1) 0 (OfNat.mk.{max u3 u2} (Finsupp.{u3, u2} (αs i) M _inst_1) 0 (Zero.zero.{max u3 u2} (Finsupp.{u3, u2} (αs i) M _inst_1) (Finsupp.hasZero.{u3, u2} (αs i) M _inst_1)))))
+  forall {ι : Type.{u1}} {M : Type.{u2}} {αs : ι -> Type.{u3}} [_inst_1 : Zero.{u2} M] (l : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} ι (fun (i : ι) => αs i)) M _inst_1) (i : ι), Iff (Membership.Mem.{u1, u1} ι (Finset.{u1} ι) (Finset.hasMem.{u1} ι) i (Finsupp.splitSupport.{u1, u2, u3} ι M (fun (i : ι) => αs i) _inst_1 l)) (Ne.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} (αs i) M _inst_1) (Finsupp.split.{u1, u2, u3} ι M (fun (i : ι) => αs i) _inst_1 l i) (OfNat.ofNat.{max u3 u2} (Finsupp.{u3, u2} (αs i) M _inst_1) 0 (OfNat.mk.{max u3 u2} (Finsupp.{u3, u2} (αs i) M _inst_1) 0 (Zero.zero.{max u3 u2} (Finsupp.{u3, u2} (αs i) M _inst_1) (Finsupp.zero.{u3, u2} (αs i) M _inst_1)))))
 but is expected to have type
   forall {ι : Type.{u3}} {M : Type.{u2}} {αs : ι -> Type.{u1}} [_inst_1 : Zero.{u2} M] (l : Finsupp.{max u1 u3, u2} (Sigma.{u3, u1} ι (fun (i : ι) => αs i)) M _inst_1) (i : ι), Iff (Membership.mem.{u3, u3} ι (Finset.{u3} ι) (Finset.instMembershipFinset.{u3} ι) i (Finsupp.splitSupport.{u3, u2, u1} ι M (fun (i : ι) => αs i) _inst_1 l)) (Ne.{max (succ u2) (succ u1)} (Finsupp.{u1, u2} (αs i) M _inst_1) (Finsupp.split.{u3, u2, u1} ι M (fun (i : ι) => αs i) _inst_1 l i) (OfNat.ofNat.{max u2 u1} (Finsupp.{u1, u2} (αs i) M _inst_1) 0 (Zero.toOfNat0.{max u2 u1} (Finsupp.{u1, u2} (αs i) M _inst_1) (Finsupp.zero.{u1, u2} (αs i) M _inst_1))))
 Case conversion may be inaccurate. Consider using '#align finsupp.mem_split_support_iff_nonzero Finsupp.mem_splitSupport_iff_nonzeroₓ'. -/
@@ -2976,7 +2976,7 @@ theorem sigmaFinsuppEquivPiFinsupp_apply (f : (Σj, ιs j) →₀ α) (j i) :
 
 /- warning: finsupp.sigma_finsupp_add_equiv_pi_finsupp -> Finsupp.sigmaFinsuppAddEquivPiFinsupp is a dubious translation:
 lean 3 declaration is
-  forall {η : Type.{u1}} [_inst_2 : Fintype.{u1} η] {α : Type.{u2}} {ιs : η -> Type.{u3}} [_inst_4 : AddMonoid.{u2} α], AddEquiv.{max (max u1 u3) u2, max u1 u3 u2} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (Finsupp.hasAdd.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (i : η) => Finsupp.hasAdd.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))
+  forall {η : Type.{u1}} [_inst_2 : Fintype.{u1} η] {α : Type.{u2}} {ιs : η -> Type.{u3}} [_inst_4 : AddMonoid.{u2} α], AddEquiv.{max (max u1 u3) u2, max u1 u3 u2} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (Finsupp.add.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (i : η) => Finsupp.add.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))
 but is expected to have type
   forall {η : Type.{u1}} [_inst_2 : Fintype.{u1} η] {α : Type.{u2}} {ιs : η -> Type.{u3}} [_inst_4 : AddMonoid.{u2} α], AddEquiv.{max u2 u3 u1, max (max u1 u2) u3} (Finsupp.{max u3 u1, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u2} α _inst_4)) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddMonoid.toZero.{u2} α _inst_4)) (Finsupp.add.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u2 u3} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddMonoid.toZero.{u2} α _inst_4)) (fun (i : η) => Finsupp.add.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))
 Case conversion may be inaccurate. Consider using '#align finsupp.sigma_finsupp_add_equiv_pi_finsupp Finsupp.sigmaFinsuppAddEquivPiFinsuppₓ'. -/
@@ -2995,7 +2995,7 @@ noncomputable def sigmaFinsuppAddEquivPiFinsupp {α : Type _} {ιs : η → Type
 
 /- warning: finsupp.sigma_finsupp_add_equiv_pi_finsupp_apply -> Finsupp.sigmaFinsuppAddEquivPiFinsupp_apply is a dubious translation:
 lean 3 declaration is
-  forall {η : Type.{u1}} [_inst_2 : Fintype.{u1} η] {α : Type.{u2}} {ιs : η -> Type.{u3}} [_inst_4 : AddMonoid.{u2} α] (f : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (j : η) (i : ιs j), Eq.{succ u2} α (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (_x : Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) => (ιs j) -> α) (Finsupp.hasCoeToFun.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (coeFn.{max (succ (max (max u1 u3) u2)) (succ (max u1 u3 u2)), max (succ (max (max u1 u3) u2)) (succ (max u1 u3 u2))} (AddEquiv.{max (max u1 u3) u2, max u1 u3 u2} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (Finsupp.hasAdd.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (i : η) => Finsupp.hasAdd.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) (fun (_x : AddEquiv.{max (max u1 u3) u2, max u1 u3 u2} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (Finsupp.hasAdd.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (i : η) => Finsupp.hasAdd.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) => (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) -> (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) (AddEquiv.hasCoeToFun.{max (max u1 u3) u2, max u1 u3 u2} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (Finsupp.hasAdd.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (i : η) => Finsupp.hasAdd.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) (Finsupp.sigmaFinsuppAddEquivPiFinsupp.{u1, u2, u3} η _inst_2 α (fun (j : η) => ιs j) _inst_4) f j) i) (coeFn.{max (succ (max u1 u3)) (succ u2), max (succ (max u1 u3)) (succ u2)} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (_x : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) => (Sigma.{u1, u3} η (fun (j : η) => ιs j)) -> α) (Finsupp.hasCoeToFun.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) f (Sigma.mk.{u1, u3} η (fun (j : η) => ιs j) j i))
+  forall {η : Type.{u1}} [_inst_2 : Fintype.{u1} η] {α : Type.{u2}} {ιs : η -> Type.{u3}} [_inst_4 : AddMonoid.{u2} α] (f : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (j : η) (i : ιs j), Eq.{succ u2} α (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (_x : Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) => (ιs j) -> α) (Finsupp.coeFun.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (coeFn.{max (succ (max (max u1 u3) u2)) (succ (max u1 u3 u2)), max (succ (max (max u1 u3) u2)) (succ (max u1 u3 u2))} (AddEquiv.{max (max u1 u3) u2, max u1 u3 u2} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (Finsupp.add.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (i : η) => Finsupp.add.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) (fun (_x : AddEquiv.{max (max u1 u3) u2, max u1 u3 u2} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (Finsupp.add.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (i : η) => Finsupp.add.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) => (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) -> (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) (AddEquiv.hasCoeToFun.{max (max u1 u3) u2, max u1 u3 u2} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (forall (j : η), Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (Finsupp.add.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u3, u2} (ιs j) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (i : η) => Finsupp.add.{u3, u2} (ιs i) α (AddMonoid.toAddZeroClass.{u2} α _inst_4)))) (Finsupp.sigmaFinsuppAddEquivPiFinsupp.{u1, u2, u3} η _inst_2 α (fun (j : η) => ιs j) _inst_4) f j) i) (coeFn.{max (succ (max u1 u3)) (succ u2), max (succ (max u1 u3)) (succ u2)} (Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) (fun (_x : Finsupp.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) => (Sigma.{u1, u3} η (fun (j : η) => ιs j)) -> α) (Finsupp.coeFun.{max u1 u3, u2} (Sigma.{u1, u3} η (fun (j : η) => ιs j)) α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α _inst_4))) f (Sigma.mk.{u1, u3} η (fun (j : η) => ιs j) j i))
 but is expected to have type
   forall {η : Type.{u1}} [_inst_2 : Fintype.{u1} η] {α : Type.{u3}} {ιs : η -> Type.{u2}} [_inst_4 : AddMonoid.{u3} α] (f : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (j : η) (i : ιs j), Eq.{succ u3} ((fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : ιs j) => α) i) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (ιs j) (fun (_x : ιs j) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : ιs j) => α) _x) (Finsupp.funLike.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (AddEquiv.{max u3 u2 u1, max (max u1 u3) u2} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (_x : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) => forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) _x) (AddHomClass.toFunLike.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u3 u2 u1, max (max u1 u3) u2} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4))) (AddEquivClass.instAddHomClass.{max (max u2 u3) u1, max (max u2 u3) u1, max (max u2 u3) u1} (AddEquiv.{max u3 u2 u1, max (max u1 u3) u2} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))) (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4))) (AddEquiv.instAddEquivClassAddEquiv.{max (max u2 u3) u1, max (max u2 u3) u1} (Finsupp.{max u2 u1, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (forall (j : η), Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (Finsupp.add.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)) (Pi.instAdd.{u1, max u3 u2} η (fun (j : η) => Finsupp.{u2, u3} (ιs j) α (AddMonoid.toZero.{u3} α _inst_4)) (fun (i : η) => Finsupp.add.{u2, u3} (ιs i) α (AddMonoid.toAddZeroClass.{u3} α _inst_4)))))) (Finsupp.sigmaFinsuppAddEquivPiFinsupp.{u1, u3, u2} η _inst_2 α (fun (j : η) => ιs j) _inst_4) f j) i) (FunLike.coe.{max (succ (max u1 u2)) (succ u3), succ (max u1 u2), succ u3} (Finsupp.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) (Sigma.{u1, u2} η (fun (j : η) => ιs j)) (fun (_x : Sigma.{u1, u2} η (fun (j : η) => ιs j)) => (fun (x._@.Mathlib.Data.Finsupp.Defs._hyg.779 : Sigma.{u1, u2} η (fun (j : η) => ιs j)) => α) _x) (Finsupp.funLike.{max u1 u2, u3} (Sigma.{u1, u2} η (fun (j : η) => ιs j)) α (AddMonoid.toZero.{u3} α _inst_4)) f (Sigma.mk.{u1, u2} η (fun (j : η) => ιs j) j i))
 Case conversion may be inaccurate. Consider using '#align finsupp.sigma_finsupp_add_equiv_pi_finsupp_apply Finsupp.sigmaFinsuppAddEquivPiFinsupp_applyₓ'. -/
Diff
@@ -1205,7 +1205,7 @@ variable [Zero M]
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : Zero.{u3} M] (f : α -> β) (hif : optParam.{0} (Set.InjOn.{u1, u2} α β f (Set.preimage.{u1, u2} α β f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) (Finsupp.support.{u2, 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)))))))) (Set.injOn_empty.{u1, u2} α β f)), Eq.{max (succ u1) (succ u3)} (Finsupp.{u1, u3} α M _inst_1) (Finsupp.comapDomain.{u1, u2, u3} α β M _inst_1 f (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)))) hif) (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))))
 but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : α -> β) (hif : optParam.{0} (Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f (Finset.toSet.{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))))))) (Eq.rec.{0, succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.7193 : Set.{u2} β) (h._@.Mathlib.Data.Finsupp.Basic._hyg.7194 : Eq.{succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) x._@.Mathlib.Data.Finsupp.Basic._hyg.7193) => Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f x._@.Mathlib.Data.Finsupp.Basic._hyg.7193)) (Set.injOn_empty.{u2, u3} α β f) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (Eq.symm.{succ u2} (Set.{u2} β) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (Finset.coe_empty.{u2} β)))), Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.comapDomain.{u3, 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))) hif) (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)))
+  forall {α : Type.{u3}} {β : Type.{u2}} {M : Type.{u1}} [_inst_1 : Zero.{u1} M] (f : α -> β) (hif : optParam.{0} (Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f (Finset.toSet.{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))))))) (Eq.rec.{0, succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.7194 : Set.{u2} β) (h._@.Mathlib.Data.Finsupp.Basic._hyg.7195 : Eq.{succ u2} (Set.{u2} β) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) x._@.Mathlib.Data.Finsupp.Basic._hyg.7194) => Set.InjOn.{u3, u2} α β f (Set.preimage.{u3, u2} α β f x._@.Mathlib.Data.Finsupp.Basic._hyg.7194)) (Set.injOn_empty.{u2, u3} α β f) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (Eq.symm.{succ u2} (Set.{u2} β) (Finset.toSet.{u2} β (EmptyCollection.emptyCollection.{u2} (Finset.{u2} β) (Finset.instEmptyCollectionFinset.{u2} β))) (EmptyCollection.emptyCollection.{u2} (Set.{u2} β) (Set.instEmptyCollectionSet.{u2} β)) (Finset.coe_empty.{u2} β)))), Eq.{max (succ u3) (succ u1)} (Finsupp.{u3, u1} α M _inst_1) (Finsupp.comapDomain.{u3, 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))) hif) (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.comap_domain_zero Finsupp.comapDomain_zeroₓ'. -/
 /-- Note the `hif` argument is needed for this to work in `rw`. -/
 @[simp]
@@ -2342,7 +2342,7 @@ attribute [local instance] comap_has_smul
 lean 3 declaration is
   forall {α : Type.{u1}} {M : Type.{u2}} {G : Type.{u3}} [_inst_1 : Monoid.{u3} G] [_inst_2 : MulAction.{u3, u1} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))), Eq.{succ (max u1 u2)} (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (SMul.smul.{u3, max u1 u2} G (Finsupp.{u1, u2} α M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3)))) (Finsupp.comapSMul.{u1, u2, u3} α M G _inst_1 _inst_2 _inst_3) g f) (Finsupp.mapDomain.{u1, u1, u2} α α M _inst_3 (SMul.smul.{u3, u1} G α (MulAction.toHasSmul.{u3, u1} G α _inst_1 _inst_2) g) f)
 but is expected to have type
-  forall {α : Type.{u3}} {M : Type.{u2}} {G : Type.{u1}} [_inst_1 : Monoid.{u1} G] [_inst_2 : MulAction.{u1, u3} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))), Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (instHSMul.{u1, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.comapSMul.{u3, u2, u1} α M G _inst_1 _inst_2 _inst_3)) g f) (Finsupp.mapDomain.{u3, u3, u2} α α M _inst_3 ((fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.14296 : G) (x._@.Mathlib.Data.Finsupp.Basic._hyg.14298 : α) => HSMul.hSMul.{u1, u3, u3} G α α (instHSMul.{u1, u3} G α (MulAction.toSMul.{u1, u3} G α _inst_1 _inst_2)) x._@.Mathlib.Data.Finsupp.Basic._hyg.14296 x._@.Mathlib.Data.Finsupp.Basic._hyg.14298) g) f)
+  forall {α : Type.{u3}} {M : Type.{u2}} {G : Type.{u1}} [_inst_1 : Monoid.{u1} G] [_inst_2 : MulAction.{u1, u3} G α _inst_1] [_inst_3 : AddCommMonoid.{u2} M] (g : G) (f : Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))), Eq.{max (succ u3) (succ u2)} (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (instHSMul.{u1, max u3 u2} G (Finsupp.{u3, u2} α M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) (Finsupp.comapSMul.{u3, u2, u1} α M G _inst_1 _inst_2 _inst_3)) g f) (Finsupp.mapDomain.{u3, u3, u2} α α M _inst_3 ((fun (x._@.Mathlib.Data.Finsupp.Basic._hyg.14297 : G) (x._@.Mathlib.Data.Finsupp.Basic._hyg.14299 : α) => HSMul.hSMul.{u1, u3, u3} G α α (instHSMul.{u1, u3} G α (MulAction.toSMul.{u1, u3} G α _inst_1 _inst_2)) x._@.Mathlib.Data.Finsupp.Basic._hyg.14297 x._@.Mathlib.Data.Finsupp.Basic._hyg.14299) g) f)
 Case conversion may be inaccurate. Consider using '#align finsupp.comap_smul_def Finsupp.comapSMul_defₓ'. -/
 theorem comapSMul_def (g : G) (f : α →₀ M) : g • f = mapDomain ((· • ·) g) f :=
   rfl

Changes in mathlib4

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

A PR accompanying #12339.

Zulip discussion

Diff
@@ -851,8 +851,8 @@ theorem prod_option_index [AddCommMonoid M] [CommMonoid N] (f : Option α →₀
     · simp [some_zero, h_zero]
     · intro f₁ f₂ h₁ h₂
       rw [Finsupp.prod_add_index, h₁, h₂, some_add, Finsupp.prod_add_index]
-      simp only [h_add, Pi.add_apply, Finsupp.coe_add]
-      rw [mul_mul_mul_comm]
+      · simp only [h_add, Pi.add_apply, Finsupp.coe_add]
+        rw [mul_mul_mul_comm]
       all_goals simp [h_zero, h_add]
     · rintro (_ | a) m <;> simp [h_zero, h_add]
 #align finsupp.prod_option_index Finsupp.prod_option_index
@@ -1599,9 +1599,9 @@ theorem mapRange_smul {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] [AddMo
     [DistribMulAction R N] {f : M → N} {hf : f 0 = 0} (c : R) (v : α →₀ M)
     (hsmul : ∀ x, f (c • x) = c • f x) : mapRange f hf (c • v) = c • mapRange f hf v := by
   erw [← mapRange_comp]
-  have : f ∘ (c • ·) = (c • ·) ∘ f := funext hsmul
-  simp_rw [this]
-  apply mapRange_comp
+  · have : f ∘ (c • ·) = (c • ·) ∘ f := funext hsmul
+    simp_rw [this]
+    apply mapRange_comp
   simp only [Function.comp_apply, smul_zero, hf]
 #align finsupp.map_range_smul Finsupp.mapRange_smul
 
chore: split Algebra.Module.Basic (#12501)

Similar to #12486, which did this for Algebra.Algebra.Basic.

Splits Algebra.Module.Defs off Algebra.Module.Basic. Most imports only need the Defs file, which has significantly smaller imports. The remaining Algebra.Module.Basic is now a grab-bag of unrelated results, and should probably be split further or rehomed.

This is mostly motivated by the wasted effort during minimization upon encountering Algebra.Module.Basic.

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

Diff
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Scott Morrison
 -/
 import Mathlib.Algebra.BigOperators.Finsupp
+import Mathlib.Algebra.Module.Basic
 import Mathlib.Algebra.Regular.SMul
 import Mathlib.Data.Finset.Preimage
 import Mathlib.Data.Rat.BigOperators
chore: remove unnecessary cdots (#12417)

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

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

Diff
@@ -481,7 +481,7 @@ theorem mapDomain_comp {f : α → β} {g : β → γ} :
   · intro
     exact single_add _
   refine' sum_congr fun _ _ => sum_single_index _
-  · exact single_zero _
+  exact single_zero _
 #align finsupp.map_domain_comp Finsupp.mapDomain_comp
 
 @[simp]
chore: split Subsingleton,Nontrivial off of Data.Set.Basic (#11832)

Moves definition of and lemmas related to Set.Subsingleton and Set.Nontrivial to a new file, so that Basic can be shorter.

Diff
@@ -8,7 +8,7 @@ import Mathlib.Algebra.Regular.SMul
 import Mathlib.Data.Finset.Preimage
 import Mathlib.Data.Rat.BigOperators
 import Mathlib.GroupTheory.GroupAction.Hom
-import Mathlib.Data.Set.Basic
+import Mathlib.Data.Set.Subsingleton
 
 #align_import data.finsupp.basic from "leanprover-community/mathlib"@"f69db8cecc668e2d5894d7e9bfc491da60db3b9f"
 
chore: backports from #11997, adaptations for nightly-2024-04-07 (#12176)

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

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

Diff
@@ -1858,11 +1858,11 @@ def splitSupport (l : (Σi, αs i) →₀ M) : Finset ι :=
 #align finsupp.split_support Finsupp.splitSupport
 
 theorem mem_splitSupport_iff_nonzero (i : ι) : i ∈ splitSupport l ↔ split l i ≠ 0 := by
-  rw [splitSupport, @mem_image _ _ (Classical.decEq _), Ne.def, ← support_eq_empty, ← Ne.def, ←
+  rw [splitSupport, @mem_image _ _ (Classical.decEq _), Ne, ← support_eq_empty, ← Ne, ←
     Finset.nonempty_iff_ne_empty, split, comapDomain, Finset.Nonempty]
   -- porting note (#10754): had to add the `Classical.decEq` instance manually
   simp only [exists_prop, Finset.mem_preimage, exists_and_right, exists_eq_right, mem_support_iff,
-    Sigma.exists, Ne.def]
+    Sigma.exists, Ne]
 #align finsupp.mem_split_support_iff_nonzero Finsupp.mem_splitSupport_iff_nonzero
 
 /-- Given `l`, a finitely supported function from the sigma type `Σ i, αs i` to `β` and
chore: classify porting notes about additional necessary beta reduction (#12130)

This subsumes some of the notes in #10752 and #10971. I'm on the fence as to whether replacing the dsimp only by beta_reduce is useful; this is easy to revert if needed.

Diff
@@ -881,7 +881,7 @@ def filter (p : α → Prop) [DecidablePred p] (f : α →₀ M) : α →₀ M w
   toFun a := if p a then f a else 0
   support := f.support.filter p
   mem_support_toFun a := by
-    simp only -- Porting note: necessary to beta reduce to activate `split_ifs`
+    beta_reduce -- Porting note(#12129): additional beta reduction needed to activate `split_ifs`
     split_ifs with h <;>
       · simp only [h, mem_filter, mem_support_iff]
         tauto
feat: MulActionHom in the semilinear style (#6057)

Generalize MulActionHom so that it allows two different monoids acting, related by a morphism. This is inspired by the treatment of (semi)linear maps in mathlib, and allows to refactor them.

Let M, N, X, Y be types, with SMul M X and SMul N Y, and let φ : M → N be a map.

  • MulActionHom φ X Y, the type of equivariant functions from X to Y, consists of functions f : X → Y such that f (m • x) = (φ m) • (f x) for all m : M and x : X.

Assume that we have Monoid M, Monoid N and that φ : M →* N. For A, B by types with AddMonoid A and AddMonoid B, endowed with DistribMulAction M A and DistribMulAction M B:

  • DistribMulActionHom φ A B is the type of equivariant additive monoid homomorphisms from A to B.

Similarly, when R and S are types with Semiring R, Semiring S, MulSemiringAction M R and MulSemiringAction N S

  • SMulSemiringHom φ R S is the type of equivariant ring homomorphisms from R to S.

The above types have corresponding classes:

  • MulActionHomClass F φ X Y states that F is a type of bundled X → Y homs which are φ-equivariant
  • DistribMulActionHomClass F φ A B states that F is a type of bundled A → B homs preserving the additive monoid structure and φ-equivariant
  • SMulSemiringHomClass F φ R S states that F is a type of bundled R → S homs preserving the ring structure and φ-equivariant

Notation

We introduce the following notation to code equivariant maps (the subscript index is for equivariant) :

  • X →ₑ[φ] Y is MulActionHom φ X Y.
  • A →ₑ+[φ] B is DistribMulActionHom φ A B.
  • R →ₑ+*[φ] S is MulSemiringActionHom φ R S.

When M = N and φ = MonoidHom.id M, we provide the backward compatible notation :

  • X →[M] Y is MulActionHom ([@id](https://github.com/id) M) X Y
  • A →+[M] B is DistribMulActionHom (MonoidHom.id M) A B
  • R →+*[M] S is MulSemiringActionHom (MonoidHom.id M) R S

This more general definition is propagated all over mathlib, in particular to LinearMap.

The treatment of composition of equivariant maps is inspired by that of semilinear maps. We provide classes CompTriple and MonoidHom.CompTriple of “composable triples`, and various instances for them.

Diff
@@ -1649,12 +1649,12 @@ instance noZeroSMulDivisors [Semiring R] [AddCommMonoid M] [Module R M] {ι : Ty
       Finsupp.ext fun i => (smul_eq_zero.mp (DFunLike.ext_iff.mp h i)).resolve_left hc⟩
 #align finsupp.no_zero_smul_divisors Finsupp.noZeroSMulDivisors
 
-section DistribMulActionHom
+section DistribMulActionSemiHom
 
 variable [Semiring R]
 variable [AddCommMonoid M] [AddCommMonoid N] [DistribMulAction R M] [DistribMulAction R N]
 
-/-- `Finsupp.single` as a `DistribMulActionHom`.
+/-- `Finsupp.single` as a `DistribMulActionSemiHom`.
 
 See also `Finsupp.lsingle` for the version as a linear map. -/
 def DistribMulActionHom.single (a : α) : M →+[R] α →₀ M :=
@@ -1680,7 +1680,7 @@ theorem distribMulActionHom_ext' {f g : (α →₀ M) →+[R] N}
   distribMulActionHom_ext fun a => DistribMulActionHom.congr_fun (h a)
 #align finsupp.distrib_mul_action_hom_ext' Finsupp.distribMulActionHom_ext'
 
-end DistribMulActionHom
+end DistribMulActionSemiHom
 
 section
 
chore: avoid Ne.def (adaptation for nightly-2024-03-27) (#11801)
Diff
@@ -566,12 +566,12 @@ theorem mapDomain_support_of_injOn [DecidableEq β] {f : α → β} (s : α →
     (hf : Set.InjOn f s.support) : (mapDomain f s).support = Finset.image f s.support :=
   Finset.Subset.antisymm mapDomain_support <| by
     intro x hx
-    simp only [mem_image, exists_prop, mem_support_iff, Ne.def] at hx
+    simp only [mem_image, exists_prop, mem_support_iff, Ne] at hx
     rcases hx with ⟨hx_w, hx_h_left, rfl⟩
-    simp only [mem_support_iff, Ne.def]
+    simp only [mem_support_iff, Ne]
     rw [mapDomain_apply' (↑s.support : Set _) _ _ hf]
     · exact hx_h_left
-    · simp only [mem_coe, mem_support_iff, Ne.def]
+    · simp only [mem_coe, mem_support_iff, Ne]
       exact hx_h_left
     · exact Subset.refl _
 #align finsupp.map_domain_support_of_inj_on Finsupp.mapDomain_support_of_injOn
@@ -1553,7 +1553,7 @@ variable {α M}
 
 theorem support_smul [AddMonoid M] [SMulZeroClass R M] {b : R} {g : α →₀ M} :
     (b • g).support ⊆ g.support := fun a => by
-  simp only [smul_apply, mem_support_iff, Ne.def]
+  simp only [smul_apply, mem_support_iff, Ne]
   exact mt fun h => h.symm ▸ smul_zero _
 #align finsupp.support_smul Finsupp.support_smul
 
chore(*): remove empty lines between variable statements (#11418)

Empty lines were removed by executing the following Python script twice

import os
import re


# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
  for filename in files:
    if filename.endswith('.lean'):
      file_path = os.path.join(dir_path, filename)

      # Open the file and read its contents
      with open(file_path, 'r') as file:
        content = file.read()

      # Use a regular expression to replace sequences of "variable" lines separated by empty lines
      # with sequences without empty lines
      modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)

      # Write the modified content back to the file
      with open(file_path, 'w') as file:
        file.write(modified_content)
Diff
@@ -1652,7 +1652,6 @@ instance noZeroSMulDivisors [Semiring R] [AddCommMonoid M] [Module R M] {ι : Ty
 section DistribMulActionHom
 
 variable [Semiring R]
-
 variable [AddCommMonoid M] [AddCommMonoid N] [DistribMulAction R M] [DistribMulAction R N]
 
 /-- `Finsupp.single` as a `DistribMulActionHom`.
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -89,7 +89,7 @@ theorem apply_eq_of_mem_graph {a : α} {m : M} {f : α →₀ M} (h : (a, m) ∈
   (mem_graph_iff.1 h).1
 #align finsupp.apply_eq_of_mem_graph Finsupp.apply_eq_of_mem_graph
 
-@[simp 1100] -- porting note: change priority to appease `simpNF`
+@[simp 1100] -- Porting note: change priority to appease `simpNF`
 theorem not_mem_graph_snd_zero (a : α) (f : α →₀ M) : (a, (0 : M)) ∉ f.graph := fun h =>
   (mem_graph_iff.1 h).2.irrefl
 #align finsupp.not_mem_graph_snd_zero Finsupp.not_mem_graph_snd_zero
@@ -211,7 +211,7 @@ def mapRange.addMonoidHom (f : M →+ N) : (α →₀ M) →+ α →₀ N
     where
   toFun := (mapRange f f.map_zero : (α →₀ M) → α →₀ N)
   map_zero' := mapRange_zero
-  map_add' a b := by dsimp only; exact mapRange_add f.map_add _ _; -- porting note: `dsimp` needed
+  map_add' a b := by dsimp only; exact mapRange_add f.map_add _ _; -- Porting note: `dsimp` needed
 #align finsupp.map_range.add_monoid_hom Finsupp.mapRange.addMonoidHom
 
 @[simp]
@@ -881,7 +881,7 @@ def filter (p : α → Prop) [DecidablePred p] (f : α →₀ M) : α →₀ M w
   toFun a := if p a then f a else 0
   support := f.support.filter p
   mem_support_toFun a := by
-    simp only -- porting note: necessary to beta reduce to activate `split_ifs`
+    simp only -- Porting note: necessary to beta reduce to activate `split_ifs`
     split_ifs with h <;>
       · simp only [h, mem_filter, mem_support_iff]
         tauto
@@ -985,7 +985,7 @@ theorem mem_frange {f : α →₀ M} {y : M} : y ∈ f.frange ↔ y ≠ 0 ∧ 
   rw [frange, @Finset.mem_image _ _ (Classical.decEq _) _ f.support]
   exact ⟨fun ⟨x, hx1, hx2⟩ => ⟨hx2 ▸ mem_support_iff.1 hx1, x, hx2⟩, fun ⟨hy, x, hx⟩ =>
     ⟨x, mem_support_iff.2 (hx.symm ▸ hy), hx⟩⟩
-  -- porting note: maybe there is a better way to fix this, but (1) it wasn't seeing past `frange`
+  -- Porting note: maybe there is a better way to fix this, but (1) it wasn't seeing past `frange`
   -- the definition, and (2) it needed the `Classical.decEq` instance again.
 #align finsupp.mem_frange Finsupp.mem_frange
 
@@ -1588,7 +1588,7 @@ theorem smul_single [Zero M] [SMulZeroClass R M] (c : R) (a : α) (b : M) :
   mapRange_single
 #align finsupp.smul_single Finsupp.smul_single
 
--- porting note: removed `simp` because `simpNF` can prove it.
+-- Porting note: removed `simp` because `simpNF` can prove it.
 theorem smul_single' {_ : Semiring R} (c : R) (a : α) (b : R) :
     c • Finsupp.single a b = Finsupp.single a (c * b) :=
   smul_single _ _ _
@@ -1664,7 +1664,7 @@ def DistribMulActionHom.single (a : α) : M →+[R] α →₀ M :=
       simp only
       show singleAddHom a (k • m) = k • singleAddHom a m
       change Finsupp.single a (k • m) = k • (Finsupp.single a m)
-      -- porting note: because `singleAddHom_apply` is missing
+      -- Porting note: because `singleAddHom_apply` is missing
       simp only [smul_single] }
 #align finsupp.distrib_mul_action_hom.single Finsupp.DistribMulActionHom.single
 
@@ -1843,7 +1843,7 @@ This is the `Finsupp` version of `Sigma.curry`.
 -/
 def split (i : ι) : αs i →₀ M :=
   l.comapDomain (Sigma.mk i) fun _ _ _ _ hx => heq_iff_eq.1 (Sigma.mk.inj_iff.mp hx).2
-  -- porting note: it seems like Lean 4 never generated the `Sigma.mk.inj` lemma?
+  -- Porting note: it seems like Lean 4 never generated the `Sigma.mk.inj` lemma?
 #align finsupp.split Finsupp.split
 
 theorem split_apply (i : ι) (x : αs i) : split l i x = l ⟨i, x⟩ := by
chore: classify added instance porting notes (#11085)

Classifies by adding issue number #10754 to porting notes claiming anything semantically equivalent to:

  • "added instance"
  • "new instance"
  • "adding instance"
  • "had to add this instance manually"
Diff
@@ -1299,7 +1299,7 @@ def sumElim {α β γ : Type*} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) :
     (Sum.elim f g) fun ab h => by
     cases' ab with a b <;>
     letI := Classical.decEq α <;> letI := Classical.decEq β <;>
-    -- porting note: had to add these `DecidableEq` instances
+    -- porting note (#10754): had to add these `DecidableEq` instances
     simp only [Sum.elim_inl, Sum.elim_inr] at h <;>
     simpa
 #align finsupp.sum_elim Finsupp.sumElim
@@ -1861,7 +1861,7 @@ def splitSupport (l : (Σi, αs i) →₀ M) : Finset ι :=
 theorem mem_splitSupport_iff_nonzero (i : ι) : i ∈ splitSupport l ↔ split l i ≠ 0 := by
   rw [splitSupport, @mem_image _ _ (Classical.decEq _), Ne.def, ← support_eq_empty, ← Ne.def, ←
     Finset.nonempty_iff_ne_empty, split, comapDomain, Finset.Nonempty]
-  -- porting note: had to add the `Classical.decEq` instance manually
+  -- porting note (#10754): had to add the `Classical.decEq` instance manually
   simp only [exists_prop, Finset.mem_preimage, exists_and_right, exists_eq_right, mem_support_iff,
     Sigma.exists, Ne.def]
 #align finsupp.mem_split_support_iff_nonzero Finsupp.mem_splitSupport_iff_nonzero
@@ -1882,7 +1882,7 @@ def splitComp [Zero N] (g : ∀ i, (αs i →₀ M) → N) (hg : ∀ i x, x = 0
 theorem sigma_support : l.support = l.splitSupport.sigma fun i => (l.split i).support := by
   simp only [Finset.ext_iff, splitSupport, split, comapDomain, @mem_image _ _ (Classical.decEq _),
     mem_preimage, Sigma.forall, mem_sigma]
-  -- porting note: had to add the `Classical.decEq` instance manually
+  -- porting note (#10754): had to add the `Classical.decEq` instance manually
   tauto
 #align finsupp.sigma_support Finsupp.sigma_support
 
refactor(Data/Finsupp): Make Finsupp.filter computable (#8979)

This doesn't have any significant downstream fallout, and removes some subsingleton elimination from one or two proofs.

This enables some trivial computations on factorizations, eg finding the odd prime factors:

/-- info: fun₀ | 3 => 2 | 5 => 1 -/
#guard_msgs in
#eval (Nat.factorization 720).filter Odd

Zulip thread

Diff
@@ -872,33 +872,27 @@ section Filter
 
 section Zero
 
-variable [Zero M] (p : α → Prop) (f : α →₀ M)
+variable [Zero M] (p : α → Prop) [DecidablePred p] (f : α →₀ M)
 
 /--
 `Finsupp.filter p f` is the finitely supported function that is `f a` if `p a` is true and `0`
 otherwise. -/
-def filter (p : α → Prop) (f : α →₀ M) : α →₀ M
-    where
-  toFun a :=
-    haveI := Classical.decPred p
-    if p a then f a else 0
-  support :=
-    haveI := Classical.decPred p
-    f.support.filter fun a => p a
+def filter (p : α → Prop) [DecidablePred p] (f : α →₀ M) : α →₀ M where
+  toFun a := if p a then f a else 0
+  support := f.support.filter p
   mem_support_toFun a := by
     simp only -- porting note: necessary to beta reduce to activate `split_ifs`
     split_ifs with h <;>
-      · simp only [h, @mem_filter _ _ (Classical.decPred p), mem_support_iff]
-        -- porting note: I needed to provide the instance explicitly
+      · simp only [h, mem_filter, mem_support_iff]
         tauto
 #align finsupp.filter Finsupp.filter
 
-theorem filter_apply (a : α) [D : Decidable (p a)] : f.filter p a = if p a then f a else 0 := by
-  rw [Subsingleton.elim D] <;> rfl
+theorem filter_apply (a : α) : f.filter p a = if p a then f a else 0 := rfl
 #align finsupp.filter_apply Finsupp.filter_apply
 
-theorem filter_eq_indicator : ⇑(f.filter p) = Set.indicator { x | p x } f :=
-  rfl
+theorem filter_eq_indicator : ⇑(f.filter p) = Set.indicator { x | p x } f := by
+  ext
+  simp [filter_apply, Set.indicator_apply]
 #align finsupp.filter_eq_indicator Finsupp.filter_eq_indicator
 
 theorem filter_eq_zero_iff : f.filter p = 0 ↔ ∀ x, p x → f x = 0 := by
@@ -920,8 +914,7 @@ theorem filter_apply_neg {a : α} (h : ¬p a) : f.filter p a = 0 := if_neg h
 #align finsupp.filter_apply_neg Finsupp.filter_apply_neg
 
 @[simp]
-theorem support_filter [D : DecidablePred p] : (f.filter p).support = f.support.filter p := by
-  rw [Subsingleton.elim D] <;> rfl
+theorem support_filter : (f.filter p).support = f.support.filter p := rfl
 #align finsupp.support_filter Finsupp.support_filter
 
 theorem filter_zero : (0 : α →₀ M).filter p = 0 := by
@@ -966,9 +959,11 @@ theorem prod_div_prod_filter [CommGroup G] (g : α → M → G) :
 
 end Zero
 
-theorem filter_pos_add_filter_neg [AddZeroClass M] (f : α →₀ M) (p : α → Prop) :
+theorem filter_pos_add_filter_neg [AddZeroClass M] (f : α →₀ M) (p : α → Prop) [DecidablePred p] :
     (f.filter p + f.filter fun a => ¬p a) = f :=
-  DFunLike.coe_injective <| Set.indicator_self_add_compl { x | p x } f
+  DFunLike.coe_injective <| by
+    simp only [coe_add, filter_eq_indicator]
+    exact Set.indicator_self_add_compl { x | p x } f
 #align finsupp.filter_pos_add_filter_neg Finsupp.filter_pos_add_filter_neg
 
 end Filter
@@ -1086,15 +1081,18 @@ def subtypeDomainAddMonoidHom : (α →₀ M) →+ Subtype p →₀ M
 #align finsupp.subtype_domain_add_monoid_hom Finsupp.subtypeDomainAddMonoidHom
 
 /-- `Finsupp.filter` as an `AddMonoidHom`. -/
-def filterAddHom (p : α → Prop) : (α →₀ M) →+ α →₀ M
+def filterAddHom (p : α → Prop) [DecidablePred p]: (α →₀ M) →+ α →₀ M
     where
   toFun := filter p
   map_zero' := filter_zero p
-  map_add' f g := DFunLike.coe_injective <| Set.indicator_add { x | p x } f g
+  map_add' f g := DFunLike.coe_injective <| by
+    simp only [filter_eq_indicator, coe_add]
+    exact Set.indicator_add { x | p x } f g
 #align finsupp.filter_add_hom Finsupp.filterAddHom
 
 @[simp]
-theorem filter_add {v v' : α →₀ M} : (v + v').filter p = v.filter p + v'.filter p :=
+theorem filter_add [DecidablePred p] {v v' : α →₀ M} :
+    (v + v').filter p = v.filter p + v'.filter p :=
   (filterAddHom p).map_add v v'
 #align finsupp.filter_add Finsupp.filter_add
 
@@ -1114,15 +1112,15 @@ theorem subtypeDomain_finsupp_sum [Zero N] {s : β →₀ N} {h : β → N → 
   subtypeDomain_sum
 #align finsupp.subtype_domain_finsupp_sum Finsupp.subtypeDomain_finsupp_sum
 
-theorem filter_sum (s : Finset ι) (f : ι → α →₀ M) :
+theorem filter_sum [DecidablePred p] (s : Finset ι) (f : ι → α →₀ M) :
     (∑ a in s, f a).filter p = ∑ a in s, filter p (f a) :=
   map_sum (filterAddHom p) f s
 #align finsupp.filter_sum Finsupp.filter_sum
 
-theorem filter_eq_sum (p : α → Prop) [D : DecidablePred p] (f : α →₀ M) :
+theorem filter_eq_sum (p : α → Prop) [DecidablePred p] (f : α →₀ M) :
     f.filter p = ∑ i in f.support.filter p, single i (f i) :=
   (f.filter p).sum_single.symm.trans <|
-    Finset.sum_congr (by rw [Subsingleton.elim D] <;> rfl) fun x hx => by
+    Finset.sum_congr rfl fun x hx => by
       rw [filter_apply_pos _ _ (mem_filter.1 hx).2]
 #align finsupp.filter_eq_sum Finsupp.filter_eq_sum
 
@@ -1163,12 +1161,12 @@ theorem erase_sub (a : α) (f₁ f₂ : α →₀ G) : erase a (f₁ - f₂) = e
 #align finsupp.erase_sub Finsupp.erase_sub
 
 @[simp]
-theorem filter_neg (p : α → Prop) (f : α →₀ G) : filter p (-f) = -filter p f :=
+theorem filter_neg (p : α → Prop) [DecidablePred p] (f : α →₀ G) : filter p (-f) = -filter p f :=
   (filterAddHom p : (_ →₀ G) →+ _).map_neg f
 #align finsupp.filter_neg Finsupp.filter_neg
 
 @[simp]
-theorem filter_sub (p : α → Prop) (f₁ f₂ : α →₀ G) :
+theorem filter_sub (p : α → Prop) [DecidablePred p] (f₁ f₂ : α →₀ G) :
     filter p (f₁ - f₂) = filter p f₁ - filter p f₂ :=
   (filterAddHom p : (_ →₀ G) →+ _).map_sub f₁ f₂
 #align finsupp.filter_sub Finsupp.filter_sub
@@ -1265,7 +1263,7 @@ def finsuppProdEquiv : (α × β →₀ M) ≃ (α →₀ β →₀ M)
       forall₃_true_iff, (single_sum _ _ _).symm, sum_single]
 #align finsupp.finsupp_prod_equiv Finsupp.finsuppProdEquiv
 
-theorem filter_curry (f : α × β →₀ M) (p : α → Prop) :
+theorem filter_curry (f : α × β →₀ M) (p : α → Prop) [DecidablePred p] :
     (f.filter fun a : α × β => p a.1).curry = f.curry.filter p := by
   classical
     rw [Finsupp.curry, Finsupp.curry, Finsupp.sum, Finsupp.sum, filter_sum, support_filter,
@@ -1567,12 +1565,14 @@ theorem support_smul_eq [Semiring R] [AddCommMonoid M] [Module R M] [NoZeroSMulD
 
 section
 
-variable {p : α → Prop}
+variable {p : α → Prop} [DecidablePred p]
 
 @[simp]
 theorem filter_smul {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] {b : R} {v : α →₀ M} :
     (b • v).filter p = b • v.filter p :=
-  DFunLike.coe_injective <| Set.indicator_const_smul { x | p x } b v
+  DFunLike.coe_injective <| by
+    simp only [filter_eq_indicator, coe_smul]
+    exact Set.indicator_const_smul { x | p x } b v
 #align finsupp.filter_smul Finsupp.filter_smul
 
 end
chore: remove terminal, terminal refines (#10762)

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

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

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

Diff
@@ -1281,7 +1281,7 @@ theorem support_curry [DecidableEq α] (f : α × β →₀ M) :
     f.curry.support ⊆ f.support.image Prod.fst := by
   rw [← Finset.biUnion_singleton]
   refine' Finset.Subset.trans support_sum _
-  refine' Finset.biUnion_mono fun a _ => support_single_subset
+  exact Finset.biUnion_mono fun a _ => support_single_subset
 #align finsupp.support_curry Finsupp.support_curry
 
 end CurryUncurry
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
@@ -202,7 +202,7 @@ end ZeroHom
 section AddMonoidHom
 
 variable [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P]
-variable {F : Type*} [AddMonoidHomClass F M N]
+variable {F : Type*} [FunLike F M N] [AddMonoidHomClass F M N]
 
 /-- Composition with a fixed additive homomorphism is itself an additive homomorphism on functions.
 -/
chore(*): shake imports (#10199)
  • Remove Data.Set.Basic from scripts/noshake.json.
  • Remove an exception that was used by examples only, move these examples to a new test file.
  • Drop an exception for Order.Filter.Basic dependency on Control.Traversable.Instances, as the relevant parts were moved to Order.Filter.ListTraverse.
  • Run lake exe shake --fix.
Diff
@@ -8,6 +8,7 @@ import Mathlib.Algebra.Regular.SMul
 import Mathlib.Data.Finset.Preimage
 import Mathlib.Data.Rat.BigOperators
 import Mathlib.GroupTheory.GroupAction.Hom
+import Mathlib.Data.Set.Basic
 
 #align_import data.finsupp.basic from "leanprover-community/mathlib"@"f69db8cecc668e2d5894d7e9bfc491da60db3b9f"
 
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
@@ -6,9 +6,7 @@ Authors: Johannes Hölzl, Scott Morrison
 import Mathlib.Algebra.BigOperators.Finsupp
 import Mathlib.Algebra.Regular.SMul
 import Mathlib.Data.Finset.Preimage
-import Mathlib.Data.Finsupp.Notation
 import Mathlib.Data.Rat.BigOperators
-import Mathlib.Data.Set.Countable
 import Mathlib.GroupTheory.GroupAction.Hom
 
 #align_import data.finsupp.basic from "leanprover-community/mathlib"@"f69db8cecc668e2d5894d7e9bfc491da60db3b9f"
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
@@ -647,7 +647,7 @@ theorem mapDomain_mapRange [AddCommMonoid N] (f : α → β) (v : α →₀ M) (
     { toFun := g
       map_zero' := h0
       map_add' := hadd }
-  FunLike.congr_fun (mapDomain.addMonoidHom_comp_mapRange f g') v
+  DFunLike.congr_fun (mapDomain.addMonoidHom_comp_mapRange f g') v
 #align finsupp.map_domain_map_range Finsupp.mapDomain_mapRange
 
 theorem sum_update_add [AddCommMonoid α] [AddCommMonoid β] (f : ι →₀ α) (i : ι) (a : α)
@@ -903,12 +903,12 @@ theorem filter_eq_indicator : ⇑(f.filter p) = Set.indicator { x | p x } f :=
 #align finsupp.filter_eq_indicator Finsupp.filter_eq_indicator
 
 theorem filter_eq_zero_iff : f.filter p = 0 ↔ ∀ x, p x → f x = 0 := by
-  simp only [FunLike.ext_iff, filter_eq_indicator, zero_apply, Set.indicator_apply_eq_zero,
+  simp only [DFunLike.ext_iff, filter_eq_indicator, zero_apply, Set.indicator_apply_eq_zero,
     Set.mem_setOf_eq]
 #align finsupp.filter_eq_zero_iff Finsupp.filter_eq_zero_iff
 
 theorem filter_eq_self_iff : f.filter p = f ↔ ∀ x, f x ≠ 0 → p x := by
-  simp only [FunLike.ext_iff, filter_eq_indicator, Set.indicator_apply_eq_self, Set.mem_setOf_eq,
+  simp only [DFunLike.ext_iff, filter_eq_indicator, Set.indicator_apply_eq_self, Set.mem_setOf_eq,
     not_imp_comm]
 #align finsupp.filter_eq_self_iff Finsupp.filter_eq_self_iff
 
@@ -969,7 +969,7 @@ end Zero
 
 theorem filter_pos_add_filter_neg [AddZeroClass M] (f : α →₀ M) (p : α → Prop) :
     (f.filter p + f.filter fun a => ¬p a) = f :=
-  FunLike.coe_injective <| Set.indicator_self_add_compl { x | p x } f
+  DFunLike.coe_injective <| Set.indicator_self_add_compl { x | p x } f
 #align finsupp.filter_pos_add_filter_neg Finsupp.filter_pos_add_filter_neg
 
 end Filter
@@ -1091,7 +1091,7 @@ def filterAddHom (p : α → Prop) : (α →₀ M) →+ α →₀ M
     where
   toFun := filter p
   map_zero' := filter_zero p
-  map_add' f g := FunLike.coe_injective <| Set.indicator_add { x | p x } f g
+  map_add' f g := DFunLike.coe_injective <| Set.indicator_add { x | p x } f g
 #align finsupp.filter_add_hom Finsupp.filterAddHom
 
 @[simp]
@@ -1504,14 +1504,14 @@ theorem smul_apply [Zero M] [SMulZeroClass R M] (b : R) (v : α →₀ M) (a : 
 
 theorem _root_.IsSMulRegular.finsupp [Zero M] [SMulZeroClass R M] {k : R}
     (hk : IsSMulRegular M k) : IsSMulRegular (α →₀ M) k :=
-  fun _ _ h => ext fun i => hk (FunLike.congr_fun h i)
+  fun _ _ h => ext fun i => hk (DFunLike.congr_fun h i)
 #align is_smul_regular.finsupp IsSMulRegular.finsupp
 
 instance faithfulSMul [Nonempty α] [Zero M] [SMulZeroClass R M] [FaithfulSMul R M] :
     FaithfulSMul R (α →₀ M) where
   eq_of_smul_eq_smul h :=
     let ⟨a⟩ := ‹Nonempty α›
-    eq_of_smul_eq_smul fun m : M => by simpa using FunLike.congr_fun (h (single a m)) a
+    eq_of_smul_eq_smul fun m : M => by simpa using DFunLike.congr_fun (h (single a m)) a
 #align finsupp.faithful_smul Finsupp.faithfulSMul
 
 instance instSMulWithZero [Zero R] [Zero M] [SMulWithZero R M] : SMulWithZero R (α →₀ M) where
@@ -1573,7 +1573,7 @@ variable {p : α → Prop}
 @[simp]
 theorem filter_smul {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] {b : R} {v : α →₀ M} :
     (b • v).filter p = b • v.filter p :=
-  FunLike.coe_injective <| Set.indicator_const_smul { x | p x } b v
+  DFunLike.coe_injective <| Set.indicator_const_smul { x | p x } b v
 #align finsupp.filter_smul Finsupp.filter_smul
 
 end
@@ -1647,7 +1647,7 @@ instance noZeroSMulDivisors [Semiring R] [AddCommMonoid M] [Module R M] {ι : Ty
     [NoZeroSMulDivisors R M] : NoZeroSMulDivisors R (ι →₀ M) :=
   ⟨fun h =>
     or_iff_not_imp_left.mpr fun hc =>
-      Finsupp.ext fun i => (smul_eq_zero.mp (FunLike.ext_iff.mp h i)).resolve_left hc⟩
+      Finsupp.ext fun i => (smul_eq_zero.mp (DFunLike.ext_iff.mp h i)).resolve_left hc⟩
 #align finsupp.no_zero_smul_divisors Finsupp.noZeroSMulDivisors
 
 section DistribMulActionHom
@@ -1690,12 +1690,12 @@ variable [Zero R]
 
 /-- The `Finsupp` version of `Pi.unique`. -/
 instance uniqueOfRight [Subsingleton R] : Unique (α →₀ R) :=
-  FunLike.coe_injective.unique
+  DFunLike.coe_injective.unique
 #align finsupp.unique_of_right Finsupp.uniqueOfRight
 
 /-- The `Finsupp` version of `Pi.uniqueOfIsEmpty`. -/
 instance uniqueOfLeft [IsEmpty α] : Unique (α →₀ R) :=
-  FunLike.coe_injective.unique
+  DFunLike.coe_injective.unique
 #align finsupp.unique_of_left Finsupp.uniqueOfLeft
 
 end
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
@@ -354,6 +354,11 @@ theorem equivMapDomain_zero {f : α ≃ β} : equivMapDomain f (0 : α →₀ M)
   ext; simp only [equivMapDomain_apply, coe_zero, Pi.zero_apply]
 #align finsupp.equiv_map_domain_zero Finsupp.equivMapDomain_zero
 
+@[to_additive (attr := simp)]
+theorem prod_equivMapDomain [CommMonoid N] (f : α ≃ β) (l : α →₀ M) (g : β → M → N):
+    prod (equivMapDomain f l) g = prod l (fun a m => g (f a) m) := by
+  simp [prod, equivMapDomain]
+
 /-- Given `f : α ≃ β`, the finitely supported function spaces are also in bijection:
 `(α →₀ M) ≃ (β →₀ M)`.
 
@@ -722,6 +727,15 @@ section Zero
 
 variable [Zero M]
 
+lemma embDomain_comapDomain {f : α ↪ β} {g : β →₀ M} (hg : ↑g.support ⊆ Set.range f) :
+    embDomain f (comapDomain f g (f.injective.injOn _)) = g := by
+  ext b
+  by_cases hb : b ∈ Set.range f
+  · obtain ⟨a, rfl⟩ := hb
+    rw [embDomain_apply, comapDomain_apply]
+  · replace hg : g b = 0 := not_mem_support_iff.mp <| mt (hg ·) hb
+    rw [embDomain_notin_range _ _ _ hb, hg]
+
 /-- Note the `hif` argument is needed for this to work in `rw`. -/
 @[simp]
 theorem comapDomain_zero (f : α → β)
@@ -777,14 +791,9 @@ end AddZeroClass
 variable [AddCommMonoid M] (f : α → β)
 
 theorem mapDomain_comapDomain (hf : Function.Injective f) (l : β →₀ M)
-    (hl : ↑l.support ⊆ Set.range f) : mapDomain f (comapDomain f l (hf.injOn _)) = l := by
-  ext a
-  by_cases h_cases : a ∈ Set.range f
-  · rcases Set.mem_range.1 h_cases with ⟨b, hb⟩
-    rw [hb.symm, mapDomain_apply hf, comapDomain_apply]
-  · rw [mapDomain_notin_range _ _ h_cases]
-    by_contra h_contr
-    apply h_cases (hl <| Finset.mem_coe.2 <| mem_support_iff.2 fun h => h_contr h.symm)
+    (hl : ↑l.support ⊆ Set.range f) :
+    mapDomain f (comapDomain f l (hf.injOn _)) = l := by
+  conv_rhs => rw [← embDomain_comapDomain (f := ⟨f, hf⟩) hl (M := M), embDomain_eq_mapDomain]
 #align finsupp.map_domain_comap_domain Finsupp.mapDomain_comapDomain
 
 end FInjective
feat: Extract a computable Finsupp.extendDomain from restrictSupportEquiv (#9325)

This PR adds two constructions of finitely supported functions:

  • Finsupp.piecewise: define a finitely supported function from two functions, according to a decidable predicate
  • Finsupp.extendDomain: extends by 0 a finitely supported function on a subtype by 0. This is a computable version of embDomain (.subtype _), which also has a simpler defeq.
  • adjust accordingly the definition of Finsupp.restrictSupportEquiv.

This may be used to simplify some parts of #7904.

Diff
@@ -1691,26 +1691,91 @@ instance uniqueOfLeft [IsEmpty α] : Unique (α →₀ R) :=
 
 end
 
+section
+variable {M : Type*} [Zero M] {P : α → Prop} [DecidablePred P]
+
+/-- Combine finitely supported functions over `{a // P a}` and `{a // ¬P a}`, by case-splitting on
+`P a`. -/
+@[simps]
+def piecewise (f : Subtype P →₀ M) (g : {a // ¬ P a} →₀ M) : α →₀ M where
+  toFun a := if h : P a then f ⟨a, h⟩ else g ⟨a, h⟩
+  support := (f.support.map (.subtype _)).disjUnion (g.support.map (.subtype _)) <| by
+    simp_rw [Finset.disjoint_left, mem_map, forall_exists_index, Embedding.coe_subtype,
+      Subtype.forall, Subtype.exists]
+    rintro _ a ha ⟨-, rfl⟩ ⟨b, hb, -, rfl⟩
+    exact hb ha
+  mem_support_toFun a := by
+    by_cases ha : P a <;> simp [ha]
+
+@[simp]
+theorem subtypeDomain_piecewise (f : Subtype P →₀ M) (g : {a // ¬ P a} →₀ M) :
+    subtypeDomain P (f.piecewise g) = f :=
+  Finsupp.ext fun a => dif_pos a.prop
+
+@[simp]
+theorem subtypeDomain_not_piecewise (f : Subtype P →₀ M) (g : {a // ¬ P a} →₀ M) :
+    subtypeDomain (¬P ·) (f.piecewise g) = g :=
+  Finsupp.ext fun a => dif_neg a.prop
+
+/-- Extend the domain of a `Finsupp` by using `0` where `P x` does not hold. -/
+@[simps! support toFun]
+def extendDomain (f : Subtype P →₀ M) : α →₀ M := piecewise f 0
+
+theorem extendDomain_eq_embDomain_subtype (f : Subtype P →₀ M) :
+    extendDomain f = embDomain (.subtype _) f := by
+  ext a
+  by_cases h : P a
+  · refine Eq.trans ?_ (embDomain_apply (.subtype P) f (Subtype.mk a h)).symm
+    simp [h]
+  · rw [embDomain_notin_range, extendDomain_toFun, dif_neg h]
+    simp [h]
+
+theorem support_extendDomain_subset (f : Subtype P →₀ M) :
+    ↑(f.extendDomain).support ⊆ {x | P x} := by
+  intro x
+  rw [extendDomain_support, mem_coe, mem_map, Embedding.coe_subtype]
+  rintro ⟨x, -, rfl⟩
+  exact x.prop
+
+@[simp]
+theorem subtypeDomain_extendDomain (f : Subtype P →₀ M) :
+    subtypeDomain P f.extendDomain = f :=
+  subtypeDomain_piecewise _ _
+
+theorem extendDomain_subtypeDomain (f : α →₀ M) (hf : ∀ a ∈ f.support, P a) :
+    (subtypeDomain P f).extendDomain = f := by
+  ext a
+  by_cases h : P a
+  · exact dif_pos h
+  · dsimp
+    rw [if_neg h, eq_comm, ← not_mem_support_iff]
+    refine mt ?_ h
+    exact @hf _
+
+@[simp]
+theorem extendDomain_single (a : Subtype P) (m : M) :
+    (single a m).extendDomain = single a.val m := by
+  ext a'
+  dsimp only [extendDomain_toFun]
+  obtain rfl | ha := eq_or_ne a.val a'
+  · simp_rw [single_eq_same, dif_pos a.prop]
+  · simp_rw [single_eq_of_ne ha, dite_eq_right_iff]
+    intro h
+    rw [single_eq_of_ne]
+    simp [Subtype.ext_iff, ha]
+
+end
+
 /-- Given an `AddCommMonoid M` and `s : Set α`, `restrictSupportEquiv s M` is the `Equiv`
 between the subtype of finitely supported functions with support contained in `s` and
 the type of finitely supported functions from `s`. -/
 def restrictSupportEquiv (s : Set α) (M : Type*) [AddCommMonoid M] :
     { f : α →₀ M // ↑f.support ⊆ s } ≃ (s →₀ M) where
-  toFun f := subtypeDomain (fun x => x ∈ s) f.1
-  invFun f :=
-    ⟨f.embDomain <| Embedding.subtype _, by
-      rw [support_embDomain, Finset.coe_map, Set.image_subset_iff]
-      exact fun x _ => x.2⟩
-  left_inv := by
-    rintro ⟨f, hf⟩
-    ext a
-    by_cases h : a ∈ s
-    · lift a to s using h
-      exact embDomain_apply _ _ _
-    rw [embDomain_notin_range, eq_comm, ← Finsupp.not_mem_support_iff]
-    · exact fun hs => h <| hf hs
-    · simp [h]
-  right_inv f := ext <| embDomain_apply _ f
+  toFun f := subtypeDomain (· ∈ s) f.1
+  invFun f := letI := Classical.decPred (· ∈ s); ⟨f.extendDomain, support_extendDomain_subset _⟩
+  left_inv f :=
+    letI := Classical.decPred (· ∈ s); Subtype.ext <| extendDomain_subtypeDomain f.1 f.prop
+  right_inv _ := letI := Classical.decPred (· ∈ s); subtypeDomain_extendDomain _
 #align finsupp.restrict_support_equiv Finsupp.restrictSupportEquiv
 
 /-- Given `AddCommMonoid M` and `e : α ≃ β`, `domCongr e` is the corresponding `Equiv` between
feat: Better lemmas for transferring finite sums along equivalences (#9237)

Lemmas around this were a mess, throth in terms of names, statement and location. This PR standardises everything to be in Algebra.BigOperators.Basic and changes the lemmas to take in InjOn and SurjOn assumptions where possible (and where impossible make sure the hypotheses are taken in the correct order) and moves the equality of functions hypothesis last.

Also add a few lemmas that help fix downstream uses by golfing.

From LeanAPAP and LeanCamCombi

Diff
@@ -1052,9 +1052,8 @@ theorem subtypeDomain_eq_zero_iff {f : α →₀ M} (hf : ∀ x ∈ f.support, p
 
 @[to_additive]
 theorem prod_subtypeDomain_index [CommMonoid N] {v : α →₀ M} {h : α → M → N}
-    (hp : ∀ x ∈ v.support, p x) : ((v.subtypeDomain p).prod fun a b => h a b) = v.prod h :=
-  prod_bij (fun p _ => p.val) (fun _ => by classical exact mem_subtype.1) (fun _ _ => rfl)
-    (fun _ _ _ _ => Subtype.eq) fun b hb => ⟨⟨b, hp b hb⟩, by classical exact mem_subtype.2 hb, rfl⟩
+    (hp : ∀ x ∈ v.support, p x) : (v.subtypeDomain p).prod (fun a b ↦ h a b) = v.prod h := by
+  refine Finset.prod_bij (fun p _ ↦ p) ?_ ?_ ?_ ?_ <;> aesop
 #align finsupp.prod_subtype_domain_index Finsupp.prod_subtypeDomain_index
 #align finsupp.sum_subtype_domain_index Finsupp.sum_subtypeDomain_index
 
chore: Replace (· op ·) a by (a op ·) (#8843)

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

Diff
@@ -1265,7 +1265,6 @@ theorem filter_curry (f : α × β →₀ M) (p : α → Prop) :
       sum_filter]
     refine' Finset.sum_congr rfl _
     rintro ⟨a₁, a₂⟩ _
-    dsimp only
     split_ifs with h
     · rw [filter_apply_pos, filter_single_of_pos] <;> exact h
     · rwa [filter_single_of_neg]
@@ -1416,12 +1415,12 @@ variable [Monoid G] [MulAction G α] [AddCommMonoid M]
 
 This is not an instance as it would conflict with the action on the range.
 See the `instance_diamonds` test for examples of such conflicts. -/
-def comapSMul : SMul G (α →₀ M) where smul g := mapDomain ((· • ·) g)
+def comapSMul : SMul G (α →₀ M) where smul g := mapDomain (g • ·)
 #align finsupp.comap_has_smul Finsupp.comapSMul
 
 attribute [local instance] comapSMul
 
-theorem comapSMul_def (g : G) (f : α →₀ M) : g • f = mapDomain ((· • ·) g) f :=
+theorem comapSMul_def (g : G) (f : α →₀ M) : g • f = mapDomain (g • ·) f :=
   rfl
 #align finsupp.comap_smul_def Finsupp.comapSMul_def
 
@@ -1474,7 +1473,7 @@ end
 section
 
 instance smulZeroClass [Zero M] [SMulZeroClass R M] : SMulZeroClass R (α →₀ M) where
-  smul a v := v.mapRange ((· • ·) a) (smul_zero _)
+  smul a v := v.mapRange (a • ·) (smul_zero _)
   smul_zero a := by
     ext
     apply smul_zero
@@ -1592,7 +1591,7 @@ theorem mapRange_smul {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] [AddMo
     [DistribMulAction R N] {f : M → N} {hf : f 0 = 0} (c : R) (v : α →₀ M)
     (hsmul : ∀ x, f (c • x) = c • f x) : mapRange f hf (c • v) = c • mapRange f hf v := by
   erw [← mapRange_comp]
-  have : f ∘ (· • ·) c = (· • ·) c ∘ f := funext hsmul
+  have : f ∘ (c • ·) = (c • ·) ∘ f := funext hsmul
   simp_rw [this]
   apply mapRange_comp
   simp only [Function.comp_apply, smul_zero, hf]
feat: When Finsupp.prod is nonzero (#8844)

Also replace Finsupp.nonzero_iff_exists by a more general lemma.

Diff
@@ -1300,7 +1300,7 @@ def sumElim {α β γ : Type*} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) :
     simpa
 #align finsupp.sum_elim Finsupp.sumElim
 
-@[simp]
+@[simp, norm_cast]
 theorem coe_sumElim {α β γ : Type*} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) :
     ⇑(sumElim f g) = Sum.elim f g :=
   rfl
@@ -1485,7 +1485,7 @@ Throughout this section, some `Monoid` and `Semiring` arguments are specified wi
 `[]`. See note [implicit instance arguments].
 -/
 
-@[simp]
+@[simp, norm_cast]
 theorem coe_smul [Zero M] [SMulZeroClass R M] (b : R) (v : α →₀ M) : ⇑(b • v) = b • ⇑v :=
   rfl
 #align finsupp.coe_smul Finsupp.coe_smul
@@ -1507,6 +1507,9 @@ instance faithfulSMul [Nonempty α] [Zero M] [SMulZeroClass R M] [FaithfulSMul R
     eq_of_smul_eq_smul fun m : M => by simpa using FunLike.congr_fun (h (single a m)) a
 #align finsupp.faithful_smul Finsupp.faithfulSMul
 
+instance instSMulWithZero [Zero R] [Zero M] [SMulWithZero R M] : SMulWithZero R (α →₀ M) where
+  zero_smul f := by ext i; exact zero_smul _ _
+
 variable (α M)
 
 instance distribSMul [AddZeroClass M] [DistribSMul R M] : DistribSMul R (α →₀ M) where
chore: remove deprecated MonoidHom.map_prod, AddMonoidHom.map_sum (#8787)
Diff
@@ -241,7 +241,7 @@ theorem mapRange_multiset_sum (f : F) (m : Multiset (α →₀ M)) :
 
 theorem mapRange_finset_sum (f : F) (s : Finset ι) (g : ι → α →₀ M) :
     mapRange f (map_zero f) (∑ x in s, g x) = ∑ x in s, mapRange f (map_zero f) (g x) :=
-  (mapRange.addMonoidHom (f : M →+ N) : (α →₀ _) →+ _).map_sum _ _
+  map_sum (mapRange.addMonoidHom (f : M →+ N)) _ _
 #align finsupp.map_range_finset_sum Finsupp.mapRange_finset_sum
 
 /-- `Finsupp.mapRange.AddMonoidHom` as an equiv. -/
@@ -528,7 +528,7 @@ theorem mapDomain.addMonoidHom_comp (f : β → γ) (g : α → β) :
 
 theorem mapDomain_finset_sum {f : α → β} {s : Finset ι} {v : ι → α →₀ M} :
     mapDomain f (∑ i in s, v i) = ∑ i in s, mapDomain f (v i) :=
-  (mapDomain.addMonoidHom f : (α →₀ M) →+ β →₀ M).map_sum _ _
+  map_sum (mapDomain.addMonoidHom f) _ _
 #align finsupp.map_domain_finset_sum Finsupp.mapDomain_finset_sum
 
 theorem mapDomain_sum [Zero N] {f : α → β} {s : α →₀ N} {v : α → N → α →₀ M} :
@@ -1099,7 +1099,7 @@ variable [AddCommMonoid M] {p : α → Prop}
 
 theorem subtypeDomain_sum {s : Finset ι} {h : ι → α →₀ M} :
     (∑ c in s, h c).subtypeDomain p = ∑ c in s, (h c).subtypeDomain p :=
-  (subtypeDomainAddMonoidHom : _ →+ Subtype p →₀ M).map_sum _ s
+  map_sum subtypeDomainAddMonoidHom _ s
 #align finsupp.subtype_domain_sum Finsupp.subtypeDomain_sum
 
 theorem subtypeDomain_finsupp_sum [Zero N] {s : β →₀ N} {h : β → N → α →₀ M} :
@@ -1109,7 +1109,7 @@ theorem subtypeDomain_finsupp_sum [Zero N] {s : β →₀ N} {h : β → N → 
 
 theorem filter_sum (s : Finset ι) (f : ι → α →₀ M) :
     (∑ a in s, f a).filter p = ∑ a in s, filter p (f a) :=
-  (filterAddHom p : (α →₀ M) →+ _).map_sum f s
+  map_sum (filterAddHom p) f s
 #align finsupp.filter_sum Finsupp.filter_sum
 
 theorem filter_eq_sum (p : α → Prop) [D : DecidablePred p] (f : α →₀ M) :
chore: space after (#8178)

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

Diff
@@ -1706,7 +1706,7 @@ def restrictSupportEquiv (s : Set α) (M : Type*) [AddCommMonoid M] :
     by_cases h : a ∈ s
     · lift a to s using h
       exact embDomain_apply _ _ _
-    rw [embDomain_notin_range, eq_comm, ←Finsupp.not_mem_support_iff]
+    rw [embDomain_notin_range, eq_comm, ← Finsupp.not_mem_support_iff]
     · exact fun hs => h <| hf hs
     · simp [h]
   right_inv f := ext <| embDomain_apply _ f
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
@@ -664,7 +664,7 @@ theorem mapDomain_injOn (S : Set α) {f : α → β} (hf : Set.InjOn f S) :
     by_cases h : a ∈ v₁.support ∪ v₂.support
     · rw [← mapDomain_apply' S _ hv₁ hf _, ← mapDomain_apply' S _ hv₂ hf _, eq] <;>
         · apply Set.union_subset hv₁ hv₂
-          exact_mod_cast h
+          exact mod_cast h
     · simp only [not_or, mem_union, not_not, mem_support_iff] at h
       simp [h]
 #align finsupp.map_domain_inj_on Finsupp.mapDomain_injOn
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
@@ -1401,7 +1401,7 @@ section
 
 variable [Zero M] [MonoidWithZero R] [MulActionWithZero R M]
 
-@[simp]
+@[simp, nolint simpNF] -- `simpNF` incorrectly complains the LHS doesn't simplify.
 theorem single_smul (a b : α) (f : α → M) (r : R) : single a r b • f a = single a (r • f b) b := by
   by_cases h : a = b <;> simp [h]
 #align finsupp.single_smul Finsupp.single_smul
refactor(Algebra/Hom): transpose Hom and file name (#8095)

I believe the file defining a type of morphisms belongs alongside the file defining the structure this morphism works on. So I would like to reorganize the files in the Mathlib.Algebra.Hom folder so that e.g. Mathlib.Algebra.Hom.Ring becomes Mathlib.Algebra.Ring.Hom and Mathlib.Algebra.Hom.NonUnitalAlg becomes Mathlib.Algebra.Algebra.NonUnitalHom.

While fixing the imports I went ahead and sorted them for good luck.

The full list of changes is: renamed: Mathlib/Algebra/Hom/NonUnitalAlg.lean -> Mathlib/Algebra/Algebra/NonUnitalHom.lean renamed: Mathlib/Algebra/Hom/Aut.lean -> Mathlib/Algebra/Group/Aut.lean renamed: Mathlib/Algebra/Hom/Commute.lean -> Mathlib/Algebra/Group/Commute/Hom.lean renamed: Mathlib/Algebra/Hom/Embedding.lean -> Mathlib/Algebra/Group/Embedding.lean renamed: Mathlib/Algebra/Hom/Equiv/Basic.lean -> Mathlib/Algebra/Group/Equiv/Basic.lean renamed: Mathlib/Algebra/Hom/Equiv/TypeTags.lean -> Mathlib/Algebra/Group/Equiv/TypeTags.lean renamed: Mathlib/Algebra/Hom/Equiv/Units/Basic.lean -> Mathlib/Algebra/Group/Units/Equiv.lean renamed: Mathlib/Algebra/Hom/Equiv/Units/GroupWithZero.lean -> Mathlib/Algebra/GroupWithZero/Units/Equiv.lean renamed: Mathlib/Algebra/Hom/Freiman.lean -> Mathlib/Algebra/Group/Freiman.lean renamed: Mathlib/Algebra/Hom/Group/Basic.lean -> Mathlib/Algebra/Group/Hom/Basic.lean renamed: Mathlib/Algebra/Hom/Group/Defs.lean -> Mathlib/Algebra/Group/Hom/Defs.lean renamed: Mathlib/Algebra/Hom/GroupAction.lean -> Mathlib/GroupTheory/GroupAction/Hom.lean renamed: Mathlib/Algebra/Hom/GroupInstances.lean -> Mathlib/Algebra/Group/Hom/Instances.lean renamed: Mathlib/Algebra/Hom/Iterate.lean -> Mathlib/Algebra/GroupPower/IterateHom.lean renamed: Mathlib/Algebra/Hom/Centroid.lean -> Mathlib/Algebra/Ring/CentroidHom.lean renamed: Mathlib/Algebra/Hom/Ring/Basic.lean -> Mathlib/Algebra/Ring/Hom/Basic.lean renamed: Mathlib/Algebra/Hom/Ring/Defs.lean -> Mathlib/Algebra/Ring/Hom/Defs.lean renamed: Mathlib/Algebra/Hom/Units.lean -> Mathlib/Algebra/Group/Units/Hom.lean

Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Reorganizing.20.60Mathlib.2EAlgebra.2EHom.60

Diff
@@ -4,12 +4,12 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Scott Morrison
 -/
 import Mathlib.Algebra.BigOperators.Finsupp
-import Mathlib.Algebra.Hom.GroupAction
 import Mathlib.Algebra.Regular.SMul
 import Mathlib.Data.Finset.Preimage
 import Mathlib.Data.Finsupp.Notation
 import Mathlib.Data.Rat.BigOperators
 import Mathlib.Data.Set.Countable
+import Mathlib.GroupTheory.GroupAction.Hom
 
 #align_import data.finsupp.basic from "leanprover-community/mathlib"@"f69db8cecc668e2d5894d7e9bfc491da60db3b9f"
 
chore: remove nonterminal simp (#7580)

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

Diff
@@ -1209,7 +1209,7 @@ theorem curry_apply (f : α × β →₀ M) (x : α) (y : β) : f.curry x y = f
   classical
     have : ∀ b : α × β, single b.fst (single b.snd (f b)) x y = if b = (x, y) then f b else 0 := by
       rintro ⟨b₁, b₂⟩
-      simp [single_apply, ite_apply, Prod.ext_iff, ite_and]
+      simp only [ne_eq, single_apply, Prod.ext_iff, ite_and]
       split_ifs <;> simp [single_apply, *]
     rw [Finsupp.curry, sum_apply, sum_apply, sum_eq_single, this, if_pos rfl]
     · intro b _ b_ne
feat: add Finsupp.prod/sum_eq_single (#7349)

In several places, we unfold Finsupp.sum just to use Finset.sum_eq_single; this adds the missing lemma.

Diff
@@ -451,11 +451,11 @@ def mapDomain (f : α → β) (v : α →₀ M) : β →₀ M :=
 
 theorem mapDomain_apply {f : α → β} (hf : Function.Injective f) (x : α →₀ M) (a : α) :
     mapDomain f x (f a) = x a := by
-  rw [mapDomain, sum_apply, sum, Finset.sum_eq_single a, single_eq_same]
+  rw [mapDomain, sum_apply, sum_eq_single a, single_eq_same]
   · intro b _ hba
     exact single_eq_of_ne (hf.ne hba)
-  · intro h
-    rw [not_mem_support_iff.1 h, single_zero, zero_apply]
+  · intro _
+    rw [single_zero, coe_zero, Pi.zero_apply]
 #align finsupp.map_domain_apply Finsupp.mapDomain_apply
 
 theorem mapDomain_notin_range {f : α → β} (x : α →₀ M) (a : β) (h : a ∉ Set.range f) :
@@ -1211,11 +1211,11 @@ theorem curry_apply (f : α × β →₀ M) (x : α) (y : β) : f.curry x y = f
       rintro ⟨b₁, b₂⟩
       simp [single_apply, ite_apply, Prod.ext_iff, ite_and]
       split_ifs <;> simp [single_apply, *]
-    rw [Finsupp.curry, sum_apply, sum_apply, Finsupp.sum, Finset.sum_eq_single, this, if_pos rfl]
+    rw [Finsupp.curry, sum_apply, sum_apply, sum_eq_single, this, if_pos rfl]
     · intro b _ b_ne
       rw [this b, if_neg b_ne]
-    · intro hxy
-      rw [this (x, y), if_pos rfl, not_mem_support_iff.mp hxy]
+    · intro _
+      rw [single_zero, single_zero, coe_zero, Pi.zero_apply, coe_zero, Pi.zero_apply]
 #align finsupp.curry_apply Finsupp.curry_apply
 
 theorem sum_curry_index (f : α × β →₀ M) (g : α → β → M → N) (hg₀ : ∀ a b, g a b 0 = 0)
style: fix wrapping of where (#7149)
Diff
@@ -1870,8 +1870,8 @@ end Sigma
 /-- Stringify a `Finsupp` as a sequence of `Finsupp.single` terms.
 
 Note this is `meta` as it has to choose some order for the terms. -/
-unsafe instance (ι α : Type*) [Zero α] [Repr ι] [Repr α] : Repr (ι →₀ α)
-    where repr f :=
+unsafe instance (ι α : Type*) [Zero α] [Repr ι] [Repr α] : Repr (ι →₀ α) where
+  repr f :=
     if f.support.card = 0 then "0"
     else
       " + ".intercalate <|
feat(Data/Finsupp): add notation (#6367)

This PR provides fun₀ | 3 => a | 7 => b notation for Finsupp, which desugars to Finsupp.update and Finsupp.single, in the same way that {a, b} desugars to insert and singleton.

It also provides a matching delaborator: as an example of the effect of this, Finsupp.single_add now shows as:

Finsupp.single_add.{u_2, u_1} {α : Type u_1} {M : Type u_2} [inst✝ : AddZeroClass M] (a : α) (b₁ b₂ : M) :
  (fun₀ | a => b₁ + b₂) = (fun₀ | a => b₁) + fun₀ | a => b₂

Finally, it provides a Repr instance; though this is somewhat misleading as the syntax that is produced by Repr isn't actually computable so can't round-trip!

Discussed on Zulip here.

Diff
@@ -7,6 +7,7 @@ import Mathlib.Algebra.BigOperators.Finsupp
 import Mathlib.Algebra.Hom.GroupAction
 import Mathlib.Algebra.Regular.SMul
 import Mathlib.Data.Finset.Preimage
+import Mathlib.Data.Finsupp.Notation
 import Mathlib.Data.Rat.BigOperators
 import Mathlib.Data.Set.Countable
 
chore: cleanup Mathlib.Init.Data.Prod (#6972)

Removing from Mathlib.Init.Data.Prod from the early parts of the import hierarchy.

While at it, remove unnecessary uses of Prod.mk.eta across the library.

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

Diff
@@ -1254,7 +1254,7 @@ def finsuppProdEquiv : (α × β →₀ M) ≃ (α →₀ β →₀ M)
   right_inv f := by
     simp only [Finsupp.curry, Finsupp.uncurry, sum_sum_index, sum_zero_index, sum_add_index,
       sum_single_index, single_zero, single_add, eq_self_iff_true, forall_true_iff,
-      forall₃_true_iff, Prod.mk.eta, (single_sum _ _ _).symm, sum_single]
+      forall₃_true_iff, (single_sum _ _ _).symm, sum_single]
 #align finsupp.finsupp_prod_equiv Finsupp.finsuppProdEquiv
 
 theorem filter_curry (f : α × β →₀ M) (p : α → Prop) :
chore: small generalization of finsupp lemmas (#6700)

Noticed whilst doing my other PR about char_zero. Leaves statements that create data alone.

Diff
@@ -202,6 +202,7 @@ end ZeroHom
 section AddMonoidHom
 
 variable [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P]
+variable {F : Type*} [AddMonoidHomClass F M N]
 
 /-- Composition with a fixed additive homomorphism is itself an additive homomorphism on functions.
 -/
@@ -232,14 +233,14 @@ theorem mapRange.addMonoidHom_toZeroHom (f : M →+ N) :
   ZeroHom.ext fun _ => rfl
 #align finsupp.map_range.add_monoid_hom_to_zero_hom Finsupp.mapRange.addMonoidHom_toZeroHom
 
-theorem mapRange_multiset_sum (f : M →+ N) (m : Multiset (α →₀ M)) :
-    mapRange f f.map_zero m.sum = (m.map fun x => mapRange f f.map_zero x).sum :=
-  (mapRange.addMonoidHom f : (α →₀ _) →+ _).map_multiset_sum _
+theorem mapRange_multiset_sum (f : F) (m : Multiset (α →₀ M)) :
+    mapRange f (map_zero f) m.sum = (m.map fun x => mapRange f (map_zero f) x).sum :=
+  (mapRange.addMonoidHom (f : M →+ N) : (α →₀ _) →+ _).map_multiset_sum _
 #align finsupp.map_range_multiset_sum Finsupp.mapRange_multiset_sum
 
-theorem mapRange_finset_sum (f : M →+ N) (s : Finset ι) (g : ι → α →₀ M) :
-    mapRange f f.map_zero (∑ x in s, g x) = ∑ x in s, mapRange f f.map_zero (g x) :=
-  (mapRange.addMonoidHom f : (α →₀ _) →+ _).map_sum _ _
+theorem mapRange_finset_sum (f : F) (s : Finset ι) (g : ι → α →₀ M) :
+    mapRange f (map_zero f) (∑ x in s, g x) = ∑ x in s, mapRange f (map_zero f) (g x) :=
+  (mapRange.addMonoidHom (f : M →+ N) : (α →₀ _) →+ _).map_sum _ _
 #align finsupp.map_range_finset_sum Finsupp.mapRange_finset_sum
 
 /-- `Finsupp.mapRange.AddMonoidHom` as an equiv. -/
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
@@ -49,7 +49,7 @@ 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*}
 
 namespace Finsupp
 
@@ -619,7 +619,7 @@ theorem mapDomain_injective {f : α → β} (hf : Function.Injective f) :
 
 /-- When `f` is an embedding we have an embedding `(α →₀ ℕ) ↪ (β →₀ ℕ)` given by `mapDomain`. -/
 @[simps]
-def mapDomainEmbedding {α β : Type _} (f : α ↪ β) : (α →₀ ℕ) ↪ β →₀ ℕ :=
+def mapDomainEmbedding {α β : Type*} (f : α ↪ β) : (α →₀ ℕ) ↪ β →₀ ℕ :=
   ⟨Finsupp.mapDomain f, Finsupp.mapDomain_injective f.injective⟩
 #align finsupp.map_domain_embedding Finsupp.mapDomainEmbedding
 
@@ -1284,7 +1284,7 @@ end CurryUncurry
 section Sum
 
 /-- `Finsupp.sumElim f g` maps `inl x` to `f x` and `inr y` to `g y`. -/
-def sumElim {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) : Sum α β →₀ γ :=
+def sumElim {α β γ : Type*} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) : Sum α β →₀ γ :=
   onFinset
     (by
       haveI := Classical.decEq α
@@ -1299,22 +1299,22 @@ def sumElim {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →₀ γ)
 #align finsupp.sum_elim Finsupp.sumElim
 
 @[simp]
-theorem coe_sumElim {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) :
+theorem coe_sumElim {α β γ : Type*} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) :
     ⇑(sumElim f g) = Sum.elim f g :=
   rfl
 #align finsupp.coe_sum_elim Finsupp.coe_sumElim
 
-theorem sumElim_apply {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) (x : Sum α β) :
+theorem sumElim_apply {α β γ : Type*} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) (x : Sum α β) :
     sumElim f g x = Sum.elim f g x :=
   rfl
 #align finsupp.sum_elim_apply Finsupp.sumElim_apply
 
-theorem sumElim_inl {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) (x : α) :
+theorem sumElim_inl {α β γ : Type*} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) (x : α) :
     sumElim f g (Sum.inl x) = f x :=
   rfl
 #align finsupp.sum_elim_inl Finsupp.sumElim_inl
 
-theorem sumElim_inr {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) (x : β) :
+theorem sumElim_inr {α β γ : Type*} [Zero γ] (f : α →₀ γ) (g : β →₀ γ) (x : β) :
     sumElim f g (Sum.inr x) = g x :=
   rfl
 #align finsupp.sum_elim_inr Finsupp.sumElim_inr
@@ -1323,7 +1323,7 @@ theorem sumElim_inr {α β γ : Type _} [Zero γ] (f : α →₀ γ) (g : β →
 
 This is the `Finsupp` version of `Equiv.sum_arrow_equiv_prod_arrow`. -/
 @[simps apply symm_apply]
-def sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] : (Sum α β →₀ γ) ≃ (α →₀ γ) × (β →₀ γ)
+def sumFinsuppEquivProdFinsupp {α β γ : Type*} [Zero γ] : (Sum α β →₀ γ) ≃ (α →₀ γ) × (β →₀ γ)
     where
   toFun f :=
     ⟨f.comapDomain Sum.inl (Sum.inl_injective.injOn _),
@@ -1335,22 +1335,22 @@ def sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] : (Sum α β →₀
   right_inv fg := by ext <;> simp
 #align finsupp.sum_finsupp_equiv_prod_finsupp Finsupp.sumFinsuppEquivProdFinsupp
 
-theorem fst_sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] (f : Sum α β →₀ γ) (x : α) :
+theorem fst_sumFinsuppEquivProdFinsupp {α β γ : Type*} [Zero γ] (f : Sum α β →₀ γ) (x : α) :
     (sumFinsuppEquivProdFinsupp f).1 x = f (Sum.inl x) :=
   rfl
 #align finsupp.fst_sum_finsupp_equiv_prod_finsupp Finsupp.fst_sumFinsuppEquivProdFinsupp
 
-theorem snd_sumFinsuppEquivProdFinsupp {α β γ : Type _} [Zero γ] (f : Sum α β →₀ γ) (y : β) :
+theorem snd_sumFinsuppEquivProdFinsupp {α β γ : Type*} [Zero γ] (f : Sum α β →₀ γ) (y : β) :
     (sumFinsuppEquivProdFinsupp f).2 y = f (Sum.inr y) :=
   rfl
 #align finsupp.snd_sum_finsupp_equiv_prod_finsupp Finsupp.snd_sumFinsuppEquivProdFinsupp
 
-theorem sumFinsuppEquivProdFinsupp_symm_inl {α β γ : Type _} [Zero γ] (fg : (α →₀ γ) × (β →₀ γ))
+theorem sumFinsuppEquivProdFinsupp_symm_inl {α β γ : Type*} [Zero γ] (fg : (α →₀ γ) × (β →₀ γ))
     (x : α) : (sumFinsuppEquivProdFinsupp.symm fg) (Sum.inl x) = fg.1 x :=
   rfl
 #align finsupp.sum_finsupp_equiv_prod_finsupp_symm_inl Finsupp.sumFinsuppEquivProdFinsupp_symm_inl
 
-theorem sumFinsuppEquivProdFinsupp_symm_inr {α β γ : Type _} [Zero γ] (fg : (α →₀ γ) × (β →₀ γ))
+theorem sumFinsuppEquivProdFinsupp_symm_inr {α β γ : Type*} [Zero γ] (fg : (α →₀ γ) × (β →₀ γ))
     (y : β) : (sumFinsuppEquivProdFinsupp.symm fg) (Sum.inr y) = fg.2 y :=
   rfl
 #align finsupp.sum_finsupp_equiv_prod_finsupp_symm_inr Finsupp.sumFinsuppEquivProdFinsupp_symm_inr
@@ -1361,7 +1361,7 @@ variable [AddMonoid M]
 
 This is the `Finsupp` version of `Equiv.sum_arrow_equiv_prod_arrow`. -/
 @[simps! apply symm_apply]
-def sumFinsuppAddEquivProdFinsupp {α β : Type _} : (Sum α β →₀ M) ≃+ (α →₀ M) × (β →₀ M) :=
+def sumFinsuppAddEquivProdFinsupp {α β : Type*} : (Sum α β →₀ M) ≃+ (α →₀ M) × (β →₀ M) :=
   { sumFinsuppEquivProdFinsupp with
     map_add' := by
       intros
@@ -1370,22 +1370,22 @@ def sumFinsuppAddEquivProdFinsupp {α β : Type _} : (Sum α β →₀ M) ≃+ (
           snd_sumFinsuppEquivProdFinsupp, fst_sumFinsuppEquivProdFinsupp] }
 #align finsupp.sum_finsupp_add_equiv_prod_finsupp Finsupp.sumFinsuppAddEquivProdFinsupp
 
-theorem fst_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀ M) (x : α) :
+theorem fst_sumFinsuppAddEquivProdFinsupp {α β : Type*} (f : Sum α β →₀ M) (x : α) :
     (sumFinsuppAddEquivProdFinsupp f).1 x = f (Sum.inl x) :=
   rfl
 #align finsupp.fst_sum_finsupp_add_equiv_prod_finsupp Finsupp.fst_sumFinsuppAddEquivProdFinsupp
 
-theorem snd_sumFinsuppAddEquivProdFinsupp {α β : Type _} (f : Sum α β →₀ M) (y : β) :
+theorem snd_sumFinsuppAddEquivProdFinsupp {α β : Type*} (f : Sum α β →₀ M) (y : β) :
     (sumFinsuppAddEquivProdFinsupp f).2 y = f (Sum.inr y) :=
   rfl
 #align finsupp.snd_sum_finsupp_add_equiv_prod_finsupp Finsupp.snd_sumFinsuppAddEquivProdFinsupp
 
-theorem sumFinsuppAddEquivProdFinsupp_symm_inl {α β : Type _} (fg : (α →₀ M) × (β →₀ M)) (x : α) :
+theorem sumFinsuppAddEquivProdFinsupp_symm_inl {α β : Type*} (fg : (α →₀ M) × (β →₀ M)) (x : α) :
     (sumFinsuppAddEquivProdFinsupp.symm fg) (Sum.inl x) = fg.1 x :=
   rfl
 #align finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inl Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inl
 
-theorem sumFinsuppAddEquivProdFinsupp_symm_inr {α β : Type _} (fg : (α →₀ M) × (β →₀ M)) (y : β) :
+theorem sumFinsuppAddEquivProdFinsupp_symm_inr {α β : Type*} (fg : (α →₀ M) × (β →₀ M)) (y : β) :
     (sumFinsuppAddEquivProdFinsupp.symm fg) (Sum.inr y) = fg.2 y :=
   rfl
 #align finsupp.sum_finsupp_add_equiv_prod_finsupp_symm_inr Finsupp.sumFinsuppAddEquivProdFinsupp_symm_inr
@@ -1631,7 +1631,7 @@ theorem sum_smul_index_addMonoidHom [AddMonoid M] [AddCommMonoid N] [DistribSMul
   sum_mapRange_index fun i => (h i).map_zero
 #align finsupp.sum_smul_index_add_monoid_hom Finsupp.sum_smul_index_addMonoidHom
 
-instance noZeroSMulDivisors [Semiring R] [AddCommMonoid M] [Module R M] {ι : Type _}
+instance noZeroSMulDivisors [Semiring R] [AddCommMonoid M] [Module R M] {ι : Type*}
     [NoZeroSMulDivisors R M] : NoZeroSMulDivisors R (ι →₀ M) :=
   ⟨fun h =>
     or_iff_not_imp_left.mpr fun hc =>
@@ -1691,7 +1691,7 @@ end
 /-- Given an `AddCommMonoid M` and `s : Set α`, `restrictSupportEquiv s M` is the `Equiv`
 between the subtype of finitely supported functions with support contained in `s` and
 the type of finitely supported functions from `s`. -/
-def restrictSupportEquiv (s : Set α) (M : Type _) [AddCommMonoid M] :
+def restrictSupportEquiv (s : Set α) (M : Type*) [AddCommMonoid M] :
     { f : α →₀ M // ↑f.support ⊆ s } ≃ (s →₀ M) where
   toFun f := subtypeDomain (fun x => x ∈ s) f.1
   invFun f :=
@@ -1757,7 +1757,7 @@ namespace Finsupp
 
 section Sigma
 
-variable {αs : ι → Type _} [Zero M] (l : (Σi, αs i) →₀ M)
+variable {αs : ι → Type*} [Zero M] (l : (Σi, αs i) →₀ M)
 
 /-- Given `l`, a finitely supported function from the sigma type `Σ (i : ι), αs i` to `M` and
 an index element `i : ι`, `split l i` is the `i`th component of `l`,
@@ -1815,7 +1815,7 @@ theorem sigma_sum [AddCommMonoid N] (f : (Σi : ι, αs i) → M → N) :
   simp only [sum, sigma_support, sum_sigma, split_apply]
 #align finsupp.sigma_sum Finsupp.sigma_sum
 
-variable {η : Type _} [Fintype η] {ιs : η → Type _} [Zero α]
+variable {η : Type*} [Fintype η] {ιs : η → Type*} [Zero α]
 
 /-- On a `Fintype η`, `Finsupp.split` is an equivalence between `(Σ (j : η), ιs j) →₀ α`
 and `Π j, (ιs j →₀ α)`.
@@ -1846,7 +1846,7 @@ theorem sigmaFinsuppEquivPiFinsupp_apply (f : (Σj, ιs j) →₀ α) (j i) :
 
 This is the `AddEquiv` version of `Finsupp.sigmaFinsuppEquivPiFinsupp`.
 -/
-noncomputable def sigmaFinsuppAddEquivPiFinsupp {α : Type _} {ιs : η → Type _} [AddMonoid α] :
+noncomputable def sigmaFinsuppAddEquivPiFinsupp {α : Type*} {ιs : η → Type*} [AddMonoid α] :
     ((Σj, ιs j) →₀ α) ≃+ ∀ j, ιs j →₀ α :=
   { sigmaFinsuppEquivPiFinsupp with
     map_add' := fun f g => by
@@ -1855,7 +1855,7 @@ noncomputable def sigmaFinsuppAddEquivPiFinsupp {α : Type _} {ιs : η → Type
 #align finsupp.sigma_finsupp_add_equiv_pi_finsupp Finsupp.sigmaFinsuppAddEquivPiFinsupp
 
 @[simp]
-theorem sigmaFinsuppAddEquivPiFinsupp_apply {α : Type _} {ιs : η → Type _} [AddMonoid α]
+theorem sigmaFinsuppAddEquivPiFinsupp_apply {α : Type*} {ιs : η → Type*} [AddMonoid α]
     (f : (Σj, ιs j) →₀ α) (j i) : sigmaFinsuppAddEquivPiFinsupp f j i = f ⟨j, i⟩ :=
   rfl
 #align finsupp.sigma_finsupp_add_equiv_pi_finsupp_apply Finsupp.sigmaFinsuppAddEquivPiFinsupp_apply
@@ -1868,7 +1868,7 @@ end Sigma
 /-- Stringify a `Finsupp` as a sequence of `Finsupp.single` terms.
 
 Note this is `meta` as it has to choose some order for the terms. -/
-unsafe instance (ι α : Type _) [Zero α] [Repr ι] [Repr α] : Repr (ι →₀ α)
+unsafe instance (ι α : Type*) [Zero α] [Repr ι] [Repr α] : Repr (ι →₀ α)
     where repr f :=
     if f.support.card = 0 then "0"
     else
chore(Data/Finsupp/Basic): golf restrictSupportEquiv (#6426)
Diff
@@ -1692,31 +1692,22 @@ end
 between the subtype of finitely supported functions with support contained in `s` and
 the type of finitely supported functions from `s`. -/
 def restrictSupportEquiv (s : Set α) (M : Type _) [AddCommMonoid M] :
-    { f : α →₀ M // ↑f.support ⊆ s } ≃ (s →₀ M)
-    where
+    { f : α →₀ M // ↑f.support ⊆ s } ≃ (s →₀ M) where
   toFun f := subtypeDomain (fun x => x ∈ s) f.1
   invFun f :=
-    ⟨f.mapDomain Subtype.val, by
-      classical
-        refine' Set.Subset.trans (Finset.coe_subset.2 mapDomain_support) _
-        rw [Finset.coe_image, Set.image_subset_iff]
-        exact fun x _ => x.2⟩
+    ⟨f.embDomain <| Embedding.subtype _, by
+      rw [support_embDomain, Finset.coe_map, Set.image_subset_iff]
+      exact fun x _ => x.2⟩
   left_inv := by
     rintro ⟨f, hf⟩
-    apply Subtype.eq
     ext a
-    dsimp only
-    refine' by_cases (fun h : a ∈ Set.range (Subtype.val : s → α) => _) fun h => _
-    · rcases h with ⟨x, rfl⟩
-      rw [mapDomain_apply Subtype.val_injective, subtypeDomain_apply]
-    · convert mapDomain_notin_range (subtypeDomain (fun x => x ∈ s) f) _ h
-      rw [← not_mem_support_iff]
-      refine' mt _ h
-      exact fun ha => ⟨⟨a, hf ha⟩, rfl⟩
-  right_inv f := by
-    ext ⟨a, ha⟩
-    dsimp only
-    rw [subtypeDomain_apply, mapDomain_apply Subtype.val_injective]
+    by_cases h : a ∈ s
+    · lift a to s using h
+      exact embDomain_apply _ _ _
+    rw [embDomain_notin_range, eq_comm, ←Finsupp.not_mem_support_iff]
+    · exact fun hs => h <| hf hs
+    · simp [h]
+  right_inv f := ext <| embDomain_apply _ f
 #align finsupp.restrict_support_equiv Finsupp.restrictSupportEquiv
 
 /-- Given `AddCommMonoid M` and `e : α ≃ β`, `domCongr e` is the corresponding `Equiv` between
fix: avoid with in Finsupp.module (#6189)
Diff
@@ -1535,8 +1535,7 @@ instance isCentralScalar [Zero M] [SMulZeroClass R M] [SMulZeroClass Rᵐᵒᵖ
 #align finsupp.is_central_scalar Finsupp.isCentralScalar
 
 instance module [Semiring R] [AddCommMonoid M] [Module R M] : Module R (α →₀ M) :=
-  { Finsupp.distribMulAction α M with
-    smul := (· • ·)
+  { toDistribMulAction := Finsupp.distribMulAction α M
     zero_smul := fun _ => ext fun _ => zero_smul _ _
     add_smul := fun _ _ _ => ext fun _ => add_smul _ _ _ }
 #align finsupp.module Finsupp.module
chore(Data.Finsupp.Basic): remove redundant instance (#6050)

See Zulip

Diff
@@ -121,9 +121,6 @@ theorem graph_eq_empty {f : α →₀ M} : f.graph = ∅ ↔ f = 0 :=
   (graph_injective α M).eq_iff' graph_zero
 #align finsupp.graph_eq_empty Finsupp.graph_eq_empty
 
-instance [Countable α] [Countable M] :
-    Countable (α →₀ M) := Function.Injective.countable (Finsupp.graph_injective α M)
-
 end Graph
 
 end Finsupp
feat(LinearAlgebra.Finsupp): add countable instance (#5671)

Add the instance:

instance {ι : Type _} [Countable R] [Countable ι] (v : ι → M) : Countable (Submodule.span R (Set.range v))

which is needed to be able to apply Minkowski theorem to ℤ-lattices. This instance, in turn, uses the new instance:

instance [Countable α] [Countable M] : Countable (α →₀ M)
Diff
@@ -8,6 +8,7 @@ import Mathlib.Algebra.Hom.GroupAction
 import Mathlib.Algebra.Regular.SMul
 import Mathlib.Data.Finset.Preimage
 import Mathlib.Data.Rat.BigOperators
+import Mathlib.Data.Set.Countable
 
 #align_import data.finsupp.basic from "leanprover-community/mathlib"@"f69db8cecc668e2d5894d7e9bfc491da60db3b9f"
 
@@ -120,6 +121,9 @@ theorem graph_eq_empty {f : α →₀ M} : f.graph = ∅ ↔ f = 0 :=
   (graph_injective α M).eq_iff' graph_zero
 #align finsupp.graph_eq_empty Finsupp.graph_eq_empty
 
+instance [Countable α] [Countable M] :
+    Countable (α →₀ M) := Function.Injective.countable (Finsupp.graph_injective α M)
+
 end Graph
 
 end Finsupp
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,11 +2,6 @@
 Copyright (c) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Scott Morrison
-
-! This file was ported from Lean 3 source module data.finsupp.basic
-! leanprover-community/mathlib commit f69db8cecc668e2d5894d7e9bfc491da60db3b9f
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.BigOperators.Finsupp
 import Mathlib.Algebra.Hom.GroupAction
@@ -14,6 +9,8 @@ import Mathlib.Algebra.Regular.SMul
 import Mathlib.Data.Finset.Preimage
 import Mathlib.Data.Rat.BigOperators
 
+#align_import data.finsupp.basic from "leanprover-community/mathlib"@"f69db8cecc668e2d5894d7e9bfc491da60db3b9f"
+
 /-!
 # Miscellaneous definitions, lemmas, and constructions using finsupp
 
chore: cleanup whitespace (#5988)

Grepping for [^ .:{-] [^ :] and reviewing the results. Once I started I couldn't stop. :-)

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

Diff
@@ -306,7 +306,7 @@ variable [Zero M]
 
 namespace Finsupp
 
-/-- Given `f : α ≃ β`, we can map `l : α →₀ M` to  `equivMapDomain f l : β →₀ M` (computably)
+/-- Given `f : α ≃ β`, we can map `l : α →₀ M` to `equivMapDomain f l : β →₀ M` (computably)
 by mapping the support forwards and the function backwards. -/
 def equivMapDomain (f : α ≃ β) (l : α →₀ M) : β →₀ M
     where
@@ -619,7 +619,7 @@ theorem mapDomain_injective {f : α → β} (hf : Function.Injective f) :
   rwa [mapDomain_apply hf, mapDomain_apply hf] at this
 #align finsupp.map_domain_injective Finsupp.mapDomain_injective
 
-/-- When `f` is an embedding we have an embedding `(α →₀ ℕ)  ↪ (β →₀ ℕ)` given by `mapDomain`. -/
+/-- When `f` is an embedding we have an embedding `(α →₀ ℕ) ↪ (β →₀ ℕ)` given by `mapDomain`. -/
 @[simps]
 def mapDomainEmbedding {α β : Type _} (f : α ↪ β) : (α →₀ ℕ) ↪ β →₀ ℕ :=
   ⟨Finsupp.mapDomain f, Finsupp.mapDomain_injective f.injective⟩
chore: remove occurrences of semicolon after space (#5713)

This is the second half of the changes originally in #5699, removing all occurrences of ; after a space and implementing a linter rule to enforce it.

In most cases this 2-character substring has a space after it, so the following command was run first:

find . -type f -name "*.lean" -exec sed -i -E 's/ ; /; /g' {} \;

The remaining cases were few enough in number that they were done manually.

Diff
@@ -1226,7 +1226,7 @@ theorem sum_curry_index (f : α × β →₀ M) (g : α → β → M → N) (hg
   · exact
       sum_sum_index (fun a => sum_zero_index) fun a b₀ b₁ =>
         sum_add_index' (fun a => hg₀ _ _) fun c d₀ d₁ => hg₁ _ _ _ _
-  congr ; funext p c
+  congr; funext p c
   trans
   · exact sum_single_index sum_zero_index
   exact sum_single_index (hg₀ _ _)
chore: fix focusing dots (#5708)

This PR is the result of running

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

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

Diff
@@ -662,8 +662,7 @@ theorem mapDomain_injOn (S : Set α) {f : α → β} (hf : Set.InjOn f S) :
   ext a
   classical
     by_cases h : a ∈ v₁.support ∪ v₂.support
-    ·
-      rw [← mapDomain_apply' S _ hv₁ hf _, ← mapDomain_apply' S _ hv₂ hf _, eq] <;>
+    · rw [← mapDomain_apply' S _ hv₁ hf _, ← mapDomain_apply' S _ hv₂ hf _, eq] <;>
         · apply Set.union_subset hv₁ hv₂
           exact_mod_cast h
     · simp only [not_or, mem_union, not_not, mem_support_iff] at h
@@ -1224,8 +1223,7 @@ theorem sum_curry_index (f : α × β →₀ M) (g : α → β → M → N) (hg
     (f.curry.sum fun a f => f.sum (g a)) = f.sum fun p c => g p.1 p.2 c := by
   rw [Finsupp.curry]
   trans
-  ·
-    exact
+  · exact
       sum_sum_index (fun a => sum_zero_index) fun a b₀ b₁ =>
         sum_add_index' (fun a => hg₀ _ _) fun c d₀ d₁ => hg₁ _ _ _ _
   congr ; funext p c
chore: clean up spacing around at and goals (#5387)

Changes are of the form

  • some_tactic at h⊢ -> some_tactic at h ⊢
  • some_tactic at h -> some_tactic at h
Diff
@@ -994,8 +994,8 @@ theorem frange_single {x : α} {y : M} : frange (single x y) ⊆ {y} := fun r hr
   let ⟨t, ht1, ht2⟩ := mem_frange.1 hr
   ht2 ▸ by
     classical
-      rw [single_apply] at ht2⊢
-      split_ifs  at ht2⊢
+      rw [single_apply] at ht2 ⊢
+      split_ifs at ht2 ⊢
       · exact Finset.mem_singleton_self _
       · exact (t ht2.symm).elim
 #align finsupp.frange_single Finsupp.frange_single
chore: cleanup of some ext porting notes (#5176)

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

Diff
@@ -628,16 +628,10 @@ def mapDomainEmbedding {α β : Type _} (f : α ↪ β) : (α →₀ ℕ) ↪ β
 theorem mapDomain.addMonoidHom_comp_mapRange [AddCommMonoid N] (f : α → β) (g : M →+ N) :
     (mapDomain.addMonoidHom f).comp (mapRange.addMonoidHom g) =
       (mapRange.addMonoidHom g).comp (mapDomain.addMonoidHom f) := by
-  apply Finsupp.addHom_ext'
-  intro x
-  apply AddMonoidHom.ext
-  intro x_1
-  apply Finsupp.ext
-  intro a
+  ext
   simp only [AddMonoidHom.coe_comp, Finsupp.mapRange_single, Finsupp.mapDomain.addMonoidHom_apply,
     Finsupp.singleAddHom_apply, eq_self_iff_true, Function.comp_apply, Finsupp.mapDomain_single,
     Finsupp.mapRange.addMonoidHom_apply]
-  -- porting note: this is ugly, just expanded the Lean 3 proof; `ext` didn't work in the same way
 #align finsupp.map_domain.add_monoid_hom_comp_map_range Finsupp.mapDomain.addMonoidHom_comp_mapRange
 
 /-- When `g` preserves addition, `mapRange` and `mapDomain` commute. -/
chore: fix grammar 2/3 (#5002)

Part 2 of #5001

Diff
@@ -179,7 +179,7 @@ section ZeroHom
 
 variable [Zero M] [Zero N] [Zero P]
 
-/-- Composition with a fixed zero-preserving homomorphism is itself an zero-preserving homomorphism
+/-- Composition with a fixed zero-preserving homomorphism is itself a zero-preserving homomorphism
 on functions. -/
 @[simps]
 def mapRange.zeroHom (f : ZeroHom M N) : ZeroHom (α →₀ M) (α →₀ N)
chore: fix upper/lowercase in comments (#4360)
  • Run a non-interactive version of fix-comments.py on all files.
  • Go through the diff and manually add/discard/edit chunks.
Diff
@@ -24,7 +24,7 @@ import Mathlib.Data.Rat.BigOperators
 * `Finsupp.mapDomain`: maps the domain of a `Finsupp` by a function and by summing.
 * `Finsupp.comapDomain`: postcomposition of a `Finsupp` with a function injective on the preimage
   of its support.
-* `Finsupp.some`: restrict a finitely supported function on `option α` to a finitely supported
+* `Finsupp.some`: restrict a finitely supported function on `Option α` to a finitely supported
   function on `α`.
 * `Finsupp.filter`: `filter p f` is the finitely supported function that is `f a` if `p a` is true
   and 0 otherwise.
@@ -798,12 +798,12 @@ end FInjective
 
 end ComapDomain
 
-/-! ### Declarations about finitely supported functions whose support is an `option` type -/
+/-! ### Declarations about finitely supported functions whose support is an `Option` type -/
 
 
 section Option
 
-/-- Restrict a finitely supported function on `option α` to a finitely supported function on `α`. -/
+/-- Restrict a finitely supported function on `Option α` to a finitely supported function on `α`. -/
 def some [Zero M] (f : Option α →₀ M) : α →₀ M :=
   f.comapDomain Option.some fun _ => by simp
 #align finsupp.some Finsupp.some
@@ -874,7 +874,8 @@ section Zero
 variable [Zero M] (p : α → Prop) (f : α →₀ M)
 
 /--
-`filter p f` is the finitely supported function that is `f a` if `p a` is true and 0 otherwise. -/
+`Finsupp.filter p f` is the finitely supported function that is `f a` if `p a` is true and `0`
+otherwise. -/
 def filter (p : α → Prop) (f : α →₀ M) : α →₀ M
     where
   toFun a :=
@@ -1287,7 +1288,7 @@ theorem support_curry [DecidableEq α] (f : α × β →₀ M) :
 
 end CurryUncurry
 
-/-! ### Declarations about finitely supported functions whose support is a `sum` type -/
+/-! ### Declarations about finitely supported functions whose support is a `Sum` type -/
 
 
 section Sum
chore: Rename to sSup/iSup (#3938)

As discussed on Zulip

Renames

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

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

Diff
@@ -539,8 +539,8 @@ theorem mapDomain_sum [Zero N] {f : α → β} {s : α →₀ N} {v : α → N 
 theorem mapDomain_support [DecidableEq β] {f : α → β} {s : α →₀ M} :
     (s.mapDomain f).support ⊆ s.support.image f :=
   Finset.Subset.trans support_sum <|
-    Finset.Subset.trans (Finset.bunionᵢ_mono fun a _ => support_single_subset) <| by
-      rw [Finset.bunionᵢ_singleton]
+    Finset.Subset.trans (Finset.biUnion_mono fun a _ => support_single_subset) <| by
+      rw [Finset.biUnion_singleton]
 #align finsupp.map_domain_support Finsupp.mapDomain_support
 
 theorem mapDomain_apply' (S : Set α) {f : α → β} (x : α →₀ M) (hS : (x.support : Set α) ⊆ S)
@@ -1280,9 +1280,9 @@ theorem filter_curry (f : α × β →₀ M) (p : α → Prop) :
 
 theorem support_curry [DecidableEq α] (f : α × β →₀ M) :
     f.curry.support ⊆ f.support.image Prod.fst := by
-  rw [← Finset.bunionᵢ_singleton]
+  rw [← Finset.biUnion_singleton]
   refine' Finset.Subset.trans support_sum _
-  refine' Finset.bunionᵢ_mono fun a _ => support_single_subset
+  refine' Finset.biUnion_mono fun a _ => support_single_subset
 #align finsupp.support_curry Finsupp.support_curry
 
 end CurryUncurry
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
@@ -500,8 +500,8 @@ theorem mapDomain_add {f : α → β} : mapDomain f (v₁ + v₂) = mapDomain f
 #align finsupp.map_domain_add Finsupp.mapDomain_add
 
 @[simp]
-theorem mapDomain_equiv_apply {f : α ≃ β} (x : α →₀ M) (a : β) : mapDomain f x a = x (f.symm a) :=
-  by
+theorem mapDomain_equiv_apply {f : α ≃ β} (x : α →₀ M) (a : β) :
+    mapDomain f x a = x (f.symm a) := by
   conv_lhs => rw [← f.apply_symm_apply a]
   exact mapDomain_apply f.injective _ _
 #align finsupp.map_domain_equiv_apply Finsupp.mapDomain_equiv_apply
@@ -560,8 +560,7 @@ theorem mapDomain_apply' (S : Set α) {f : α → β} (x : α →₀ M) (hS : (x
 
 theorem mapDomain_support_of_injOn [DecidableEq β] {f : α → β} (s : α →₀ M)
     (hf : Set.InjOn f s.support) : (mapDomain f s).support = Finset.image f s.support :=
-  Finset.Subset.antisymm mapDomain_support <|
-    by
+  Finset.Subset.antisymm mapDomain_support <| by
     intro x hx
     simp only [mem_image, exists_prop, mem_support_iff, Ne.def] at hx
     rcases hx with ⟨hx_w, hx_h_left, rfl⟩
@@ -1214,8 +1213,7 @@ protected def curry (f : α × β →₀ M) : α →₀ β →₀ M :=
 @[simp]
 theorem curry_apply (f : α × β →₀ M) (x : α) (y : β) : f.curry x y = f (x, y) := by
   classical
-    have : ∀ b : α × β, single b.fst (single b.snd (f b)) x y = if b = (x, y) then f b else 0 :=
-      by
+    have : ∀ b : α × β, single b.fst (single b.snd (f b)) x y = if b = (x, y) then f b else 0 := by
       rintro ⟨b₁, b₂⟩
       simp [single_apply, ite_apply, Prod.ext_iff, ite_and]
       split_ifs <;> simp [single_apply, *]
feat(Data/MvPolynomial/Basic): add and generalize some lemmas from Finsupp and MonoidAlgebra (#3604)

Most of these changes generalize from DistribMulAction to SmulZeroClass. The new lemmas are all just proved using corresponding lemmas on the underlying types.

Co-authored-by: Parcly Taxel <reddeloostw@gmail.com> Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@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.basic
-! leanprover-community/mathlib commit 57911c5a05a1b040598e1e15b189f035ac5cc33c
+! leanprover-community/mathlib commit f69db8cecc668e2d5894d7e9bfc491da60db3b9f
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -1554,7 +1554,7 @@ instance module [Semiring R] [AddCommMonoid M] [Module R M] : Module R (α →
 
 variable {α M}
 
-theorem support_smul {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] {b : R} {g : α →₀ M} :
+theorem support_smul [AddMonoid M] [SMulZeroClass R M] {b : R} {g : α →₀ M} :
     (b • g).support ⊆ g.support := fun a => by
   simp only [smul_apply, mem_support_iff, Ne.def]
   exact mt fun h => h.symm ▸ smul_zero _
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.basic
-! leanprover-community/mathlib commit 2651125b48fc5c170ab1111afd0817c903b1fc6c
+! leanprover-community/mathlib commit 57911c5a05a1b040598e1e15b189f035ac5cc33c
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -1494,25 +1494,21 @@ Throughout this section, some `Monoid` and `Semiring` arguments are specified wi
 `[]`. See note [implicit instance arguments].
 -/
 
--- porting note: changed `AddMonoid` to `Zero`
 @[simp]
 theorem coe_smul [Zero M] [SMulZeroClass R M] (b : R) (v : α →₀ M) : ⇑(b • v) = b • ⇑v :=
   rfl
 #align finsupp.coe_smul Finsupp.coe_smul
 
--- porting note: changed `AddMonoid` to `Zero`
 theorem smul_apply [Zero M] [SMulZeroClass R M] (b : R) (v : α →₀ M) (a : α) :
     (b • v) a = b • v a :=
   rfl
 #align finsupp.smul_apply Finsupp.smul_apply
 
--- porting note: changed `AddMonoid` to `Zero`
 theorem _root_.IsSMulRegular.finsupp [Zero M] [SMulZeroClass R M] {k : R}
     (hk : IsSMulRegular M k) : IsSMulRegular (α →₀ M) k :=
   fun _ _ h => ext fun i => hk (FunLike.congr_fun h i)
 #align is_smul_regular.finsupp IsSMulRegular.finsupp
 
--- porting note: changed `AddMonoid` to `Zero`
 instance faithfulSMul [Nonempty α] [Zero M] [SMulZeroClass R M] [FaithfulSMul R M] :
     FaithfulSMul R (α →₀ M) where
   eq_of_smul_eq_smul h :=
chore: forward-port leanprover-community/mathlib#18852 (#3646)

This additionally makes a further small generalization to some of the finsupp instances (labelled with porting notes) which should be backported.

The new statement of Rat.smul_one_eq_coe fixes a proof in Mathlib/Analysis/NormedSpace/Basic.lean that was mangled during porting.

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.basic
-! leanprover-community/mathlib commit f7fc89d5d5ff1db2d1242c7bb0e9062ce47ef47c
+! leanprover-community/mathlib commit 2651125b48fc5c170ab1111afd0817c903b1fc6c
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -1494,23 +1494,26 @@ Throughout this section, some `Monoid` and `Semiring` arguments are specified wi
 `[]`. See note [implicit instance arguments].
 -/
 
-
+-- porting note: changed `AddMonoid` to `Zero`
 @[simp]
-theorem coe_smul [AddMonoid M] [DistribSMul R M] (b : R) (v : α →₀ M) : ⇑(b • v) = b • ⇑v :=
+theorem coe_smul [Zero M] [SMulZeroClass R M] (b : R) (v : α →₀ M) : ⇑(b • v) = b • ⇑v :=
   rfl
 #align finsupp.coe_smul Finsupp.coe_smul
 
-theorem smul_apply [AddMonoid M] [DistribSMul R M] (b : R) (v : α →₀ M) (a : α) :
+-- porting note: changed `AddMonoid` to `Zero`
+theorem smul_apply [Zero M] [SMulZeroClass R M] (b : R) (v : α →₀ M) (a : α) :
     (b • v) a = b • v a :=
   rfl
 #align finsupp.smul_apply Finsupp.smul_apply
 
-theorem _root_.IsSMulRegular.finsupp [AddMonoid M] [DistribSMul R M] {k : R}
+-- porting note: changed `AddMonoid` to `Zero`
+theorem _root_.IsSMulRegular.finsupp [Zero M] [SMulZeroClass R M] {k : R}
     (hk : IsSMulRegular M k) : IsSMulRegular (α →₀ M) k :=
   fun _ _ h => ext fun i => hk (FunLike.congr_fun h i)
 #align is_smul_regular.finsupp IsSMulRegular.finsupp
 
-instance faithfulSMul [Nonempty α] [AddMonoid M] [DistribSMul R M] [FaithfulSMul R M] :
+-- porting note: changed `AddMonoid` to `Zero`
+instance faithfulSMul [Nonempty α] [Zero M] [SMulZeroClass R M] [FaithfulSMul R M] :
     FaithfulSMul R (α →₀ M) where
   eq_of_smul_eq_smul h :=
     let ⟨a⟩ := ‹Nonempty α›
@@ -1532,18 +1535,17 @@ instance distribMulAction [Monoid R] [AddMonoid M] [DistribMulAction R M] :
     mul_smul := fun r s x => ext fun y => mul_smul r s (x y) }
 #align finsupp.distrib_mul_action Finsupp.distribMulAction
 
-instance isScalarTower [Monoid R] [Monoid S] [AddMonoid M] [DistribMulAction R M]
-    [DistribMulAction S M] [SMul R S] [IsScalarTower R S M] : IsScalarTower R S (α →₀ M) where
+instance isScalarTower [Zero M] [SMulZeroClass R M] [SMulZeroClass S M] [SMul R S]
+  [IsScalarTower R S M] : IsScalarTower R S (α →₀ M) where
   smul_assoc _ _ _ := ext fun _ => smul_assoc _ _ _
-#align finsuppp.is_scalar_tower Finsupp.isScalarTower
 
-instance smulCommClass [Monoid R] [Monoid S] [AddMonoid M] [DistribMulAction R M]
-    [DistribMulAction S M] [SMulCommClass R S M] : SMulCommClass R S (α →₀ M) where
+instance smulCommClass [Zero M] [SMulZeroClass R M] [SMulZeroClass S M] [SMulCommClass R S M] :
+  SMulCommClass R S (α →₀ M) where
   smul_comm _ _ _ := ext fun _ => smul_comm _ _ _
 #align finsupp.smul_comm_class Finsupp.smulCommClass
 
-instance isCentralScalar [Monoid R] [AddMonoid M] [DistribMulAction R M] [DistribMulAction Rᵐᵒᵖ M]
-    [IsCentralScalar R M] : IsCentralScalar R (α →₀ M) where
+instance isCentralScalar [Zero M] [SMulZeroClass R M] [SMulZeroClass Rᵐᵒᵖ M] [IsCentralScalar R M] :
+  IsCentralScalar R (α →₀ M) where
   op_smul_eq_smul _ _ := ext fun _ => op_smul_eq_smul _ _
 #align finsupp.is_central_scalar Finsupp.isCentralScalar
 
@@ -1586,7 +1588,7 @@ theorem mapDomain_smul {_ : Monoid R} [AddCommMonoid M] [DistribMulAction R M] {
 #align finsupp.map_domain_smul Finsupp.mapDomain_smul
 
 @[simp]
-theorem smul_single {_ : Monoid R} [AddMonoid M] [DistribMulAction R M] (c : R) (a : α) (b : M) :
+theorem smul_single [Zero M] [SMulZeroClass R M] (c : R) (a : α) (b : M) :
     c • Finsupp.single a b = Finsupp.single a (c • b) :=
   mapRange_single
 #align finsupp.smul_single Finsupp.smul_single
chore: fix #align lines (#3640)

This PR fixes two things:

  • Most align statements for definitions and theorems and instances that are separated by two newlines from the relevant declaration (s/\n\n#align/\n#align). This is often seen in the mathport output after ending calc blocks.
  • All remaining more-than-one-line #align statements. (This was needed for a script I wrote for #3630.)
Diff
@@ -639,7 +639,6 @@ theorem mapDomain.addMonoidHom_comp_mapRange [AddCommMonoid N] (f : α → β) (
     Finsupp.singleAddHom_apply, eq_self_iff_true, Function.comp_apply, Finsupp.mapDomain_single,
     Finsupp.mapRange.addMonoidHom_apply]
   -- porting note: this is ugly, just expanded the Lean 3 proof; `ext` didn't work in the same way
-
 #align finsupp.map_domain.add_monoid_hom_comp_map_range Finsupp.mapDomain.addMonoidHom_comp_mapRange
 
 /-- When `g` preserves addition, `mapRange` and `mapDomain` commute. -/
fix: add back lemmas deleted during porting (#3035)

These lemmas are not tautologies, despite the assumption that they were. We know this because otherwise CI would fail.

After adding these back, a few statements downstream need to change from statements about toEquiv to statements about EquivLike.toEquiv.

Diff
@@ -286,8 +286,8 @@ theorem mapRange.addEquiv_toAddMonoidHom (f : M ≃+ N) :
 
 @[simp]
 theorem mapRange.addEquiv_toEquiv (f : M ≃+ N) :
-    (mapRange.addEquiv f).toEquiv =
-      (mapRange.equiv f.toEquiv f.map_zero f.symm.map_zero : (α →₀ _) ≃ _) :=
+    ↑(mapRange.addEquiv f : (α →₀ _) ≃+ _) =
+      (mapRange.equiv (f : M ≃ N) f.map_zero f.symm.map_zero : (α →₀ _) ≃ _) :=
   Equiv.ext fun _ => rfl
 #align finsupp.map_range.add_equiv_to_equiv Finsupp.mapRange.addEquiv_toEquiv
 
chore: add missing hypothesis names to by_cases (#2679)
Diff
@@ -599,7 +599,7 @@ theorem sum_mapDomain_index_addMonoidHom [AddCommMonoid N] {f : α → β} {s :
 
 theorem embDomain_eq_mapDomain (f : α ↪ β) (v : α →₀ M) : embDomain f v = mapDomain f v := by
   ext a
-  by_cases a ∈ Set.range f
+  by_cases h : a ∈ Set.range f
   · rcases h with ⟨a, rfl⟩
     rw [mapDomain_apply f.injective, embDomain_apply]
   · rw [mapDomain_notin_range, embDomain_notin_range] <;> assumption
@@ -1183,7 +1183,7 @@ theorem mem_support_multiset_sum [AddCommMonoid M] {s : Multiset (α →₀ M)}
   Multiset.induction_on s (fun h => False.elim (by simp at h))
     (by
       intro f s ih ha
-      by_cases a ∈ f.support
+      by_cases h : a ∈ f.support
       · exact ⟨f, Multiset.mem_cons_self _ _, h⟩
       · simp only [Multiset.sum_cons, mem_support_iff, add_apply, not_mem_support_iff.1 h,
           zero_add] at ha
@@ -1413,7 +1413,7 @@ variable [Zero M] [MonoidWithZero R] [MulActionWithZero R M]
 
 @[simp]
 theorem single_smul (a b : α) (f : α → M) (r : R) : single a r b • f a = single a (r • f b) b := by
-  by_cases a = b <;> simp [h]
+  by_cases h : a = b <;> simp [h]
 #align finsupp.single_smul Finsupp.single_smul
 
 end
refactor: Rename instances in Finsupp.{Defs, Basic} (#2600)
Diff
@@ -1483,12 +1483,12 @@ end
 
 section
 
-instance [Zero M] [SMulZeroClass R M] : SMulZeroClass R (α →₀ M)
-    where
+instance smulZeroClass [Zero M] [SMulZeroClass R M] : SMulZeroClass R (α →₀ M) where
   smul a v := v.mapRange ((· • ·) a) (smul_zero _)
   smul_zero a := by
     ext
     apply smul_zero
+#align finsupp.smul_zero_class Finsupp.smulZeroClass
 
 /-!
 Throughout this section, some `Monoid` and `Semiring` arguments are specified with `{}` instead of
@@ -1511,15 +1511,16 @@ theorem _root_.IsSMulRegular.finsupp [AddMonoid M] [DistribSMul R M] {k : R}
   fun _ _ h => ext fun i => hk (FunLike.congr_fun h i)
 #align is_smul_regular.finsupp IsSMulRegular.finsupp
 
-instance [Nonempty α] [AddMonoid M] [DistribSMul R M] [FaithfulSMul R M] : FaithfulSMul R (α →₀ M)
-    where eq_of_smul_eq_smul h :=
+instance faithfulSMul [Nonempty α] [AddMonoid M] [DistribSMul R M] [FaithfulSMul R M] :
+    FaithfulSMul R (α →₀ M) where
+  eq_of_smul_eq_smul h :=
     let ⟨a⟩ := ‹Nonempty α›
     eq_of_smul_eq_smul fun m : M => by simpa using FunLike.congr_fun (h (single a m)) a
+#align finsupp.faithful_smul Finsupp.faithfulSMul
 
 variable (α M)
 
-instance distribSMul [AddZeroClass M] [DistribSMul R M] : DistribSMul R (α →₀ M)
-    where
+instance distribSMul [AddZeroClass M] [DistribSMul R M] : DistribSMul R (α →₀ M) where
   smul := (· • ·)
   smul_add _ _ _ := ext fun _ => smul_add _ _ _
   smul_zero _ := ext fun _ => smul_zero _
@@ -1532,23 +1533,27 @@ instance distribMulAction [Monoid R] [AddMonoid M] [DistribMulAction R M] :
     mul_smul := fun r s x => ext fun y => mul_smul r s (x y) }
 #align finsupp.distrib_mul_action Finsupp.distribMulAction
 
-instance [Monoid R] [Monoid S] [AddMonoid M] [DistribMulAction R M] [DistribMulAction S M]
-    [SMul R S] [IsScalarTower R S M] : IsScalarTower R S (α →₀ M)
-    where smul_assoc _ _ _ := ext fun _ => smul_assoc _ _ _
+instance isScalarTower [Monoid R] [Monoid S] [AddMonoid M] [DistribMulAction R M]
+    [DistribMulAction S M] [SMul R S] [IsScalarTower R S M] : IsScalarTower R S (α →₀ M) where
+  smul_assoc _ _ _ := ext fun _ => smul_assoc _ _ _
+#align finsuppp.is_scalar_tower Finsupp.isScalarTower
 
-instance [Monoid R] [Monoid S] [AddMonoid M] [DistribMulAction R M] [DistribMulAction S M]
-    [SMulCommClass R S M] : SMulCommClass R S (α →₀ M)
-    where smul_comm _ _ _ := ext fun _ => smul_comm _ _ _
+instance smulCommClass [Monoid R] [Monoid S] [AddMonoid M] [DistribMulAction R M]
+    [DistribMulAction S M] [SMulCommClass R S M] : SMulCommClass R S (α →₀ M) where
+  smul_comm _ _ _ := ext fun _ => smul_comm _ _ _
+#align finsupp.smul_comm_class Finsupp.smulCommClass
 
-instance [Monoid R] [AddMonoid M] [DistribMulAction R M] [DistribMulAction Rᵐᵒᵖ M]
-    [IsCentralScalar R M] : IsCentralScalar R (α →₀ M)
-    where op_smul_eq_smul _ _ := ext fun _ => op_smul_eq_smul _ _
+instance isCentralScalar [Monoid R] [AddMonoid M] [DistribMulAction R M] [DistribMulAction Rᵐᵒᵖ M]
+    [IsCentralScalar R M] : IsCentralScalar R (α →₀ M) where
+  op_smul_eq_smul _ _ := ext fun _ => op_smul_eq_smul _ _
+#align finsupp.is_central_scalar Finsupp.isCentralScalar
 
-instance [Semiring R] [AddCommMonoid M] [Module R M] : Module R (α →₀ M) :=
+instance module [Semiring R] [AddCommMonoid M] [Module R M] : Module R (α →₀ M) :=
   { Finsupp.distribMulAction α M with
     smul := (· • ·)
     zero_smul := fun _ => ext fun _ => zero_smul _ _
     add_smul := fun _ _ _ => ext fun _ => add_smul _ _ _ }
+#align finsupp.module Finsupp.module
 
 variable {α M}
 
@@ -1641,11 +1646,12 @@ theorem sum_smul_index_addMonoidHom [AddMonoid M] [AddCommMonoid N] [DistribSMul
   sum_mapRange_index fun i => (h i).map_zero
 #align finsupp.sum_smul_index_add_monoid_hom Finsupp.sum_smul_index_addMonoidHom
 
-instance [Semiring R] [AddCommMonoid M] [Module R M] {ι : Type _} [NoZeroSMulDivisors R M] :
-    NoZeroSMulDivisors R (ι →₀ M) :=
+instance noZeroSMulDivisors [Semiring R] [AddCommMonoid M] [Module R M] {ι : Type _}
+    [NoZeroSMulDivisors R M] : NoZeroSMulDivisors R (ι →₀ M) :=
   ⟨fun h =>
     or_iff_not_imp_left.mpr fun hc =>
       Finsupp.ext fun i => (smul_eq_zero.mp (FunLike.ext_iff.mp h i)).resolve_left hc⟩
+#align finsupp.no_zero_smul_divisors Finsupp.noZeroSMulDivisors
 
 section DistribMulActionHom
 
fix: replace symmApply by symm_apply (#2560)
Diff
@@ -1372,7 +1372,7 @@ variable [AddMonoid M]
 /-- The additive equivalence between `(α ⊕ β) →₀ M` and `(α →₀ M) × (β →₀ M)`.
 
 This is the `Finsupp` version of `Equiv.sum_arrow_equiv_prod_arrow`. -/
-@[simps! apply symmApply]
+@[simps! apply symm_apply]
 def sumFinsuppAddEquivProdFinsupp {α β : Type _} : (Sum α β →₀ M) ≃+ (α →₀ M) × (β →₀ M) :=
   { sumFinsuppEquivProdFinsupp with
     map_add' := by
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
@@ -1372,7 +1372,7 @@ variable [AddMonoid M]
 /-- The additive equivalence between `(α ⊕ β) →₀ M` and `(α →₀ M) × (β →₀ M)`.
 
 This is the `Finsupp` version of `Equiv.sum_arrow_equiv_prod_arrow`. -/
-@[simps apply symmApply]
+@[simps! apply symmApply]
 def sumFinsuppAddEquivProdFinsupp {α β : Type _} : (Sum α β →₀ M) ≃+ (α →₀ M) × (β →₀ M) :=
   { sumFinsuppEquivProdFinsupp with
     map_add' := by
feat: port Data.Finsupp.Basic (#1949)

porting notes:

  1. simps was not working in various places due to the noncomputable, so I had to manually add some lemmas it would have generated. See here: https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/finding.20.60simps.60.20lemmas
  2. Lean 4 really had trouble inferring arguments to mapRange_comp for some reason as compared to Lean 3
  3. In several places I had to manually supply decidability instances (from Classical). This should probably be investigated.
  4. It looks like the Sigma.mk.inj auto-generated lemma was never created. Why?
  5. In one place, ext didn't fire the same way in Lean 3 versus Lean 4; I just copied the output of ext? from Lean 3, but we should understand what went wrong.

Co-authored-by: Lukas Miaskiwskyi <lukas.mias@gmail.com>

Dependencies 8 + 286

287 files ported (97.3%)
120331 lines ported (97.5%)
Show graph

The unported dependencies are