Special shapes for limits in Type
. #
The general shape (co)limits defined in CategoryTheory.Limits.Types
are intended for use through the limits API,
and the actual implementation should mostly be considered "sealed".
In this file, we provide definitions of the "standard" special shapes of limits in Type
,
giving the expected definitional implementation:
- the terminal object is
PUnit
- the binary product of
X
andY
isX × Y
- the product of a family
f : J → Type
isΠ j, f j
- the coproduct of a family
f : J → Type
isΣ j, f j
- the binary coproduct of
X
andY
is the sum typeX ⊕ Y
- the equalizer of a pair of maps
(g, h)
is the subtype{x : Y // g x = h x}
- the coequalizer of a pair of maps
(f, g)
is the quotient ofY
by∀ x : Y, f x ~ g x
- the pullback of
f : X ⟶ Z
andg : Y ⟶ Z
is the subtype{ p : X × Y // f p.1 = g p.2 }
of the product
We first construct terms of IsLimit
and LimitCone
, and then provide isomorphisms with the
types generated by the HasLimit
API.
As an example, when setting up the monoidal category structure on Type
we use the Types.terminalLimitCone
and Types.binaryProductLimitCone
definitions.
A restatement of Types.Limit.lift_π_apply
that uses Pi.π
and Pi.lift
.
A restatement of Types.Limit.lift_π_apply
that uses Pi.π
and Pi.lift
,
with specialized universes.
A restatement of Types.Limit.map_π_apply
that uses Pi.π
and Pi.map
.
A restatement of Types.Limit.map_π_apply
that uses Pi.π
and Pi.map
,
with specialized universes.
The category of types has PUnit
as a terminal object.
Instances For
The terminal object in Type u
is PUnit
.
Instances For
The terminal object in Type u
is PUnit
.
Instances For
A type is terminal if and only if it contains exactly one element.
Instances For
A type is terminal if and only if it is isomorphic to PUnit
.
Instances For
The category of types has PEmpty
as an initial object.
Instances For
The initial object in Type u
is PEmpty
.
Instances For
The initial object in Type u
is PEmpty
.
Instances For
The product type X × Y
forms a cone for the binary product of X
and Y
.
Instances For
The product type X × Y
is a binary product for X
and Y
.
Instances For
The category of types has X × Y
, the usual cartesian product,
as the binary product of X
and Y
.
Instances For
The functor which sends X, Y
to the product type X × Y
.
Instances For
The product functor given by the instance HasBinaryProducts (Type u)
is isomorphic to the
explicit binary product functor given by the product type.
Instances For
The sum type X ⊕ Y
forms a cocone for the binary coproduct of X
and Y
.
Instances For
The sum type X ⊕ Y
is a binary coproduct for X
and Y
.
Instances For
The category of types has X ⊕ Y
,
as the binary coproduct of X
and Y
.
Instances For
Any monomorphism in Type
is a coproduct injection.
Instances For
The category of types has Π j, f j
as the product of a type family f : J → TypeMax.{v, u}
.
Instances For
A variant of productLimitCone
using a UnivLE
hypothesis rather than a function to TypeMax
.
Instances For
The categorical product in Type u
indexed in Type v
is the type theoretic product Π j, F j
, after shrinking back to Type u
.
Instances For
The category of types has Σ j, f j
as the coproduct of a type family f : J → Type
.
Instances For
Show the given fork in Type u
is an equalizer given that any element in the "difference kernel"
comes from X
.
The converse of unique_of_type_equalizer
.
Instances For
The converse of type_equalizer_of_unique
.
Show that the subtype {x : Y // g x = h x}
is an equalizer for the pair (g,h)
.
Instances For
The categorical equalizer in Type u
is {x : Y // g x = h x}
.
Instances For
- Rel: ∀ {X Y : Type u} {f g : X ⟶ Y} (x : X), CategoryTheory.Limits.Types.CoequalizerRel f g (f x) (g x)
(Implementation) The relation to be quotiented to obtain the coequalizer.
Instances For
Show that the quotient by the relation generated by f(x) ~ g(x)
is a coequalizer for the pair (f, g)
.
Instances For
If π : Y ⟶ Z
is an equalizer for (f, g)
, and U ⊆ Y
such that f ⁻¹' U = g ⁻¹' U
,
then π ⁻¹' (π '' U) = U
.
The categorical coequalizer in Type u
is the quotient by f g ~ g x
.
Instances For
The usual explicit pullback in the category of types, as a subtype of the product.
The full LimitCone
data is bundled as pullbackLimitCone f g
.
Instances For
The explicit pullback cone on PullbackObj f g
.
This is bundled with the IsLimit
data as pullbackLimitCone f g
.
Instances For
The pullback cone given by the instance HasPullbacks (Type u)
is isomorphic to the
explicit pullback cone given by pullbackLimitCone
.
Instances For
The pullback given by the instance HasPullbacks (Type u)
is isomorphic to the
explicit pullback object given by PullbackObj
.