Zulip Chat Archive

Stream: Is there code for X?

Topic: Tensor maps


Leo Mayer (Apr 07 2022 at 23:21):

If I have an R-algebra A, is there an easy way to access the multiplication as a map (A ⊗[R] A) →ₐ[R] A? (I'm trying to implement Hopf algebras)?

Heather Macbeth (Apr 07 2022 at 23:26):

@Leo Mayer I think this is docs#algebra.lmul'

Leo Mayer (Apr 07 2022 at 23:33):

I think I need it as an R-algebra map, not just as an R-linear map.
Maybe I should build an R-algebra map out of that? If this isn't in mathlib, should it be?

Heather Macbeth (Apr 07 2022 at 23:36):

I see. Do we even have the notion of the tensor product of algebras?

Adam Topaz (Apr 07 2022 at 23:38):

It should obtain an algebra instance automatically

Leo Mayer (Apr 07 2022 at 23:38):

Here's the tensor product of algebras

Adam Topaz (Apr 07 2022 at 23:40):

import ring_theory.tensor_product

variables (A R : Type*) [comm_ring A] [comm_ring R] [algebra A R]

open_locale tensor_product

example : algebra A (R [A] R) := infer_instance

example : (R [A] R) →ₐ[A] R := algebra.tensor_product.lmul' A

Adam Topaz (Apr 07 2022 at 23:40):

Found using library search

Adam Topaz (Apr 07 2022 at 23:41):

BTW it looks like @Vasily Ilin might also be working on Hopf algebras.

Leo Mayer (Apr 07 2022 at 23:42):

Thanks Adam!
Vas and I are working together on it!

Adam Topaz (Apr 07 2022 at 23:42):

Great! Looking forward to seeing this in mathlib!

Vasily Ilin (Apr 07 2022 at 23:42):

We are workign on it together

Leo Mayer (Apr 08 2022 at 00:18):

Is there a way for lean to apply natural isomorphisms automatically as coersions? For example, all of the diagrams defining hopf algebras make use of associativity of tensor product or the fact that the base ring is a tensor identity, and it's quickly making the code cumbersome.

import ring_theory.tensor_product

open_locale tensor_product
open algebra.tensor_product

structure hopf_algebra (K : Type) [field K] (V : Type) [comm_ring V] [algebra K V] :=
(comul : V →ₐ[K] (V [K] V))
(counit : V →ₐ[K] K)
(coassoc : (tensor_product.assoc K V V V)  (map comul (alg_hom.id K V))  comul = map (alg_hom.id K V) comul  comul)
(counit_left : (tensor_product.lid K V)  (map counit (alg_hom.id K V))  comul = (alg_hom.id K V))
(counit_right : (tensor_product.rid K V)  (map (alg_hom.id K V) counit)  comul = (alg_hom.id K V))
(coinv : V →ₐ[K] V)
(coinv_right : (lmul' K)  (map (alg_hom.id K V) coinv)  comul = (algebra.of_id K V)  counit)
(coinv_left : (lmul' K)  (map coinv (alg_hom.id K V))  comul = (algebra.of_id K V)  counit)

Scott Morrison (Apr 08 2022 at 02:24):

Sorry. :-) Cleverly chosen simp normal forms, and writing domain specific tactics?

Scott Morrison (Apr 08 2022 at 02:24):

I'd try to tempt you into defining a hopf algebra internal to any monoidal category. Some things get harder, but you can also use the nice new coherence tactic for assistance dealing with associators.


Last updated: Dec 20 2023 at 11:08 UTC