Facts about (co)limits of functors into concrete categories #
The forgetful functor on Type u is the identity; copy the instances on ๐ญ (Type u)
over to forget (Type u).
Since instance synthesis only looks through reducible definitions, we need to help it out by copying over the instances that wouldn't be found otherwise.
theorem
CategoryTheory.Limits.Concrete.small_sections_of_hasLimit
{C : Type u}
[Category.{v, u} C]
{FC : outParam (C โ C โ Type u_1)}
{CC : outParam (C โ Type v)}
[outParam ((X Y : C) โ FunLike (FC X Y) (CC X) (CC Y))]
[ConcreteCategory C FC]
[(forget C).IsCorepresentable]
{J : Type w}
[Category.{t, w} J]
(G : Functor J C)
[HasLimit G]
:
Small.{v, max v w} โ(G.comp (forget C)).sections
If a functor G : J โฅค C to a concrete category has a limit and that forget C
is corepresentable, then (G โ forget C).sections is small.
theorem
CategoryTheory.Limits.Concrete.to_product_injective_of_isLimit
{C : Type u}
[Category.{v, u} C]
{FC : C โ C โ Type u_1}
{CC : C โ Type r}
[(X Y : C) โ FunLike (FC X Y) (CC X) (CC Y)]
[ConcreteCategory C FC]
{J : Type w}
[Category.{t, w} J]
(F : Functor J C)
[PreservesLimit F (forget C)]
{D : Cone F}
(hD : IsLimit D)
:
Function.Injective fun (x : ToType D.pt) (j : J) => (ConcreteCategory.hom (D.ฯ.app j)) x
theorem
CategoryTheory.Limits.Concrete.isLimit_ext
{C : Type u}
[Category.{v, u} C]
{FC : C โ C โ Type u_1}
{CC : C โ Type r}
[(X Y : C) โ FunLike (FC X Y) (CC X) (CC Y)]
[ConcreteCategory C FC]
{J : Type w}
[Category.{t, w} J]
(F : Functor J C)
[PreservesLimit F (forget C)]
{D : Cone F}
(hD : IsLimit D)
(x y : ToType D.pt)
:
(โ (j : J), (ConcreteCategory.hom (D.ฯ.app j)) x = (ConcreteCategory.hom (D.ฯ.app j)) y) โ x = y
theorem
CategoryTheory.Limits.Concrete.limit_ext
{C : Type u}
[Category.{v, u} C]
{FC : C โ C โ Type u_1}
{CC : C โ Type r}
[(X Y : C) โ FunLike (FC X Y) (CC X) (CC Y)]
[ConcreteCategory C FC]
{J : Type w}
[Category.{t, w} J]
(F : Functor J C)
[PreservesLimit F (forget C)]
[HasLimit F]
(x y : ToType (limit F))
:
(โ (j : J), (ConcreteCategory.hom (limit.ฯ F j)) x = (ConcreteCategory.hom (limit.ฯ F j)) y) โ x = y
theorem
CategoryTheory.Limits.Concrete.surjective_ฯ_app_zero_of_surjective_map
{C : Type u}
[Category.{v, u} C]
{FC : C โ C โ Type u_2}
{CC : C โ Type v}
[(X Y : C) โ FunLike (FC X Y) (CC X) (CC Y)]
[ConcreteCategory C FC]
[PreservesLimitsOfShape โแตแต (forget C)]
{F : Functor โแตแต C}
{c : Cone F}
(hc : IsLimit c)
(hF : โ (n : โ), Function.Surjective โ(ConcreteCategory.hom (F.map (homOfLE โฏ).op)))
:
Function.Surjective โ(ConcreteCategory.hom (c.ฯ.app (Opposite.op 0)))
Given surjections โฏ โถ Xโโโ โถ Xโ โถ โฏ โถ Xโ in a concrete category whose forgetful functor
preserves sequential limits, the projection map lim Xโ โถ Xโ is surjective.
theorem
CategoryTheory.Limits.Concrete.from_union_surjective_of_isColimit
{C : Type u}
[Category.{v, u} C]
{FC : C โ C โ Type u_1}
{CC : C โ Type t}
[(X Y : C) โ FunLike (FC X Y) (CC X) (CC Y)]
[ConcreteCategory C FC]
{J : Type w}
[Category.{r, w} J]
(F : Functor J C)
[PreservesColimit F (forget C)]
{D : Cocone F}
(hD : IsColimit D)
:
have ff := fun (a : (j : J) ร ToType (F.obj j)) => (ConcreteCategory.hom (D.ฮน.app a.fst)) a.snd;
Function.Surjective ff
theorem
CategoryTheory.Limits.Concrete.isColimit_exists_rep
{C : Type u}
[Category.{v, u} C]
{FC : C โ C โ Type u_1}
{CC : C โ Type t}
[(X Y : C) โ FunLike (FC X Y) (CC X) (CC Y)]
[ConcreteCategory C FC]
{J : Type w}
[Category.{r, w} J]
(F : Functor J C)
[PreservesColimit F (forget C)]
{D : Cocone F}
(hD : IsColimit D)
(x : ToType D.pt)
:
theorem
CategoryTheory.Limits.Concrete.colimit_exists_rep
{C : Type u}
[Category.{v, u} C]
{FC : C โ C โ Type u_1}
{CC : C โ Type t}
[(X Y : C) โ FunLike (FC X Y) (CC X) (CC Y)]
[ConcreteCategory C FC]
{J : Type w}
[Category.{r, w} J]
(F : Functor J C)
[PreservesColimit F (forget C)]
[HasColimit F]
(x : ToType (colimit F))
:
โ (j : J) (y : ToType (F.obj j)), (ConcreteCategory.hom (colimit.ฮน F j)) y = x
theorem
CategoryTheory.Limits.Concrete.isColimit_rep_eq_of_exists
{C : Type u}
[Category.{v, u} C]
{FC : C โ C โ Type u_1}
{CC : C โ Type t}
[(X Y : C) โ FunLike (FC X Y) (CC X) (CC Y)]
[ConcreteCategory C FC]
{J : Type w}
[Category.{r, w} J]
(F : Functor J C)
{D : Cocone F}
{i j : J}
(x : ToType (F.obj i))
(y : ToType (F.obj j))
(h : โ (k : J) (f : i โถ k) (g : j โถ k), (ConcreteCategory.hom (F.map f)) x = (ConcreteCategory.hom (F.map g)) y)
:
theorem
CategoryTheory.Limits.Concrete.colimit_rep_eq_of_exists
{C : Type u}
[Category.{v, u} C]
{FC : C โ C โ Type u_1}
{CC : C โ Type t}
[(X Y : C) โ FunLike (FC X Y) (CC X) (CC Y)]
[ConcreteCategory C FC]
{J : Type w}
[Category.{r, w} J]
(F : Functor J C)
[HasColimit F]
{i j : J}
(x : ToType (F.obj i))
(y : ToType (F.obj j))
(h : โ (k : J) (f : i โถ k) (g : j โถ k), (ConcreteCategory.hom (F.map f)) x = (ConcreteCategory.hom (F.map g)) y)
:
theorem
CategoryTheory.Limits.Concrete.isColimit_exists_of_rep_eq
{C : Type u}
[Category.{v, u} C]
{FC : C โ C โ Type u_1}
{CC : C โ Type s}
[(X Y : C) โ FunLike (FC X Y) (CC X) (CC Y)]
[ConcreteCategory C FC]
{J : Type w}
[Category.{r, w} J]
(F : Functor J C)
[PreservesColimit F (forget C)]
[IsFiltered J]
{D : Cocone F}
{i j : J}
(hD : IsColimit D)
(x : ToType (F.obj i))
(y : ToType (F.obj j))
(h : (ConcreteCategory.hom (D.ฮน.app i)) x = (ConcreteCategory.hom (D.ฮน.app j)) y)
:
โ (k : J) (f : i โถ k) (g : j โถ k), (ConcreteCategory.hom (F.map f)) x = (ConcreteCategory.hom (F.map g)) y
theorem
CategoryTheory.Limits.Concrete.isColimit_rep_eq_iff_exists
{C : Type u}
[Category.{v, u} C]
{FC : C โ C โ Type u_1}
{CC : C โ Type s}
[(X Y : C) โ FunLike (FC X Y) (CC X) (CC Y)]
[ConcreteCategory C FC]
{J : Type w}
[Category.{r, w} J]
(F : Functor J C)
[PreservesColimit F (forget C)]
[IsFiltered J]
{D : Cocone F}
{i j : J}
(hD : IsColimit D)
(x : ToType (F.obj i))
(y : ToType (F.obj j))
:
(ConcreteCategory.hom (D.ฮน.app i)) x = (ConcreteCategory.hom (D.ฮน.app j)) y โ โ (k : J) (f : i โถ k) (g : j โถ k), (ConcreteCategory.hom (F.map f)) x = (ConcreteCategory.hom (F.map g)) y
theorem
CategoryTheory.Limits.Concrete.colimit_exists_of_rep_eq
{C : Type u}
[Category.{v, u} C]
{FC : C โ C โ Type u_1}
{CC : C โ Type s}
[(X Y : C) โ FunLike (FC X Y) (CC X) (CC Y)]
[ConcreteCategory C FC]
{J : Type w}
[Category.{r, w} J]
(F : Functor J C)
[PreservesColimit F (forget C)]
[IsFiltered J]
[HasColimit F]
{i j : J}
(x : ToType (F.obj i))
(y : ToType (F.obj j))
(h : (ConcreteCategory.hom (colimit.ฮน F i)) x = (ConcreteCategory.hom (colimit.ฮน F j)) y)
:
โ (k : J) (f : i โถ k) (g : j โถ k), (ConcreteCategory.hom (F.map f)) x = (ConcreteCategory.hom (F.map g)) y
theorem
CategoryTheory.Limits.Concrete.colimit_rep_eq_iff_exists
{C : Type u}
[Category.{v, u} C]
{FC : C โ C โ Type u_1}
{CC : C โ Type s}
[(X Y : C) โ FunLike (FC X Y) (CC X) (CC Y)]
[ConcreteCategory C FC]
{J : Type w}
[Category.{r, w} J]
(F : Functor J C)
[PreservesColimit F (forget C)]
[IsFiltered J]
[HasColimit F]
{i j : J}
(x : ToType (F.obj i))
(y : ToType (F.obj j))
:
(ConcreteCategory.hom (colimit.ฮน F i)) x = (ConcreteCategory.hom (colimit.ฮน F j)) y โ โ (k : J) (f : i โถ k) (g : j โถ k), (ConcreteCategory.hom (F.map f)) x = (ConcreteCategory.hom (F.map g)) y