Zulip Chat Archive
Stream: Is there code for X?
Topic: tensor product 1 equal iff equal?
Edison Xie (Jan 16 2025 at 10:44):
import Mathlib
open TensorProduct
variable (K A B: Type*) [Field K] [Ring A] [Ring B] [Algebra K A] [Algebra K B]
[Nontrivial A] [Nontrivial B] [hab : Algebra.IsCentral K (A ⊗[K] B)] (a1 a2 : A)
lemma test (h : a1 ⊗ₜ (1 : B) = a2 ⊗ₜ[K] (1 : B)) : a1 = a2 := by sorry
Do we have any theorems about it? (Or is it even true?)
Johan Commelin (Jan 16 2025 at 10:47):
This should follow from flatness, right?
Eric Wieser (Jan 16 2025 at 10:51):
@loogle "rtensor", Function.Injective
loogle (Jan 16 2025 at 10:51):
:search: LinearMap.lTensor_inj_iff_rTensor_inj, rTensor_injective_iff_lcomp_surjective, and 17 more
Edison Xie (Jan 16 2025 at 10:56):
hmmm yeah it surely should have something to do with flatness but I can't find a theorem that does the trick
Edison Xie (Jan 16 2025 at 11:00):
Or equivalently, should there be an injective lemma about Algebra.TensorProduct.includeLeft
?
Eric Wieser (Jan 16 2025 at 11:09):
Is the proof just algebraMap_injective
?
Edison Xie (Jan 16 2025 at 11:10):
(deleted)
Edison Xie (Jan 16 2025 at 11:16):
(deleted)
Edison Xie (Jan 16 2025 at 12:07):
why is it algebraMap_injective
?
Kevin Buzzard (Jan 16 2025 at 12:12):
because algebraMap a = a tensor 1 (you have to find the right algebraMap_injective though, that's the exercise)
Edison Xie (Jan 16 2025 at 12:14):
Kevin Buzzard said:
because algebraMap a = a tensor 1.
you mean A ⊗[K] B
as an A
-algebra?
Edison Xie (Jan 16 2025 at 12:16):
and which algebraMap_injective
are we talking about? NoZeroSmulDivisors.algebraMap_injective
?
Andrew Yang (Jan 16 2025 at 12:20):
No this wouldn’t work because A is noncommutative so there is no algebra instance
Edison Xie (Jan 16 2025 at 12:21):
yeah the main problem is A
is non-commutative
Andrew Yang (Jan 16 2025 at 12:34):
You probably want something like
lemma TensorProduct.flip_mk_injective {R M N : Type*} [CommRing R] [AddCommGroup M] [AddCommGroup N]
[Module R M] [Module R N] [NoZeroSMulDivisors R N] [Module.Flat R M] (a : N) (ha : a ≠ 0) :
Function.Injective ((TensorProduct.mk R M N).flip a) := by
intro x y e
apply (TensorProduct.rid R M).symm.injective
apply Module.Flat.lTensor_preserves_injective_linearMap (M := M) (LinearMap.toSpanSingleton R N a)
(smul_left_injective R ha)
simpa using e
Edison Xie (Jan 16 2025 at 15:14):
Yes thank you! Is it in mathlib
already? If not do you mind PR this? :))
Last updated: May 02 2025 at 03:31 UTC