mathlib documentation

category_theory.​limits.​shapes.​types

category_theory.​limits.​shapes.​types

Special shapes for limits in Type.

The general shape (co)limits defined in category_theory.limits.types are intended for use through the limits API, and the actual implementation should mostly be considered "sealed".

In this file, we provide definitions of the "standard" special shapes of limits in Type, giving the expected definitional implementation:

It is not intended that these definitions will be global instances: they should be turned on as needed.

As an example, when setting up the monoidal category structure on Type we use the types_has_terminal and types_has_binary_products instances.

The category of types has punit as a terminal object.

Equations

The category of types has pempty as an initial object.

Equations

The category of types has Π j, f j as the product of a type family f : J → Type.

Equations

The category of types has Σ j, f j as the coproduct of a type family f : J → Type.

Equations
theorem category_theory.​limits.​types.​terminal_from {P : Type u} (f : P ⊤_Type u) (p : P) :

@[simp]
theorem category_theory.​limits.​types.​prod (X Y : Type u) :
(X Y) = (X Y)

@[simp]
theorem category_theory.​limits.​types.​prod_lift {X Y Z : Type u} {f : X Y} {g : X Z} :
category_theory.limits.prod.lift f g = λ (x : X), (f x, g x)

@[simp]
theorem category_theory.​limits.​types.​prod_map {W X Y Z : Type u} {f : W X} {g : Y Z} :
category_theory.limits.prod.map f g = λ (p : W × Y), (f p.fst, g p.snd)

@[simp]
theorem category_theory.​limits.​types.​coprod (X Y : Type u) :
(X ⨿ Y) = (X Y)

@[simp]

@[simp]
theorem category_theory.​limits.​types.​coprod_map {W X Y Z : Type u} {f : W X} {g : Y Z} :
category_theory.limits.coprod.map f g = λ (p : W Y), sum.elim (λ (w : W), sum.inl (f w)) (λ (y : Y), sum.inr (g y)) p

@[simp]
theorem category_theory.​limits.​types.​pi {J : Type u} (f : J → Type u) :
( f) = Π (j : J), f j

@[simp]
theorem category_theory.​limits.​types.​pi_π {J : Type u} {f : J → Type u} (j : J) (g : f) :

@[simp]
theorem category_theory.​limits.​types.​pi_lift {J : Type u} {f : J → Type u} {W : Type u} {g : Π (j : J), W f j} :
category_theory.limits.pi.lift g = λ (w : W) (j : J), g j w

@[simp]
theorem category_theory.​limits.​types.​pi_map {J : Type u} {f g : J → Type u} {h : Π (j : J), f j g j} :
category_theory.limits.pi.map h = λ (k : Π (j : J), f j) (j : category_theory.discrete J), h j (k j)

@[simp]
theorem category_theory.​limits.​types.​sigma {J : Type u} (f : J → Type u) :
( f) = Σ (j : J), f j

@[simp]
theorem category_theory.​limits.​types.​sigma_ι {J : Type u} {f : J → Type u} (j : J) (x : f j) :

@[simp]
theorem category_theory.​limits.​types.​sigma_desc {J : Type u} {f : J → Type u} {W : Type u} {g : Π (j : J), f j W} {p : Σ (j : J), f j} :

@[simp]
theorem category_theory.​limits.​types.​sigma_map {J : Type u} {f g : J → Type u} {h : Π (j : J), f j g j} :
category_theory.limits.sigma.map h = λ (k : Σ (j : J), f j), k.fst, h k.fst k.snd