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) :
@[simp]
theorem LinearMap.index_subtype {M : Type u_1} [AddCommGroup M] {R : Type u_3} [Ring R] [Module R M] [Nontrivial R] {S : Submodule R M} :
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_mkQ {M : Type u_1} [AddCommGroup M] {R : Type u_3} [Ring R] [Module R M] [StrongRankCondition R] {S : Submodule R M} :
@[simp]
theorem LinearMap.index_projectionOnto {M : Type u_1} [AddCommGroup M] {R : Type u_3} [Ring R] [Module R M] [StrongRankCondition R] {S T : Submodule R M} (hST : IsCompl S T) :
theorem LinearMap.index_of_bijective {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.Bijective ⇑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] {P : Type u_4} [AddCommGroup P] [Module k P] (g : N →ₗ[k] P) (f : M →ₗ[k] N) [FiniteDimensional k ↥f.ker] [FiniteDimensional k ↥g.ker] [FiniteDimensional k (N ⧸ f.range)] [FiniteDimensional k (P ⧸ g.range)] :