Properties of the module α →₀ M
#
Given an R
-module M
, the R
-module structure on α →₀ M
is defined in
Data.Finsupp.Basic
.
In this file we define Finsupp.supported s
to be the set {f : α →₀ M | f.support ⊆ s}
interpreted as a submodule of α →₀ M
. We also define LinearMap
versions of various maps:
Finsupp.lsingle a : M →ₗ[R] ι →₀ M
:Finsupp.single a
as a linear map;Finsupp.lapply a : (ι →₀ M) →ₗ[R] M
: the mapfun f ↦ f a
as a linear map;Finsupp.lsubtypeDomain (s : Set α) : (α →₀ M) →ₗ[R] (s →₀ M)
: restriction to a subtype as a linear map;Finsupp.restrictDom
:Finsupp.filter
as a linear map toFinsupp.supported s
;Finsupp.lsum
:Finsupp.sum
orFinsupp.liftAddHom
as aLinearMap
;Finsupp.total α M R (v : ι → M)
: sendsl : ι → R
to the linear combination ofv i
with coefficientsl i
;Finsupp.totalOn
: a restricted version ofFinsupp.total
with domainFinsupp.supported R R s
and codomainSubmodule.span R (v '' s)
;Finsupp.supportedEquivFinsupp
: a linear equivalence between the functionsα →₀ M
supported ons
and the functionss →₀ M
;Finsupp.lmapDomain
: a linear map version ofFinsupp.mapDomain
;Finsupp.domLCongr
: aLinearEquiv
version ofFinsupp.domCongr
;Finsupp.congr
: if the setss
andt
are equivalent, thensupported M R s
is equivalent tosupported M R t
;Finsupp.lcongr
: aLinearEquiv
alence betweenα →₀ M
andβ →₀ N
constructed usinge : α ≃ β
ande' : M ≃ₗ[R] N
.
Tags #
function with finite support, module, linear algebra
Interpret Finsupp.single a
as a linear map.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Two R
-linear maps from Finsupp X M
which agree on each single x y
agree everywhere.
Two R
-linear maps from Finsupp X M
which agree on each single x y
agree everywhere.
We formulate this fact using equality of linear maps φ.comp (lsingle a)
and ψ.comp (lsingle a)
so that the ext
tactic can apply a type-specific extensionality lemma to prove equality of these
maps. E.g., if M = R
, then it suffices to verify φ (single a 1) = ψ (single a 1)
.
Forget that a function is finitely supported.
This is the linear version of Finsupp.toFun
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Interpret Finsupp.subtypeDomain s
as a linear map.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Finsupp.supported M R s
is the R
-submodule of all p : α →₀ M
such that p.support ⊆ s
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Interpret Finsupp.filter s
as a linear map from α →₀ M
to supported M R s
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Interpret Finsupp.restrictSupportEquiv
as a linear equivalence between
supported M R s
and s →₀ M
.
Equations
- Finsupp.supportedEquivFinsupp s = let F := Finsupp.restrictSupportEquiv s M; Equiv.toLinearEquiv F (_ : IsLinearMap R ↑(Finsupp.restrictSupportEquiv s M))
Instances For
Lift a family of linear maps M →ₗ[R] N
indexed by x : α
to a linear map from α →₀ M
to
N
using Finsupp.sum
. This is an upgraded version of Finsupp.liftAddHom
.
See note [bundled maps over different rings] for why separate R
and S
semirings are used.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A slight rearrangement from lsum
gives us
the bijection underlying the free-forgetful adjunction for R-modules.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given compatible S
and R
-module structures on M
and a type X
, the set of functions
X → M
is S
-linearly equivalent to the R
-linear maps from the free R
-module
on X
to M
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Interpret Finsupp.mapDomain
as a linear map.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given f : α → β
and a proof hf
that f
is injective, lcomapDomain f hf
is the linear map
sending l : β →₀ M
to the finitely supported function from α
to M
given by composing
l
with f
.
This is the linear version of Finsupp.comapDomain
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Interprets (l : α →₀ R) as linear combination of the elements in the family (v : α → M) and evaluates this linear combination.
Equations
- Finsupp.total α M R v = ↑(Finsupp.lsum ℕ) fun i => LinearMap.smulRight LinearMap.id (v i)
Instances For
Any module is a quotient of a free module. This is stated as surjectivity of
Finsupp.total M M R id : (M →₀ R) →ₗ[R] M
.
A version of Finsupp.range_total
which is useful for going in the other direction
Finsupp.totalOn M v s
interprets p : α →₀ R
as a linear combination of a
subset of the vectors in v
, mapping it to the span of those vectors.
The subset is indicated by a set s : Set α
of indices.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An equivalence of domains induces a linear equivalence of finitely supported functions.
This is Finsupp.domCongr
as a LinearEquiv
.
See also LinearMap.funCongrLeft
for the case of arbitrary functions.
Equations
- Finsupp.domLCongr e = AddEquiv.toLinearEquiv (Finsupp.domCongr e) (_ : ∀ (c : R) (x : α₁ →₀ M), ↑(Finsupp.domCongr e) (c • x) = c • ↑(Finsupp.domCongr e) x)
Instances For
An equivalence of sets induces a linear equivalence of Finsupp
s supported on those sets.
Equations
Instances For
Finsupp.mapRange
as a LinearMap
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Finsupp.mapRange
as a LinearEquiv
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An equivalence of domain and a linear equivalence of codomain induce a linear equivalence of the corresponding finitely supported functions.
Equations
- Finsupp.lcongr e₁ e₂ = LinearEquiv.trans (Finsupp.domLCongr e₁) (Finsupp.mapRange.linearEquiv e₂)
Instances For
The linear equivalence between (α ⊕ β) →₀ M
and (α →₀ M) × (β →₀ M)
.
This is the LinearEquiv
version of Finsupp.sumFinsuppEquivProdFinsupp
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
On a Fintype η
, Finsupp.split
is a linear equivalence between
(Σ (j : η), ιs j) →₀ M
and (j : η) → (ιs j →₀ M)
.
This is the LinearEquiv
version of Finsupp.sigmaFinsuppAddEquivPiFinsupp
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The linear equivalence between α × β →₀ M
and α →₀ β →₀ M
.
This is the LinearEquiv
version of Finsupp.finsuppProdEquiv
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If R
is countable, then any R
-submodule spanned by a countable family of vectors is
countable.
Fintype.total R S v f
is the linear combination of vectors in v
with weights in f
.
This variant of Finsupp.total
is defined on fintype indexed vectors.
This map is linear in v
if R
is commutative, and always linear in f
.
See note [bundled maps over different rings] for why separate R
and S
semirings are used.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An element x
lies in the span of v
iff it can be written as sum ∑ cᵢ • vᵢ = x
.
A family v : α → V
is generating V
iff every element (x : V)
can be written as sum ∑ cᵢ • vᵢ = x
.
Pick some representation of x : span R w
as a linear combination in w
,
using the axiom of choice.
Instances For
Submodule.exists_finset_of_mem_iSup
as an iff
An element m ∈ M
is contained in the R
-submodule spanned by a set s ⊆ M
, if and only if
m
can be written as a finite R
-linear combination of elements of s
.
The implementation uses Finsupp.sum
.
An element m ∈ M
is contained in the R
-submodule spanned by a set s ⊆ M
, if and only if
m
can be written as a finite R
-linear combination of elements of s
.
The implementation uses a sum indexed by Fin n
for some n
.
The span of a subset s
is the union over all n
of the set of linear combinations of at most
n
terms belonging to s
.
If Subsingleton R
, then M ≃ₗ[R] ι →₀ R
for any type ι
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A surjective linear map to finitely supported functions has a splitting.
Equations
- LinearMap.splittingOfFinsuppSurjective f s = ↑(Finsupp.lift M R α) fun x => Exists.choose (_ : ∃ a, ↑f a = fun₀ | x => 1)
Instances For
A surjective linear map to functions on a finite type has a splitting.
Equations
- One or more equations did not get rendered due to their size.