-
Notifications
You must be signed in to change notification settings - Fork 297
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] - fix(analysis/inner_product_space/pi_L2): add missing type cast functions #18574
Conversation
lemma conj_transpose_eq_adjoint (A : matrix m n 𝕜) : | ||
to_lin' A.conj_transpose = | ||
@linear_map.adjoint _ (euclidean_space 𝕜 n) (euclidean_space 𝕜 m) _ _ _ _ _ (to_lin' A) := | ||
lemma to_euclidean_lin_conj_transpose_eq_adjoint (A : matrix m n 𝕜) : | ||
A.conj_transpose.to_euclidean_lin = A.to_euclidean_lin.adjoint := | ||
begin |
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.
The statement of this lemma was the subject of some discussion in #11551 (comment), and in this Zulip thread.
Note the new version is now consistent with the statement of matrix.is_hermitian_iff_is_symmetric
below.
In the year since it was added, there are still no consumers of this lemma.
lemma is_hermitian_iff_is_symmetric [fintype n] [decidable_eq n] {A : matrix n n α} : | ||
is_hermitian A ↔ linear_map.is_symmetric | ||
((pi_Lp.linear_equiv 2 α (λ _ : n, α)).symm.conj A.to_lin' : module.End α (pi_Lp 2 _)) := | ||
is_hermitian A ↔ A.to_euclidean_lin.is_symmetric := | ||
begin |
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.
This spelling (suggested in #14231 (comment)) was already type-correct, but has been folded into to_euclidean_lin
.
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.
This looks very good!
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.
I have some concerns about potential API burden associated with supporting the new definition matrix.to_euclidean_lin
but I think that as long as we have the definition euclidean_space
then it is justified to have this definition.
bors merge
Note that |
…ons (#18574) The preferred way to convert between `ι → 𝕜` and `euclidean_space 𝕜 ι` is via `pi_Lp.equiv`, as this preserves the right typing information. We use the local notation `⟪x, y⟫ₑ` to refer the euclidean inner product of `x y : ι → 𝕜`, which inserts the casting within the notation. This adds a new definition `matrix.to_euclidean_lin` as a shorthand to turn a matrix into a `linear_map` over `euclidean_space`. It also generalizes `inner_matrix_row_row` and `inner_matrix_col_col` away from `fin n` to arbitrary index types.
Pull request successfully merged into master. Build succeeded: |
The preferred way to convert between
ι → 𝕜
andeuclidean_space 𝕜 ι
is viapi_Lp.equiv
, as this preserves the right typing information.We use the local notation
⟪x, y⟫ₑ
to refer the euclidean inner product ofx y : ι → 𝕜
, which inserts the casting within the notation.This adds a new definition
matrix.to_euclidean_lin
as a shorthand to turn a matrix into alinear_map
overeuclidean_space
.It also generalizes
inner_matrix_row_row
andinner_matrix_col_col
away fromfin n
to arbitrary index types.Similar to
pi_Lp.equiv
#17327