Module docstring
{"### Products of modules
This file defines constructors for linear maps whose domains or codomains are products.
It contains theorems relating these to each other, as well as to Submodule.prod, Submodule.map,
Submodule.comap, LinearMap.range, and LinearMap.ker.
Main definitions
- products in the domain:
LinearMap.fstLinearMap.sndLinearMap.coprodLinearMap.prod_ext
- products in the codomain:
LinearMap.inlLinearMap.inrLinearMap.prod
- products in both domain and codomain:
LinearMap.prodMapLinearEquiv.prodMapLinearEquiv.skewProd","## Tunnels and tailings
NOTE: The proof of strong rank condition for noetherian rings is changed.
LinearMap.tunnel and LinearMap.tailing are not used in mathlib anymore.
These are marked as deprecated with no replacements.
If you use them in external projects, please consider using other arguments instead.
Some preliminary work for establishing the strong rank condition for noetherian rings.
Given a morphism f : M × N →ₗ[R] M which is i : Injective f,
we can find an infinite decreasing tunnel f i n of copies of M inside M,
and sitting beside these, an infinite sequence of copies of N.
We picturesquely name these as tailing f i n for each individual copy of N,
and tailings f i n for the supremum of the first n+1 copies:
they are the pieces left behind, sitting inside the tunnel.
By construction, each tailing f i (n+1) is disjoint from tailings f i n;
later, when we assume M is noetherian, this implies that N must be trivial,
and establishes the strong rank condition for any left-noetherian ring.
"}