Jordan basis: every complex linear map has a basis of Jordan strings
ProvedHefferonLinAlg.jordan_string_basisStatement
Let be a finite-dimensional complex vector space and a linear map. Then has a Jordan basis for : there are a number of strings , string lengths with , eigenvalues , and a basis of
indexed by (string index, position along that string), such that
In words: on the -th string, acts as multiplication by plus a shift one step along the string, and the last vector of each string is an honest eigenvector, .
Notes
This is the basis-level form of Jordan canonical form, and the direct source of its matrix form: written in the basis , the matrix of is block diagonal, its -th block being the Jordan block with eigenvalue — down the diagonal and 's on the subdiagonal. The pair (block sizes, eigenvalues) is exactly what the matrix statement calls the Jordan block data.
Why the index type. The basis is indexed by the dependent pair type , so that the block structure is carried by the index rather than reconstructed afterwards. Nothing forces the to be distinct: a single eigenvalue may occur on many strings, which is what the presence of several blocks with the same eigenvalue means.
Where the hypotheses are used. Completeness of is irrelevant; what matters is that is algebraically closed, so that the characteristic polynomial splits and is the direct sum of the generalized eigenspaces of . On each generalized eigenspace for , the map is nilpotent, and a string basis for it is a Jordan string for with eigenvalue . Concatenating the strings over all eigenvalues gives the basis above. Over a field that is not algebraically closed the statement can fail — a rotation of the real plane has no eigenvector at all.
Why . Positive lengths are what make the multiset an invariant of ; empty strings could otherwise be appended with arbitrary eigenvalues.
Relation to Mathlib. Mathlib provides the generalized eigenspace decomposition over an algebraically closed field, but no Jordan basis and no Jordan canonical form; this statement is the missing bridge between the two.
Hefferon, Linear Algebra, Chapter Five, Section IV.2, Theorem 2.8.
import Mathlib
namespace HefferonLinAlg
theorem jordan_string_basis
{V : Type*} [AddCommGroup V] [Module ℂ V] [FiniteDimensional ℂ V]
(f : Module.End ℂ V) :
∃ (k : ℕ) (sz : Fin k → ℕ) (lam : Fin k → ℂ)
(b : Module.Basis (Σ i : Fin k, Fin (sz i)) ℂ V),
(∀ i, 0 < sz i) ∧
∀ (i : Fin k) (a : Fin (sz i)),
f (b ⟨i, a⟩) =
lam i • b ⟨i, a⟩ +
(if h : (a : ℕ) + 1 < sz i then b ⟨i, ⟨(a : ℕ) + 1, h⟩⟩ else 0) := by
sorry
end HefferonLinAlg