Category instances for monoid, add_monoid, comm_monoid, and add_comm_monoid. #
We introduce the bundled categories:
Mon
AddMon
CommMon
AddCommMon
along 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 monoid
s.
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_monoid
s.
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_monoid
s.
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_monoid
s.
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 monoid
s 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_monoid
s 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_monoid
s 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_monoid
s 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.