Limits in the category of types. #
We show that the category of types has all (co)limits, by providing the usual concrete models.
We also give a characterisation of filtered colimits in Type
, via
colimit.ι F i xi = colimit.ι F j xj ↔ ∃ k (f : i ⟶ k) (g : j ⟶ k), F.map f xi = F.map g xj
.
Finally, we prove the category of types has categorical images, and that these agree with the range of a function.
(internal implementation) the limit cone of a functor, implemented as flat sections of a pi type
(internal implementation) the fact that the proposed limit cone is the limit
The category of types has all limits.
The equivalence between a limiting cone of F
in Type u
and the "concrete" definition as the
sections of F
.
The equivalence between the abstract limit of F
in Type u
and the "concrete" definition as the sections of F
.
Construct a term of limit F : Type u
from a family of terms x : Π j, F.obj j
which are "coherent": ∀ (j j') (f : j ⟶ j'), F.map f (x j) = x j'
.
Equations
The relation defining the quotient type which implements the colimit of a functor F : J ⥤ Type u
.
See category_theory.limits.types.quot
.
A quotient type implementing the colimit of a functor F : J ⥤ Type u
,
as pairs ⟨j, x⟩
where x : F.obj j
, modulo the equivalence relation generated by
⟨j, x⟩ ~ ⟨j', x'⟩
whenever there is a morphism f : j ⟶ j'
so F.map f x = x'
.
Equations
(internal implementation) the colimit cocone of a functor, implemented as a quotient of a sigma type
Equations
- category_theory.limits.types.colimit_cocone F = {X := category_theory.limits.types.quot F, ι := {app := λ (j : J) (x : F.obj j), quot.mk (category_theory.limits.types.quot.rel F) ⟨j, x⟩, naturality' := _}}
(internal implementation) the fact that the proposed colimit cocone is the colimit
The category of types has all colimits.
The equivalence between the abstract colimit of F
in Type u
and the "concrete" definition as a quotient.
A variant of jointly_surjective
for x : colimit F
.
An alternative relation on Σ j, F.obj j
,
which generates the same equivalence relation as we use to define the colimit in Type
above,
but that is more convenient when working with filtered colimits.
Elements in F.obj j
and F.obj j'
are equivalent if there is some k : J
to the right
where their images are equal.
Recognizing filtered colimits of types.
the image of a morphism in Type is just set.range f
Equations
Instances for category_theory.limits.types.image
Equations
the inclusion of image f
into the target
Equations
Instances for category_theory.limits.types.image.ι
the universal property for the image factorisation
Equations
- category_theory.limits.types.image.lift F' = λ (x : category_theory.limits.types.image f), F'.e (classical.indefinite_description (λ (y : α), f y = x.val) _).val
the factorisation of any morphism in Type through a mono.
Equations
- category_theory.limits.types.mono_factorisation f = {I := category_theory.limits.types.image f, m := category_theory.limits.types.image.ι f, m_mono := _, e := set.range_factorization f, fac' := _}
the facorisation through a mono has the universal property of the image.
Equations
Equations
- category_theory.limits.types.sort.category_theory.limits.has_image_maps = {has_image_map := category_theory.limits.types.sort.category_theory.limits.has_image_maps._proof_1}