Category instances for has_mul, has_add, semigroup and add_semigroup #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
We introduce the bundled categories:
Magma
AddMagma
Semigroup
AddSemigroup
along 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_add
s.
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_mul
s.
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 semigroup
s.
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_semigroup
s.
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_add
s 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_mul
s 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 semigroup
s 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_semigroup
s 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.