Evaluating the first isomorphism theorem on a class #
Mathlib packages the first isomorphism theorem for a surjective homomorphism φ : G →* M as
QuotientGroup.quotientKerEquivOfSurjective φ hφ : G ⧸ φ.ker ≃* M. It is defined through
QuotientGroup.quotientKerEquivOfRightInverse applied to a right inverse extracted from hφ
by choice, so evaluating it on a class otherwise means unfolding that noncomputable
implementation. Likewise, QuotientGroup.quotientKerEquivRange φ : G ⧸ φ.ker ≃* φ.range is
built with MulEquiv.ofBijective from QuotientGroup.rangeKerLift, and Mathlib states no
evaluation rule for it.
This file records the computation rules on classes, so that users never have to. The first is
the group-theoretic counterpart of Mathlib's RingHom.quotientKerEquivOfSurjective_apply_mk;
both belong beside their definitions in Mathlib.
Main statements #
TauCeti.QuotientGroup.quotientKerEquivOfSurjective_apply_mk: the isomorphismG ⧸ φ.ker ≃* Msends the class ofgtoφ g; its additive counterpart isTauCeti.QuotientAddGroup.quotientKerEquivOfSurjective_apply_mk.TauCeti.QuotientGroup.quotientKerEquivRange_apply_mk: the isomorphismG ⧸ φ.ker ≃* φ.rangesends the class ofgtoφ g; its additive counterpart isTauCeti.QuotientAddGroup.quotientKerEquivRange_apply_mk.
The first isomorphism theorem for a surjective homomorphism sends the class of g to
φ g.
The first isomorphism theorem for a surjective additive homomorphism sends the class of
g to φ g.