Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 0bb8809

Browse files
committed
feat(category_theory/limits): left adjoint if preserves colimits (#4942)
A slight generalisation of a construction from before. Maybe this is the dual version you were talking about @jcommelin - if so my mistake! I think the advantage of doing it this way is that you definitionally get the old version but also the new version too.
1 parent e5ea200 commit 0bb8809

File tree

2 files changed

+17
-7
lines changed

2 files changed

+17
-7
lines changed

src/category_theory/equivalence.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -271,16 +271,16 @@ by { dsimp [inv_fun_id_assoc], tidy }
271271
by { dsimp [inv_fun_id_assoc], tidy }
272272

273273
/-- If `C` is equivalent to `D`, then `C ⥤ E` is equivalent to `D ⥤ E`. -/
274-
@[simps {rhs_md:=semireducible}]
274+
@[simps functor inverse unit_iso counit_iso {rhs_md:=semireducible}]
275275
def congr_left (e : C ≌ D) : (C ⥤ E) ≌ (D ⥤ E) :=
276276
equivalence.mk
277277
((whiskering_left _ _ _).obj e.inverse)
278278
((whiskering_left _ _ _).obj e.functor)
279279
(nat_iso.of_components (λ F, (e.fun_inv_id_assoc F).symm) (by tidy))
280280
(nat_iso.of_components (λ F, e.inv_fun_id_assoc F) (by tidy))
281-
281+
282282
/-- If `C` is equivalent to `D`, then `E ⥤ C` is equivalent to `E ⥤ D`. -/
283-
@[simps {rhs_md:=semireducible}]
283+
@[simps functor inverse unit_iso counit_iso {rhs_md:=semireducible}]
284284
def congr_right (e : C ≌ D) : (E ⥤ C) ≌ (E ⥤ D) :=
285285
equivalence.mk
286286
((whiskering_right _ _ _).obj e.functor)

src/category_theory/limits/presheaf.lean

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -309,13 +309,23 @@ def unique_extension_along_yoneda (L : (Cᵒᵖ ⥤ Type u₁) ⥤ ℰ) (hL : yo
309309
nat_iso_of_nat_iso_on_representables _ _ (hL ≪≫ (is_extension_along_yoneda _).symm)
310310

311311
/--
312-
If `L` preserves colimits and `ℰ` has them, then it is a left adjoint. Note this is a (partial)
313-
converse to `left_adjoint_preserves_colimits`.
312+
If `L` preserves colimits and `ℰ` has them, then it is a left adjoint. This is a special case of
313+
`is_left_adjoint_of_preserves_colimits` used to prove that.
314314
-/
315-
def is_left_adjoint_of_preserves_colimits (L : (Cᵒᵖ ⥤ Type u₁) ⥤ ℰ) [preserves_colimits L] :
315+
def is_left_adjoint_of_preserves_colimits_aux (L : (Cᵒᵖ ⥤ Type u₁) ⥤ ℰ) [preserves_colimits L] :
316316
is_left_adjoint L :=
317317
{ right := restricted_yoneda (yoneda ⋙ L),
318318
adj := (yoneda_adjunction _).of_nat_iso_left
319-
(unique_extension_along_yoneda _ L (iso.refl _)).symm }
319+
((unique_extension_along_yoneda _ L (iso.refl _)).symm) }
320+
321+
/--
322+
If `L` preserves colimits and `ℰ` has them, then it is a left adjoint. Note this is a (partial)
323+
converse to `left_adjoint_preserves_colimits`.
324+
-/
325+
def is_left_adjoint_of_preserves_colimits (L : (C ⥤ Type u₁) ⥤ ℰ) [preserves_colimits L] :
326+
is_left_adjoint L :=
327+
let e : (_ ⥤ Type u₁) ≌ (_ ⥤ Type u₁) := (op_op_equivalence C).congr_left,
328+
t := is_left_adjoint_of_preserves_colimits_aux (e.functor ⋙ L : _)
329+
in by exactI adjunction.left_adjoint_of_nat_iso (e.inv_fun_id_assoc _)
320330

321331
end category_theory

0 commit comments

Comments
 (0)