Jordan Canonical Form

lean4-prooflinear-algebravisualization
A=PJP1,J=iJni(λi)A = P J P^{-1},\quad J = \bigoplus_i J_{n_i}(\lambda_i)

Statement

Let FF be an algebraically closed field and AA an n×nn \times n matrix over FF. Then there exists an invertible matrix PP and a block-diagonal matrix

J=Jn1(λ1)Jn2(λ2)Jnk(λk)J = J_{n_1}(\lambda_1) \oplus J_{n_2}(\lambda_2) \oplus \cdots \oplus J_{n_k}(\lambda_k)

such that A=PJP1A = P J P^{-1}. Each Jordan block is

Jm(λ)=(λ1000λ1000λ1000λ)Fm×m.J_m(\lambda) = \begin{pmatrix} \lambda & 1 & 0 & \cdots & 0 \\ 0 & \lambda & 1 & \cdots & 0 \\ \vdots & & \ddots & \ddots & \vdots \\ 0 & 0 & \cdots & \lambda & 1 \\ 0 & 0 & \cdots & 0 & \lambda \end{pmatrix} \in F^{m \times m}.

The form is unique up to reordering of blocks.

Visualization

Consider A=(2102)A = \begin{pmatrix} 2 & 1 \\ 0 & 2 \end{pmatrix} vs B=(2002)B = \begin{pmatrix} 2 & 0 \\ 0 & 2 \end{pmatrix}.

  Matrix A (non-semisimple)        Jordan form of A
  +---------+                      +---------+
  | 2  1    |   ~ similar ~        | 2  1    |  (IS the Jordan block J_2(2))
  | 0  2    |                      | 0  2    |
  +---------+                      +---------+
  eigenvalue λ=2 (double),         one Jordan block of size 2
  minimal poly = (x-2)^2

  Matrix B (semisimple / diagonal) Jordan form of B
  +---------+                      +---------+
  | 2  0    |   ~ similar ~        | 2  0    |  (two blocks J_1(2))
  | 0  2    |                      | 0  2    |
  +---------+                      +---------+
  eigenvalue λ=2 (double),         minimal poly = (x-2), squarefree

The key distinction: AA needs a 2×22 \times 2 block because (A2I)2=0(A - 2I)^2 = 0 but (A2I)0(A - 2I) \neq 0; BB is already diagonal so each Jordan block has size 11.

MatrixMin polyJordan block sizes for λ=2\lambda=2
AA(x2)2(x-2)^2{2}\{2\}
BBx2x-2{1,1}\{1, 1\}

Proof Sketch

  1. Generalised eigenspaces. For each eigenvalue λi\lambda_i, the generalised eigenspace Vi=ker(AλiI)nV_i = \ker(A - \lambda_i I)^{n} is AA-invariant. The Cayley–Hamilton theorem guarantees V=iViV = \bigoplus_i V_i.
  2. Jordan basis on each block. On ViV_i, the restriction Ni=(AλiI)ViN_i = (A - \lambda_i I)|_{V_i} is nilpotent. A nilpotent operator on a finite-dimensional space admits a basis of Jordan chains — sequences v,Nv,N2v,v, Nv, N^2 v, \ldots that yield one Jordan block per chain.
  3. Assemble. Concatenate the Jordan bases across all generalised eigenspaces to get PP; JJ is block-diagonal by construction.
  4. Uniqueness. The block sizes for λ\lambda are determined by dimker(AλI)k\dim \ker (A - \lambda I)^k for k=1,2,k = 1, 2, \ldots, which are similarity invariants.

Connections

  • Cayley–Hamilton TheoremCayley–Hamilton TheorempA(A)=0  where  pA(λ)=det(λIA)p_A(A) = 0 \;\text{where}\; p_A(\lambda) = \det(\lambda I - A)Every square matrix satisfies its own characteristic polynomialRead more → — guarantees V=iViV = \bigoplus_i V_i over algebraically closed fields
  • Minimal PolynomialMinimal PolynomialμAp    p(A)=0\mu_A \mid p \iff p(A) = 0The minimal polynomial of a matrix is the monic polynomial of least degree that annihilates it.Read more → — block sizes for λi\lambda_i equal the size of the largest Jordan block, matching the multiplicity of (λi)(\lambda_i) in the minimal polynomial
  • Spectral TheoremSpectral TheoremA=QΛQT  (real symmetric case)A = Q \Lambda Q^T \;\text{(real symmetric case)}Every real symmetric matrix is orthogonally diagonalizableRead more → — the real/complex spectral theorem gives the semisimple part; Jordan form extends this to the full nilpotent decomposition

Lean4 Proof

import Mathlib.LinearAlgebra.JordanChevalley

/-- The Jordan–Chevalley-Dunford decomposition: every endomorphism of a
    finite-dimensional vector space over a perfect field splits as nilpotent
    plus semisimple.  This is the structural engine behind Jordan canonical form.
    Mathlib's `Module.End.exists_isNilpotent_isSemisimple` is the direct alias. -/
theorem jordan_chevalley_decomp
    {K : Type*} [Field K] [PerfectField K]
    {V : Type*} [AddCommGroup V] [Module K V] [FiniteDimensional K V]
    (f : V ₗ[K] V) :
    ᵉ (n  Algebra.adjoin K {f}) (s  Algebra.adjoin K {f}),
      IsNilpotent n  Module.End.IsSemisimple s  f = n + s :=
  Module.End.exists_isNilpotent_isSemisimple