Right-exactness properties of tensor product #
Modules #
LinearMap.rTensor_surjectiveasserts that when one tensors a surjective map on the right, one still gets a surjective linear map. More generally,LinearMap.rTensor_rangecomputes the range ofLinearMap.rTensorLinearMap.lTensor_surjectiveasserts that when one tensors a surjective map on the left, one still gets a surjective linear map. More generally,LinearMap.lTensor_rangecomputes the range ofLinearMap.lTensorTensorProduct.rTensor_exactsays that when one tensors a short exact sequence on the right, one still gets a short exact sequence (right-exactness ofTensorProduct.rTensor), andrTensor.equivgives the LinearEquiv that follows from this combined withLinearMap.rTensor_surjective.TensorProduct.lTensor_exactsays that when one tensors a short exact sequence on the left, one still gets a short exact sequence (right-exactness ofTensorProduct.rTensor) andlTensor.equivgives the LinearEquiv that follows from this combined withLinearMap.lTensor_surjective.For
N : Submodule R M,LinearMap.exact_subtype_mkQ Nsays that the inclusion of the submodule and the quotient map form an exact pair, andlTensor_mkQcomputeker (lTensor Q (N.mkQ))and similarly forrTensor_mkQTensorProduct.map_kercomputes the kernel ofTensorProduct.map f g'in the presence of two short exact sequences.
The proofs are those of [bourbaki1989] (chap. 2, §3, n°6)
Algebras #
In the case of a tensor product of algebras, these results can be particularized to compute some kernels.
Algebra.TensorProduct.ker_mapcomputes the kernel ofAlgebra.TensorProduct.map f gAlgebra.TensorProduct.lTensor_kerandAlgebra.TensorProduct.rTensor_kercompute the kernels ofAlgebra.TensorProduct.map f idandAlgebra.TensorProduct.map id g
Note on implementation #
All kernels are computed by applying the first isomorphism theorem and establishing some isomorphisms.
The proofs are essentially done twice, once for
lTensorand then forrTensor. It is possible to applyTensorProduct.flipto deduce one of them from the other. However, this approach will lead to different isomorphisms, and it is not quicker.The proofs of
Ideal.map_includeLeft_eqandIdeal.map_includeRight_eqcould be easier ifI ⊗[R] Bwas naturally anA ⊗[R] Bmodule, and the map toA ⊗[R] Bwas known to be linear. This depends on the B-module structure on a tensor product whose use rapidly conflicts with everything…
TODO #
Treat the noncommutative case
Treat the case of modules over semirings (For a possible definition of an exact sequence of commutative semigroups, see [Grillet-1969b], Pierre-Antoine Grillet, The tensor product of commutative semigroups, Trans. Amer. Math. Soc. 138 (1969), 281-293, doi:10.1090/S0002-9947-1969-0237688-1 .)
If g is surjective, then lTensor Q g is surjective
If g is surjective, then rTensor Q g is surjective
The direct map in lTensor.equiv
Equations
- lTensor.toFun Q hfg = (LinearMap.range (LinearMap.lTensor Q f)).liftQ (LinearMap.lTensor Q g) ⋯
Instances For
The inverse map in lTensor.equiv_of_rightInverse (computably, given a right inverse)
Equations
- One or more equations did not get rendered due to their size.
Instances For
The inverse map in lTensor.equiv
Equations
- lTensor.inverse Q hfg hg = lTensor.inverse_of_rightInverse Q hfg ⋯
Instances For
For a surjective f : N →ₗ[R] P,
the natural equivalence between Q ⊗ N ⧸ (image of ker f) to Q ⊗ P
(computably, given a right inverse)
Equations
- lTensor.linearEquiv_of_rightInverse Q hfg hgh = { toLinearMap := lTensor.toFun Q hfg, invFun := ⇑(lTensor.inverse_of_rightInverse Q hfg hgh), left_inv := ⋯, right_inv := ⋯ }
Instances For
For a surjective f : N →ₗ[R] P,
the natural equivalence between Q ⊗ N ⧸ (image of ker f) to Q ⊗ P
Equations
- lTensor.equiv Q hfg hg = lTensor.linearEquiv_of_rightInverse Q hfg ⋯
Instances For
Tensoring an exact pair on the left gives an exact pair
Right-exactness of tensor product
The direct map in rTensor.equiv
Equations
- rTensor.toFun Q hfg = (LinearMap.range (LinearMap.rTensor Q f)).liftQ (LinearMap.rTensor Q g) ⋯
Instances For
The inverse map in rTensor.equiv_of_rightInverse (computably, given a right inverse)
Equations
- One or more equations did not get rendered due to their size.
Instances For
The inverse map in rTensor.equiv
Equations
- rTensor.inverse Q hfg hg = rTensor.inverse_of_rightInverse Q hfg ⋯
Instances For
For a surjective f : N →ₗ[R] P,
the natural equivalence between N ⊗[R] Q ⧸ (range (rTensor Q f)) and P ⊗[R] Q
(computably, given a right inverse)
Equations
- rTensor.linearEquiv_of_rightInverse Q hfg hgh = { toLinearMap := rTensor.toFun Q hfg, invFun := ⇑(rTensor.inverse_of_rightInverse Q hfg hgh), left_inv := ⋯, right_inv := ⋯ }
Instances For
For a surjective f : N →ₗ[R] P,
the natural equivalence between N ⊗[R] Q ⧸ (range (rTensor Q f)) and P ⊗[R] Q
Equations
- rTensor.equiv Q hfg hg = rTensor.linearEquiv_of_rightInverse Q hfg ⋯
Instances For
Tensoring an exact pair on the right gives an exact pair
Right-exactness of tensor product (rTensor)
Kernel of a product map (right-exactness of tensor product)
The ideal of A ⊗[R] B generated by I is the image of I ⊗[R] B
The ideal of A ⊗[R] B generated by I is the image of A ⊗[R] I
If g is surjective, then the kernel of (id A) ⊗ g is generated by the kernel of g
If f is surjective, then the kernel of f ⊗ (id B) is generated by the kernel of f
If f and g are surjective morphisms of algebras, then
the kernel of Algebra.TensorProduct.map f g is generated by the kernels of f and g