PullbackCone #
This file provides API for interacting with cones (resp. cocones) in the case of pullbacks (resp. pushouts).
Main definitions #
PullbackCone f g
: Given morphismsf : X ⟶ Z
andg : Y ⟶ Z
, a termt : PullbackCone f g
provides the data of a cone pictured as follows
t.pt ---t.snd---> Y
| |
t.fst g
| |
v v
X -----f------> Z
The type PullbackCone f g
is implemented as an abbreviation for Cone (cospan f g)
, so general
results about cones are also available for PullbackCone f g
.
PushoutCone f g
: Given morphismsf : X ⟶ Y
andg : X ⟶ Z
, a termt : PushoutCone f g
provides the data of a cocone pictured as follows
X -----f------> Y
| |
g t.inr
| |
v v
Z ---t.inl---> t.pt
Similar to PullbackCone
, PushoutCone f g
is implemented as an abbreviation for
Cocone (span f g)
, so general results about cocones are also available for PushoutCone f g
.
API #
We summarize the most important parts of the API for pullback cones here. The dual notions for pushout cones is also available in this file.
Various ways of constructing pullback cones:
PullbackCone.mk
constructs a term ofPullbackCone f g
given morphismsfst
andsnd
such thatfst ≫ f = snd ≫ g
.PullbackCone.flip
is thePullbackCone
obtained by flippingfst
andsnd
.
Interaction with IsLimit
:
PullbackCone.isLimitAux
andPullbackCone.isLimitAux'
provide two convenient ways to show that a givenPullbackCone
is a limit cone.PullbackCone.isLimit.mk
provides a convenient way to show that aPullbackCone
constructed usingPullbackCone.mk
is a limit cone.PullbackCone.IsLimit.lift
andPullbackCone.IsLimit.lift'
provides convenient ways for constructing the morphisms to the point of a limitPullbackCone
from the universal property.PullbackCone.IsLimit.hom_ext
provides a convenient way to show that two morphisms to the point of a limitPullbackCone
are equal.
References #
A pullback cone is just a cone on the cospan formed by two morphisms f : X ⟶ Z
and
g : Y ⟶ Z
.
Equations
Instances For
The first projection of a pullback cone.
Equations
- t.fst = t.π.app CategoryTheory.Limits.WalkingCospan.left
Instances For
The second projection of a pullback cone.
Equations
- t.snd = t.π.app CategoryTheory.Limits.WalkingCospan.right
Instances For
A pullback cone on f
and g
is determined by morphisms fst : W ⟶ X
and snd : W ⟶ Y
such that fst ≫ f = snd ≫ g
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
To check whether two morphisms are equalized by the maps of a pullback cone, it suffices to
check it for fst t
and snd t
To construct an isomorphism of pullback cones, it suffices to construct an isomorphism
of the cone points and check it commutes with fst
and snd
.
Equations
Instances For
The natural isomorphism between a pullback cone and the corresponding pullback cone
reconstructed using PullbackCone.mk
.
Equations
- t.eta = CategoryTheory.Limits.PullbackCone.ext (CategoryTheory.Iso.refl t.pt) ⋯ ⋯
Instances For
This is a slightly more convenient method to verify that a pullback cone is a limit cone. It only asks for a proof of facts that carry any mathematical content
Equations
- t.isLimitAux lift fac_left fac_right uniq = { lift := lift, fac := ⋯, uniq := uniq }
Instances For
This is another convenient method to verify that a pullback cone is a limit cone. It
only asks for a proof of facts that carry any mathematical content, and allows access to the
same s
for all parts.
Equations
- t.isLimitAux' create = t.isLimitAux (fun (s : CategoryTheory.Limits.PullbackCone f g) => ↑(create s)) ⋯ ⋯ ⋯
Instances For
This is a more convenient formulation to show that a PullbackCone
constructed using
PullbackCone.mk
is a limit cone.
Equations
- CategoryTheory.Limits.PullbackCone.IsLimit.mk eq lift fac_left fac_right uniq = (CategoryTheory.Limits.PullbackCone.mk fst snd eq).isLimitAux lift fac_left fac_right ⋯
Instances For
If t
is a limit pullback cone over f
and g
and h : W ⟶ X
and k : W ⟶ Y
are such that
h ≫ f = k ≫ g
, then we get l : W ⟶ t.pt
, which satisfies l ≫ fst t = h
and l ≫ snd t = k
, see IsLimit.lift_fst
and IsLimit.lift_snd
.
Equations
- CategoryTheory.Limits.PullbackCone.IsLimit.lift ht h k w = ht.lift (CategoryTheory.Limits.PullbackCone.mk h k w)
Instances For
If t
is a limit pullback cone over f
and g
and h : W ⟶ X
and k : W ⟶ Y
are such that
h ≫ f = k ≫ g
, then we have l : W ⟶ t.pt
satisfying l ≫ fst t = h
and l ≫ snd t = k
.
Equations
- CategoryTheory.Limits.PullbackCone.IsLimit.lift' ht h k w = ⟨CategoryTheory.Limits.PullbackCone.IsLimit.lift ht h k w, ⋯⟩
Instances For
The pullback cone reconstructed using PullbackCone.mk
from a pullback cone that is a
limit, is also a limit.
Equations
- CategoryTheory.Limits.PullbackCone.mkSelfIsLimit ht = ht.ofIsoLimit t.eta
Instances For
The pullback cone obtained by flipping fst
and snd
.
Equations
- t.flip = CategoryTheory.Limits.PullbackCone.mk t.snd t.fst ⋯
Instances For
Flipping a pullback cone twice gives an isomorphic cone.
Equations
- t.flipFlipIso = CategoryTheory.Limits.PullbackCone.ext (CategoryTheory.Iso.refl t.flip.flip.pt) ⋯ ⋯
Instances For
The flip of a pullback square is a pullback square.
Equations
- CategoryTheory.Limits.PullbackCone.flipIsLimit ht = CategoryTheory.Limits.PullbackCone.IsLimit.mk ⋯ (fun (s : CategoryTheory.Limits.PullbackCone g f) => ht.lift s.flip) ⋯ ⋯ ⋯
Instances For
A square is a pullback square if its flip is.
Equations
- CategoryTheory.Limits.PullbackCone.isLimitOfFlip ht = (CategoryTheory.Limits.PullbackCone.flipIsLimit ht).ofIsoLimit t.flipFlipIso
Instances For
This is a helper construction that can be useful when verifying that a category has all
pullbacks. Given F : WalkingCospan ⥤ C
, which is really the same as
cospan (F.map inl) (F.map inr)
, and a pullback cone on F.map inl
and F.map inr
, we
get a cone on F
.
If you're thinking about using this, have a look at hasPullbacks_of_hasLimit_cospan
,
which you may find to be an easier way of achieving your goal.
Equations
- CategoryTheory.Limits.Cone.ofPullbackCone t = { pt := t.pt, π := CategoryTheory.CategoryStruct.comp t.π (CategoryTheory.Limits.diagramIsoCospan F).inv }
Instances For
Given F : WalkingCospan ⥤ C
, which is really the same as cospan (F.map inl) (F.map inr)
,
and a cone on F
, we get a pullback cone on F.map inl
and F.map inr
.
Equations
- CategoryTheory.Limits.PullbackCone.ofCone t = { pt := t.pt, π := CategoryTheory.CategoryStruct.comp t.π (CategoryTheory.Limits.diagramIsoCospan F).hom }
Instances For
A diagram WalkingCospan ⥤ C
is isomorphic to some PullbackCone.mk
after
composing with diagramIsoCospan
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A pushout cocone is just a cocone on the span formed by two morphisms f : X ⟶ Y
and
g : X ⟶ Z
.
Equations
Instances For
The first inclusion of a pushout cocone.
Equations
- t.inl = t.ι.app CategoryTheory.Limits.WalkingSpan.left
Instances For
The second inclusion of a pushout cocone.
Equations
- t.inr = t.ι.app CategoryTheory.Limits.WalkingSpan.right
Instances For
A pushout cocone on f
and g
is determined by morphisms inl : Y ⟶ W
and inr : Z ⟶ W
such
that f ≫ inl = g ↠ inr
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
To check whether a morphism is coequalized by the maps of a pushout cocone, it suffices to check
it for inl t
and inr t
To construct an isomorphism of pushout cocones, it suffices to construct an isomorphism
of the cocone points and check it commutes with inl
and inr
.
Equations
Instances For
The natural isomorphism between a pushout cocone and the corresponding pushout cocone
reconstructed using PushoutCocone.mk
.
Equations
- t.eta = CategoryTheory.Limits.PushoutCocone.ext (CategoryTheory.Iso.refl t.pt) ⋯ ⋯
Instances For
This is a slightly more convenient method to verify that a pushout cocone is a colimit cocone. It only asks for a proof of facts that carry any mathematical content
Equations
- t.isColimitAux desc fac_left fac_right uniq = { desc := desc, fac := ⋯, uniq := uniq }
Instances For
This is another convenient method to verify that a pushout cocone is a colimit cocone. It
only asks for a proof of facts that carry any mathematical content, and allows access to the
same s
for all parts.
Equations
- t.isColimitAux' create = t.isColimitAux (fun (s : CategoryTheory.Limits.PushoutCocone f g) => ↑(create s)) ⋯ ⋯ ⋯
Instances For
If t
is a colimit pushout cocone over f
and g
and h : Y ⟶ W
and k : Z ⟶ W
are
morphisms satisfying f ≫ h = g ≫ k
, then we have a factorization l : t.pt ⟶ W
such that
inl t ≫ l = h
and inr t ≫ l = k
, see IsColimit.inl_desc
and IsColimit.inr_desc
Equations
- CategoryTheory.Limits.PushoutCocone.IsColimit.desc ht h k w = ht.desc (CategoryTheory.Limits.PushoutCocone.mk h k w)
Instances For
If t
is a colimit pushout cocone over f
and g
and h : Y ⟶ W
and k : Z ⟶ W
are
morphisms satisfying f ≫ h = g ≫ k
, then we have a factorization l : t.pt ⟶ W
such that
inl t ≫ l = h
and inr t ≫ l = k
.
Equations
Instances For
This is a more convenient formulation to show that a PushoutCocone
constructed using
PushoutCocone.mk
is a colimit cocone.
Equations
- CategoryTheory.Limits.PushoutCocone.IsColimit.mk eq desc fac_left fac_right uniq = (CategoryTheory.Limits.PushoutCocone.mk inl inr eq).isColimitAux desc fac_left fac_right ⋯
Instances For
The pushout cocone reconstructed using PushoutCocone.mk
from a pushout cocone that is a
colimit, is also a colimit.
Equations
- CategoryTheory.Limits.PushoutCocone.mkSelfIsColimit ht = ht.ofIsoColimit t.eta
Instances For
The pushout cocone obtained by flipping inl
and inr
.
Equations
- t.flip = CategoryTheory.Limits.PushoutCocone.mk t.inr t.inl ⋯
Instances For
Flipping a pushout cocone twice gives an isomorphic cocone.
Equations
- t.flipFlipIso = CategoryTheory.Limits.PushoutCocone.ext (CategoryTheory.Iso.refl t.flip.flip.pt) ⋯ ⋯
Instances For
The flip of a pushout square is a pushout square.
Equations
- CategoryTheory.Limits.PushoutCocone.flipIsColimit ht = CategoryTheory.Limits.PushoutCocone.IsColimit.mk ⋯ (fun (s : CategoryTheory.Limits.PushoutCocone g f) => ht.desc s.flip) ⋯ ⋯ ⋯
Instances For
A square is a pushout square if its flip is.
Equations
- CategoryTheory.Limits.PushoutCocone.isColimitOfFlip ht = (CategoryTheory.Limits.PushoutCocone.flipIsColimit ht).ofIsoColimit t.flipFlipIso
Instances For
This is a helper construction that can be useful when verifying that a category has all
pushout. Given F : WalkingSpan ⥤ C
, which is really the same as
span (F.map fst) (F.map snd)
, and a pushout cocone on F.map fst
and F.map snd
,
we get a cocone on F
.
If you're thinking about using this, have a look at hasPushouts_of_hasColimit_span
, which
you may find to be an easier way of achieving your goal.
Equations
- CategoryTheory.Limits.Cocone.ofPushoutCocone t = { pt := t.pt, ι := CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.diagramIsoSpan F).hom t.ι }
Instances For
Given F : WalkingSpan ⥤ C
, which is really the same as span (F.map fst) (F.map snd)
,
and a cocone on F
, we get a pushout cocone on F.map fst
and F.map snd
.
Equations
- CategoryTheory.Limits.PushoutCocone.ofCocone t = { pt := t.pt, ι := CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.diagramIsoSpan F).inv t.ι }
Instances For
A diagram WalkingSpan ⥤ C
is isomorphic to some PushoutCocone.mk
after composing with
diagramIsoSpan
.
Equations
- One or more equations did not get rendered due to their size.