Canonical homomorphism from a pair of monoids #
This file defines the construction of the canonical homomorphism from a pair of monoids.
Given two morphisms of monoids f : M →* P
and g : N →* P
where elements in the images
of the two morphisms commute, we obtain a canonical morphism
MonoidHom.noncommCoprod : M × N →* P
whose composition with inl M N
coincides with f
and whose composition with inr M N
coincides with g
.
There is an analogue MulHom.noncommCoprod
when f
and g
are only MulHom
s.
Main theorems: #
noncommCoprod_comp_inr
andnoncommCoprod_comp_inl
prove that the compositions ofMonoidHom.noncommCoprod f g _
withinl M N
andinr M N
coincide withf
andg
.comp_noncommCoprod
proves that the composition of a morphism of monoidsh
withnoncommCoprod f g _
coincides withnoncommCoprod (h.comp f) (h.comp g)
.
For a product of a family of morphisms of monoids, see MonoidHom.noncommPiCoprod
.
Coproduct of two AddHom
s with the same codomain with commutation assumption:
f.noncommCoprod g _ (p : M × N) = f p.1 + g p.2
.
(For the commutative case, use AddHom.coprod
)
Equations
- AddHom.noncommCoprod f g comm = { toFun := fun (mn : M × N) => f mn.1 + g mn.2, map_add' := ⋯ }
Instances For
Coproduct of two MulHom
s with the same codomain with commutation assumption :
f.noncommCoprod g _ (p : M × N) = f p.1 * g p.2
.
(For the commutative case, use MulHom.coprod
)
Equations
- MulHom.noncommCoprod f g comm = { toFun := fun (mn : M × N) => f mn.1 * g mn.2, map_mul' := ⋯ }
Instances For
Coproduct of two AddMonoidHom
s with the same codomain,
with a commutation assumption:
f.noncommCoprod g (p : M × N) = f p.1 + g p.2
.
(Noncommutative case; in the commutative case, use AddHom.coprod
.)
Equations
- AddMonoidHom.noncommCoprod f g comm = let __spread.0 := AddHom.noncommCoprod (↑f) (↑g) comm; { toZeroHom := { toFun := fun (mn : M × N) => f mn.1 + g mn.2, map_zero' := ⋯ }, map_add' := ⋯ }
Instances For
Coproduct of two MonoidHom
s with the same codomain,
with a commutation assumption:
f.noncommCoprod g _ (p : M × N) = f p.1 * g p.2
.
(Noncommutative case; in the commutative case, use MonoidHom.coprod
.)
Equations
- MonoidHom.noncommCoprod f g comm = let __spread.0 := MulHom.noncommCoprod (↑f) (↑g) comm; { toOneHom := { toFun := fun (mn : M × N) => f mn.1 * g mn.2, map_one' := ⋯ }, map_mul' := ⋯ }