Lemma 4.18 (Mal'cev): a solvable group of real matrices has a finite-index subgroup that can be simultaneously triangularized over the complex numbers
OpenRosenblatt.exists_finiteIndex_isUpperTriangular_of_isSolvableLet be a subgroup of the group of invertible real matrices, and suppose is solvable as an abstract group. Then there is a subgroup of finite index and a single invertible complex matrix such that for every , conjugating the entrywise complexification of by gives an upper-triangular matrix:
where is with each real entry read as .
Reading the pieces. "Upper triangular" is Matrix.IsUpperTriangular, which says the
strictly lower triangle vanishes — the diagonal is unconstrained. is bound outside the
quantifier over , so one triangularizes all of simultaneously; that is the whole
force of the statement. "Finite index" means finitely many left cosets of inside ,
not inside the full matrix group, and no bound on the index is claimed. The matrix inverse is
Mathlib's total nonsingular inverse, which returns when the determinant is not invertible;
the hypothesis that is a unit is what makes a genuine two-sided inverse, and it is
essential rather than decorative — without it one could take singular, making
, which is upper triangular for free.
What is not claimed. is not asserted to be normal in ; nothing is claimed about the diagonal entries of the triangularized matrices; is not claimed to be real or unitary; and no converse is asserted.
Degenerate ranges, stated because they are real. For and no index pair lies strictly below the diagonal, so every matrix is upper triangular and the conclusion holds for any whatever, with and — at the statement has no content. If is finite the conclusion also holds for free, taking trivial, which has finite index in a finite group. And if already consists of upper-triangular matrices one may take and . The substance of the theorem is confined to with infinite, where the finite-index clause is exactly the weakening that makes it true: a solvable linear group need not itself be triangularizable.
import Mathlib
namespace Rosenblatt
theorem exists_finiteIndex_isUpperTriangular_of_isSolvable {n : ℕ}
(S : Subgroup (Matrix.GeneralLinearGroup (Fin n) ℝ)) [Group.IsSolvable S] :
∃ (H : Subgroup S) (P : Matrix (Fin n) (Fin n) ℂ), H.FiniteIndex ∧ IsUnit P ∧
∀ M ∈ H, (P⁻¹ * (((M : Matrix.GeneralLinearGroup (Fin n) ℝ) :
Matrix (Fin n) (Fin n) ℝ).map Complex.ofReal) * P).IsUpperTriangular := by
sorry
end Rosenblatt