Documentation

Mathlib.CategoryTheory.Products.Basic

Cartesian products of categories #

We define the category instance on C × D when C and D are categories.

We define:

We further define evaluation : C ⥤ (C ⥤ D) ⥤ D and evaluationUncurried : C × (C ⥤ D) ⥤ D, and products of functors and natural transformations, written F.prod G and α.prod β.

@[simp]
theorem CategoryTheory.prod_Hom (C : Type u₁) [CategoryTheory.Category.{v₁, u₁} C] (D : Type u₂) [CategoryTheory.Category.{v₂, u₂} D] (X : C × D) (Y : C × D) :
(X Y) = ((X.1 Y.1) × (X.2 Y.2))
@[simp]

Two rfl lemmas that cannot be generated by @[simps].

@[simp]
theorem CategoryTheory.prod_comp (C : Type u₁) [CategoryTheory.Category.{v₁, u₁} C] (D : Type u₂) [CategoryTheory.Category.{v₂, u₂} D] {P : C} {Q : C} {R : C} {S : D} {T : D} {U : D} (f : (P, S) (Q, T)) (g : (Q, T) (R, U)) :

The isomorphism between (X.1, X.2) and X.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem CategoryTheory.Iso.prod_hom {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] {P : C} {Q : C} {S : D} {T : D} (f : P Q) (g : S T) :
(CategoryTheory.Iso.prod f g).hom = (f.hom, g.hom)
@[simp]
theorem CategoryTheory.Iso.prod_inv {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] {P : C} {Q : C} {S : D} {T : D} (f : P Q) (g : S T) :
(CategoryTheory.Iso.prod f g).inv = (f.inv, g.inv)
def CategoryTheory.Iso.prod {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] {P : C} {Q : C} {S : D} {T : D} (f : P Q) (g : S T) :
(P, S) (Q, T)

Construct an isomorphism in C × D out of two isomorphisms in C and D.

Equations

Category.uniformProd C D is an additional instance specialised so both factors have the same universe levels. This helps typeclass resolution.

Equations

sectl C Z is the functor C ⥤ C × D given by X ↦ (X, Z).

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

sectr Z D is the functor D ⥤ C × D given by Y ↦ (Z, Y) .

Equations
  • One or more equations did not get rendered due to their size.
@[simp]

fst is the functor (X, Y) ↦ X.

Equations
  • CategoryTheory.Prod.fst C D = { toPrefunctor := { obj := fun (X : C × D) => X.1, map := fun {X Y : C × D} (f : X Y) => f.1 }, map_id := , map_comp := }
@[simp]

snd is the functor (X, Y) ↦ Y.

Equations
  • CategoryTheory.Prod.snd C D = { toPrefunctor := { obj := fun (X : C × D) => X.2, map := fun {X Y : C × D} (f : X Y) => f.2 }, map_id := , map_comp := }
@[simp]
theorem CategoryTheory.Prod.swap_map (C : Type u₁) [CategoryTheory.Category.{v₁, u₁} C] (D : Type u₂) [CategoryTheory.Category.{v₂, u₂} D] :
∀ {X Y : C × D} (f : X Y), (CategoryTheory.Prod.swap C D).map f = (f.2, f.1)

The functor swapping the factors of a cartesian product of categories, C × D ⥤ D × C.

Equations
  • CategoryTheory.Prod.swap C D = { toPrefunctor := { obj := fun (X : C × D) => (X.2, X.1), map := fun {X Y : C × D} (f : X Y) => (f.2, f.1) }, map_id := , map_comp := }
Instances For

Swapping the factors of a cartesian product of categories twice is naturally isomorphic to the identity functor.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem CategoryTheory.Prod.braiding_inverse_map (C : Type u₁) [CategoryTheory.Category.{v₁, u₁} C] (D : Type u₂) [CategoryTheory.Category.{v₂, u₂} D] :
∀ {X Y : D × C} (f : X Y), (CategoryTheory.Prod.braiding C D).inverse.map f = (f.2, f.1)
@[simp]
theorem CategoryTheory.Prod.braiding_functor_map (C : Type u₁) [CategoryTheory.Category.{v₁, u₁} C] (D : Type u₂) [CategoryTheory.Category.{v₂, u₂} D] :
∀ {X Y : C × D} (f : X Y), (CategoryTheory.Prod.braiding C D).functor.map f = (f.2, f.1)

The equivalence, given by swapping factors, between C × D and D × C.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem CategoryTheory.evaluation_obj_map (C : Type u₁) [CategoryTheory.Category.{v₁, u₁} C] (D : Type u₂) [CategoryTheory.Category.{v₂, u₂} D] (X : C) :
∀ {X_1 Y : CategoryTheory.Functor C D} (α : X_1 Y), ((CategoryTheory.evaluation C D).obj X).map α = α.app X
@[simp]
theorem CategoryTheory.evaluation_map_app (C : Type u₁) [CategoryTheory.Category.{v₁, u₁} C] (D : Type u₂) [CategoryTheory.Category.{v₂, u₂} D] {X : C} {Y : C} (f : X Y) (F : CategoryTheory.Functor C D) :
((CategoryTheory.evaluation C D).map f).app F = F.map f

The "evaluation at X" functor, such that (evaluation.obj X).obj F = F.obj X, which is functorial in both X and F.

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

The "evaluation of F at X" functor, as a functor C × (C ⥤ D) ⥤ D.

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

The constant functor followed by the evaluation functor is just the identity.

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

The cartesian product of two functors.

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

Similar to prod, but both functors start from the same category A

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

The product F.prod' G followed by projection on the first component is isomorphic to F

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

The product F.prod' G followed by projection on the second component is isomorphic to G

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem CategoryTheory.Functor.diag_map (C : Type u₃) [CategoryTheory.Category.{v₃, u₃} C] {X : C} {Y : C} (f : X Y) :

The cartesian product of two natural transformations.

Equations

The cartesian product of two natural isomorphisms.

Equations

The cartesian product of two equivalences of categories.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem CategoryTheory.functorProdToProdFunctor_map (A : Type u₁) [CategoryTheory.Category.{v₁, u₁} A] (B : Type u₂) [CategoryTheory.Category.{v₂, u₂} B] (C : Type u₃) [CategoryTheory.Category.{v₃, u₃} C] :
∀ {X Y : CategoryTheory.Functor A (B × C)} (α : X Y), (CategoryTheory.functorProdToProdFunctor A B C).map α = ({ app := fun (X_1 : A) => (α.app X_1).1, naturality := }, { app := fun (X_1 : A) => (α.app X_1).2, naturality := })

The equivalence of categories between (A ⥤ B) × (A ⥤ C) and A ⥤ (B × C)

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem CategoryTheory.prodOpEquiv_inverse_map (C : Type u₃) [CategoryTheory.Category.{v₃, u₃} C] {D : Type u₄} [CategoryTheory.Category.{v₄, u₄} D] :
∀ {X Y : Cᵒᵖ × Dᵒᵖ} (x : X Y), (CategoryTheory.prodOpEquiv C).inverse.map x = match x with | (f, g) => Opposite.op (f.unop, g.unop)
@[simp]
theorem CategoryTheory.prodOpEquiv_functor_map (C : Type u₃) [CategoryTheory.Category.{v₃, u₃} C] {D : Type u₄} [CategoryTheory.Category.{v₄, u₄} D] :
∀ {X Y : (C × D)ᵒᵖ} (f : X Y), (CategoryTheory.prodOpEquiv C).functor.map f = (f.unop.1.op, f.unop.2.op)
@[simp]
theorem CategoryTheory.prodOpEquiv_counitIso (C : Type u₃) [CategoryTheory.Category.{v₃, u₃} C] {D : Type u₄} [CategoryTheory.Category.{v₄, u₄} D] :
(CategoryTheory.prodOpEquiv C).counitIso = CategoryTheory.Iso.refl (CategoryTheory.Functor.comp { toPrefunctor := { obj := fun (x : Cᵒᵖ × Dᵒᵖ) => match x with | (X, Y) => Opposite.op (X.unop, Y.unop), map := fun {X Y : Cᵒᵖ × Dᵒᵖ} (x : X Y) => match x with | (f, g) => Opposite.op (f.unop, g.unop) }, map_id := , map_comp := } { toPrefunctor := { obj := fun (X : (C × D)ᵒᵖ) => (Opposite.op X.unop.1, Opposite.op X.unop.2), map := fun {X Y : (C × D)ᵒᵖ} (f : X Y) => (f.unop.1.op, f.unop.2.op) }, map_id := , map_comp := })
@[simp]
theorem CategoryTheory.prodOpEquiv_inverse_obj (C : Type u₃) [CategoryTheory.Category.{v₃, u₃} C] {D : Type u₄} [CategoryTheory.Category.{v₄, u₄} D] :
∀ (x : Cᵒᵖ × Dᵒᵖ), (CategoryTheory.prodOpEquiv C).inverse.obj x = match x with | (X, Y) => Opposite.op (X.unop, Y.unop)

The equivalence between the opposite of a product and the product of the opposites.

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