Skip to content

Add Hurwitz matrix foundation - #13

Open
raaghav-t wants to merge 3 commits into
AnandGokhale:mainfrom
raaghav-t:feat/hurwitz-foundation
Open

Add Hurwitz matrix foundation#13
raaghav-t wants to merge 3 commits into
AnandGokhale:mainfrom
raaghav-t:feat/hurwitz-foundation

Conversation

@raaghav-t

@raaghav-t raaghav-t commented Sep 3, 2026

Copy link
Copy Markdown

Summary

Add the Phase 1 Hurwitz vocabulary needed for #9: real matrices whose complex eigenpairs have strictly negative real parts, plus a strict rate-indexed variant. Definitions live in LinearSystems/Stability/DefsHurwitz.lean; basic results live in LinearSystems/Stability/Hurwitz.lean, with a local roadmap. Real matrices are embedded using Mathlib's Matrix.map directly.

The API proves zero-rate compatibility, rate weakening, explicit vacuous behavior in dimension zero, the equivalence between rate α and Hurwitz stability of A + αI, and a one-by-one sanity check. Umbrella imports, the blueprint, README, and stability roadmap are updated. The indirect method itself remains out of scope.

Reference and provenance

João P. Hespanha, Linear Systems Theory (2nd ed.), Princeton University Press, 2018: continuous-time stability and the Hurwitz eigenvalue criterion. Author's textbook page.

The strict rate predicate and rate/shift/scalar lemmas are elementary adaptations or consequences of that criterion, proved directly here; this does not claim the textbook states these exact Lean signatures. Zero-rate compatibility, the matrix-map bridge, and the empty-dimension convention are original formalization infrastructure. Source docstrings record this provenance.

Validation

  • Targeted Hurwitz build, full lake build, and full lake exe runLinter pass.
  • lake exe mk_all --check passes.
  • lake build :blueprint, leanblueprint web, and leanblueprint checkdecls pass.
  • All eight public declarations use only propext, Classical.choice, and Quot.sound.
  • git diff --check passes; no new sorry, admit, or axioms; Lean toolchain and dependency revisions unchanged.

The full build retains three existing long-line warnings in unrelated Dini/ODE modules.

@AnandGokhale
AnandGokhale self-requested a review September 9, 2026 22:38
@AnandGokhale

Copy link
Copy Markdown
Owner

Hey,
Thanks for the PR, could you please place your results in a sub-directory called Stability or something similar, The approach of having many files under linear systems is not a scalable one.

@AnandGokhale

Copy link
Copy Markdown
Owner

Also, please add a reference from a paper or a textbook for any results you may have.

variable {n : ℕ}

/-- The entrywise complexification of a real matrix. -/
noncomputable def complexification (A : Matrix (Fin n) (Fin n) ℝ) :

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It feels like complexification is not really needed as a definition, you always eliminate it immediately by expanding its definition.

Sign up for free to 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.

2 participants