Skip to content

Prove real eigenvalues of totally nonnegative matrices are nonnegative - #413

Merged
PerAlexandersson merged 1 commit into
mainfrom
proof/tn-real-eigenvalues
Aug 22, 2026
Merged

Prove real eigenvalues of totally nonnegative matrices are nonnegative#413
PerAlexandersson merged 1 commit into
mainfrom
proof/tn-real-eigenvalues

Conversation

@PerAlexandersson

Copy link
Copy Markdown
Owner

The elementary half of Gantmacher–Krein (#394), independent of the compound /
Perron–Frobenius machinery.

RealRooted/Mathlib/LinearAlgebra/Matrix/TotallyNonneg/Charpoly.lean:

  • IsTotallyNonneg.principalMinor_nonneg — principal minors of a TN matrix are
    nonnegative;
  • IsTotallyNonneg.eval_charpoly_ne_zero_of_neg — the charpoly of a TN matrix
    cannot vanish at a negative argument: by Mathlib's
    charpoly_coeff_eq_sum_minors, every term of the evaluation at t < 0
    carries the same sign (-1)^card, and the empty-minor term is strictly
    positive;
  • IsTotallyNonneg.nonneg_of_isRoot_charpolyevery real eigenvalue of a
    totally nonnegative matrix is nonnegative
    .

Note (recorded on #394): realness of the whole spectrum is genuinely harder —
the eigenvalue multiset {1, i, −i} passes every "Perron root of C_q is an
attained product" test, so the remaining work needs strict TP dominance,
Whitney density, and root continuity.

Sorry-free.

🤖 Generated with Claude Code

Adds TotallyNonneg/Charpoly.lean:
- `IsTotallyNonneg.principalMinor_nonneg`: principal minors of a TN matrix
are nonnegative (bridging the Finset-subtype index to the strictly
monotone enumeration via `Finset.orderIsoOfFin` and
`det_submatrix_equiv_self`);
- `IsTotallyNonneg.eval_charpoly_ne_zero_of_neg`: the characteristic
polynomial of a TN matrix does not vanish at negative arguments -- by
`Matrix.charpoly_coeff_eq_sum_minors` every term of the evaluation at
`t < 0` carries the same sign `(-1) ^ card`, with the empty-minor term
strictly positive;
- `IsTotallyNonneg.nonneg_of_isRoot_charpoly`: **every real eigenvalue of a
totally nonnegative matrix is nonnegative**.
This is the elementary half of Gantmacher-Krein (#394); realness of the full
spectrum additionally needs strict Perron-Frobenius dominance for totally
positive matrices, Whitney density, and root continuity (see the issue for
the corrected roadmap).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@PerAlexandersson
PerAlexandersson merged commit c2f35bf into mainAug 22, 2026
2 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@PerAlexandersson