Pre- and postcomposition with homomorphisms, as bijections on homomorphisms #
For a homomorphism f : M →* N and a commutative monoid P, Mathlib's MonoidHom.compHom' f is
precomposition with f, as a homomorphism (N →* P) →* M →* P. This file records that it is
bijective as soon as f is: Hom(-, P) takes isomorphisms to isomorphisms. The bundled form of
this fact is Mathlib's MulEquiv.monoidHomCongrLeft; the statement here is the one to use when
the isomorphism is given as a homomorphism known to be bijective, and the precomposition map is
the unbundled compHom'.
Dually, for f : N →* P between commutative monoids, MonoidHom.compHom f is postcomposition with
f, as a homomorphism (M →* N) →* M →* P. It is bijective as soon as f is injective and its
range contains every n-th root of unity of P, provided every element of M satisfies
a ^ n = 1: a homomorphism out of M takes values in the n-th roots of unity, so Hom(M, -)
sees such an f as an isomorphism. This is the form in which an injection of coefficient groups
whose image is the n-torsion induces bijections on duals.
The same transport principle applies to a perfect biadditive pairing: bijective changes of both variables and of the target preserve bijectivity of its curried homomorphism.
Main results #
MonoidHom.compHom'_bijective,AddMonoidHom.compHom'_bijective: precomposition with a bijective homomorphism is bijective on homomorphisms into a commutative monoid.MonoidHom.compHom_bijective_of_forall_pow_eq_one,AddMonoidHom.compHom_bijective_of_forall_nsmul_eq_zero: postcomposition with an injective homomorphism onto then-th roots of unity is bijective on homomorphisms out of a monoid killed byn.MonoidHom.compHom_bijective,AddMonoidHom.compHom_bijective: postcomposition with a bijective homomorphism is bijective on homomorphisms out of any monoid.AddMonoidHom.bijective_of_bijective_pairing: a perfect biadditive pairing remains perfect after bijective changes of variables and target.TauCeti.forall_eq_zero_and_exists_eq_of_bijective_of_addEquiv: a pairing that reads, through additive equivalences, as a bijective curried homomorphism separates the points of its second argument, and every homomorphism out of its first argument is pairing with some point.
Precomposition with a bijective homomorphism is bijective on homomorphisms into a commutative
monoid: Hom(-, P) takes isomorphisms to isomorphisms. The inverse is precomposition with the
inverse bijection.
Precomposition with a bijective homomorphism is bijective on homomorphisms into
a commutative additive monoid: Hom(-, P) takes isomorphisms to isomorphisms. The inverse is
precomposition with the inverse bijection.
A biadditive pairing remains perfect after bijective changes of variables and target.
A pairing pair : X → Y → Z that reads, through additive equivalences eX and eY, as a
bijective curried homomorphism α : Y₀ → (X₀ →+ Z) separates the points of its second argument,
and every homomorphism X →+ Z is pairing with some point of Y.
Postcomposition with an injective homomorphism f : N →* P is bijective on homomorphisms out
of a monoid M all of whose elements satisfy a ^ n = 1, provided the range of f contains every
n-th root of unity of P: every homomorphism M →* P takes values in the n-th roots of unity,
hence in the range of f, and so lifts uniquely through f.
Postcomposition with an injective homomorphism f : N →+ P is bijective on
homomorphisms out of an additive monoid M all of whose elements satisfy n • a = 0, provided the
range of f contains every element of P killed by n: every homomorphism M →+ P takes values
in the n-torsion, hence in the range of f, and so lifts uniquely through f.
Postcomposition with a bijective homomorphism f : N →* P is bijective on homomorphisms out of
any monoid: Hom(M, -) takes isomorphisms to isomorphisms. This is the case n = 0 of
MonoidHom.compHom_bijective_of_forall_pow_eq_one; the bundled form is Mathlib's
MulEquiv.monoidHomCongrRightEquiv.
Postcomposition with a bijective homomorphism f : N →+ P is bijective on
homomorphisms out of any additive monoid: Hom(M, -) takes isomorphisms to isomorphisms. This is
the case n = 0 of AddMonoidHom.compHom_bijective_of_forall_nsmul_eq_zero; the bundled form is
Mathlib's AddEquiv.addMonoidHomCongrRightEquiv.