Searching a finite field for the eigenvalues of a matrix #
Over a finite field the eigenvalues of a square matrix can be found by brute force: run through
the field and keep the scalars a at which a • 1 - A is singular. This file defines that search,
TauCeti.eigenvalueSearch, as a genuine def on decidable data, and proves that it finds exactly
the eigenvalues: as a set, eigenvalueSearch A is the spectrum of A
(TauCeti.coe_eigenvalueSearch).
Mathlib has the spectrum, the eigenvalues of an endomorphism, and the identification of both with
the roots of the characteristic polynomial, but each of those is Set- or Multiset-valued and
none of them computes: Polynomial is a Finsupp, spectrum is a Set, and Finset.toList is
noncomputable. What is added here is the computable Finset together with the theorem that it
agrees with Mathlib's notion, so that a program may use the Finset while its correctness proof
uses the whole spectrum API.
This search is the finite-field linear algebra of the Burnside--Dixon--Schneider character-table
algorithm, which refines a partition of the class indices by splitting each block along the
eigenvalues of a class-multiplication matrix reduced mod p. That is why the matrix is indexed by
an arbitrary Fintype rather than by Fin n: there the index type is ConjClasses G. It is also
why the eigenvector characterization is recorded on both sides (*ᵥ and ᵥ*): the eigenrows of
that algorithm are left eigenvectors.
Main definitions #
TauCeti.eigenvalueSearch: theFinsetof eigenvalues of a matrix over a finite field.
Main results #
TauCeti.coe_eigenvalueSearch: the search returns exactly the spectrum.TauCeti.mem_eigenvalueSearch_iff_exists_mulVecandTauCeti.mem_eigenvalueSearch_iff_exists_vecMul: membership means a nonzero right, respectively left, eigenvector exists.TauCeti.card_eigenvalueSearch_le: at mostFintype.card nscalars are returned.TauCeti.decidableMemSpectrum: membership in the spectrum is therefore decidable.
References #
This implements the object eigenvalueSearch of Layer 6 of the
character theory roadmap
and its
suggested declarations.
The eigenvalues of A, found by searching the finite field F for the scalars a at which
a • 1 - A is singular. By TauCeti.coe_eigenvalueSearch this is the spectrum of A.
A Finset rather than a list: the search has no preferred order on the field, and eigenvalues
carry no multiplicity here. The body is exposed because consumers of an executable algorithm
evaluate it, and kernel reduction needs the definition.
Equations
- TauCeti.eigenvalueSearch A = {a : F | ((Matrix.scalar n) a - A).det = 0}
Instances For
The scalars the search keeps are those at which a • 1 - A has vanishing determinant.
A scalar the search rejects is one at which a • 1 - A is invertible.
The membership test in the form the algorithm uses it: a is an eigenvalue exactly when
A - a • 1 is singular.
The search keeps exactly the roots of the characteristic polynomial.
Correctness of the search: it returns exactly the spectrum of A.
The pointwise form of TauCeti.coe_eigenvalueSearch.
The search finds the eigenvalues of the endomorphism that A defines on n → F.
The scalar-minus-matrix system is the corresponding eigenvector equation.
A scalar is found by the search exactly when it has a nonzero eigenvector.
A matrix and its transpose have the same eigenvalues.
A scalar is found by the search exactly when it has a nonzero left eigenvector: a row vector
v with v ᵥ* A = a • v. This is the orientation of the Dixon--Schneider eigenrows.
The eigenvalues of A are the distinct roots of its characteristic polynomial.
A matrix has at most as many eigenvalues as it has rows.
The eigenvalues of a diagonal matrix are its diagonal entries.
The only eigenvalue of a scalar matrix is the scalar. This is not @[simp]: simp already
takes the left-hand side to Finset.image (fun _ => a) Finset.univ, and collapsing that image
needs the nonemptiness hypothesis.
The only eigenvalue of the zero matrix is 0.
The only eigenvalue of the identity matrix is 1.
Similar matrices have the same eigenvalues.
A matrix with no rows has no eigenvalues: its 0 × 0 determinant is 1.
Membership in the spectrum of a matrix over a finite field is decidable, by running the search.