Zulip Chat Archive

Stream: Is there code for X?

Topic: Tensor product on linear maps


Ivรกn Renison (Apr 23 2025 at 09:41):

Hi, do we have something like this?

def LinearMap_tmul (T N : E โ†’โ‚—[๐•œ] E) : E โŠ—[๐•œ] E โ†’โ‚—[๐•œ] E โŠ—[๐•œ] E

I now that with T โŠ—โ‚œ[๐•œ] N I get a (E โ†’โ‚—[๐•œ] E) โŠ—[๐•œ] (E โ†’โ‚—[๐•œ] E), witch is kind of equivalent to E โŠ—[๐•œ] E โ†’โ‚—[๐•œ] E โŠ—[๐•œ] E, but it not the same type (it can't be used as a function) and I have not found a way of converting from one to the other

Kevin Buzzard (Apr 23 2025 at 09:43):

What do you mean by "kind of equivalent"?

Kevin Buzzard (Apr 23 2025 at 09:45):

By the way tmul means "tensoring elements together" so that's definitely not the right name for what you're looking for -- theorems with tmul in will talk about xโŠ—yx\otimes y not VโŠ—WV\otimes W.

Ivรกn Renison (Apr 23 2025 at 09:47):

Kevin Buzzard said:

What do you mean by "kind of equivalent"?

I'm not sure
What I now is that when having explicit matrices and vectores (informal speaking) they are isomorphism (if not the same)

Kevin Buzzard (Apr 23 2025 at 09:48):

But not canonically, right? There's no natural way to get from one to the other without picking a basis I don't think.

Jz Pan (Apr 23 2025 at 09:48):

docs#TensorProduct.map ?

Kevin Buzzard (Apr 23 2025 at 09:49):

Here's how to answer your question:

@loogle LinearMap, TensorProduct

loogle (Apr 23 2025 at 09:49):

:search: TensorProduct.Neg.aux, LinearMap.lTensor, and 847 more

Kevin Buzzard (Apr 23 2025 at 09:49):

oh yikes that's too many

Kevin Buzzard (Apr 23 2025 at 09:49):

oh but it's only the 6th one down, and Jz has already told you the answer :-)

Jz Pan (Apr 23 2025 at 09:51):

Ivรกn Renison said:

(E โ†’โ‚—[๐•œ] E) โŠ—[๐•œ] (E โ†’โ‚—[๐•œ] E), witch is kind of equivalent to E โŠ—[๐•œ] E โ†’โ‚—[๐•œ] E โŠ—[๐•œ] E

Really? I don't know how to get two E โ†’โ‚—[๐•œ] E back from an element of E โŠ—[๐•œ] E โ†’โ‚—[๐•œ] E โŠ—[๐•œ] E.

Ivรกn Renison (Apr 23 2025 at 09:52):

Jz Pan said:

docs#TensorProduct.map ?

Thanks

Kevin Buzzard (Apr 23 2025 at 09:52):

If everything is finite-dimensional then V tensor W and Hom(V,W) have the same dimension so if you pick bases they'll be noncanonically isomorphic.

Ivรกn Renison (Apr 23 2025 at 09:52):

You are right

Ivรกn Renison (Apr 23 2025 at 09:52):

I was a little confused

Kevin Buzzard (Apr 23 2025 at 09:52):

This is how matrices and vectors can be misleading.

Kevin Buzzard (Apr 23 2025 at 09:53):

It's a shame that

@loogle (?A โŠ—[?k] ?B) โ†’โ‚—[?k] (?C โŠ—[?k] ?D)

doesn't work

loogle (Apr 23 2025 at 09:53):

:exclamation: <input>:1:4: expected token

Kevin Buzzard (Apr 23 2025 at 09:54):

set_option pp.notation false in
#check E โŠ—[๐•œ] E โ†’โ‚—[๐•œ] E โŠ—[๐•œ] E

gives

LinearMap (RingHom.id ๐•œ) (TensorProduct ๐•œ E E) (TensorProduct ๐•œ E E) : Type

Yaรซl Dillies (Apr 23 2025 at 09:55):

docs#TensorProduct.map ?

Kevin Buzzard (Apr 23 2025 at 09:55):

yes we got there a while ago :-)

Yaรซl Dillies (Apr 23 2025 at 09:55):

Sorry, I sent this message 12min ago

Kevin Buzzard (Apr 23 2025 at 09:55):

The game now is to make loogle find it painlessly

Kevin Buzzard (Apr 23 2025 at 09:56):

@loogle |- LinearMap (RingHom.id ?k) (TensorProduct ?k ?A ?B) (TensorProduct ?k ?C ?D)

loogle (Apr 23 2025 at 09:56):

:search: TensorProduct.Neg.aux, LinearMap.lTensor, and 3 more

Kevin Buzzard (Apr 23 2025 at 09:56):

That's a bit more reasonable

Jz Pan (Apr 23 2025 at 09:57):

Frankly, in mathematics don't know how to construct (E โŠ—[๐•œ] E โ†’โ‚—[๐•œ] E โŠ—[๐•œ] E) โ†’โ‚—[๐•œ] ((E โ†’โ‚—[๐•œ] E) โŠ—[๐•œ] (E โ†’โ‚—[๐•œ] E))

Kevin Buzzard (Apr 23 2025 at 09:59):

If E is finite-dimensional and you pick an ordered basis of E and then choose a method of getting ordered bases of V tensor W and Hom(V,W) from ordered bases of V and W and then you identify every n-dimensional vector space equipped with an ordered basis with k^n then it's just the identity map.

Kevin Buzzard (Apr 23 2025 at 10:00):

If you think about it this way then you can see they are kind of equivalent.

Kevin Buzzard (Apr 23 2025 at 10:00):

This is exactly how not to do linear algebra.

Jz Pan (Apr 23 2025 at 10:02):

OK the bundled version is docs#TensorProduct.homTensorHomMap

Jz Pan (Apr 23 2025 at 10:03):

If it is bijective then it is indeed an isomorphism. Although we don't know how to write down its inverse.

Jz Pan (Apr 23 2025 at 10:07):

Kevin Buzzard said:

If everything is finite-dimensional then V tensor W and Hom(V,W) have the same dimension so if you pick bases they'll be noncanonically isomorphic.

But this argument indeed shows that the canonical forward map is bijective. So it is isomorphic. The inverse map must also be "canonical"...

Kevin Buzzard (Apr 23 2025 at 10:20):

We are identifying a finite-dimensional vector space with its dual here, nothing is canonical.

Kevin Buzzard (Apr 23 2025 at 10:22):

The canonical thing is that in the finite-dimensional case Hom(V,Wโˆ—)=(VโŠ—W)โˆ—Hom(V,W^*)=(V\otimes W)^* (this is just curry/uncurry) and if everything is equal to its dual because the transpose of a row vector is a column vector then you can just remove the stars.

Eric Wieser (Apr 23 2025 at 14:14):

Kevin Buzzard said:

It's a shame that

...

doesn't work

@loogle open scoped TensorProduct in (?A โŠ—[?k] ?B) โ†’โ‚—[?k] (?C โŠ—[?k] ?D)

loogle (Apr 23 2025 at 14:14):

:search: TensorProduct.Neg.aux, LinearMap.lTensor, and 293 more

Eric Wieser (Apr 23 2025 at 14:17):

Kevin Buzzard said:

But not canonically, right? There's no natural way to get from one to the other without picking a basis I don't think.

@loogle open scoped TensorProduct in (_ โ†’โ‚—[?๐•œ] _) โŠ—[?๐•œ] (_ โ†’โ‚—[?๐•œ] _), open scoped TensorProduct in (_ โŠ—[?๐•œ] _) โ†’โ‚—[?๐•œ] (_ โŠ—[?๐•œ] _)

loogle (Apr 23 2025 at 14:17):

:search: TensorProduct.homTensorHomMap, TensorProduct.homTensorHomMap_apply, and 4 more

Eric Wieser (Apr 23 2025 at 14:19):

So docs#homTensorHomEquiv is the basis-agnostic equivalence (it doesn't depend on the choice, but does still need one)


Last updated: May 02 2025 at 03:31 UTC