Category instances for monoid, add_monoid, comm_monoid, and add_comm_monoid. #
We introduce the bundled categories:
MonAddMonCommMonAddCommMonalong with the relevant forgetful functors between them.
The category of additive monoids and monoid morphisms.
Equations
add_monoid_hom doesn't actually assume associativity. This alias is needed to make
the category theory machinery work.
monoid_hom doesn't actually assume associativity. This alias is needed to make the category
theory machinery work.
Equations
- Mon.bundled_hom = {to_fun := λ (M N : Type u_1) [_inst_1 : monoid M] [_inst_2 : monoid N], monoid_hom.to_fun, id := λ (M : Type u_1) [_inst_1 : monoid M], monoid_hom.id M, comp := λ (M N P : Type u_1) [_inst_1 : monoid M] [_inst_2 : monoid N] [_inst_3 : monoid P], monoid_hom.comp, hom_ext := Mon.bundled_hom._proof_1, id_to_fun := Mon.bundled_hom._proof_2, comp_to_fun := Mon.bundled_hom._proof_3}
Equations
- AddMon.bundled_hom = {to_fun := λ (M N : Type u_1) [_inst_1 : add_monoid M] [_inst_2 : add_monoid N], add_monoid_hom.to_fun, id := λ (M : Type u_1) [_inst_1 : add_monoid M], add_monoid_hom.id M, comp := λ (M N P : Type u_1) [_inst_1 : add_monoid M] [_inst_2 : add_monoid N] [_inst_3 : add_monoid P], add_monoid_hom.comp, hom_ext := AddMon.bundled_hom._proof_1, id_to_fun := AddMon.bundled_hom._proof_2, comp_to_fun := AddMon.bundled_hom._proof_3}
Construct a bundled Mon from the underlying type and typeclass.
Equations
Typecheck a add_monoid_hom as a morphism in AddMon.
Equations
- AddMon.of_hom f = f
Typecheck a monoid_hom as a morphism in Mon.
Equations
- Mon.of_hom f = f
Equations
Equations
Equations
- M.add_monoid = M.str
The category of additive commutative monoids and monoid morphisms.
Equations
The category of commutative monoids and monoid morphisms.
Equations
Construct a bundled AddCommMon from the underlying type and typeclass.
Equations
Construct a bundled CommMon from the underlying type and typeclass.
Equations
Equations
Equations
Equations
- M.comm_monoid = M.str
Equations
- M.add_comm_monoid = M.str
Build an isomorphism in the category Mon from a mul_equiv between monoids.
Equations
- e.to_Mon_iso = {hom := e.to_monoid_hom, inv := e.symm.to_monoid_hom, hom_inv_id' := _, inv_hom_id' := _}
Build an isomorphism in the category AddMon from
an add_equiv between add_monoids.
Equations
- e.to_AddMon_iso = {hom := e.to_add_monoid_hom, inv := e.symm.to_add_monoid_hom, hom_inv_id' := _, inv_hom_id' := _}
Build an isomorphism in the category CommMon from a mul_equiv between comm_monoids.
Equations
- e.to_CommMon_iso = {hom := e.to_monoid_hom, inv := e.symm.to_monoid_hom, hom_inv_id' := _, inv_hom_id' := _}
Build an isomorphism in the category AddCommMon
from an add_equiv between add_comm_monoids.
Equations
- e.to_AddCommMon_iso = {hom := e.to_add_monoid_hom, inv := e.symm.to_add_monoid_hom, hom_inv_id' := _, inv_hom_id' := _}
Build a mul_equiv from an isomorphism in the category Mon.
Equations
- i.Mon_iso_to_mul_equiv = monoid_hom.to_mul_equiv i.hom i.inv _ _
Build an add_equiv from an isomorphism in the category
AddCommMon.
Equations
Build a mul_equiv from an isomorphism in the category CommMon.
Equations
- i.CommMon_iso_to_mul_equiv = monoid_hom.to_mul_equiv i.hom i.inv _ _
multiplicative equivalences between monoids are the same as (isomorphic to) isomorphisms
in Mon
Equations
- mul_equiv_iso_Mon_iso = {hom := λ (e : X ≃* Y), e.to_Mon_iso, inv := λ (i : Mon.of X ≅ Mon.of Y), i.Mon_iso_to_mul_equiv, hom_inv_id' := _, inv_hom_id' := _}
additive equivalences between add_monoids are the same
as (isomorphic to) isomorphisms in AddMon
Equations
- add_equiv_iso_AddMon_iso = {hom := λ (e : X ≃+ Y), e.to_AddMon_iso, inv := λ (i : AddMon.of X ≅ AddMon.of Y), i.AddMon_iso_to_add_equiv, hom_inv_id' := _, inv_hom_id' := _}
multiplicative equivalences between comm_monoids are the same as (isomorphic to) isomorphisms
in CommMon
Equations
- mul_equiv_iso_CommMon_iso = {hom := λ (e : X ≃* Y), e.to_CommMon_iso, inv := λ (i : CommMon.of X ≅ CommMon.of Y), i.CommMon_iso_to_mul_equiv, hom_inv_id' := _, inv_hom_id' := _}
additive equivalences between add_comm_monoids are
the same as (isomorphic to) isomorphisms in AddCommMon
Equations
- add_equiv_iso_AddCommMon_iso = {hom := λ (e : X ≃+ Y), e.to_AddCommMon_iso, inv := λ (i : AddCommMon.of X ≅ AddCommMon.of Y), i.CommMon_iso_to_add_equiv, hom_inv_id' := _, inv_hom_id' := _}
Once we've shown that the forgetful functors to type reflect isomorphisms,
we automatically obtain that the forget₂ functors between our concrete categories
reflect isomorphisms.