mathlib documentation

category_theory.sigma.basic

Disjoint union of categories #

We define the category structure on a sigma-type (disjoint union) of categories.

inductive category_theory.sigma.sigma_hom {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] :
(Σ (i : I), C i)(Σ (i : I), C i)Type (max w₁ v₁ u₁)

The type of morphisms of a disjoint union of categories: for X : C i and Y : C j, a morphism (i, X) ⟶ (j, Y) if i = j is just a morphism X ⟶ Y, and if i ≠ j there are no such morphisms.

def category_theory.sigma.sigma_hom.id {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] (X : Σ (i : I), C i) :

The identity morphism on an object.

Equations
@[protected, instance]
def category_theory.sigma.sigma_hom.inhabited {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] (X : Σ (i : I), C i) :
Equations
def category_theory.sigma.sigma_hom.comp {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] {X Y Z : Σ (i : I), C i} :

Composition of sigma homomorphisms.

Equations
@[protected, instance]
def category_theory.sigma.sigma_hom.sigma.category_theory.category_struct {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] :
Equations
@[simp]
theorem category_theory.sigma.sigma_hom.comp_def {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] (i : I) (X Y Z : C i) (f : X Y) (g : Y Z) :
theorem category_theory.sigma.sigma_hom.assoc {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] (X Y Z W : Σ (i : I), C i) (f : X Y) (g : Y Z) (h : Z W) :
(f g) h = f g h
theorem category_theory.sigma.sigma_hom.id_comp {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] (X Y : Σ (i : I), C i) (f : X Y) :
𝟙 X f = f
theorem category_theory.sigma.sigma_hom.comp_id {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] (X Y : Σ (i : I), C i) (f : X Y) :
f 𝟙 Y = f
@[protected, instance]
def category_theory.sigma.sigma {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] :
category_theory.category (Σ (i : I), C i)
Equations
def category_theory.sigma.incl {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] (i : I) :
C i Σ (i : I), C i

The inclusion functor into the disjoint union of categories.

Equations
@[simp]
theorem category_theory.sigma.incl_map {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] (i : I) (X Y : C i) (ᾰ : X Y) :
@[simp]
theorem category_theory.sigma.incl_obj {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] {i : I} (X : C i) :
@[protected, instance]
def category_theory.sigma.incl.category_theory.full {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] (i : I) :
Equations
@[protected, instance]
def category_theory.sigma.nat_trans {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] {D : Type u₂} [category_theory.category D] {F G : (Σ (i : I), C i) D} (h : Π (i : I), category_theory.sigma.incl i F category_theory.sigma.incl i G) :
F G

To build a natural transformation over the sigma category, it suffices to specify it restricted to each subcategory.

Equations
@[simp]
theorem category_theory.sigma.nat_trans_app {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] {D : Type u₂} [category_theory.category D] {F G : (Σ (i : I), C i) D} (h : Π (i : I), category_theory.sigma.incl i F category_theory.sigma.incl i G) (i : I) (X : C i) :
def category_theory.sigma.desc_map {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] {D : Type u₂} [category_theory.category D] (F : Π (i : I), C i D) (X Y : Σ (i : I), C i) :
(X Y)((F X.fst).obj X.snd (F Y.fst).obj Y.snd)

(Implementation). An auxiliary definition to build the functor desc.

Equations
@[simp]
theorem category_theory.sigma.desc_obj {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] {D : Type u₂} [category_theory.category D] (F : Π (i : I), C i D) (X : Σ (i : I), C i) :
def category_theory.sigma.desc {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] {D : Type u₂} [category_theory.category D] (F : Π (i : I), C i D) :
(Σ (i : I), C i) D

Given a collection of functors F i : C i ⥤ D, we can produce a functor (Σ i, C i) ⥤ D.

The produced functor desc F satisfies: incl i ⋙ desc F ≅ F i, i.e. restricted to just the subcategory C i, desc F agrees with F i, and it is unique (up to natural isomorphism) with this property.

This witnesses that the sigma-type is the coproduct in Cat.

Equations
@[simp]
theorem category_theory.sigma.desc_map_mk {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] {D : Type u₂} [category_theory.category D] (F : Π (i : I), C i D) {i : I} (X Y : C i) (f : X Y) :
def category_theory.sigma.incl_desc {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] {D : Type u₂} [category_theory.category D] (F : Π (i : I), C i D) (i : I) :

This shows that when desc F is restricted to just the subcategory C i, desc F agrees with F i.

Equations
@[simp]
theorem category_theory.sigma.incl_desc_hom_app {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] {D : Type u₂} [category_theory.category D] (F : Π (i : I), C i D) (i : I) (X : C i) :
@[simp]
theorem category_theory.sigma.incl_desc_inv_app {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] {D : Type u₂} [category_theory.category D] (F : Π (i : I), C i D) (i : I) (X : C i) :
def category_theory.sigma.desc_uniq {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] {D : Type u₂} [category_theory.category D] (F : Π (i : I), C i D) (q : (Σ (i : I), C i) D) (h : Π (i : I), category_theory.sigma.incl i q F i) :

If q when restricted to each subcategory C i agrees with F i, then q is isomorphic to desc F.

Equations
@[simp]
theorem category_theory.sigma.desc_uniq_hom_app {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] {D : Type u₂} [category_theory.category D] (F : Π (i : I), C i D) (q : (Σ (i : I), C i) D) (h : Π (i : I), category_theory.sigma.incl i q F i) (i : I) (X : C i) :
@[simp]
theorem category_theory.sigma.desc_uniq_inv_app {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] {D : Type u₂} [category_theory.category D] (F : Π (i : I), C i D) (q : (Σ (i : I), C i) D) (h : Π (i : I), category_theory.sigma.incl i q F i) (i : I) (X : C i) :
@[simp]
theorem category_theory.sigma.nat_iso_inv {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] {D : Type u₂} [category_theory.category D] {q₁ q₂ : (Σ (i : I), C i) D} (h : Π (i : I), category_theory.sigma.incl i q₁ category_theory.sigma.incl i q₂) :
def category_theory.sigma.nat_iso {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] {D : Type u₂} [category_theory.category D] {q₁ q₂ : (Σ (i : I), C i) D} (h : Π (i : I), category_theory.sigma.incl i q₁ category_theory.sigma.incl i q₂) :
q₁ q₂

If q₁ and q₂ when restricted to each subcategory C i agree, then q₁ and q₂ are isomorphic.

Equations
@[simp]
theorem category_theory.sigma.nat_iso_hom {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] {D : Type u₂} [category_theory.category D] {q₁ q₂ : (Σ (i : I), C i) D} (h : Π (i : I), category_theory.sigma.incl i q₁ category_theory.sigma.incl i q₂) :
def category_theory.sigma.map {I : Type w₁} (C : I → Type u₁) [Π (i : I), category_theory.category (C i)] {J : Type w₂} (g : J → I) :
(Σ (j : J), C (g j)) Σ (i : I), C i

A function J → I induces a functor Σ j, C (g j) ⥤ Σ i, C i.

Equations
@[simp]
theorem category_theory.sigma.map_obj {I : Type w₁} (C : I → Type u₁) [Π (i : I), category_theory.category (C i)] {J : Type w₂} (g : J → I) (j : J) (X : C (g j)) :
(category_theory.sigma.map C g).obj j, X⟩ = g j, X⟩
@[simp]
theorem category_theory.sigma.map_map {I : Type w₁} (C : I → Type u₁) [Π (i : I), category_theory.category (C i)] {J : Type w₂} (g : J → I) {j : J} {X Y : C (g j)} (f : X Y) :
@[simp]
theorem category_theory.sigma.incl_comp_map_hom_app {I : Type w₁} (C : I → Type u₁) [Π (i : I), category_theory.category (C i)] {J : Type w₂} (g : J → I) (j : J) (X : C (g j)) :
def category_theory.sigma.incl_comp_map {I : Type w₁} (C : I → Type u₁) [Π (i : I), category_theory.category (C i)] {J : Type w₂} (g : J → I) (j : J) :

The functor sigma.map C g restricted to the subcategory C j acts as the inclusion of g j.

Equations
@[simp]
theorem category_theory.sigma.incl_comp_map_inv_app {I : Type w₁} (C : I → Type u₁) [Π (i : I), category_theory.category (C i)] {J : Type w₂} (g : J → I) (j : J) (X : C (g j)) :
@[simp]
theorem category_theory.sigma.map_id_hom_app (I : Type w₁) (C : I → Type u₁) [Π (i : I), category_theory.category (C i)] (_x : Σ (i : I), (λ (i : I), (λ (i : I), C (id i)) i) i) :
(category_theory.sigma.map_id I C).hom.app _x = category_theory.sigma.nat_trans._match_1 (λ (i : I), (category_theory.nat_iso.of_components (λ (X : C i), category_theory.iso.refl i, X⟩) _).hom) _x
def category_theory.sigma.map_id (I : Type w₁) (C : I → Type u₁) [Π (i : I), category_theory.category (C i)] :
category_theory.sigma.map C id 𝟭 (Σ (i : I), C i)

The functor sigma.map applied to the identity function is just the identity functor.

Equations
@[simp]
theorem category_theory.sigma.map_id_inv_app (I : Type w₁) (C : I → Type u₁) [Π (i : I), category_theory.category (C i)] (_x : Σ (i : I), (λ (i : I), (λ (i : I), C (id i)) i) i) :
(category_theory.sigma.map_id I C).inv.app _x = category_theory.sigma.nat_trans._match_1 (λ (i : I), (category_theory.nat_iso.of_components (λ (X : C i), category_theory.iso.refl i, X⟩) _).inv) _x
def category_theory.sigma.map_comp {I : Type w₁} (C : I → Type u₁) [Π (i : I), category_theory.category (C i)] {J : Type w₂} {K : Type w₃} (f : K → J) (g : J → I) :

The functor sigma.map applied to a composition is a composition of functors.

Equations
@[simp]
theorem category_theory.sigma.map_comp_inv_app {I : Type w₁} (C : I → Type u₁) [Π (i : I), category_theory.category (C i)] {J : Type w₂} {K : Type w₃} (f : K → J) (g : J → I) (X : Σ (i : K), (λ (j : K), (C g) (f j)) i) :
@[simp]
theorem category_theory.sigma.map_comp_hom_app {I : Type w₁} (C : I → Type u₁) [Π (i : I), category_theory.category (C i)] {J : Type w₂} {K : Type w₃} (f : K → J) (g : J → I) (X : Σ (i : K), (λ (j : K), (C g) (f j)) i) :
def category_theory.sigma.functor.sigma {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] {D : I → Type u₁} [Π (i : I), category_theory.category (D i)] (F : Π (i : I), C i D i) :
(Σ (i : I), C i) Σ (i : I), D i

Assemble an I-indexed family of functors into a functor between the sigma types.

Equations
def category_theory.sigma.nat_trans.sigma {I : Type w₁} {C : I → Type u₁} [Π (i : I), category_theory.category (C i)] {D : I → Type u₁} [Π (i : I), category_theory.category (D i)] {F G : Π (i : I), C i D i} (α : Π (i : I), F i G i) :

Assemble an I-indexed family of natural transformations into a single natural transformation.

Equations