Skip to content

[Merged by Bors] - feat(RingTheory/TensorProduct): heterogenize#6417

Closed
eric-wieser wants to merge 8 commits intomasterfrom
eric-wieser/tensorproduct-towers-again
Closed

[Merged by Bors] - feat(RingTheory/TensorProduct): heterogenize#6417
eric-wieser wants to merge 8 commits intomasterfrom
eric-wieser/tensorproduct-towers-again

Conversation

@eric-wieser
Copy link
Copy Markdown
Member

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

This:

  • Improves the module docstring, which was both out of date and not very informative
  • Addresses a TODO to generalize includeLeft to commuting actions. As a result a few downstream results are changed to be about includeLeftRingHom or a ⊗ₜ 1, as carrying around the extra useless ring just makes the lemmas harder to use. Nothing seems to suffer from this change.
  • Introduces TensorProduct.AlgebraTensorModule.rid
  • Generalizes the following to work for towers of rings:
    • Algebra.TensorProduct.algHomOfLinearMapTensorProduct
    • Algebra.TensorProduct.map
    • Algebra.TensorProduct.congr
    • Algebra.TensorProduct.endTensorEndAlgHom
    • Algebra.TensorProduct.ext (and renames it to Algebra.TensorProduct.ext')
    • Algebra.TensorProduct.rid
  • Introduces a new Algebra.TensorProduct.ext which follows "partially-applied ext lemmas", and uses it to golf a proof in RingTheory/Etale.lean

I need many of these results for building AlgEquivs relating to the base change of clifford algebras.


Open in Gitpod

@eric-wieser eric-wieser added awaiting-review awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. labels Aug 7, 2023
@eric-wieser eric-wieser force-pushed the eric-wieser/tensorproduct-towers-again branch from 3ef7201 to 367508b Compare August 7, 2023 10:18
Comment on lines +604 to +637
theorem rid_tmul (r : R) (a : A) : (TensorProduct.rid R A : A ⊗ R → A) (a ⊗ₜ r) = r • a := by
simp [TensorProduct.rid]
theorem rid_tmul (r : R) (a : A) : TensorProduct.rid R S A (a ⊗ₜ r) = a * algebraMap _ _ r := rfl
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Is this change reasonable? Or was the old defeq better?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

lgtm

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I've pinged Kevin and Antoine on Zulip just to be safe; I'll probably merge tomorrow if they don't reply before then.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I have a slight preference for the old version, but I can't bet it is reasonable.
According to my own programming habit, keepingr • a (smul) as long as possible is safer, and one can always rewrite it to multiplication using algebraMap_eq_smul.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@AntoineChambert-Loir, note this is a * algebraMap _ _ r not algebraMap _ _ r * a; though admittedly that's only one more rewrite away.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I've changed it to r • a

Comment on lines -443 to +445
apply AlgHom.restrictScalars_injective R
apply TensorProduct.ext
intro b a
have : b ⊗ₜ[R] a = b • (1 : B) ⊗ₜ a := by rw [TensorProduct.smul_tmul', smul_eq_mul, mul_one]
rw [this, AlgHom.restrictScalars_apply, AlgHom.restrictScalars_apply, map_smul, map_smul]
congr 1
change
((f₁.restrictScalars R).comp TensorProduct.includeRight) a =
((f₂.restrictScalars R).comp TensorProduct.includeRight) a
congr 1
refine' FormallyUnramified.ext I ⟨2, hI⟩ _
intro x
exact AlgHom.congr_fun e (1 ⊗ₜ x)
ext : 1
· exact Subsingleton.elim _ _
· exact FormallyUnramified.ext I ⟨2, hI⟩ fun x => AlgHom.congr_fun e (1 ⊗ₜ x)
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Only after writing Algebra.TensorProduct.ext did I find out that there was a duplicate implementation hiding here!

@eric-wieser eric-wieser added the t-algebra Algebra (groups, rings, fields, etc) label Aug 7, 2023
Copy link
Copy Markdown
Member

@jcommelin jcommelin left a comment

Choose a reason for hiding this comment

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

bors d+

@bors
Copy link
Copy Markdown

bors bot commented Aug 7, 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.

@ghost ghost added delegated This pull request has been delegated to the PR author (or occasionally another non-maintainer). and removed awaiting-review labels Aug 7, 2023
Co-authored-by: Johan Commelin <johan@commelin.net>
@github-actions github-actions bot removed the awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. label Aug 7, 2023
@eric-wieser
Copy link
Copy Markdown
Member Author

bors merge

@github-actions github-actions bot added the ready-to-merge This PR has been sent to bors. label Aug 7, 2023
bors bot pushed a commit that referenced this pull request Aug 7, 2023
This:
* Improves the module docstring, which was both out of date and not very informative
* Addresses a `TODO` to generalize `includeLeft` to commuting actions. As a result a few downstream results are changed to be about `includeLeftRingHom` or `a ⊗ₜ 1`, as carrying around the extra useless ring just makes the lemmas harder to use. Nothing seems to suffer from this change.
* Introduces `TensorProduct.AlgebraTensorModule.rid`
* Generalizes the following to work for towers of rings:
  * `Algebra.TensorProduct.algHomOfLinearMapTensorProduct`
  * `Algebra.TensorProduct.map`
  * `Algebra.TensorProduct.congr`
  * `Algebra.TensorProduct.endTensorEndAlgHom`
  * `Algebra.TensorProduct.ext` (and renames it to `Algebra.TensorProduct.ext'`)
  * `Algebra.TensorProduct.rid`
* Introduces a new `Algebra.TensorProduct.ext` which follows "partially-applied ext lemmas", and uses it to golf a proof in `RingTheory/Etale.lean`
 
I need many of these results for building `AlgEquiv`s relating to the base change of clifford algebras.
@bors
Copy link
Copy Markdown

bors bot commented Aug 7, 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(RingTheory/TensorProduct): heterogenize [Merged by Bors] - feat(RingTheory/TensorProduct): heterogenize Aug 7, 2023
@bors bors bot closed this Aug 7, 2023
@bors bors bot deleted the eric-wieser/tensorproduct-towers-again branch August 7, 2023 17:45
kim-em pushed a commit that referenced this pull request Aug 14, 2023
This:
* Improves the module docstring, which was both out of date and not very informative
* Addresses a `TODO` to generalize `includeLeft` to commuting actions. As a result a few downstream results are changed to be about `includeLeftRingHom` or `a ⊗ₜ 1`, as carrying around the extra useless ring just makes the lemmas harder to use. Nothing seems to suffer from this change.
* Introduces `TensorProduct.AlgebraTensorModule.rid`
* Generalizes the following to work for towers of rings:
  * `Algebra.TensorProduct.algHomOfLinearMapTensorProduct`
  * `Algebra.TensorProduct.map`
  * `Algebra.TensorProduct.congr`
  * `Algebra.TensorProduct.endTensorEndAlgHom`
  * `Algebra.TensorProduct.ext` (and renames it to `Algebra.TensorProduct.ext'`)
  * `Algebra.TensorProduct.rid`
* Introduces a new `Algebra.TensorProduct.ext` which follows "partially-applied ext lemmas", and uses it to golf a proof in `RingTheory/Etale.lean`
 
I need many of these results for building `AlgEquiv`s relating to the base change of clifford algebras.
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.

3 participants