mathlib documentation

category_theory.limits.shapes.binary_products

Binary (co)products #

We define a category walking_pair, which is the index category for a binary (co)product diagram. A convenience method pair X Y constructs the functor from the walking pair, hitting the given objects.

We define prod X Y and coprod X Y as limits and colimits of such functors.

Typeclasses has_binary_products and has_binary_coproducts assert the existence of (co)limits shaped as walking pairs.

We include lemmas for simplifying equations involving projections and coprojections, and define braiding and associating isomorphisms, and the product comparison morphism.

References #

The type of objects for the diagram indexing a binary (co)product.

An equivalence from walking_pair to bool, sometimes useful when reindexing limits.

Equations

The diagram on the walking pair, sending the two points to X and Y.

Equations

The natural isomorphism between pair X Y ⋙ F and pair (F.obj X) (F.obj Y).

Equations
def category_theory.limits.binary_fan {C : Type u} [category_theory.category C] (X Y : C) :
Type (max u v)

A binary fan is just a cone on a diagram indexing a product.

theorem category_theory.limits.binary_fan.is_limit.hom_ext {C : Type u} [category_theory.category C] {W X Y : C} {s : category_theory.limits.binary_fan X Y} (h : category_theory.limits.is_limit s) {f g : W s.X} (h₁ : f s.fst = g s.fst) (h₂ : f s.snd = g s.snd) :
f = g
def category_theory.limits.binary_cofan {C : Type u} [category_theory.category C] (X Y : C) :
Type (max u v)

A binary cofan is just a cocone on a diagram indexing a coproduct.

theorem category_theory.limits.binary_cofan.is_colimit.hom_ext {C : Type u} [category_theory.category C] {W X Y : C} {s : category_theory.limits.binary_cofan X Y} (h : category_theory.limits.is_colimit s) {f g : s.X W} (h₁ : s.inl f = s.inl g) (h₂ : s.inr f = s.inr g) :
f = g
@[simp]
theorem category_theory.limits.binary_fan.mk_X {C : Type u} [category_theory.category C] {X Y P : C} (π₁ : P X) (π₂ : P Y) :
def category_theory.limits.binary_fan.mk {C : Type u} [category_theory.category C] {X Y P : C} (π₁ : P X) (π₂ : P Y) :

A binary fan with vertex P consists of the two projections π₁ : P ⟶ X and π₂ : P ⟶ Y.

Equations
@[simp]
theorem category_theory.limits.binary_cofan.mk_X {C : Type u} [category_theory.category C] {X Y P : C} (ι₁ : X P) (ι₂ : Y P) :
def category_theory.limits.binary_cofan.mk {C : Type u} [category_theory.category C] {X Y P : C} (ι₁ : X P) (ι₂ : Y P) :

A binary cofan with vertex P consists of the two inclusions ι₁ : X ⟶ P and ι₂ : Y ⟶ P.

Equations
def category_theory.limits.binary_fan.is_limit.lift' {C : Type u} [category_theory.category C] {W X Y : C} {s : category_theory.limits.binary_fan X Y} (h : category_theory.limits.is_limit s) (f : W X) (g : W Y) :
{l // l s.fst = f l s.snd = g}

If s is a limit binary fan over X and Y, then every pair of morphisms f : W ⟶ X and g : W ⟶ Y induces a morphism l : W ⟶ s.X satisfying l ≫ s.fst = f and l ≫ s.snd = g.

Equations

If s is a colimit binary cofan over X and Y,, then every pair of morphisms f : X ⟶ W and g : Y ⟶ W induces a morphism l : s.X ⟶ W satisfying s.inl ≫ l = f and s.inr ≫ l = g.

Equations

An abbreviation for has_limit (pair X Y).

An abbreviation for has_colimit (pair X Y).

If we have a product of X and Y, we can access it using prod X Y or X ⨯ Y.

If we have a coproduct of X and Y, we can access it using coprod X Y or X ⨿ Y.

The projection map to the first component of the product.

The projecton map to the second component of the product.

The inclusion map from the first component of the coproduct.

The inclusion map from the second component of the coproduct.

def category_theory.limits.prod.lift {C : Type u} [category_theory.category C] {W X Y : C} [category_theory.limits.has_binary_product X Y] (f : W X) (g : W Y) :
W X Y

If the product of X and Y exists, then every pair of morphisms f : W ⟶ X and g : W ⟶ Y induces a morphism prod.lift f g : W ⟶ X ⨯ Y.

diagonal arrow of the binary product in the category fam I

def category_theory.limits.coprod.desc {C : Type u} [category_theory.category C] {W X Y : C} [category_theory.limits.has_binary_coproduct X Y] (f : X W) (g : Y W) :
X ⨿ Y W

If the coproduct of X and Y exists, then every pair of morphisms f : X ⟶ W and g : Y ⟶ W induces a morphism coprod.desc f g : X ⨿ Y ⟶ W.

codiagonal arrow of the binary coproduct

If the product of X and Y exists, then every pair of morphisms f : W ⟶ X and g : W ⟶ Y induces a morphism l : W ⟶ X ⨯ Y satisfying l ≫ prod.fst = f and l ≫ prod.snd = g.

Equations

If the coproduct of X and Y exists, then every pair of morphisms f : X ⟶ W and g : Y ⟶ W induces a morphism l : X ⨿ Y ⟶ W satisfying coprod.inl ≫ l = f and coprod.inr ≫ l = g.

Equations

If the products W ⨯ X and Y ⨯ Z exist, then every pair of morphisms f : W ⟶ Y and g : X ⟶ Z induces a morphism prod.map f g : W ⨯ X ⟶ Y ⨯ Z.

Equations

If the coproducts W ⨿ X and Y ⨿ Z exist, then every pair of morphisms f : W ⟶ Y and g : W ⟶ Z induces a morphism coprod.map f g : W ⨿ X ⟶ Y ⨿ Z.

Equations
theorem category_theory.limits.prod.comp_lift_assoc {C : Type u} [category_theory.category C] {V W X Y : C} [category_theory.limits.has_binary_product X Y] (f : V W) (g : W X) (h : W Y) {X' : C} (f' : X Y X') :
@[simp]
theorem category_theory.limits.prod.map_map_assoc {C : Type u} [category_theory.category C] {A₁ A₂ A₃ B₁ B₂ B₃ : C} [category_theory.limits.has_binary_product A₁ B₁] [category_theory.limits.has_binary_product A₂ B₂] [category_theory.limits.has_binary_product A₃ B₃] (f : A₁ A₂) (g : B₁ B₂) (h : A₂ A₃) (k : B₂ B₃) {X' : C} (f' : A₃ B₃ X') :
@[simp]
theorem category_theory.limits.prod.map_map {C : Type u} [category_theory.category C] {A₁ A₂ A₃ B₁ B₂ B₃ : C} [category_theory.limits.has_binary_product A₁ B₁] [category_theory.limits.has_binary_product A₂ B₂] [category_theory.limits.has_binary_product A₃ B₃] (f : A₁ A₂) (g : B₁ B₂) (h : A₂ A₃) (k : B₂ B₃) :

If the products W ⨯ X and Y ⨯ Z exist, then every pair of isomorphisms f : W ≅ Y and g : X ≅ Z induces an isomorphism prod.map_iso f g : W ⨯ X ≅ Y ⨯ Z.

Equations
@[simp]
theorem category_theory.limits.coprod.desc_comp_assoc {C : Type u} [category_theory.category C] {V W X Y : C} [category_theory.limits.has_binary_coproduct X Y] (f : V W) (g : X V) (h : Y V) {X' : C} (f' : W X') :
@[simp]
theorem category_theory.limits.coprod.map_map_assoc {C : Type u} [category_theory.category C] {A₁ A₂ A₃ B₁ B₂ B₃ : C} [category_theory.limits.has_binary_coproduct A₁ B₁] [category_theory.limits.has_binary_coproduct A₂ B₂] [category_theory.limits.has_binary_coproduct A₃ B₃] (f : A₁ A₂) (g : B₁ B₂) (h : A₂ A₃) (k : B₂ B₃) {X' : C} (f' : A₃ ⨿ B₃ X') :

If the coproducts W ⨿ X and Y ⨿ Z exist, then every pair of isomorphisms f : W ≅ Y and g : W ≅ Z induces a isomorphism coprod.map_iso f g : W ⨿ X ≅ Y ⨿ Z.

Equations

has_binary_products represents a choice of product for every pair of objects.

See https://stacks.math.columbia.edu/tag/001T.

has_binary_coproducts represents a choice of coproduct for every pair of objects.

See https://stacks.math.columbia.edu/tag/04AP.

If C has all limits of diagrams pair X Y, then it has all binary products

If C has all colimits of diagrams pair X Y, then it has all binary coproducts

The braiding isomorphism can be passed through a map by swapping the order.

theorem category_theory.limits.prod.associator_naturality_assoc {C : Type u} [category_theory.category C] [category_theory.limits.has_binary_products C] {X₁ X₂ X₃ Y₁ Y₂ Y₃ : C} (f₁ : X₁ Y₁) (f₂ : X₂ Y₂) (f₃ : X₃ Y₃) {X' : C} (f' : Y₁ (Y₂ Y₃) X') :

The binary product functor.

Equations

The binary coproduct functor.

Equations

The product comparison morphism.

In category_theory/limits/preserves we show this is always an iso iff F preserves binary products.

Equations

The product comparison morphism from F(A ⨯ -) to FA ⨯ F-, whose components are given by prod_comparison.

Equations

The coproduct comparison morphism.

In category_theory/limits/preserves we show this is always an iso iff F preserves binary coproducts.

Equations