Module docstring
{"# Properties of the module α →₀ M
Finsupp.linearEquivFunOnFinite:α →₀ βanda → βare equivalent ifαis finite
Tags
function with finite support, module, linear algebra "}
{"# Properties of the module α →₀ M
Finsupp.linearEquivFunOnFinite: α →₀ β and a → β are equivalent if α is finitefunction with finite support, module, linear algebra "}
Finsupp.LinearEquiv.finsuppUnique
definition
: (α →₀ M) ≃ₗ[R] M
/-- If `α` has a unique term, then the type of finitely supported functions `α →₀ M` is
`R`-linearly equivalent to `M`. -/
noncomputable def LinearEquiv.finsuppUnique : (α →₀ M) ≃ₗ[R] M :=
{ Finsupp.equivFunOnFinite.trans (Equiv.funUnique α M) with
map_add' := fun _ _ => rfl
map_smul' := fun _ _ => rfl }
Finsupp.LinearEquiv.finsuppUnique_apply
theorem
(f : α →₀ M) : LinearEquiv.finsuppUnique R M α f = f default
@[simp]
theorem LinearEquiv.finsuppUnique_apply (f : α →₀ M) :
LinearEquiv.finsuppUnique R M α f = f default :=
rfl
Finsupp.LinearEquiv.finsuppUnique_symm_apply
theorem
(m : M) : (LinearEquiv.finsuppUnique R M α).symm m = Finsupp.single default m
@[simp]
theorem LinearEquiv.finsuppUnique_symm_apply (m : M) :
(LinearEquiv.finsuppUnique R M α).symm m = Finsupp.single default m := by
ext; simp [LinearEquiv.finsuppUnique, Equiv.funUnique, single, Pi.single,
equivFunOnFinite, Function.update]
Finsupp.lcoeFun
definition
: (α →₀ M) →ₗ[R] α → M
/-- Forget that a function is finitely supported.
This is the linear version of `Finsupp.toFun`. -/
@[simps]
def lcoeFun : (α →₀ M) →ₗ[R] α → M where
toFun := (⇑)
map_add' x y := by
ext
simp
map_smul' x y := by
ext
simp
LinearMap.splittingOfFunOnFintypeSurjective
definition
[Finite α] (f : M →ₗ[R] α → R) (s : Surjective f) : (α → R) →ₗ[R] M
/-- A surjective linear map to functions on a finite type has a splitting. -/
def splittingOfFunOnFintypeSurjective [Finite α] (f : M →ₗ[R] α → R) (s : Surjective f) :
(α → R) →ₗ[R] M :=
(Finsupp.lift _ _ _ fun x : α => (s (Finsupp.single x 1)).choose).comp
(linearEquivFunOnFinite R R α).symm.toLinearMap
LinearMap.splittingOfFunOnFintypeSurjective_splits
theorem
[Finite α] (f : M →ₗ[R] α → R) (s : Surjective f) : f.comp (splittingOfFunOnFintypeSurjective f s) = LinearMap.id
theorem splittingOfFunOnFintypeSurjective_splits [Finite α] (f : M →ₗ[R] α → R)
(s : Surjective f) : f.comp (splittingOfFunOnFintypeSurjective f s) = LinearMap.id := by
classical
ext x y
dsimp [splittingOfFunOnFintypeSurjective]
rw [linearEquivFunOnFinite_symm_single, Finsupp.sum_single_index, one_smul,
(s (Finsupp.single x 1)).choose_spec, Finsupp.single_eq_pi_single]
rw [zero_smul]
LinearMap.leftInverse_splittingOfFunOnFintypeSurjective
theorem
[Finite α] (f : M →ₗ[R] α → R) (s : Surjective f) : LeftInverse f (splittingOfFunOnFintypeSurjective f s)
theorem leftInverse_splittingOfFunOnFintypeSurjective [Finite α] (f : M →ₗ[R] α → R)
(s : Surjective f) : LeftInverse f (splittingOfFunOnFintypeSurjective f s) := fun g =>
LinearMap.congr_fun (splittingOfFunOnFintypeSurjective_splits f s) g
LinearMap.splittingOfFunOnFintypeSurjective_injective
theorem
[Finite α] (f : M →ₗ[R] α → R) (s : Surjective f) : Injective (splittingOfFunOnFintypeSurjective f s)
theorem splittingOfFunOnFintypeSurjective_injective [Finite α] (f : M →ₗ[R] α → R)
(s : Surjective f) : Injective (splittingOfFunOnFintypeSurjective f s) :=
(leftInverse_splittingOfFunOnFintypeSurjective f s).injective