Skip to content

Commit

Permalink
feat: finality of a certain functor related to colimits of representa…
Browse files Browse the repository at this point in the history
…ble presheaves (#10339)

This is the final missing ingredient of the [recognition theorem for Ind-objects (Prop. 4.8)](https://ncatlab.org/nlab/show/ind-object#recognition_of_indobjects), so after this is done it's probably finally time to get the definition of an Ind-object into mathlib.
  • Loading branch information
TwoFX committed Feb 14, 2024
1 parent 816a7eb commit 30e83bf
Showing 1 changed file with 34 additions and 6 deletions.
40 changes: 34 additions & 6 deletions Mathlib/CategoryTheory/Limits/Presheaf.lean
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@ Copyright (c) 2020 Bhavik Mehta. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Bhavik Mehta
-/
import Mathlib.CategoryTheory.Adjunction.Limits
import Mathlib.CategoryTheory.Adjunction.Opposites
import Mathlib.CategoryTheory.Comma.Presheaf
import Mathlib.CategoryTheory.Elements
import Mathlib.CategoryTheory.Limits.FunctorCategory
import Mathlib.CategoryTheory.Limits.ConeCategory
import Mathlib.CategoryTheory.Limits.Final
import Mathlib.CategoryTheory.Limits.KanExtension
import Mathlib.CategoryTheory.Limits.Shapes.Terminal
import Mathlib.CategoryTheory.Limits.Types
import Mathlib.CategoryTheory.Limits.Over

#align_import category_theory.limits.presheaf from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"

Expand Down Expand Up @@ -452,7 +451,9 @@ def tautologicalCocone : Cocone (CostructuredArrow.proj yoneda P ⋙ yoneda) whe
ι := { app := fun X => X.hom }

/-- The tautological cocone with point `P` is a colimit cocone, exhibiting `P` as a colimit of
representables. -/
representables.
Proposition 2.6.3(i) in [Kashiwara2006] -/
def isColimitTautologicalCocone : IsColimit (tautologicalCocone P) where
desc := fun s => by
refine' ⟨fun X t => yonedaEquiv (s.ι.app (CostructuredArrow.mk (yonedaEquiv.symm t))), _⟩
Expand Down Expand Up @@ -481,6 +482,33 @@ def isColimitTautologicalCocone : IsColimit (tautologicalCocone P) where
erw [Equiv.symm_apply_apply, ← yonedaEquiv_comp']
exact congr_arg _ (h (CostructuredArrow.mk t))

variable {I : Type v₁} [SmallCategory I] (F : I ⥤ C)

/-- Given a functor `F : I ⥤ C`, a cocone `c` on `F ⋙ yoneda : I ⥤ Cᵒᵖ ⥤ Type v₁` induces a
functor `I ⥤ CostructuredArrow yoneda c.pt` which maps `i : I` to the leg
`yoneda.obj (F.obj i) ⟶ c.pt`. If `c` is a colimit cocone, then that functor is
final.
Proposition 2.6.3(ii) in [Kashiwara2006] -/
theorem final_toCostructuredArrow_comp_pre {c : Cocone (F ⋙ yoneda)} (hc : IsColimit c) :
Functor.Final (c.toCostructuredArrow ⋙ CostructuredArrow.pre F yoneda c.pt) := by
apply Functor.cofinal_of_isTerminal_colimit_comp_yoneda

suffices IsTerminal (colimit ((c.toCostructuredArrow ⋙ CostructuredArrow.pre F yoneda c.pt) ⋙
CostructuredArrow.toOver yoneda c.pt)) by
apply IsTerminal.isTerminalOfObj (overEquivPresheafCostructuredArrow c.pt).inverse
apply IsTerminal.ofIso this
refine ?_ ≪≫ (preservesColimitIso (overEquivPresheafCostructuredArrow c.pt).inverse _).symm
apply HasColimit.isoOfNatIso
exact isoWhiskerLeft _
(CostructuredArrow.toOverCompOverEquivPresheafCostructuredArrow c.pt).isoCompInverse

apply IsTerminal.ofIso Over.mkIdTerminal
let isc : IsColimit ((Over.forget _).mapCocone _) := PreservesColimit.preserves
(colimit.isColimit ((c.toCostructuredArrow ⋙ CostructuredArrow.pre F yoneda c.pt) ⋙
CostructuredArrow.toOver yoneda c.pt))
exact Over.isoMk (hc.coconePointUniqueUpToIso isc) (hc.hom_ext fun i => by simp)

end ArbitraryUniverses

end CategoryTheory

0 comments on commit 30e83bf

Please sign in to comment.