Skip to content

Commit 7755ed2

Browse files
committed
feat(CategoryTheory/Sites): being subcanonical is reflected by fully faithful continuous functors (leanprover-community#36082)
1 parent c44d6c6 commit 7755ed2

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

Mathlib/CategoryTheory/Sites/Subcanonical.lean

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public import Mathlib.CategoryTheory.Limits.Preserves.Ulift
99
public import Mathlib.CategoryTheory.Sites.Canonical
1010
public import Mathlib.CategoryTheory.Sites.Whiskering
1111
public import Mathlib.CategoryTheory.Limits.Shapes.DisjointCoproduct
12+
public import Mathlib.CategoryTheory.Sites.Continuous
1213
/-!
1314
1415
# Subcanonical Grothendieck topologies
@@ -326,4 +327,23 @@ lemma preservesColimitsOfShape_yoneda_of_ofArrows_inj_mem {ι : Type*}
326327
refine isColimitCofanMkYoneda _ _ (hcov hc) htriv fun hij Y a b hab ↦ ⟨?_⟩
327328
exact .ofCoproductDisjointOfCommSq hij hc _ _ hab
328329

330+
variable {D : Type*} [Category.{v'} D] (F : C ⥤ D) (J : GrothendieckTopology C)
331+
(K : GrothendieckTopology D)
332+
333+
lemma subcanonical_of_full_of_faithful [F.Full] [F.Faithful]
334+
[Functor.IsContinuous.{max v v'} F J K] [K.Subcanonical] :
335+
J.Subcanonical := by
336+
refine .of_isSheaf_yoneda_obj _ fun Y ↦ ?_
337+
suffices h : Presieve.IsSheaf J (CategoryTheory.uliftYoneda.{v'}.obj Y) by
338+
rwa [Presieve.isSheaf_iff_of_nat_equiv]
339+
· intro
340+
exact Equiv.ulift.symm
341+
· intros
342+
rfl
343+
rw [← isSheaf_iff_isSheaf_of_type, Presheaf.isSheaf_of_iso_iff
344+
((Functor.FullyFaithful.ofFullyFaithful F).compUliftYonedaCompWhiskeringLeft.app Y).symm]
345+
refine F.op_comp_isSheaf_of_isSheaf J K _ ?_
346+
rw [isSheaf_iff_isSheaf_of_type]
347+
apply GrothendieckTopology.Subcanonical.isSheaf_of_isRepresentable
348+
329349
end CategoryTheory.GrothendieckTopology

Mathlib/CategoryTheory/Yoneda.lean

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -489,6 +489,9 @@ lemma IsRepresentable.mk' {F : Cᵒᵖ ⥤ Type v₁} {X : C} (e : yoneda.obj X
489489
instance {X : C} : IsRepresentable (yoneda.obj X) :=
490490
IsRepresentable.mk' (Iso.refl _)
491491

492+
instance {X : C} : IsRepresentable (uliftYoneda.{w}.obj X) :=
493+
RepresentableBy.isRepresentable (representableByUliftFunctorEquiv.symm (RepresentableBy.yoneda X))
494+
492495
/-- A functor `F : C ⥤ Type v₁` is corepresentable if there is object `X` so `F ≅ coyoneda.obj X`.
493496
-/
494497
@[stacks 001Q]
@@ -508,6 +511,10 @@ lemma IsCorepresentable.mk' {F : C ⥤ Type v₁} {X : C} (e : coyoneda.obj (op
508511
instance {X : Cᵒᵖ} : IsCorepresentable (coyoneda.obj X) :=
509512
IsCorepresentable.mk' (Iso.refl _)
510513

514+
instance {X : Cᵒᵖ} : IsCorepresentable (uliftCoyoneda.{w}.obj X) :=
515+
CorepresentableBy.isCorepresentable
516+
(corepresentableByUliftFunctorEquiv.symm (CorepresentableBy.coyoneda X))
517+
511518
-- instance : corepresentable (𝟭 (Type v₁)) :=
512519
-- corepresentable_of_nat_iso (op punit) coyoneda.punit_iso
513520
section Representable

0 commit comments

Comments
 (0)