Module docstring
{"# Type of functions with finite support
For any type α and any type M with zero, we define the type Finsupp α M (notation: α →₀ M)
of finitely supported functions from α to M, i.e. the functions which are zero everywhere
on α except on a finite set.
Functions with finite support are used (at least) in the following parts of the library:
MonoidAlgebra R MandAddMonoidAlgebra R Mare defined asM →₀ R;polynomials and multivariate polynomials are defined as
AddMonoidAlgebras, hence they useFinsuppunder the hood;the linear combination of a family of vectors
v iwith coefficientsf i(as used, e.g., to define linearly independent familyLinearIndependent) is defined as a mapFinsupp.linearCombination : (ι → M) → (ι →₀ R) →ₗ[R] M.
Some other constructions are naturally equivalent to α →₀ M with some α and M but are defined
in a different way in the library:
Multiset α ≃+ α →₀ ℕ;FreeAbelianGroup α ≃+ α →₀ ℤ.
Most of the theory assumes that the range is a commutative additive monoid. This gives us the big
sum operator as a powerful way to construct Finsupp elements, which is defined in
Mathlib.Algebra.BigOperators.Finsupp.Basic.
Many constructions based on α →₀ M are defs rather than abbrevs to avoid reusing unwanted type
class instances. E.g., MonoidAlgebra, AddMonoidAlgebra, and types based on these two have
non-pointwise multiplication.
Main declarations
Finsupp: The type of finitely supported functions fromαtoβ.Finsupp.onFinset: The restriction of a function to aFinsetas aFinsupp.Finsupp.mapRange: Composition of aZeroHomwith aFinsupp.Finsupp.embDomain: Maps the domain of aFinsuppby an embedding.Finsupp.zipWith: Postcomposition of twoFinsupps with a functionfsuch thatf 0 0 = 0.
Notations
This file adds α →₀ M as a global notation for Finsupp α M.
We also use the following convention for Type* variables in this file
α,β,γ: types with no additional structure that appear as the first argument toFinsuppsomewhere in the statement;ι: an auxiliary index type;M,M',N,P: types withZeroor(Add)(Comm)Monoidstructure;Mis also used for a (semi)module over a (semi)ring.G,H: groups (commutative or not, multiplicative or additive);R,S: (semi)rings.
Implementation notes
This file is a noncomputable theory and uses classical logic throughout.
TODO
- Expand the list of definitions and important lemmas to the module docstring.
","### Basic declarations about Finsupp ","### Declarations about onFinset ","### Declarations about mapRange ","### Declarations about embDomain ","### Declarations about zipWith ","### Additive monoid structure on α →₀ M "}