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