Contractions #
Given modules $M, N$ over a commutative ring $R$, this file defines the natural linear maps: $M^* \otimes M \to R$, $M \otimes M^* \to R$, and $M^* \otimes N → Hom(M, N)$, as well as proving some basic properties of these maps.
It also constructs linear equivalences between tensor products of hom modules and hom modules of tensor products:
lTensorHomEquivHomLTensor:P ⊗ Hom(M, Q) ≃ₗ Hom(M, P ⊗ Q)forMfinite projectiverTensorHomEquivHomRTensor:Hom(M, P) ⊗ Q ≃ₗ Hom(M, P ⊗ Q)forMfinite projectiveTensorProduct.homTensorHomEquiv:Hom(M, P) ⊗ Hom(N, Q) ≃ₗ Hom(M ⊗ N, P ⊗ Q)forM,Nfinite projectiveTensorProduct.dualDistribEquiv:Dual M ⊗ Dual N ≃ₗ Dual (M ⊗ N)forM,Nfinite projective
Tags #
contraction, dual module, tensor product
The natural left-handed pairing between a module and its dual.
Equations
- contractLeft R M = (TensorProduct.uncurry (RingHom.id R) (Module.Dual R M) M R).toFun LinearMap.id
Instances For
The natural right-handed pairing between a module and its dual.
Equations
- contractRight R M = (TensorProduct.uncurry (RingHom.id R) M (Module.Dual R M) R).toFun LinearMap.id.flip
Instances For
The natural map associating a linear map to the tensor product of two modules.
Equations
- dualTensorHom R M N = (TensorProduct.uncurry (RingHom.id R) (Module.Dual R M) N (M →ₗ[R] N)) LinearMap.smulRightₗ
Instances For
As a matrix, dualTensorHom evaluated on a basis element of M* ⊗ N is a matrix with a
single one and zeros elsewhere
If the identity linear map lies in the range of the canonical map M* ⊗[R] M → Hom_R(M, M),
then M is a finite projective R-module (finite part).
If the identity linear map lies in the range of the canonical map M* ⊗[R] M → Hom_R(M, M),
then M is a finite projective R-module (projective part).
If M is free, the natural linear map $M^* ⊗ N → Hom(M, N)$ is an equivalence. This function
provides this equivalence in return for a basis of M.
Equations
- dualTensorHomEquivOfBasis b = LinearEquiv.ofLinearMap (dualTensorHom R M N) (∑ i : ι, (TensorProduct.mk R (Module.Dual R M) N) (b.dualBasis i) ∘ₗ LinearMap.applyₗ (b i)) ⋯ ⋯
Instances For
If M is finite projective, the natural map $M^* ⊗ N → Hom(M, N)$ is an equivalence.
Equations
- dualTensorHomEquiv R M N = LinearEquiv.ofBijective (dualTensorHom R M N) ⋯
Instances For
When M is a finite projective module, the map lTensorHomToHomLTensor is an equivalence. Note
that lTensorHomEquivHomLTensor is not defined directly in terms of
lTensorHomToHomLTensor, but the equivalence between the two is given by
lTensorHomEquivHomLTensor_toLinearMap and lTensorHomEquivHomLTensor_apply.
Equations
- One or more equations did not get rendered due to their size.
Instances For
When M is a finite projective module, the map rTensorHomToHomRTensor is an equivalence. Note
that rTensorHomEquivHomRTensor is not defined directly in terms of
rTensorHomToHomRTensor, but the equivalence between the two is given by
rTensorHomEquivHomRTensor_toLinearMap and rTensorHomEquivHomRTensor_apply.
Equations
- One or more equations did not get rendered due to their size.
Instances For
When M and N are finite projective R modules, the map homTensorHomMap is an equivalence.
Equations
- homTensorHomEquiv R M N P Q = LinearEquiv.ofBijective (TensorProduct.homTensorHomMap (RingHom.id R) M N P Q) ⋯
Instances For
A linear equivalence between Dual M ⊗ Dual N and Dual (M ⊗ N) when M and N are finite
projective modules. It sends f ⊗ g to the composition of TensorProduct.map f g with the natural
isomorphism R ⊗ R ≃ R.
Note that dualDistribEquiv is not defined directly in terms of dualDistri, but the
equivalence between the two is given by toLinearMap_dualDistribEquiv and
dualDistribEquiv_tmul_tmul.
Equations
- TensorProduct.dualDistribEquiv R M N = (homTensorHomEquiv R M N R R).trans (TensorProduct.rid R R).congrRight
Instances For
An inverse to TensorProduct.dualDistrib given bases.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A linear equivalence between Dual M ⊗ Dual N and Dual (M ⊗ N) given bases for M and N.
It sends f ⊗ g to the composition of TensorProduct.map f g with the natural
isomorphism R ⊗ R ≃ R.