Category instances for has_mul, has_add, semigroup and add_semigroup #
We introduce the bundled categories:
- Magma
- AddMagma
- Semigroup
- AddSemigroupalong with the relevant forgetful functors between them.
This closely follows algebra.category.Mon.basic.
TODO #
- Limits in these categories
- free/forgetful adjunctions
The category of additive magmas and additive magma morphisms.
Equations
The category of magmas and magma morphisms.
Equations
Equations
- AddMagma.bundled_hom = {to_fun := add_hom.to_fun, id := add_hom.id, comp := add_hom.comp, hom_ext := add_hom.coe_inj, id_to_fun := AddMagma.bundled_hom._proof_1, comp_to_fun := AddMagma.bundled_hom._proof_2}
Equations
- Magma.bundled_hom = {to_fun := mul_hom.to_fun, id := mul_hom.id, comp := mul_hom.comp, hom_ext := mul_hom.coe_inj, id_to_fun := Magma.bundled_hom._proof_1, comp_to_fun := Magma.bundled_hom._proof_2}
Construct a bundled AddMagma from the underlying type and typeclass.
Equations
Typecheck a add_hom as a morphism in AddMagma.
Equations
- AddMagma.of_hom f = f
Equations
Equations
The category of additive semigroups and semigroup morphisms.
Equations
The category of semigroups and semigroup morphisms.
Equations
Equations
- AddSemigroup.semigroup.to_has_mul.category_theory.bundled_hom.parent_projection = category_theory.bundled_hom.parent_projection.mk
Equations
- Semigroup.semigroup.to_has_mul.category_theory.bundled_hom.parent_projection = category_theory.bundled_hom.parent_projection.mk
Construct a bundled AddSemigroup from the underlying type and typeclass.
Equations
Construct a bundled Semigroup from the underlying type and typeclass.
Equations
Typecheck a add_hom as a morphism in AddSemigroup.
Equations
- AddSemigroup.of_hom f = f
Typecheck a mul_hom as a morphism in Semigroup.
Equations
- Semigroup.of_hom f = f
Equations
Equations
Equations
- M.add_semigroup = M.str
Build an isomorphism in the category AddMagma from
an add_equiv between has_adds.
Equations
- e.to_AddMagma_iso = {hom := e.to_add_hom, inv := e.symm.to_add_hom, hom_inv_id' := _, inv_hom_id' := _}
Build an isomorphism in the category Magma from a mul_equiv between has_muls.
Equations
- e.to_Magma_iso = {hom := e.to_mul_hom, inv := e.symm.to_mul_hom, hom_inv_id' := _, inv_hom_id' := _}
Build an isomorphism in the category Semigroup from a mul_equiv between semigroups.
Equations
- e.to_Semigroup_iso = {hom := e.to_mul_hom, inv := e.symm.to_mul_hom, hom_inv_id' := _, inv_hom_id' := _}
Build an isomorphism in the category
AddSemigroup from an add_equiv between add_semigroups.
Equations
- e.to_AddSemigroup_iso = {hom := e.to_add_hom, inv := e.symm.to_add_hom, hom_inv_id' := _, inv_hom_id' := _}
additive equivalences between has_adds are the same
as (isomorphic to) isomorphisms in AddMagma
Equations
- add_equiv_iso_AddMagma_iso = {hom := λ (e : X ≃+ Y), e.to_AddMagma_iso, inv := λ (i : AddMagma.of X ≅ AddMagma.of Y), i.AddMagma_iso_to_add_equiv, hom_inv_id' := _, inv_hom_id' := _}
multiplicative equivalences between has_muls are the same as (isomorphic to) isomorphisms
in Magma
Equations
- mul_equiv_iso_Magma_iso = {hom := λ (e : X ≃* Y), e.to_Magma_iso, inv := λ (i : Magma.of X ≅ Magma.of Y), i.Magma_iso_to_mul_equiv, hom_inv_id' := _, inv_hom_id' := _}
multiplicative equivalences between semigroups are the same as (isomorphic to) isomorphisms
in Semigroup
Equations
- mul_equiv_iso_Semigroup_iso = {hom := λ (e : X ≃* Y), e.to_Semigroup_iso, inv := λ (i : Semigroup.of X ≅ Semigroup.of Y), i.Semigroup_iso_to_mul_equiv, hom_inv_id' := _, inv_hom_id' := _}
additive equivalences between add_semigroups are
the same as (isomorphic to) isomorphisms in AddSemigroup
Equations
- add_equiv_iso_AddSemigroup_iso = {hom := λ (e : X ≃+ Y), e.to_AddSemigroup_iso, inv := λ (i : AddSemigroup.of X ≅ AddSemigroup.of Y), i.Semigroup_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.