The A
-module structure on M ⊗[R] N
#
When M
is both an R
-module and an A
-module, and Algebra R A
, then many of the morphisms
preserve the actions by A
.
The Module
instance itself is provided elsewhere as TensorProduct.leftModule
. This file provides
more general versions of the definitions already in LinearAlgebra/TensorProduct
.
In this file, we use the convention that M
, N
, P
, Q
are all R
-modules, but only M
and
P
are simultaneously A
-modules.
Main definitions #
TensorProduct.AlgebraTensorModule.curry
TensorProduct.AlgebraTensorModule.uncurry
TensorProduct.AlgebraTensorModule.lcurry
TensorProduct.AlgebraTensorModule.lift
TensorProduct.AlgebraTensorModule.lift.equiv
TensorProduct.AlgebraTensorModule.mk
TensorProduct.AlgebraTensorModule.map
TensorProduct.AlgebraTensorModule.mapBilinear
TensorProduct.AlgebraTensorModule.congr
TensorProduct.AlgebraTensorModule.rid
TensorProduct.AlgebraTensorModule.homTensorHomMap
TensorProduct.AlgebraTensorModule.assoc
TensorProduct.AlgebraTensorModule.leftComm
TensorProduct.AlgebraTensorModule.rightComm
TensorProduct.AlgebraTensorModule.tensorTensorTensorComm
Implementation notes #
We could thus consider replacing the less general definitions with these ones. If we do this, we probably should still implement the less general ones as abbreviations to the more general ones with fewer type arguments.
Heterobasic version of TensorProduct.curry
:
Given a linear map M ⊗[R] N →[A] P
, compose it with the canonical
bilinear map M →[A] N →[R] M ⊗[R] N
to form a bilinear map M →[A] N →[R] P
.
Equations
- TensorProduct.AlgebraTensorModule.curry f = { toFun := ⇑(TensorProduct.curry (↑R f)), map_add' := ⋯, map_smul' := ⋯ }
Instances For
Just as TensorProduct.ext
is marked ext
instead of TensorProduct.ext'
, this is
a better ext
lemma than TensorProduct.AlgebraTensorModule.ext
below.
See note [partially-applied ext lemmas].
Heterobasic version of TensorProduct.lift
:
Constructing a linear map M ⊗[R] N →[A] P
given a bilinear map M →[A] N →[R] P
with the
property that its composition with the canonical bilinear map M →[A] N →[R] M ⊗[R] N
is
the given bilinear map M →[A] N →[R] P
.
Equations
- TensorProduct.AlgebraTensorModule.lift f = { toAddHom := (TensorProduct.lift (↑R f)).toAddHom, map_smul' := ⋯ }
Instances For
Heterobasic version of TensorProduct.uncurry
:
Linearly constructing a linear map M ⊗[R] N →[A] P
given a bilinear map M →[A] N →[R] P
with the property that its composition with the canonical bilinear map M →[A] N →[R] M ⊗[R] N
is
the given bilinear map M →[A] N →[R] P
.
Equations
- TensorProduct.AlgebraTensorModule.uncurry R A B M N P = { toFun := TensorProduct.AlgebraTensorModule.lift, map_add' := ⋯, map_smul' := ⋯ }
Instances For
Heterobasic version of TensorProduct.lcurry
:
Given a linear map M ⊗[R] N →[A] P
, compose it with the canonical
bilinear map M →[A] N →[R] M ⊗[R] N
to form a bilinear map M →[A] N →[R] P
.
Equations
- TensorProduct.AlgebraTensorModule.lcurry R A B M N P = { toFun := TensorProduct.AlgebraTensorModule.curry, map_add' := ⋯, map_smul' := ⋯ }
Instances For
Heterobasic version of TensorProduct.lift.equiv
:
A linear equivalence constructing a linear map M ⊗[R] N →[A] P
given a
bilinear map M →[A] N →[R] P
with the property that its composition with the
canonical bilinear map M →[A] N →[R] M ⊗[R] N
is the given bilinear map M →[A] N →[R] P
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Heterobasic version of TensorProduct.mk
:
The canonical bilinear map M →[A] N →[R] M ⊗[R] N
.
Equations
- TensorProduct.AlgebraTensorModule.mk R A M N = { toAddHom := (TensorProduct.mk R M N).toAddHom, map_smul' := ⋯ }
Instances For
Heterobasic version of TensorProduct.map
Equations
- One or more equations did not get rendered due to their size.
Instances For
Heterobasic version of LinearMap.lTensor
Equations
- TensorProduct.AlgebraTensorModule.lTensor A M = { toFun := fun (f : N →ₗ[R] Q) => TensorProduct.AlgebraTensorModule.map LinearMap.id f, map_add' := ⋯, map_smul' := ⋯ }
Instances For
Heterobasic version of LinearMap.rTensor
Equations
- TensorProduct.AlgebraTensorModule.rTensor R N = { toFun := fun (f : M →ₗ[A] P) => TensorProduct.AlgebraTensorModule.map f LinearMap.id, map_add' := ⋯, map_smul' := ⋯ }
Instances For
Heterobasic version of TensorProduct.map_bilinear
Equations
- TensorProduct.AlgebraTensorModule.mapBilinear R A B M N P Q = LinearMap.mk₂' B R TensorProduct.AlgebraTensorModule.map ⋯ ⋯ ⋯ ⋯
Instances For
Heterobasic version of TensorProduct.homTensorHomMap
Equations
Instances For
Heterobasic version of TensorProduct.congr
Equations
- TensorProduct.AlgebraTensorModule.congr f g = LinearEquiv.ofLinear (TensorProduct.AlgebraTensorModule.map ↑f ↑g) (TensorProduct.AlgebraTensorModule.map ↑f.symm ↑g.symm) ⋯ ⋯
Instances For
Heterobasic version of TensorProduct.rid
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Heterobasic version of TensorProduct.assoc
:
B
-linear equivalence between (M ⊗[A] P) ⊗[R] Q
and M ⊗[A] (P ⊗[R] Q)
.
Note this is especially useful with A = R
(where it is a "more linear" version of
TensorProduct.assoc
), or with B = A
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
B
-linear equivalence between M ⊗[A] (A ⊗[R] N)
and M ⊗[R] N
.
In particular useful with B = A
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Base change distributes over tensor product.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Heterobasic version of TensorProduct.leftComm
Equations
- One or more equations did not get rendered due to their size.
Instances For
A tensor product analogue of mul_right_comm
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Heterobasic version of tensorTensorTensorComm
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If A
is an R
-algebra, any R
-submodule p
of an R
-module M
may be pushed forward to
an A
-submodule of A ⊗ M
.
This "base change" operation is also known as "extension of scalars".
Equations
- Submodule.baseChange A p = Submodule.span A ↑(Submodule.map ((TensorProduct.mk R A M) 1) p)