Disjoint union of categories #
We define the category structure on a sigma-type (disjoint union) of categories.
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.
- mk: {I : Type w₁} → {C : I → Type u₁} → [inst : (i : I) → CategoryTheory.Category.{v₁, u₁} (C i)] → {i : I} → {X Y : C i} → (X ⟶ Y) → CategoryTheory.Sigma.SigmaHom { fst := i, snd := X } { fst := i, snd := Y }
Instances For
The identity morphism on an object.
Equations
- CategoryTheory.Sigma.SigmaHom.id x = match x with | { fst := fst, snd := snd } => CategoryTheory.Sigma.SigmaHom.mk (CategoryTheory.CategoryStruct.id snd)
Instances For
Equations
- CategoryTheory.Sigma.SigmaHom.instInhabitedSigmaHom X = { default := CategoryTheory.Sigma.SigmaHom.id X }
Composition of sigma homomorphisms.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- CategoryTheory.Sigma.sigma = CategoryTheory.Category.mk
The inclusion functor into the disjoint union of categories.
Equations
- CategoryTheory.Sigma.incl i = CategoryTheory.Functor.mk { obj := fun (X : C i) => { fst := i, snd := X }, map := fun {X Y : C i} => CategoryTheory.Sigma.SigmaHom.mk }
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
To build a natural transformation over the sigma category, it suffices to specify it restricted to each subcategory.
Equations
- CategoryTheory.Sigma.natTrans h = CategoryTheory.NatTrans.mk fun (x : (i : I) × C i) => match x with | { fst := j, snd := X } => (h j).app X
Instances For
(Implementation). An auxiliary definition to build the functor desc
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
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
- One or more equations did not get rendered due to their size.
Instances For
This shows that when desc F
is restricted to just the subcategory C i
, desc F
agrees with
F i
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If q
when restricted to each subcategory C i
agrees with F i
, then q
is isomorphic to
desc F
.
Equations
- CategoryTheory.Sigma.descUniq F q h = CategoryTheory.NatIso.ofComponents fun (x : (i : I) × C i) => match x with | { fst := i, snd := X } => (h i).app X
Instances For
If q₁
and q₂
when restricted to each subcategory C i
agree, then q₁
and q₂
are isomorphic.
Equations
- CategoryTheory.Sigma.natIso h = CategoryTheory.Iso.mk (CategoryTheory.Sigma.natTrans fun (i : I) => (h i).hom) (CategoryTheory.Sigma.natTrans fun (i : I) => (h i).inv)
Instances For
A function J → I
induces a functor Σ j, C (g j) ⥤ Σ i, C i
.
Equations
- CategoryTheory.Sigma.map C g = CategoryTheory.Sigma.desc fun (j : J) => CategoryTheory.Sigma.incl (g j)
Instances For
The functor Sigma.map C g
restricted to the subcategory C j
acts as the inclusion of g j
.
Equations
Instances For
The functor Sigma.map
applied to the identity function is just the identity functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The functor Sigma.map
applied to a composition is a composition of functors.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Assemble an I
-indexed family of functors into a functor between the sigma types.
Equations
- CategoryTheory.Sigma.Functor.sigma F = CategoryTheory.Sigma.desc fun (i : I) => CategoryTheory.Functor.comp (F i) (CategoryTheory.Sigma.incl i)
Instances For
Assemble an I
-indexed family of natural transformations into a single natural transformation.
Equations
- CategoryTheory.Sigma.natTrans.sigma α = CategoryTheory.NatTrans.mk fun (f : (i : I) × C i) => CategoryTheory.Sigma.SigmaHom.mk ((α f.fst).app f.snd)