Tensor product of modules over commutative semirings. #
This file constructs the tensor product of modules over commutative semirings. Given a semiring R
and modules over it M
and N
, the standard construction of the tensor product is
TensorProduct R M N
. It is also a module over R
.
It comes with a canonical bilinear map
TensorProduct.mk R M N : M →ₗ[R] N →ₗ[R] TensorProduct R M N
.
Given any bilinear map f : M →ₗ[R] N →ₗ[R] P
, there is a unique linear map
TensorProduct.lift f : TensorProduct R M N →ₗ[R] P
whose composition with the canonical bilinear
map TensorProduct.mk
is the given bilinear map f
. Uniqueness is shown in the theorem
TensorProduct.lift.unique
.
Notation #
- This file introduces the notation
M ⊗ N
andM ⊗[R] N
for the tensor product spaceTensorProduct R M N
. - It introduces the notation
m ⊗ₜ n
andm ⊗ₜ[R] n
for the tensor product of two elements, otherwise written asTensorProduct.tmul R m n
.
Tags #
bilinear, tensor, tensor product
The relation on FreeAddMonoid (M × N)
that generates a congruence whose quotient is
the tensor product.
- of_zero_left {R : Type u_1} [CommSemiring R] {M : Type u_5} {N : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (n : N) : Eqv R M N (FreeAddMonoid.of (0, n)) 0
- of_zero_right {R : Type u_1} [CommSemiring R] {M : Type u_5} {N : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (m : M) : Eqv R M N (FreeAddMonoid.of (m, 0)) 0
- of_add_left {R : Type u_1} [CommSemiring R] {M : Type u_5} {N : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (m₁ m₂ : M) (n : N) : Eqv R M N (FreeAddMonoid.of (m₁, n) + FreeAddMonoid.of (m₂, n)) (FreeAddMonoid.of (m₁ + m₂, n))
- of_add_right {R : Type u_1} [CommSemiring R] {M : Type u_5} {N : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (m : M) (n₁ n₂ : N) : Eqv R M N (FreeAddMonoid.of (m, n₁) + FreeAddMonoid.of (m, n₂)) (FreeAddMonoid.of (m, n₁ + n₂))
- of_smul {R : Type u_1} [CommSemiring R] {M : Type u_5} {N : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (r : R) (m : M) (n : N) : Eqv R M N (FreeAddMonoid.of (r • m, n)) (FreeAddMonoid.of (m, r • n))
- add_comm {R : Type u_1} [CommSemiring R] {M : Type u_5} {N : Type u_6} [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (x y : FreeAddMonoid (M × N)) : Eqv R M N (x + y) (y + x)
Instances For
The tensor product of two modules M
and N
over the same commutative semiring R
.
The localized notations are M ⊗ N
and M ⊗[R] N
, accessed by open scoped TensorProduct
.
Equations
Instances For
The tensor product of two modules M
and N
over the same commutative semiring R
.
The localized notations are M ⊗ N
and M ⊗[R] N
, accessed by open scoped TensorProduct
.
Equations
Instances For
The tensor product of two modules M
and N
over the same commutative semiring R
.
The localized notations are M ⊗ N
and M ⊗[R] N
, accessed by open scoped TensorProduct
.
Equations
Instances For
Equations
Equations
Equations
Equations
Equations
Equations
The canonical function M → N → M ⊗ N
. The localized notations are m ⊗ₜ n
and m ⊗ₜ[R] n
,
accessed by open scoped TensorProduct
.
Equations
Instances For
The canonical function M → N → M ⊗ N
.
Equations
Instances For
The canonical function M → N → M ⊗ N
.
Equations
Instances For
Produces an arbitrary representation of the form mₒ ⊗ₜ n₀ + ...
.
Equations
Lift an R
-balanced map to the tensor product.
A map f : M →+ N →+ P
additive in both components is R
-balanced, or middle linear with respect
to R
, if scalar multiplication in either argument is equivalent, f (r • m) n = f m (r • n)
.
Note that strictly the first action should be a right-action by R
, but for now R
is commutative
so it doesn't matter.
Equations
Instances For
Equations
Equations
A typeclass for SMul
structures which can be moved across a tensor product.
This typeclass is generated automatically from an IsScalarTower
instance, but exists so that
we can also add an instance for AddCommGroup.toIntModule
, allowing z •
to be moved even if
R
does not support negation.
Note that Module R' (M ⊗[R] N)
is available even without this typeclass on R'
; it's only
needed if TensorProduct.smul_tmul
, TensorProduct.smul_tmul'
, or TensorProduct.tmul_smul
is
used.
Instances
Note that this provides the default CompatibleSMul R R M N
instance through
IsScalarTower.left
.
smul
can be moved from one side of the product to the other .
Auxiliary function to defining scalar multiplication on tensor product.
Equations
Instances For
Given two modules over a commutative semiring R
, if one of the factors carries a
(distributive) action of a second type of scalars R'
, which commutes with the action of R
, then
the tensor product (over R
) carries an action of R'
.
This instance defines this R'
action in the case that it is the left module which has the R'
action. Two natural ways in which this situation arises are:
- Extension of scalars
- A tensor product of a group representation with a module not carrying an action
Note that in the special case that R = R'
, since R
is commutative, we just get the usual scalar
action on a tensor product of two modules. This special case is important enough that, for
performance reasons, we define it explicitly below.
Equations
Equations
Equations
Equations
Equations
Equations
Alias of TensorProduct.tmul_eq_smul_one_tmul
.
Equations
Equations
SMulCommClass R' R'₂ M
implies SMulCommClass R' R'₂ (M ⊗[R] N)
IsScalarTower R'₂ R' M
implies IsScalarTower R'₂ R' (M ⊗[R] N)
IsScalarTower R'₂ R' N
implies IsScalarTower R'₂ R' (M ⊗[R] N)
A short-cut instance for the common case, where the requirements for the compatible_smul
instances are sufficient.
The canonical bilinear map M → N → M ⊗[R] N
.
Equations
Instances For
The simple (aka pure) elements span the tensor product.
Auxiliary function to constructing a linear map M ⊗ N → P
given a bilinear map M → N → P
with the property that its composition with the canonical bilinear map M → N → M ⊗ N
is
the given bilinear map M → N → P
.
Equations
Instances For
Constructing a linear map M ⊗ N → P
given a bilinear map M → N → P
with the property that
its composition with the canonical bilinear map M → N → M ⊗ N
is
the given bilinear map M → N → P
.
Equations
Instances For
This used to be an @[ext]
lemma, but it fails very slowly when the ext
tactic tries to apply
it in some cases, notably when one wants to show equality of two linear maps. The @[ext]
attribute is now added locally where it is needed. Using this as the @[ext]
lemma instead of
TensorProduct.ext'
allows ext
to apply lemmas specific to M →ₗ _
and N →ₗ _
.
See note [partially-applied ext lemmas].
Linearly constructing a linear map M ⊗ N → P
given a bilinear map M → N → P
with the property that its composition with the canonical bilinear map M → N → M ⊗ N
is
the given bilinear map M → N → P
.
Equations
Instances For
A linear equivalence constructing a linear map M ⊗ N → P
given a bilinear map M → N → P
with the property that its composition with the canonical bilinear map M → N → M ⊗ N
is
the given bilinear map M → N → P
.
Equations
Instances For
Given a linear map M ⊗ N → P
, compose it with the canonical bilinear map M → N → M ⊗ N
to
form a bilinear map M → N → P
.
Equations
Instances For
Given a linear map M ⊗ N → P
, compose it with the canonical bilinear map M → N → M ⊗ N
to
form a bilinear map M → N → P
.
Equations
Instances For
Two linear maps (M ⊗ N) ⊗ (P ⊗ Q) → S which agree on all elements of the form (m ⊗ₜ n) ⊗ₜ (p ⊗ₜ q) are equal.
The tensor product of modules is commutative, up to linear equivalence.
Equations
Instances For
If M and N are both R- and A-modules and their actions on them commute,
and if the A-action on M ⊗[R] N
can switch between the two factors, then there is a
canonical A-linear map from M ⊗[A] N
to M ⊗[R] N
.
Equations
Instances For
mapOfCompatibleSMul R A M N
is also R-linear.
Equations
Instances For
If the R- and A-actions on M and N satisfy CompatibleSMul
both ways,
then M ⊗[A] N
is canonically isomorphic to M ⊗[R] N
.
Equations
Instances For
The tensor product of a pair of linear maps between modules.
Equations
Instances For
Given linear maps f : M → P
, g : N → Q
, if we identify M ⊗ N
with N ⊗ M
and P ⊗ Q
with Q ⊗ P
, then this lemma states that f ⊗ g = g ⊗ f
.
Given submodules p ⊆ P
and q ⊆ Q
, this is the natural map: p ⊗ q → P ⊗ Q
.
Equations
Instances For
The tensor product of a pair of linear maps between modules, bilinear in both maps.
Equations
Instances For
The canonical linear map from P ⊗[R] (M →ₗ[R] Q)
to (M →ₗ[R] P ⊗[R] Q)
Equations
Instances For
The canonical linear map from (M →ₗ[R] P) ⊗[R] Q
to (M →ₗ[R] P ⊗[R] Q)
Equations
Instances For
The linear map from (M →ₗ P) ⊗ (N →ₗ Q)
to (M ⊗ N →ₗ P ⊗ Q)
sending f ⊗ₜ g
to
the TensorProduct.map f g
, the tensor product of the two maps.
Equations
Instances For
This is a binary version of TensorProduct.map
: Given a bilinear map f : M ⟶ P ⟶ Q
and a
bilinear map g : N ⟶ S ⟶ T
, if we think f
and g
as linear maps with two inputs, then
map₂ f g
is a bilinear map taking two inputs M ⊗ N → P ⊗ S → Q ⊗ S
defined by
map₂ f g (m ⊗ n) (p ⊗ s) = f m p ⊗ g n s
.
Mathematically, TensorProduct.map₂
is defined as the composition
M ⊗ N -map→ Hom(P, Q) ⊗ Hom(S, T) -homTensorHomMap→ Hom(P ⊗ S, Q ⊗ T)
.
Equations
Instances For
If M
and P
are linearly equivalent and N
and Q
are linearly equivalent
then M ⊗ N
and P ⊗ Q
are linearly equivalent.
Equations
Instances For
LinearMap.lTensor M f : M ⊗ N →ₗ M ⊗ P
is the natural linear map
induced by f : N →ₗ P
.
Equations
Instances For
LinearMap.rTensor M f : N₁ ⊗ M →ₗ N₂ ⊗ M
is the natural linear map
induced by f : N₁ →ₗ N₂
.
Equations
Instances For
Given a linear map f : N → P
, f ⊗ M
is injective if and only if M ⊗ f
is injective.
Given a linear map f : N → P
, f ⊗ M
is surjective if and only if M ⊗ f
is surjective.
Given a linear map f : N → P
, f ⊗ M
is bijective if and only if M ⊗ f
is bijective.
lTensorHom M
is the natural linear map that sends a linear map f : N →ₗ P
to M ⊗ f
.
See also Module.End.lTensorAlgHom
.
Equations
Instances For
rTensorHom M
is the natural linear map that sends a linear map f : N →ₗ P
to f ⊗ M
.
See also Module.End.rTensorAlgHom
.
Equations
Instances For
LinearEquiv.lTensor M f : M ⊗ N ≃ₗ M ⊗ P
is the natural linear equivalence
induced by f : N ≃ₗ P
.
Equations
Instances For
LinearEquiv.rTensor M f : N₁ ⊗ M ≃ₗ N₂ ⊗ M
is the natural linear equivalence
induced by f : N₁ ≃ₗ N₂
.
Equations
Instances For
Auxiliary function to defining negation multiplication on tensor product.
Equations
Instances For
Equations
Equations
While the tensor product will automatically inherit a ℤ-module structure from
AddCommGroup.toIntModule
, that structure won't be compatible with lemmas like tmul_smul
unless
we use a ℤ-Module
instance provided by TensorProduct.left_module
.
When R
is a Ring
we get the required TensorProduct.compatible_smul
instance through
IsScalarTower
, but when it is only a Semiring
we need to build it from scratch.
The instance diamond in compatible_smul
doesn't matter because it's in Prop
.