Documentation

Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback

HasPullback #

HasPullback f g and pullback f g provides API for HasLimit and limit in the case of pullacks.

Main definitions #

  pullback f g ---pullback.snd f g---> Y
      |                                |
      |                                |
pullback.snd f g                       g
      |                                |
      v                                v
      X --------------f--------------> Z
      X --------------f--------------> Y
      |                                |
      g                          pushout.inr f g
      |                                |
      v                                v
      Z ---pushout.inl f g---> pushout f g

Main results & API #

(The dual results for pushouts are also available)

References #

@[reducible, inline]
abbrev CategoryTheory.Limits.HasPullback {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} {Z : C} (f : X Z) (g : Y Z) :

HasPullback f g represents a particular choice of limiting cone for the pair of morphisms f : X ⟶ Z and g : Y ⟶ Z.

Equations
@[reducible, inline]
abbrev CategoryTheory.Limits.HasPushout {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} {Z : C} (f : X Y) (g : X Z) :

HasPushout f g represents a particular choice of colimiting cocone for the pair of morphisms f : X ⟶ Y and g : X ⟶ Z.

Equations
@[reducible, inline]
abbrev CategoryTheory.Limits.pullback {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} {Z : C} (f : X Z) (g : Y Z) [CategoryTheory.Limits.HasPullback f g] :
C

pullback f g computes the pullback of a pair of morphisms with the same target.

Equations
@[reducible, inline]

The cone associated to the pullback of f and g

Equations
@[reducible, inline]
abbrev CategoryTheory.Limits.pushout {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} {Z : C} (f : X Y) (g : X Z) [CategoryTheory.Limits.HasPushout f g] :
C

pushout f g computes the pushout of a pair of morphisms with the same source.

Equations
@[reducible, inline]

The cocone associated to the pullback of f and g

Equations
@[reducible, inline]

A pair of morphisms h : W ⟶ X and k : W ⟶ Y satisfying h ≫ f = k ≫ g induces a morphism pullback.lift : W ⟶ pullback f g.

Equations
@[reducible, inline]

A pair of morphisms h : Y ⟶ W and k : Z ⟶ W satisfying f ≫ h = g ≫ k induces a morphism pushout.desc : pushout f g ⟶ W.

Equations

A pair of morphisms h : W ⟶ X and k : W ⟶ Y satisfying h ≫ f = k ≫ g induces a morphism l : W ⟶ pullback f g such that l ≫ pullback.fst = h and l ≫ pullback.snd = k.

Equations

A pair of morphisms h : Y ⟶ W and k : Z ⟶ W satisfying f ≫ h = g ≫ k induces a morphism l : pushout f g ⟶ W such that pushout.inl _ _ ≫ l = h and pushout.inr _ _ ≫ l = k.

Equations

The pushout cocone built from the pushout coprojections is a pushout.

Equations
  • One or more equations did not get rendered due to their size.
@[reducible, inline]
abbrev CategoryTheory.Limits.pullback.map {C : Type u} [CategoryTheory.Category.{v, u} C] {W : C} {X : C} {Y : C} {Z : C} {S : C} {T : C} (f₁ : W S) (f₂ : X S) [CategoryTheory.Limits.HasPullback f₁ f₂] (g₁ : Y T) (g₂ : Z T) [CategoryTheory.Limits.HasPullback g₁ g₂] (i₁ : W Y) (i₂ : X Z) (i₃ : S T) (eq₁ : CategoryTheory.CategoryStruct.comp f₁ i₃ = CategoryTheory.CategoryStruct.comp i₁ g₁) (eq₂ : CategoryTheory.CategoryStruct.comp f₂ i₃ = CategoryTheory.CategoryStruct.comp i₂ g₂) :

Given such a diagram, then there is a natural morphism W ×ₛ X ⟶ Y ×ₜ Z.

W ⟶ Y
  ↘   ↘
  S ⟶ T
  ↗   ↗
X ⟶ Z
Equations
  • One or more equations did not get rendered due to their size.
@[reducible, inline]

The canonical map X ×ₛ Y ⟶ X ×ₜ Y given S ⟶ T.

Equations
  • One or more equations did not get rendered due to their size.
theorem CategoryTheory.Limits.pullback.map_comp_assoc {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} {Z : C} {X' : C} {Y' : C} {Z' : C} {X'' : C} {Y'' : C} {Z'' : C} {f : X Z✝} {g : Y Z✝} {f' : X' Z'} {g' : Y' Z'} {f'' : X'' Z''} {g'' : Y'' Z''} (i₁ : X X') (j₁ : X' X'') (i₂ : Y Y') (j₂ : Y' Y'') (i₃ : Z✝ Z') (j₃ : Z' Z'') [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback f' g'] [CategoryTheory.Limits.HasPullback f'' g''] (e₁ : CategoryTheory.CategoryStruct.comp f i₃ = CategoryTheory.CategoryStruct.comp i₁ f') (e₂ : CategoryTheory.CategoryStruct.comp g i₃ = CategoryTheory.CategoryStruct.comp i₂ g') (e₃ : CategoryTheory.CategoryStruct.comp f' j₃ = CategoryTheory.CategoryStruct.comp j₁ f'') (e₄ : CategoryTheory.CategoryStruct.comp g' j₃ = CategoryTheory.CategoryStruct.comp j₂ g'') {Z : C} (h : CategoryTheory.Limits.pullback f'' g'' Z) :
theorem CategoryTheory.Limits.pullback.map_comp {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} {Z : C} {X' : C} {Y' : C} {Z' : C} {X'' : C} {Y'' : C} {Z'' : C} {f : X Z} {g : Y Z} {f' : X' Z'} {g' : Y' Z'} {f'' : X'' Z''} {g'' : Y'' Z''} (i₁ : X X') (j₁ : X' X'') (i₂ : Y Y') (j₂ : Y' Y'') (i₃ : Z Z') (j₃ : Z' Z'') [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback f' g'] [CategoryTheory.Limits.HasPullback f'' g''] (e₁ : CategoryTheory.CategoryStruct.comp f i₃ = CategoryTheory.CategoryStruct.comp i₁ f') (e₂ : CategoryTheory.CategoryStruct.comp g i₃ = CategoryTheory.CategoryStruct.comp i₂ g') (e₃ : CategoryTheory.CategoryStruct.comp f' j₃ = CategoryTheory.CategoryStruct.comp j₁ f'') (e₄ : CategoryTheory.CategoryStruct.comp g' j₃ = CategoryTheory.CategoryStruct.comp j₂ g'') :
@[reducible, inline]
abbrev CategoryTheory.Limits.pushout.map {C : Type u} [CategoryTheory.Category.{v, u} C] {W : C} {X : C} {Y : C} {Z : C} {S : C} {T : C} (f₁ : S W) (f₂ : S X) [CategoryTheory.Limits.HasPushout f₁ f₂] (g₁ : T Y) (g₂ : T Z) [CategoryTheory.Limits.HasPushout g₁ g₂] (i₁ : W Y) (i₂ : X Z) (i₃ : S T) (eq₁ : CategoryTheory.CategoryStruct.comp f₁ i₁ = CategoryTheory.CategoryStruct.comp i₃ g₁) (eq₂ : CategoryTheory.CategoryStruct.comp f₂ i₂ = CategoryTheory.CategoryStruct.comp i₃ g₂) :

Given such a diagram, then there is a natural morphism W ⨿ₛ X ⟶ Y ⨿ₜ Z.

  W ⟶ Y
 ↗   ↗
S ⟶ T
 ↘   ↘
  X ⟶ Z
Equations
  • One or more equations did not get rendered due to their size.
@[reducible, inline]

The canonical map X ⨿ₛ Y ⟶ X ⨿ₜ Y given S ⟶ T.

Equations
  • One or more equations did not get rendered due to their size.
theorem CategoryTheory.Limits.pushout.map_comp_assoc {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} {Z : C} {X' : C} {Y' : C} {Z' : C} {X'' : C} {Y'' : C} {Z'' : C} {f : X Y} {g : X Z✝} {f' : X' Y'} {g' : X' Z'} {f'' : X'' Y''} {g'' : X'' Z''} (i₁ : X X') (j₁ : X' X'') (i₂ : Y Y') (j₂ : Y' Y'') (i₃ : Z✝ Z') (j₃ : Z' Z'') [CategoryTheory.Limits.HasPushout f g] [CategoryTheory.Limits.HasPushout f' g'] [CategoryTheory.Limits.HasPushout f'' g''] (e₁ : CategoryTheory.CategoryStruct.comp f i₂ = CategoryTheory.CategoryStruct.comp i₁ f') (e₂ : CategoryTheory.CategoryStruct.comp g i₃ = CategoryTheory.CategoryStruct.comp i₁ g') (e₃ : CategoryTheory.CategoryStruct.comp f' j₂ = CategoryTheory.CategoryStruct.comp j₁ f'') (e₄ : CategoryTheory.CategoryStruct.comp g' j₃ = CategoryTheory.CategoryStruct.comp j₁ g'') {Z : C} (h : CategoryTheory.Limits.pushout f'' g'' Z) :
theorem CategoryTheory.Limits.pushout.map_comp {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} {Z : C} {X' : C} {Y' : C} {Z' : C} {X'' : C} {Y'' : C} {Z'' : C} {f : X Y} {g : X Z} {f' : X' Y'} {g' : X' Z'} {f'' : X'' Y''} {g'' : X'' Z''} (i₁ : X X') (j₁ : X' X'') (i₂ : Y Y') (j₂ : Y' Y'') (i₃ : Z Z') (j₃ : Z' Z'') [CategoryTheory.Limits.HasPushout f g] [CategoryTheory.Limits.HasPushout f' g'] [CategoryTheory.Limits.HasPushout f'' g''] (e₁ : CategoryTheory.CategoryStruct.comp f i₂ = CategoryTheory.CategoryStruct.comp i₁ f') (e₂ : CategoryTheory.CategoryStruct.comp g i₃ = CategoryTheory.CategoryStruct.comp i₁ g') (e₃ : CategoryTheory.CategoryStruct.comp f' j₂ = CategoryTheory.CategoryStruct.comp j₁ f'') (e₄ : CategoryTheory.CategoryStruct.comp g' j₃ = CategoryTheory.CategoryStruct.comp j₁ g'') :
instance CategoryTheory.Limits.pullback.map_isIso {C : Type u} [CategoryTheory.Category.{v, u} C] {W : C} {X : C} {Y : C} {Z : C} {S : C} {T : C} (f₁ : W S) (f₂ : X S) [CategoryTheory.Limits.HasPullback f₁ f₂] (g₁ : Y T) (g₂ : Z T) [CategoryTheory.Limits.HasPullback g₁ g₂] (i₁ : W Y) (i₂ : X Z) (i₃ : S T) (eq₁ : CategoryTheory.CategoryStruct.comp f₁ i₃ = CategoryTheory.CategoryStruct.comp i₁ g₁) (eq₂ : CategoryTheory.CategoryStruct.comp f₂ i₃ = CategoryTheory.CategoryStruct.comp i₂ g₂) [CategoryTheory.IsIso i₁] [CategoryTheory.IsIso i₂] [CategoryTheory.IsIso i₃] :
CategoryTheory.IsIso (CategoryTheory.Limits.pullback.map f₁ f₂ g₁ g₂ i₁ i₂ i₃ eq₁ eq₂)
Equations
  • =
@[simp]
theorem CategoryTheory.Limits.pullback.congrHom_hom {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} {Z : C} {f₁ : X Z} {f₂ : X Z} {g₁ : Y Z} {g₂ : Y Z} (h₁ : f₁ = f₂) (h₂ : g₁ = g₂) [CategoryTheory.Limits.HasPullback f₁ g₁] [CategoryTheory.Limits.HasPullback f₂ g₂] :
def CategoryTheory.Limits.pullback.congrHom {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} {Z : C} {f₁ : X Z} {f₂ : X Z} {g₁ : Y Z} {g₂ : Y Z} (h₁ : f₁ = f₂) (h₂ : g₁ = g₂) [CategoryTheory.Limits.HasPullback f₁ g₁] [CategoryTheory.Limits.HasPullback f₂ g₂] :

If f₁ = f₂ and g₁ = g₂, we may construct a canonical isomorphism pullback f₁ g₁ ≅ pullback f₂ g₂

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem CategoryTheory.Limits.pullback.congrHom_inv {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} {Z : C} {f₁ : X Z} {f₂ : X Z} {g₁ : Y Z} {g₂ : Y Z} (h₁ : f₁ = f₂) (h₂ : g₁ = g₂) [CategoryTheory.Limits.HasPullback f₁ g₁] [CategoryTheory.Limits.HasPullback f₂ g₂] :
instance CategoryTheory.Limits.pushout.map_isIso {C : Type u} [CategoryTheory.Category.{v, u} C] {W : C} {X : C} {Y : C} {Z : C} {S : C} {T : C} (f₁ : S W) (f₂ : S X) [CategoryTheory.Limits.HasPushout f₁ f₂] (g₁ : T Y) (g₂ : T Z) [CategoryTheory.Limits.HasPushout g₁ g₂] (i₁ : W Y) (i₂ : X Z) (i₃ : S T) (eq₁ : CategoryTheory.CategoryStruct.comp f₁ i₁ = CategoryTheory.CategoryStruct.comp i₃ g₁) (eq₂ : CategoryTheory.CategoryStruct.comp f₂ i₂ = CategoryTheory.CategoryStruct.comp i₃ g₂) [CategoryTheory.IsIso i₁] [CategoryTheory.IsIso i₂] [CategoryTheory.IsIso i₃] :
CategoryTheory.IsIso (CategoryTheory.Limits.pushout.map f₁ f₂ g₁ g₂ i₁ i₂ i₃ eq₁ eq₂)
Equations
  • =
@[simp]
theorem CategoryTheory.Limits.pushout.congrHom_hom {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} {Z : C} {f₁ : X Y} {f₂ : X Y} {g₁ : X Z} {g₂ : X Z} (h₁ : f₁ = f₂) (h₂ : g₁ = g₂) [CategoryTheory.Limits.HasPushout f₁ g₁] [CategoryTheory.Limits.HasPushout f₂ g₂] :
def CategoryTheory.Limits.pushout.congrHom {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} {Z : C} {f₁ : X Y} {f₂ : X Y} {g₁ : X Z} {g₂ : X Z} (h₁ : f₁ = f₂) (h₂ : g₁ = g₂) [CategoryTheory.Limits.HasPushout f₁ g₁] [CategoryTheory.Limits.HasPushout f₂ g₂] :

If f₁ = f₂ and g₁ = g₂, we may construct a canonical isomorphism pushout f₁ g₁ ≅ pullback f₂ g₂

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem CategoryTheory.Limits.pushout.congrHom_inv {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {Y : C} {Z : C} {f₁ : X Y} {f₂ : X Y} {g₁ : X Z} {g₂ : X Z} (h₁ : f₁ = f₂) (h₂ : g₁ = g₂) [CategoryTheory.Limits.HasPushout f₁ g₁] [CategoryTheory.Limits.HasPushout f₂ g₂] :

The comparison morphism for the pullback of f,g. This is an isomorphism iff G preserves the pullback of f,g; see Mathlib/CategoryTheory/Limits/Preserves/Shapes/Pullbacks.lean

Equations

The comparison morphism for the pushout of f,g. This is an isomorphism iff G preserves the pushout of f,g; see Mathlib/CategoryTheory/Limits/Preserves/Shapes/Pullbacks.lean

Equations

Making this a global instance would make the typeclass search go in an infinite loop.

The isomorphism X ×[Z] Y ≅ Y ×[Z] X.

Equations
  • One or more equations did not get rendered due to their size.

Making this a global instance would make the typeclass search go in an infinite loop.

The isomorphism Y ⨿[X] Z ≅ Z ⨿[X] Y.

Equations
  • One or more equations did not get rendered due to their size.

If C has all limits of diagrams cospan f g, then it has all pullbacks

If C has all colimits of diagrams span f g, then it has all pushouts

@[instance 100]

Having wide pullback at any universe level implies having binary pullbacks.

Equations
  • =
@[instance 100]

Having wide pushout at any universe level implies having binary pushouts.

Equations
  • =