Documentation

Mathlib.Algebra.Module.LinearMap.Index

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: #

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
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} :
    f.index = (Module.finrank R f.ker) - (Module.finrank R (N f.range))
    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] :
    f.index = 0
    @[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] :
    index 0 = (Module.finrank R M) - (Module.finrank 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) :
    f.index = (Module.finrank R f.ker)
    @[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} :
    (↑e).index = 0
    @[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} :
    (-f).index = f.index
    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] :
    f.index = (Module.finrank k M) - (Module.finrank 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)] :
    theorem LinearMap.index_smul {M : Type u_1} {N : Type u_2} [AddCommGroup M] [AddCommGroup N] {k : Type u_3} [Field k] [Module k M] [Module k N] {f : M →ₗ[k] N} (t : k) (ht : t 0) :
    (t f).index = f.index