String basis for a nilpotent linear map
ProvedHefferonLinAlg.nilpotent_string_basisStatement
Let be a finite-dimensional vector space over a field , and let be a nilpotent linear map, i.e. for some . Then has a string basis for : there are a number of strings , string lengths with , and a basis of
indexed by the pairs (string index, position along that string), such that advances every basis vector one step along its own string and annihilates the last vector of each string:
Equivalently, decomposes as a direct sum of -cyclic subspaces
Notes
This is the structure theorem for a nilpotent linear map, and the technical heart of Jordan canonical form. Hefferon calls the chains strings, and a basis assembled from them a string basis; the picture is that shifts each string one place towards its end, where it dies.
Why the statement is phrased this way. The basis is indexed by the dependent pair type rather than by , so that the string structure is visible in the index itself: the first component names the string, the second the position in it. This is the same index type used by block-diagonal matrices, so the matrix of in this basis is literally block diagonal, its -th block being the nilpotent Jordan block (ones on the subdiagonal, zeros elsewhere). Reading the theorem that way turns it into "every nilpotent matrix is similar to a direct sum of nilpotent Jordan blocks".
Why . Without positivity of the lengths one could pad the data with empty strings, and the multiset of string lengths — which is the actual similarity invariant — would no longer be determined by . The lengths themselves are recoverable from the kernel dimensions .
Generality. No hypothesis of algebraic closure is needed: the theorem holds over an arbitrary field, because a nilpotent map has no eigenvalue other than and so no field extension is required. Algebraic closure enters only later, when one splits a general map into generalized eigenspaces before applying this result to on each of them.
Relation to Mathlib. Mathlib knows a great deal about nilpotent endomorphisms and about generalized eigenspaces, but does not provide a string basis, a cyclic decomposition for a nilpotent map, or Jordan canonical form; this statement fills that gap and is intended to be reused for both.
Hefferon, Linear Algebra, Chapter Five, Section III.2 (Strings), Theorem 2.16 and Corollary 2.17.
import Mathlib
namespace HefferonLinAlg
theorem nilpotent_string_basis
{K : Type*} [Field K] {V : Type*} [AddCommGroup V] [Module K V]
[FiniteDimensional K V] (f : Module.End K V) (hf : IsNilpotent f) :
∃ (k : ℕ) (sz : Fin k → ℕ) (b : Module.Basis (Σ i : Fin k, Fin (sz i)) K V),
(∀ i, 0 < sz i) ∧
∀ (i : Fin k) (a : Fin (sz i)),
f (b ⟨i, a⟩) =
if h : (a : ℕ) + 1 < sz i then b ⟨i, ⟨(a : ℕ) + 1, h⟩⟩ else 0 := by
sorry
end HefferonLinAlg