Conversion between Finsupp and homogeneous DFinsupp #
This module provides conversions between Finsupp and DFinsupp.
It is in its own file since neither Finsupp or DFinsupp depend on each other.
Main definitions #
- "identity" maps between
FinsuppandDFinsupp:Finsupp.toDFinsupp : (ι →₀ M) → (Π₀ i : ι, M)DFinsupp.toFinsupp : (Π₀ i : ι, M) → (ι →₀ M)- Bundled equiv versions of the above:
finsuppEquivDFinsupp : (ι →₀ M) ≃ (Π₀ i : ι, M)finsuppAddEquivDFinsupp : (ι →₀ M) ≃+ (Π₀ i : ι, M)finsuppLequivDFinsupp R : (ι →₀ M) ≃ₗ[R] (Π₀ i : ι, M)
- stronger versions of
Finsupp.split:sigmaFinsuppEquivDFinsupp : ((Σ i, η i) →₀ N) ≃ (Π₀ i, (η i →₀ N))sigmaFinsuppAddEquivDFinsupp : ((Σ i, η i) →₀ N) ≃+ (Π₀ i, (η i →₀ N))sigmaFinsuppLequivDFinsupp : ((Σ i, η i) →₀ N) ≃ₗ[R] (Π₀ i, (η i →₀ N))
Theorems #
The defining features of these operations is that they preserve the function and support:
and therefore map Finsupp.single to DFinsupp.single and vice versa:
as well as preserving arithmetic operations.
For the bundled equivalences, we provide lemmas that they reduce to Finsupp.toDFinsupp:
finsupp_add_equiv_dfinsupp_applyfinsupp_lequiv_dfinsupp_applyfinsupp_add_equiv_dfinsupp_symm_applyfinsupp_lequiv_dfinsupp_symm_apply
Implementation notes #
We provide DFinsupp.toFinsupp and finsuppEquivDFinsupp computably by adding
[DecidableEq ι] and [Π m : M, Decidable (m ≠ 0)] arguments. To aid with definitional unfolding,
these arguments are also present on the noncomputable equivs.
Basic definitions and lemmas #
Interpret a homogeneous DFinsupp as a Finsupp.
Note that the elaborator has a lot of trouble with this definition - it is often necessary to
write (DFinsupp.toFinsupp f : ι →₀ M) instead of f.toFinsupp, as for some unknown reason
using dot notation or omitting the type ascription prevents the type being resolved correctly.
Equations
Instances For
Lemmas about arithmetic operations #
Finsupp.toDFinsupp and DFinsupp.toFinsupp together form an equiv.
Equations
Instances For
The additive version of finsupp.toFinsupp. Note that this is noncomputable because
Finsupp.add is noncomputable.
Equations
Instances For
The additive version of Finsupp.toFinsupp. Note that this is noncomputable because
Finsupp.add is noncomputable.
Equations
Instances For
Stronger versions of Finsupp.split #
Finsupp.split is an additive equivalence between (Σ i, η i) →₀ N and Π₀ i, (η i →₀ N).