Zulip Chat Archive
Stream: Is there code for X?
Topic: Maps from a tensor product of algebras
Kevin Buzzard (Mar 03 2025 at 16:30):
If is a commutative ring and are a family of commutative -algebras (indexed by a finite type ) then I claim that to give an -algebra map from to a commutative -algebra is to give -algebra maps from each to . Does this sound right? If so, do we have it? I'd never used MultilinearMap
and PiTensorProduct
until ten minutes ago but I've come up with this where I think all data is there and the only sorrys are proofs. This might not be idiomatic (especially constructing the multilinear map from the collection of linear maps, here I just used the default constructor).
import Mathlib.RingTheory.PiTensorProduct
variable {R : Type*} [CommRing R]
{ι : Type*} [Fintype ι] [DecidableEq ι] {A : ι → Type*}
[∀ i, CommRing (A i)] [∀ i, Algebra R (A i)]
(B : Type*) [CommRing B] [Algebra R B]
open TensorProduct PiTensorProduct
noncomputable def foo : ((⨂[R] i, A i) →ₐ[R] B) ≃ Π i, (A i) →ₐ[R] B where
toFun f i := f.comp (singleAlgHom i)
invFun g := liftAlgHom
⟨fun x ↦ ∏ (i : ι), g i (x i), sorry, sorry⟩ sorry sorry
left_inv f := by sorry
right_inv g := by sorry
Eric Wieser (Mar 03 2025 at 16:33):
docs#MultilinearMap.piFamily might be relevant
Adam Topaz (Mar 03 2025 at 16:36):
docs#PiTensorProduct.lift presumably?
Adam Topaz (Mar 03 2025 at 16:37):
Oh you already use that in liftAlgHom
Kevin Buzzard (Mar 03 2025 at 16:38):
That's the statement that -linear maps from the tensor product are the same thing as multilinear maps from the factors. I want that -algebra maps from the tensor product are the same thing as algebra maps from the factors.
Adam Topaz (Mar 03 2025 at 16:38):
yeah I see that.
Kevin Buzzard (Mar 03 2025 at 16:39):
(this is relevant for Grassmannians, is why I'm asking)
Adam Topaz (Mar 03 2025 at 16:39):
I'm guessing we don't have the thing you need on the MultiLinearMap
side :-/
Eric Wieser (Mar 03 2025 at 16:39):
Note that there are open PRs about grassmanians that might already contain this in some form, such as #11155
Adam Topaz (Mar 03 2025 at 16:43):
I mean the statement is definitely correct because the tensor product is the coproduct in the category of algebras.
Eric Wieser (Mar 03 2025 at 16:44):
noncomputable def foo : ((⨂[R] i, A i) →ₐ[R] B) ≃ Π i, (A i) →ₐ[R] B where
toFun f i := f.comp (singleAlgHom i)
invFun g := liftAlgHom (MultilinearMap.mkPiAlgebra _ _ _ |>.compLinearMap (g · |>.toLinearMap))
(by simp)
(fun x y => by simp [Finset.prod_mul_distrib])
left_inv f := by ext; simp; sorry
right_inv g := by ext; simp; sorry
is close
Aaron Liu (Mar 03 2025 at 17:05):
import Mathlib.RingTheory.PiTensorProduct
variable {R : Type*} [CommRing R]
{ι : Type*} [Fintype ι] [DecidableEq ι] {A : ι → Type*}
[∀ i, CommRing (A i)] [∀ i, Algebra R (A i)]
(B : Type*) [CommRing B] [Algebra R B]
open TensorProduct PiTensorProduct
noncomputable def foo : ((⨂[R] i, A i) →ₐ[R] B) ≃ Π i, (A i) →ₐ[R] B where
toFun f i := f.comp (singleAlgHom i)
invFun g := liftAlgHom (MultilinearMap.mkPiAlgebra _ _ _ |>.compLinearMap (g · |>.toLinearMap))
(by simp)
(fun x y => by simp [Finset.prod_mul_distrib])
left_inv f := by
ext
simp [← map_prod, ← tprod_prod, Finset.univ_prod_mulSingle]
right_inv g := by
ext
simp only [AlgHom.coe_comp, Function.comp_apply, singleAlgHom_apply, MonoidHom.mulSingle_apply,
liftAlgHom_apply, lift.tprod, MultilinearMap.compLinearMap_apply, AlgHom.toLinearMap_apply,
MultilinearMap.mkPiAlgebra_apply]
simp_rw [Pi.apply_mulSingle (fun i x ↦ g i x) (by simp)]
conv_lhs =>
rhs
intro
rw [Pi.mulSingle_comm]
simp
Robert Maxton (Mar 09 2025 at 08:28):
Adam Topaz said:
I mean the statement is definitely correct because the tensor product is the coproduct in the category of algebras.
Not having this def is in fact the reason I started writing colimits for RingCat
!
(... and then got distracted by life before finishing, oops >.>;)
Last updated: May 02 2025 at 03:31 UTC