Disjoint union of categories #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
We define the category structure on a sigma-type (disjoint union) of categories.
- mk : Π {I : Type w₁} {C : I → Type u₁} [_inst_1 : Π (i : I), category_theory.category (C i)] {i : I} {X Y : C i}, (X ⟶ Y) → category_theory.sigma.sigma_hom ⟨i, X⟩ ⟨i, Y⟩
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.
Instances for category_theory.sigma.sigma_hom
- category_theory.sigma.sigma_hom.has_sizeof_inst
- category_theory.sigma.sigma_hom.inhabited
The identity morphism on an object.
Equations
Equations
Composition of sigma homomorphisms.
Equations
Equations
- category_theory.sigma.sigma_hom.sigma.category_theory.category_struct = {to_quiver := {hom := category_theory.sigma.sigma_hom (λ (i : I), _inst_1 i)}, id := category_theory.sigma.sigma_hom.id (λ (i : I), _inst_1 i), comp := λ (X Y Z : Σ (i : I), C i) (f : X ⟶ Y) (g : Y ⟶ Z), category_theory.sigma.sigma_hom.comp f g}
Equations
- category_theory.sigma.sigma = {to_category_struct := category_theory.sigma.sigma_hom.sigma.category_theory.category_struct (λ (i : I), _inst_1 i), id_comp' := _, comp_id' := _, assoc' := _}
The inclusion functor into the disjoint union of categories.
Equations
- category_theory.sigma.incl i = {obj := λ (X : C i), ⟨i, X⟩, map := λ (X Y : C i), category_theory.sigma.sigma_hom.mk, map_id' := _, map_comp' := _}
Instances for category_theory.sigma.incl
Equations
- category_theory.sigma.incl.category_theory.full i = {preimage := λ (X Y : C i) (_x : (category_theory.sigma.incl i).obj X ⟶ (category_theory.sigma.incl i).obj Y), category_theory.sigma.incl.category_theory.full._match_1 i X Y _x, witness' := _}
- category_theory.sigma.incl.category_theory.full._match_1 i X Y (category_theory.sigma.sigma_hom.mk f) = f
To build a natural transformation over the sigma category, it suffices to specify it restricted to each subcategory.
Equations
- category_theory.sigma.nat_trans h = {app := λ (_x : Σ (i : I), C i), category_theory.sigma.nat_trans._match_1 h _x, naturality' := _}
- category_theory.sigma.nat_trans._match_1 h ⟨j, X⟩ = (h j).app X
(Implementation). An auxiliary definition to build the functor desc
.
Equations
- category_theory.sigma.desc_map F ⟨a_18, a_19⟩ ⟨a_18, a_20⟩ (category_theory.sigma.sigma_hom.mk g) = (F ⟨a_18, a_19⟩.fst).map g
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.
This shows that when desc F
is restricted to just the subcategory C i
, desc F
agrees with
F i
.
Equations
- category_theory.sigma.incl_desc F i = category_theory.nat_iso.of_components (λ (X : C i), category_theory.iso.refl ((category_theory.sigma.incl i ⋙ category_theory.sigma.desc F).obj X)) _
If q
when restricted to each subcategory C i
agrees with F i
, then q
is isomorphic to
desc F
.
Equations
- category_theory.sigma.desc_uniq F q h = category_theory.nat_iso.of_components (λ (_x : Σ (i : I), C i), category_theory.sigma.desc_uniq._match_1 F q h _x) _
- category_theory.sigma.desc_uniq._match_1 F q h ⟨i, X⟩ = (h i).app X
If q₁
and q₂
when restricted to each subcategory C i
agree, then q₁
and q₂
are isomorphic.
Equations
- category_theory.sigma.nat_iso h = {hom := category_theory.sigma.nat_trans (λ (i : I), (h i).hom), inv := category_theory.sigma.nat_trans (λ (i : I), (h i).inv), hom_inv_id' := _, inv_hom_id' := _}
A function J → I
induces a functor Σ j, C (g j) ⥤ Σ i, C i
.
Equations
- category_theory.sigma.map C g = category_theory.sigma.desc (λ (j : J), category_theory.sigma.incl (g j))
The functor sigma.map C g
restricted to the subcategory C j
acts as the inclusion of g j
.
Equations
The functor sigma.map
applied to the identity function is just the identity functor.
Equations
- category_theory.sigma.map_id I C = category_theory.sigma.nat_iso (λ (i : I), category_theory.nat_iso.of_components (λ (X : C (id i)), category_theory.iso.refl ((category_theory.sigma.incl i ⋙ category_theory.sigma.map C id).obj X)) _)
The functor sigma.map
applied to a composition is a composition of functors.
Equations
- category_theory.sigma.map_comp C f g = category_theory.sigma.desc_uniq (λ (j : K), category_theory.sigma.incl ((g ∘ f) j)) (category_theory.sigma.map (C ∘ g) f ⋙ category_theory.sigma.map C g) (λ (k : K), category_theory.iso_whisker_right (category_theory.sigma.incl_comp_map (C ∘ g) f k) (category_theory.sigma.map C g) ≪≫ category_theory.sigma.incl_comp_map C (λ (x : J), g x) (f k))
Assemble an I
-indexed family of functors into a functor between the sigma types.
Equations
- category_theory.sigma.functor.sigma F = category_theory.sigma.desc (λ (i : I), F i ⋙ category_theory.sigma.incl i)
Assemble an I
-indexed family of natural transformations into a single natural transformation.
Equations
- category_theory.sigma.nat_trans.sigma α = {app := λ (f : Σ (i : I), C i), category_theory.sigma.sigma_hom.mk ((α f.fst).app f.snd), naturality' := _}