-
Notifications
You must be signed in to change notification settings - Fork 298
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Merged by Bors] - feat(linear_algebra/matrix/charpoly/eigs): det and trace are product and sum of eigenvalues #19079
Conversation
Only algebraically closed fields
Can you add a note to the module docstring explaining the link to eigenvalues? |
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
@eric-wieser |
So I figured out I can get away with using |
…ces and do the splitting themselves. The longer names ones ...... well split hairs and prefer if you don't call them!!!
I think the condition
|
What do you think @eric-wieser and @Vierkantor ? I mean about having two versions. |
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
That's an issue with the documentation if there is no explanation what we mean by the jargon "bundled". Could you point me to where you read this? Ideally, to do mathematics in Lean we would only encounter ring homomorphisms in their bundled form. So if you don't see "unbundled" anywhere, don't worry about the word "bundled". So What we mean by "bundled" in mathlib is that objects carry proofs with them. So an element of |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the changes!
I tried to unify the commonalities with norm_gen_eq_prod_roots
and trace_gen_eq_sum_roots
myself, but had a few issues since prod_roots_eq_coeff_zero_of_monic_of_split
is not quite general enough. So I propose that we merge this now with this TODO comment, and then come back to this later (after the mathlib4 port, probably). @eric-wieser, do you agree?
bors d+
✌️ MohanadAhmed can now approve this pull request. To approve and merge a pull request, simply reply with |
bors r+ |
Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
Canceled. |
bors r+ |
…and sum of eigenvalues (#19079) This adds two lemmas: 1. `det_eq_prod_roots_charpoly`: the determinant of a square matrix is the product of the characteristic polynomial roots of that matrix. 2. `trace_eq_sum_roots_charpoly`: the trace is similarly the sum of the characteristic polynomial roots. These two lemmas are more commonly stated as trace is the sum of eigenvalues and determinant is the product of eigenvalues. Mathlib has already defined eigenvalues in [linear_algebra.eigenspace](https://leanprover-community.github.io/mathlib_docs/linear_algebra/eigenspace.html#module.End.eigenvalues) as the roots of the minimal polynomial of a linear endomorphism. These do not have correct multiplicity and cannot be used in the theorems above. Hence we express these theorems in terms of the roots of the characteristic polynomial directly. Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Pull request successfully merged into master. Build succeeded! The publicly hosted instance of bors-ng is deprecated and will go away soon. If you want to self-host your own instance, instructions are here. If you want to switch to GitHub's built-in merge queue, visit their help page. |
`norm_gen_eq_prod_roots` and `trace_gen_eq_sum_roots` respectively, but the | ||
dependencies are not general enough to unify them. We should refactor | ||
`polynomial.prod_roots_eq_coeff_zero_of_monic_of_split` and | ||
`polynomial.sum_roots_eq_next_coeff_of_monic_of_split` to assume splitting over an arbitrary map. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why does polynomial.splits
take a morphism at all? Doesn't polynomial.splits_map_iff
demonstrate that it's useless and we should just use (p.map f).splits
instead?
This adds two lemmas:
det_eq_prod_roots_charpoly
: the determinant of a square matrix is the product of the characteristic polynomial roots of that matrix.trace_eq_sum_roots_charpoly
: the trace is similarly the sum of the characteristic polynomial roots.These two lemmas are more commonly stated as trace is the sum of eigenvalues and determinant is the product of eigenvalues. Mathlib has already defined eigenvalues in linear_algebra.eigenspace as the roots of the minimal polynomial of a linear endomorphism. These do not have correct multiplicity and cannot be used in the theorems above. Hence we express these theorems in terms of the roots of the characteristic polynomial directly.