Skip to content

Conversation

@eric-wieser
Copy link
Member

@eric-wieser eric-wieser commented Aug 2, 2023

This generalizes the existing BilinForm.tensorDistrib to be heterogenous in the rings it uses, such that a base change,

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

-(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, though the results there are not sorry-free.


Open in Gitpod

@eric-wieser eric-wieser added awaiting-review awaiting-CI This PR doesn't pass CI yet. This label is automatically removed once it does. and removed WIP Work in progress labels Aug 9, 2023
@eric-wieser eric-wieser requested a review from alexjbest August 9, 2023 13:20
@github-actions github-actions bot removed the awaiting-CI This PR doesn't pass CI yet. This label is automatically removed once it does. label Aug 9, 2023
@eric-wieser eric-wieser requested a review from kbuzzard August 10, 2023 14:39
@leanprover-community-mathlib4-bot leanprover-community-mathlib4-bot added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Aug 10, 2023
@eric-wieser eric-wieser removed the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Aug 10, 2023
@leanprover-community-mathlib4-bot leanprover-community-mathlib4-bot added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Aug 14, 2023
@leanprover-community-mathlib4-bot leanprover-community-mathlib4-bot removed the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Aug 14, 2023
Copy link
Contributor

@ocfnash ocfnash left a 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.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
/-- 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.

Comment on lines 42 to 43
Note this is heterobasic; the bilinear form on the left can take values in a larger ring than
the one on the right. -/
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
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. -/

end

namespace AlgebraTensorModule
set_option autoImplicit false
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
set_option autoImplicit false

@bors
Copy link

bors bot commented Aug 17, 2023

✌️ eric-wieser can now approve this pull request. To approve and merge a pull request, simply reply with bors r+. More detailed instructions are available here.

@leanprover-community-mathlib4-bot leanprover-community-mathlib4-bot added delegated This pull request has been delegated to the PR author (or occasionally another non-maintainer). and removed awaiting-review labels Aug 17, 2023
@eric-wieser
Copy link
Member Author

bors merge

@github-actions github-actions bot added the ready-to-merge This PR has been sent to bors. label Aug 17, 2023
bors bot pushed a commit that referenced this pull request Aug 17, 2023
…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.
@bors
Copy link

bors bot commented Aug 17, 2023

This PR was included in a batch that was canceled, it will be automatically retried

bors bot pushed a commit that referenced this pull request Aug 17, 2023
…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.
@bors
Copy link

bors bot commented Aug 17, 2023

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.
For more help, visit the forum.

If you want to switch to GitHub's built-in merge queue, visit their help page.

@bors bors bot changed the title feat(LinearAlgebra/BilinearForm/TensorProduct): base change of bilinear forms [Merged by Bors] - feat(LinearAlgebra/BilinearForm/TensorProduct): base change of bilinear forms Aug 17, 2023
@bors bors bot closed this Aug 17, 2023
@bors bors bot deleted the eric-wieser/BilinForm.baseChange branch August 17, 2023 15:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

delegated This pull request has been delegated to the PR author (or occasionally another non-maintainer). ready-to-merge This PR has been sent to bors. t-algebra Algebra (groups, rings, fields, etc)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants