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 ⟶ Zandg : Y ⟶ Z, a termt : PullbackCone f gprovides 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 abbrevation for Cone (cospan f g), so general
results about cones are also available for PullbackCone f g.
PushoutCone f g: Given morphismsf : X ⟶ Yandg : X ⟶ Z, a termt : PushoutCone f gprovides 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.mkconstructs a term ofPullbackCone f ggiven morphismsfstandsndsuch thatfst ≫ f = snd ≫ g.PullbackCone.flipis thePullbackConeobtained by flippingfstandsnd.go back and forth between cone/pullbackcone
Interaction with IsLimit:
PullbackCone.isLimitAuxandPullbackCone.isLimitAux'provide two convenient ways to show that a givenPullbackConeis a limit cone.PullbackCone.isLimit.mkprovides a convenient way to show that aPullbackConeconstructed usingPullbackCone.mkis a limit cone.PullbackCone.IsLimit.liftandPullbackCone.IsLimit.lift'provides convenient ways for constructing the morphisms to the point of a limitPullbackConefrom the universal property.PullbackCone.IsLimit.hom_extprovides a convenient way to show that two morphisms to the point of a limitPullbackConeare 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
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 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
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 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.