-
Notifications
You must be signed in to change notification settings - Fork 331
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(LinearAlgebra/BilinearForm/TensorProduct): base change of bilinear forms #6306
Conversation
…asic-TensorProduct.congr
…asic-TensorProduct.congr
…asic-TensorProduct.congr
…ra instance This also moves some lemmas about `IsUnit (_ : Module.End R M)` to an earlier file as they are nothing to do with `Algebra`.
4151d50
to
6a10f7e
Compare
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!
bors d+
variable [SMulCommClass R A M₁] [SMulCommClass A R M₁] [IsScalarTower R A M₁] | ||
variable [Module R M₂] | ||
|
||
/-- The tensor product of two bilinear forms injects into bilinear forms on tensor products. |
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 tensor product of two bilinear forms injects into bilinear forms on tensor products. | |
variable (R A) in | |
/-- The tensor product of two bilinear forms injects into bilinear forms on tensor products. |
Note this is heterobasic; the bilinear form on the left can take values in a larger ring than | ||
the one on the right. -/ |
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.
Note this is heterobasic; the bilinear form on the left can take values in a larger ring than | |
the one on the right. -/ | |
Note this is heterobasic; the bilinear form on the left can take values in an algebra over | |
the ring in which the right bilinear form is valued. -/ |
Mathlib/LinearAlgebra/Dual.lean
Outdated
@@ -1608,6 +1609,25 @@ theorem dualDistrib_apply (f : Dual R M) (g : Dual R N) (m : M) (n : N) : | |||
|
|||
end | |||
|
|||
namespace AlgebraTensorModule | |||
set_option autoImplicit false |
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.
set_option autoImplicit false |
✌️ eric-wieser can now approve this pull request. To approve and merge a pull request, simply reply with |
bors merge |
…ar forms (#6306) This generalizes the existing `BilinForm.tensorDistrib` to be heterogenous in the rings it uses, such that a base change, ```lean protected def baseChange (B : BilinForm R M₂) : BilinForm A (A ⊗[R] M₂) := ``` falls out as a special case. I do not attempt to generalize `BilinForm.tensorDistribEquiv`. Unfortunately, this changes the defeq as ```diff -(B₁.tmul B₂) (m₁ ⊗ₜ m₂) (m₁' ⊗ₜ m₂') = B₁ m₁ m₁' * B₂ m₂ m₂' +(B₁.tmul B₂) (m₁ ⊗ₜ m₂) (m₁' ⊗ₜ m₂') = B₂ m₂ m₂' • B₁ m₁ m₁' ``` We could fix this by using the right action instead, but that's a lot of work for a very minorly annoying defeq. This also breaks the defeq of `tensorDistribEquiv B = tensorDistrib B`; though the reason is more complicated than the scalar action issue above. It would be fixed if we defined all the homogenous operations on tensor products as special cases of the heterogenous ones, but that's also a lot of work for a very small win. This is a port of work from pygae/lean-ga#31, and almost at the end of the path to a base change of quadratic forms and clifford algebras. This was independently developed at the Leiden workshop as [`BilinForm.baseChange`](https://github.com/alexjbest/ant-lorentz/blob/1f97add294b2d50f99537c15583666d78b0d7e24/AntLorentz/BaseChange.lean#L75-L85), though the results there are not sorry-free.
This PR was included in a batch that was canceled, it will be automatically retried |
…ar forms (#6306) This generalizes the existing `BilinForm.tensorDistrib` to be heterogenous in the rings it uses, such that a base change, ```lean protected def baseChange (B : BilinForm R M₂) : BilinForm A (A ⊗[R] M₂) := ``` falls out as a special case. I do not attempt to generalize `BilinForm.tensorDistribEquiv`. Unfortunately, this changes the defeq as ```diff -(B₁.tmul B₂) (m₁ ⊗ₜ m₂) (m₁' ⊗ₜ m₂') = B₁ m₁ m₁' * B₂ m₂ m₂' +(B₁.tmul B₂) (m₁ ⊗ₜ m₂) (m₁' ⊗ₜ m₂') = B₂ m₂ m₂' • B₁ m₁ m₁' ``` We could fix this by using the right action instead, but that's a lot of work for a very minorly annoying defeq. This also breaks the defeq of `tensorDistribEquiv B = tensorDistrib B`; though the reason is more complicated than the scalar action issue above. It would be fixed if we defined all the homogenous operations on tensor products as special cases of the heterogenous ones, but that's also a lot of work for a very small win. This is a port of work from pygae/lean-ga#31, and almost at the end of the path to a base change of quadratic forms and clifford algebras. This was independently developed at the Leiden workshop as [`BilinForm.baseChange`](https://github.com/alexjbest/ant-lorentz/blob/1f97add294b2d50f99537c15583666d78b0d7e24/AntLorentz/BaseChange.lean#L75-L85), though the results there are not sorry-free.
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. |
This generalizes the existing
BilinForm.tensorDistrib
to be heterogenous in the rings it uses, such that a base change,falls out as a special case. I do not attempt to generalize
BilinForm.tensorDistribEquiv
.Unfortunately, this changes the defeq as
We could fix this by using the right action instead, but that's a lot of work for a very minorly annoying defeq.
This also breaks the defeq of
tensorDistribEquiv B = tensorDistrib B
; though the reason is more complicated than the scalar action issue above. It would be fixed if we defined all the homogenous operations on tensor products as special cases of the heterogenous ones, but that's also a lot of work for a very small win.This is a port of work from pygae/lean-ga#31, and almost at the end of the path to a base change of quadratic forms and clifford algebras.
This was independently developed at the Leiden workshop as
BilinForm.baseChange
, though the results there are not sorry-free.