data.finsupp.basic
⟷
Mathlib.Data.Finsupp.Basic
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.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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)
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>
@@ -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)
these are already in mathlib4, I just missed them in mathlib3.
@@ -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)
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>
@@ -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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -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 _ _ _
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -52,7 +52,7 @@ noncomputable section
open Finset Function
-open BigOperators
+open scoped BigOperators
variable {α β γ ι M M' N P G H R S : Type _}
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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⟩ :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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:
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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 α]
mathlib commit https://github.com/leanprover-community/mathlib/commit/8d33f09cd7089ecf074b4791907588245aec5d1b
@@ -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 :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -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 :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -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 α]
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/3905fa80e62c0898131285baab35559fbc4e5cda
@@ -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))
mathlib commit https://github.com/leanprover-community/mathlib/commit/92c69b77c5a7dc0f7eeddb552508633305157caa
@@ -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ₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/36b8aa61ea7c05727161f96a0532897bd72aedab
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/fa78268d4d77cb2b2fbc89f0527e2e7807763780
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/d2d964c64f8ddcccd6704a731c41f95d13e72f5c
@@ -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) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/2651125b48fc5c170ab1111afd0817c903b1fc6c
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce86f4e05e9a9b8da5e316b22c76ce76440c56a1
@@ -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ₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/57e09a1296bfb4330ddf6624f1028ba186117d82
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -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 α]
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -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) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/62e8311c791f02c47451bf14aa2501048e7c2f33
@@ -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ₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/195fcd60ff2bfe392543bceb0ec2adcdb472db4c
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -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
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>
@@ -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
@@ -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]
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.
@@ -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"
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>
@@ -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
@@ -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
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 φ
-equivariantDistribMulActionHomClass F φ A B
states that F
is a type of bundled A → B
homs preserving the additive monoid structure and φ
-equivariantSMulSemiringHomClass F φ R S
states that F
is a type of bundled R → S
homs preserving the ring structure and φ
-equivariantWe 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.
@@ -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
@@ -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
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)
@@ -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`.
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -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
@@ -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
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
@@ -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
refine
s (#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 refine
s, but maybe the current change is beneficial.
@@ -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
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.
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]
.
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_param
s, [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 sometimesThis 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.
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 outParam
s 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.)
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>
@@ -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.
-/
Data.Set.Basic
from scripts/noshake.json
.example
s only,
move these example
s to a new test file.Order.Filter.Basic
dependency on Control.Traversable.Instances
,
as the relevant parts were moved to Order.Filter.ListTraverse
.lake exe shake --fix
.@@ -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"
@@ -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"
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>
@@ -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
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>
@@ -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
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 predicateFinsupp.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.Finsupp.restrictSupportEquiv
.This may be used to simplify some parts of #7904.
@@ -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
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
@@ -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
(· op ·) a
by (a op ·)
(#8843)
I used the regex \(\(· (.) ·\) (.)\)
, replacing with ($2 $1 ·)
.
@@ -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]
Finsupp.prod
is nonzero (#8844)
Also replace Finsupp.nonzero_iff_exists
by a more general lemma.
@@ -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
@@ -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) :
@@ -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
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>
@@ -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
@@ -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
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
@@ -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"
Removes nonterminal simps on lines looking like simp [...]
@@ -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
In several places, we unfold Finsupp.sum
just to use Finset.sum_eq_single
; this adds the missing lemma.
@@ -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)
@@ -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 <|
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!
@@ -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
@@ -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) :
Noticed whilst doing my other PR about char_zero. Leaves statements that create data alone.
@@ -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. -/
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -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
@@ -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
@@ -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
@@ -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
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)
@@ -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
@@ -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
@@ -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⟩
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.
@@ -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₀ _ _)
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.
@@ -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
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
@@ -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
@@ -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. -/
@@ -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)
fix-comments.py
on all files.@@ -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
sSup
/iSup
(#3938)
As discussed on Zulip
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>
@@ -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
by
s! (#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 by
s".
@@ -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, *]
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>
@@ -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 _
@@ -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 :=
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>
@@ -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
This PR fixes two things:
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.#align
statements. (This was needed for a script I wrote for #3630.)@@ -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. -/
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
.
@@ -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
@@ -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
@@ -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
@@ -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
simps
, just raises a linter error if you run simps
in a more expensive mode without writing !
.to_additive, simps
. Will do that systematically in future PR.OmegaCompletePartialOrder.ContinuousHom.ofMono
a bitCo-authored-by: Yury G. Kudryashov <urkud@urkud.name>
@@ -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
porting notes:
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.20lemmasmapRange_comp
for some reason as compared to Lean 3Classical
). This should probably be investigated.Sigma.mk.inj
auto-generated lemma was never created. Why?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>
The unported dependencies are