The index of a linear map #
In this file we define the index of a linear map and provide some basic API.
Main definitions / results: #
LinearMap.index: the index of a linear map, with sign conventionindex = dim ker - dim coker.LinearMap.index_comp: the index is additive under composition.
noncomputable def
LinearMap.index
{M : Type u_1}
{N : Type u_2}
[AddCommGroup M]
[AddCommGroup N]
{R : Type u_3}
[Ring R]
[Module R M]
[Module R N]
(f : M →ₗ[R] N)
:
The index of a linear map with sign convention index = dim ker - dim coker.
In the case that either the kernel or cokernel has infinite rank, the value is junk.
Equations
- f.index = ↑(Module.finrank R ↥f.ker) - ↑(Module.finrank R (N ⧸ f.range))
Instances For
theorem
LinearMap.index_eq_finrank_sub
{M : Type u_1}
{N : Type u_2}
[AddCommGroup M]
[AddCommGroup N]
{R : Type u_3}
[Ring R]
[Module R M]
[Module R N]
{f : M →ₗ[R] N}
:
theorem
LinearMap.index_of_subsingleton
{M : Type u_1}
{N : Type u_2}
[AddCommGroup M]
[AddCommGroup N]
{R : Type u_3}
[Ring R]
[Module R M]
[Module R N]
{f : M →ₗ[R] N}
[Subsingleton R]
:
@[simp]
theorem
LinearMap.index_zero
{M : Type u_1}
{N : Type u_2}
[AddCommGroup M]
[AddCommGroup N]
{R : Type u_3}
[Ring R]
[Module R M]
[Module R N]
:
theorem
LinearMap.index_of_injective
{M : Type u_1}
{N : Type u_2}
[AddCommGroup M]
[AddCommGroup N]
{R : Type u_3}
[Ring R]
[Module R M]
[Module R N]
{f : M →ₗ[R] N}
[Nontrivial R]
(hf : Function.Injective ⇑f)
:
theorem
LinearMap.index_of_surjective
{M : Type u_1}
{N : Type u_2}
[AddCommGroup M]
[AddCommGroup N]
{R : Type u_3}
[Ring R]
[Module R M]
[Module R N]
{f : M →ₗ[R] N}
[StrongRankCondition R]
(hf : Function.Surjective ⇑f)
:
@[simp]
theorem
LinearMap.index_id
{M : Type u_1}
[AddCommGroup M]
{R : Type u_3}
[Ring R]
[Module R M]
[StrongRankCondition R]
:
@[simp]
theorem
LinearEquiv.index_eq_zero
{M : Type u_1}
{N : Type u_2}
[AddCommGroup M]
[AddCommGroup N]
{R : Type u_3}
[Ring R]
[Module R M]
[Module R N]
[StrongRankCondition R]
{e : M ≃ₗ[R] N}
:
@[simp]
theorem
LinearMap.index_neg
{M : Type u_1}
{N : Type u_2}
[AddCommGroup M]
[AddCommGroup N]
{k : Type u_3}
[DivisionRing k]
[Module k M]
[Module k N]
{f : M →ₗ[k] N}
:
theorem
LinearMap.index_eq_of_finiteDimensional
{M : Type u_1}
{N : Type u_2}
[AddCommGroup M]
[AddCommGroup N]
{k : Type u_3}
[DivisionRing k]
[Module k M]
[Module k N]
{f : M →ₗ[k] N}
[FiniteDimensional k M]
[FiniteDimensional k N]
:
@[simp]
theorem
LinearMap.index_comp
{M : Type u_1}
{N : Type u_2}
[AddCommGroup M]
[AddCommGroup N]
{k : Type u_3}
[DivisionRing k]
[Module k M]
[Module k N]
{f : M →ₗ[k] N}
{P : Type u_4}
[AddCommGroup P]
[Module k P]
(g : N →ₗ[k] P)
[FiniteDimensional k ↥f.ker]
[FiniteDimensional k ↥g.ker]
[FiniteDimensional k (N ⧸ f.range)]
[FiniteDimensional k (P ⧸ g.range)]
: