Skip to content

Commit a2beb1b

Browse files
Brian-Nugentxroblot
authored andcommitted
feat(CategoryTheory): Functors that preserve the terminal object are Final (leanprover-community#39994)
Co-authored-by: Brian-Nugent <bnugent@uw.edu>
1 parent 1a79be5 commit a2beb1b

2 files changed

Lines changed: 20 additions & 1 deletion

File tree

Mathlib/CategoryTheory/Limits/Final.lean

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -940,6 +940,24 @@ lemma initial_fromPUnit_of_isInitial (hc : Limits.IsInitial c) : (fromPUnit c).I
940940
fun i j ↦ CostructuredArrow.obj_ext _ _ (by cat_disch) (hc.hom_ext _ _)⟩
941941
infer_instance
942942

943+
instance [HasTerminal C] {D : Type u₂} [Category.{v₂} D] (F : C ⥤ D)
944+
[PreservesLimit (Functor.empty.{0} C) F] : F.Final :=
945+
have : (fromPUnit.{0} (⊤_ C)).Final := final_fromPUnit_of_isTerminal terminalIsTerminal
946+
have : (fromPUnit.{0} (F.obj (⊤_ C))).Final := final_fromPUnit_of_isTerminal
947+
(terminalIsTerminal.isTerminalObj F (⊤_ C))
948+
have : ((fromPUnit.{0} (⊤_ C)) ⋙ F).Final := final_of_natIso (F := fromPUnit.{0} (F.obj (⊤_ C)))
949+
(Discrete.natIso (fun _ => Iso.refl _))
950+
final_of_final_comp (fromPUnit.{0} (⊤_ C)) F
951+
952+
instance [HasInitial C] {D : Type u₂} [Category.{v₂} D] (F : C ⥤ D)
953+
[PreservesColimit (Functor.empty.{0} C) F] : F.Initial :=
954+
have : (fromPUnit.{0} (⊥_ C)).Initial := initial_fromPUnit_of_isInitial initialIsInitial
955+
have : (fromPUnit.{0} (F.obj (⊥_ C))).Initial := initial_fromPUnit_of_isInitial
956+
(initialIsInitial.isInitialObj F (⊥_ C))
957+
have : ((fromPUnit.{0} (⊥_ C)) ⋙ F).Initial := initial_of_natIso
958+
(F := fromPUnit.{0} (F.obj (⊥_ C))) (Discrete.natIso (fun _ => Iso.refl _))
959+
initial_of_initial_comp (fromPUnit.{0} (⊥_ C)) F
960+
943961
end
944962

945963
section

Mathlib/CategoryTheory/Sites/CoproductSheafCondition.lean

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ lemma Presieve.isSheafFor_sigmaDesc_iff {ι : Type*} {X : ι → C} (f : ∀ i,
9898
dsimp [E]; infer_instance
9999
have : PreservesLimit (Discrete.functor fun i ↦ op (E.toPreOneHypercover.Y' i)) F := by
100100
convert! Functor.Initial.preservesLimit_of_comp (Discrete.equivalence <| .sigmaPUnit _).inverse
101-
assumption
101+
· infer_instance
102+
· assumption
102103
let equiv := (E.isLimitSigmaOfIsColimitEquiv hc hc' F).nonempty_congr
103104
rwa [isLimit_toPreOneHypercover_type_iff, isLimit_toPreOneHypercover_type_iff,
104105
presieve₀_sigmaOfIsColimit] at equiv

0 commit comments

Comments
 (0)