Additive monoid structure on ι →₀ M
#
Equations
- Finsupp.instAdd = { add := Finsupp.zipWith (fun (x1 x2 : M) => x1 + x2) ⋯ }
@[simp]
theorem
Finsupp.support_add
{ι : Type u_1}
{M : Type u_3}
[AddZeroClass M]
{g₁ g₂ : ι →₀ M}
[DecidableEq ι]
:
instance
Finsupp.instAddZeroClass
{ι : Type u_1}
{M : Type u_3}
[AddZeroClass M]
:
AddZeroClass (ι →₀ M)
Equations
- Finsupp.instAddZeroClass = { toZero := Finsupp.instZero, toAdd := Finsupp.instAdd, zero_add := ⋯, add_zero := ⋯ }
instance
Finsupp.instIsLeftCancelAdd
{ι : Type u_1}
{M : Type u_3}
[AddZeroClass M]
[IsLeftCancelAdd M]
:
IsLeftCancelAdd (ι →₀ M)
noncomputable def
Finsupp.addEquivFunOnFinite
{M : Type u_3}
[AddZeroClass M]
{ι : Type u_7}
[Finite ι]
:
When ι is finite and M is an AddMonoid, then Finsupp.equivFunOnFinite gives an AddEquiv
Equations
- Finsupp.addEquivFunOnFinite = { toEquiv := Finsupp.equivFunOnFinite, map_add' := ⋯ }
Instances For
noncomputable def
AddEquiv.finsuppUnique
{M : Type u_3}
[AddZeroClass M]
{ι : Type u_7}
[Unique ι]
:
AddEquiv between (ι →₀ M) and M, when ι has a unique element
Equations
- AddEquiv.finsuppUnique = { toEquiv := Equiv.finsuppUnique, map_add' := ⋯ }
Instances For
instance
Finsupp.instIsRightCancelAdd
{ι : Type u_1}
{M : Type u_3}
[AddZeroClass M]
[IsRightCancelAdd M]
:
IsRightCancelAdd (ι →₀ M)
instance
Finsupp.instIsCancelAdd
{ι : Type u_1}
{M : Type u_3}
[AddZeroClass M]
[IsCancelAdd M]
:
IsCancelAdd (ι →₀ M)
Evaluation of a function f : ι →₀ M
at a point as an additive monoid homomorphism.
See Finsupp.lapply
in Mathlib/LinearAlgebra/Finsupp/Defs.lean
for the stronger version as a
linear map.
Equations
- Finsupp.applyAddHom a = { toFun := fun (g : ι →₀ M) => g a, map_zero' := ⋯, map_add' := ⋯ }
Instances For
@[simp]
theorem
Finsupp.applyAddHom_apply
{ι : Type u_1}
{M : Type u_3}
[AddZeroClass M]
(a : ι)
(g : ι →₀ M)
:
Coercion from a Finsupp
to a function type is an AddMonoidHom
.
Equations
- Finsupp.coeFnAddHom = { toFun := DFunLike.coe, map_zero' := ⋯, map_add' := ⋯ }
Instances For
@[simp]
theorem
Finsupp.coeFnAddHom_apply
{ι : Type u_1}
{M : Type u_3}
[AddZeroClass M]
(a✝ : ι →₀ M)
(a : ι)
:
theorem
Finsupp.mapRange_add'
{ι : Type u_1}
{F : Type u_2}
{M : Type u_3}
{N : Type u_4}
[AddZeroClass M]
[AddZeroClass N]
[FunLike F M N]
[AddMonoidHomClass F M N]
{f : F}
(g₁ g₂ : ι →₀ M)
:
def
Finsupp.embDomain.addMonoidHom
{ι : Type u_1}
{F : Type u_2}
{M : Type u_3}
[AddZeroClass M]
(f : ι ↪ F)
:
Bundle Finsupp.embDomain f
as an additive map from ι →₀ M
to F →₀ M
.
Equations
- Finsupp.embDomain.addMonoidHom f = { toFun := fun (v : ι →₀ M) => Finsupp.embDomain f v, map_zero' := ⋯, map_add' := ⋯ }
Instances For
@[simp]
theorem
Finsupp.embDomain.addMonoidHom_apply
{ι : Type u_1}
{F : Type u_2}
{M : Type u_3}
[AddZeroClass M]
(f : ι ↪ F)
(v : ι →₀ M)
:
Note the general SMul
instance for Finsupp
doesn't apply as ℕ
is not distributive
unless F i
's addition is commutative.
Equations
- Finsupp.instNatSMul = { smul := fun (n : ℕ) (v : ι →₀ M) => Finsupp.mapRange (fun (x : M) => n • x) ⋯ v }
instance
Finsupp.instAddCommMonoid
{ι : Type u_1}
{M : Type u_3}
[AddCommMonoid M]
:
AddCommMonoid (ι →₀ M)
Equations
- Finsupp.instAddCommMonoid = { toAddMonoid := Finsupp.instAddMonoid, add_comm := ⋯ }
Equations
- Finsupp.instNeg = { neg := Finsupp.mapRange Neg.neg ⋯ }
@[simp]
Equations
- Finsupp.instSub = { sub := Finsupp.zipWith Sub.sub ⋯ }
@[simp]
theorem
Finsupp.sub_apply
{ι : Type u_1}
{G : Type u_5}
[SubNegZeroMonoid G]
(g₁ g₂ : ι →₀ G)
(a : ι)
:
Note the general SMul
instance for Finsupp
doesn't apply as ℤ
is not distributive
unless F i
's addition is commutative.
Equations
- Finsupp.instIntSMul = { smul := fun (n : ℤ) (v : ι →₀ G) => Finsupp.mapRange (fun (x : G) => n • x) ⋯ v }
instance
Finsupp.instAddCommGroup
{ι : Type u_1}
{G : Type u_5}
[AddCommGroup G]
:
AddCommGroup (ι →₀ G)
Equations
- Finsupp.instAddCommGroup = { toAddGroup := Finsupp.instAddGroup, add_comm := ⋯ }