Construct a cone for the empty diagram given an object.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct a cocone for the empty diagram given an object.
Equations
- One or more equations did not get rendered due to their size.
Instances For
X
is terminal if the cone it induces on the empty diagram is limiting.
Equations
Instances For
X
is initial if the cocone it induces on the empty diagram is colimiting.
Equations
Instances For
An object Y
is terminal iff for every X
there is a unique morphism X ⟶ Y
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An object Y
is terminal if for every X
there is a unique morphism X ⟶ Y
(as an instance).
Equations
- CategoryTheory.Limits.IsTerminal.ofUnique Y = { lift := fun (s : CategoryTheory.Limits.Cone (CategoryTheory.Functor.empty C)) => default, fac := ⋯, uniq := ⋯ }
Instances For
An object Y
is terminal if for every X
there is a unique morphism X ⟶ Y
(as explicit arguments).
Equations
Instances For
If α
is a preorder with top, then ⊤
is a terminal object.
Equations
- CategoryTheory.Limits.isTerminalTop = CategoryTheory.Limits.IsTerminal.ofUnique ⊤
Instances For
Transport a term of type IsTerminal
across an isomorphism.
Equations
- hY.ofIso i = CategoryTheory.Limits.IsLimit.ofIsoLimit hY { hom := { hom := i.hom, w := ⋯ }, inv := { hom := i.inv, w := ⋯ }, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
If X
and Y
are isomorphic, then X
is terminal iff Y
is.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An object X
is initial iff for every Y
there is a unique morphism X ⟶ Y
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An object X
is initial if for every Y
there is a unique morphism X ⟶ Y
(as an instance).
Equations
- CategoryTheory.Limits.IsInitial.ofUnique X = { desc := fun (s : CategoryTheory.Limits.Cocone (CategoryTheory.Functor.empty C)) => default, fac := ⋯, uniq := ⋯ }
Instances For
An object X
is initial if for every Y
there is a unique morphism X ⟶ Y
(as explicit arguments).
Equations
Instances For
If α
is a preorder with bot, then ⊥
is an initial object.
Equations
- CategoryTheory.Limits.isInitialBot = CategoryTheory.Limits.IsInitial.ofUnique ⊥
Instances For
Transport a term of type is_initial
across an isomorphism.
Equations
- hX.ofIso i = CategoryTheory.Limits.IsColimit.ofIsoColimit hX { hom := { hom := i.hom, w := ⋯ }, inv := { hom := i.inv, w := ⋯ }, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
If X
and Y
are isomorphic, then X
is initial iff Y
is.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Give the morphism to a terminal object from any other.
Equations
- t.from Y = t.lift (CategoryTheory.Limits.asEmptyCone Y)
Instances For
Any two morphisms to a terminal object are equal.
Give the morphism from an initial object to any other.
Equations
- t.to Y = t.desc (CategoryTheory.Limits.asEmptyCocone Y)
Instances For
Any two morphisms from an initial object are equal.
Any morphism from a terminal object is split mono.
Any morphism to an initial object is split epi.
Any morphism from a terminal object is mono.
Any morphism to an initial object is epi.
If T
and T'
are terminal, they are isomorphic.
Equations
- hT.uniqueUpToIso hT' = { hom := hT'.from T, inv := hT.from T', hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
If I
and I'
are initial, they are isomorphic.
Equations
- hI.uniqueUpToIso hI' = { hom := hI.to I', inv := hI'.to I, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
A category has a terminal object if it has a limit over the empty diagram.
Use hasTerminal_of_unique
to construct instances.
Equations
Instances For
A category has an initial object if it has a colimit over the empty diagram.
Use hasInitial_of_unique
to construct instances.
Equations
Instances For
Being terminal is independent of the empty diagram, its universe, and the cone over it, as long as the cone points are isomorphic.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Replacing an empty cone in IsLimit
by another with the same cone point
is an equivalence.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Being initial is independent of the empty diagram, its universe, and the cocone over it, as long as the cocone points are isomorphic.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Replacing an empty cocone in IsColimit
by another with the same cocone point
is an equivalence.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An arbitrary choice of terminal object, if one exists.
You can use the notation ⊤_ C
.
This object is characterized by having a unique morphism from any object.
Equations
Instances For
An arbitrary choice of initial object, if one exists.
You can use the notation ⊥_ C
.
This object is characterized by having a unique morphism to any object.
Equations
Instances For
Notation for the terminal object in C
Equations
- CategoryTheory.Limits.«term⊤__» = Lean.ParserDescr.node `CategoryTheory.Limits.term⊤__ 1022 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⊤_ ") (Lean.ParserDescr.cat `term 20))
Instances For
Notation for the initial object in C
Equations
- CategoryTheory.Limits.«term⊥__» = Lean.ParserDescr.node `CategoryTheory.Limits.term⊥__ 1022 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⊥_ ") (Lean.ParserDescr.cat `term 20))
Instances For
We can more explicitly show that a category has a terminal object by specifying the object, and showing there is a unique morphism to it from any other object.
We can more explicitly show that a category has an initial object by specifying the object, and showing there is a unique morphism from it to any other object.
The map from an object to the terminal object.
Equations
Instances For
The map to an object from the initial object.
Equations
Instances For
A terminal object is terminal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An initial object is initial.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- CategoryTheory.Limits.uniqueToTerminal P = (CategoryTheory.Limits.isTerminalEquivUnique (CategoryTheory.Functor.empty C) (⊤_ C)) CategoryTheory.Limits.terminalIsTerminal P
Equations
- CategoryTheory.Limits.uniqueFromInitial P = (CategoryTheory.Limits.isInitialEquivUnique (CategoryTheory.Functor.empty C) (⊥_ C)) CategoryTheory.Limits.initialIsInitial P
The (unique) isomorphism between the chosen initial object and any other initial object.
Equations
- CategoryTheory.Limits.initialIsoIsInitial t = CategoryTheory.Limits.initialIsInitial.uniqueUpToIso t
Instances For
The (unique) isomorphism between the chosen terminal object and any other terminal object.
Equations
- CategoryTheory.Limits.terminalIsoIsTerminal t = CategoryTheory.Limits.terminalIsTerminal.uniqueUpToIso t
Instances For
Any morphism from a terminal object is split mono.
Equations
- ⋯ = ⋯
Any morphism to an initial object is split epi.
Equations
- ⋯ = ⋯
An initial object is terminal in the opposite category.
Equations
- CategoryTheory.Limits.terminalOpOfInitial t = { lift := fun (s : CategoryTheory.Limits.Cone (CategoryTheory.Functor.empty Cᵒᵖ)) => (t.to (Opposite.unop s.pt)).op, fac := ⋯, uniq := ⋯ }
Instances For
An initial object in the opposite category is terminal in the original category.
Equations
- CategoryTheory.Limits.terminalUnopOfInitial t = { lift := fun (s : CategoryTheory.Limits.Cone (CategoryTheory.Functor.empty C)) => (t.to (Opposite.op s.pt)).unop, fac := ⋯, uniq := ⋯ }
Instances For
A terminal object is initial in the opposite category.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A terminal object in the opposite category is initial in the original category.
Equations
- CategoryTheory.Limits.initialUnopOfTerminal t = { desc := fun (s : CategoryTheory.Limits.Cocone (CategoryTheory.Functor.empty C)) => (t.from (Opposite.op s.pt)).unop, fac := ⋯, uniq := ⋯ }
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
The limit of the constant ⊤_ C
functor is ⊤_ C
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- ⋯ = ⋯
The colimit of the constant ⊥_ C
functor is ⊥_ C
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A category is an InitialMonoClass
if the canonical morphism of an initial object is a
monomorphism. In practice, this is most useful when given an arbitrary morphism out of the chosen
initial object, see initial.mono_from
.
Given a terminal object, this is equivalent to the assumption that the unique morphism from initial
to terminal is a monomorphism, which is the second of Freyd's axioms for an AT category.
TODO: This is a condition satisfied by categories with zero objects and morphisms.
- isInitial_mono_from : ∀ {I : C} (X : C) (hI : CategoryTheory.Limits.IsInitial I), CategoryTheory.Mono (hI.to X)
The map from the (any as stated) initial object to any other object is a monomorphism
Instances
The map from the (any as stated) initial object to any other object is a monomorphism
Equations
- ⋯ = ⋯
To show a category is an InitialMonoClass
it suffices to give an initial object such that
every morphism out of it is a monomorphism.
To show a category is an InitialMonoClass
it suffices to show every morphism out of the
initial object is a monomorphism.
To show a category is an InitialMonoClass
it suffices to show the unique morphism from an
initial object to a terminal object is a monomorphism.
To show a category is an InitialMonoClass
it suffices to show the unique morphism from the
initial object to a terminal object is a monomorphism.
The comparison morphism from the image of a terminal object to the terminal object in the target
category.
This is an isomorphism iff G
preserves terminal objects, see
CategoryTheory.Limits.PreservesTerminal.ofIsoComparison
.
Equations
Instances For
The comparison morphism from the initial object in the target category to the image of the initial object.
Equations
Instances For
From a functor F : J ⥤ C
, given an initial object of J
, construct a cone for J
.
In limitOfDiagramInitial
we show it is a limit cone.
Equations
- CategoryTheory.Limits.coneOfDiagramInitial tX F = { pt := F.obj X, π := { app := fun (j : J) => F.map (tX.to j), naturality := ⋯ } }
Instances For
From a functor F : J ⥤ C
, given an initial object of J
, show the cone
coneOfDiagramInitial
is a limit.
Equations
- CategoryTheory.Limits.limitOfDiagramInitial tX F = { lift := fun (s : CategoryTheory.Limits.Cone F) => s.π.app X, fac := ⋯, uniq := ⋯ }
Instances For
Equations
- ⋯ = ⋯
For a functor F : J ⥤ C
, if J
has an initial object then the image of it is isomorphic
to the limit of F
.
Equations
- CategoryTheory.Limits.limitOfInitial F = (CategoryTheory.Limits.limit.isLimit F).conePointUniqueUpToIso (CategoryTheory.Limits.limitOfDiagramInitial CategoryTheory.Limits.initialIsInitial F)
Instances For
From a functor F : J ⥤ C
, given a terminal object of J
, construct a cone for J
,
provided that the morphisms in the diagram are isomorphisms.
In limitOfDiagramTerminal
we show it is a limit cone.
Equations
- CategoryTheory.Limits.coneOfDiagramTerminal hX F = { pt := F.obj X, π := { app := fun (i : J) => CategoryTheory.inv (F.map (hX.from i)), naturality := ⋯ } }
Instances For
From a functor F : J ⥤ C
, given a terminal object of J
and that the morphisms in the
diagram are isomorphisms, show the cone coneOfDiagramTerminal
is a limit.
Equations
- CategoryTheory.Limits.limitOfDiagramTerminal hX F = { lift := fun (S : CategoryTheory.Limits.Cone F) => S.π.app X, fac := ⋯, uniq := ⋯ }
Instances For
Equations
- ⋯ = ⋯
For a functor F : J ⥤ C
, if J
has a terminal object and all the morphisms in the diagram
are isomorphisms, then the image of the terminal object is isomorphic to the limit of F
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
From a functor F : J ⥤ C
, given a terminal object of J
, construct a cocone for J
.
In colimitOfDiagramTerminal
we show it is a colimit cocone.
Equations
- CategoryTheory.Limits.coconeOfDiagramTerminal tX F = { pt := F.obj X, ι := { app := fun (j : J) => F.map (tX.from j), naturality := ⋯ } }
Instances For
From a functor F : J ⥤ C
, given a terminal object of J
, show the cocone
coconeOfDiagramTerminal
is a colimit.
Equations
- CategoryTheory.Limits.colimitOfDiagramTerminal tX F = { desc := fun (s : CategoryTheory.Limits.Cocone F) => s.ι.app X, fac := ⋯, uniq := ⋯ }
Instances For
Equations
- ⋯ = ⋯
For a functor F : J ⥤ C
, if J
has a terminal object then the image of it is isomorphic
to the colimit of F
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
From a functor F : J ⥤ C
, given an initial object of J
, construct a cocone for J
,
provided that the morphisms in the diagram are isomorphisms.
In colimitOfDiagramInitial
we show it is a colimit cocone.
Equations
- CategoryTheory.Limits.coconeOfDiagramInitial hX F = { pt := F.obj X, ι := { app := fun (i : J) => CategoryTheory.inv (F.map (hX.to i)), naturality := ⋯ } }
Instances For
From a functor F : J ⥤ C
, given an initial object of J
and that the morphisms in the
diagram are isomorphisms, show the cone coconeOfDiagramInitial
is a colimit.
Equations
- CategoryTheory.Limits.colimitOfDiagramInitial hX F = { desc := fun (S : CategoryTheory.Limits.Cocone F) => S.ι.app X, fac := ⋯, uniq := ⋯ }
Instances For
Equations
- ⋯ = ⋯
For a functor F : J ⥤ C
, if J
has an initial object and all the morphisms in the diagram
are isomorphisms, then the image of the initial object is isomorphic to the colimit of F
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If j
is initial in the index category, then the map limit.π F j
is an isomorphism.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
If j
is terminal in the index category, then the map colimit.ι F j
is an isomorphism.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Any morphism between terminal objects is an isomorphism.
Any morphism between initial objects is an isomorphism.