Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(Condensed): discrete-underlying adjunction (#8270)
We define a functor, associating to an object of a concrete category with nice properties, a "discrete" condensed object, and prove that this functor is left adjoint to the forgetful functor from `Condensed C` to `C`.
- Loading branch information
1 parent
92f0def
commit e72b701
Showing
4 changed files
with
112 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
/- | ||
Copyright (c) 2023 Dagur Asgeirsson. All rights reserved. | ||
Released under Apache 2.0 license as described in the file LICENSE. | ||
Authors: Dagur Asgeirsson | ||
-/ | ||
import Mathlib.CategoryTheory.Sites.Sheafification | ||
|
||
/-! | ||
# The constant sheaf | ||
We define the constant sheaf functor (the sheafification of the constant presheaf) | ||
`constantSheaf : D ⥤ Sheaf J D` and prove that it is left adjoint to evaluation at a terminal | ||
object (see `constantSheafAdj`). | ||
-/ | ||
|
||
namespace CategoryTheory | ||
|
||
open Limits Opposite | ||
|
||
variable {C : Type*} [Category C] (J : GrothendieckTopology C) | ||
|
||
variable (D : Type*) [Category D] | ||
|
||
/-- The constant presheaf functor is left adjoint to evaluation at a terminal object. -/ | ||
noncomputable def constantPresheafAdj {T : C} (hT : IsTerminal T) : | ||
Functor.const Cᵒᵖ ⊣ (evaluation Cᵒᵖ D).obj (op T) := | ||
Adjunction.mkOfUnitCounit { | ||
unit := (Functor.constCompEvaluationObj D (op T)).hom | ||
counit := { | ||
app := fun F => { | ||
app := fun ⟨X⟩ => F.map (IsTerminal.from hT X).op | ||
naturality := fun _ _ _ => by | ||
simp only [Functor.comp_obj, Functor.const_obj_obj, Functor.id_obj, Functor.const_obj_map, | ||
Category.id_comp, ← Functor.map_comp] | ||
congr | ||
simp } | ||
naturality := by intros; ext; simp /- Note: `aesop` works but is kind of slow -/ } } | ||
|
||
variable [ConcreteCategory D] [PreservesLimits (forget D)] | ||
[∀ (P : Cᵒᵖ ⥤ D) (X : C) (S : J.Cover X), HasMultiequalizer (S.index P)] | ||
[∀ X : C, HasColimitsOfShape (J.Cover X)ᵒᵖ D] | ||
[∀ X : C, PreservesColimitsOfShape (J.Cover X)ᵒᵖ (forget D)] [ReflectsIsomorphisms (forget D)] | ||
|
||
/-- | ||
The functor which maps an object of `D` to the constant sheaf at that object, i.e. the | ||
sheafification of the constant presheaf. | ||
-/ | ||
noncomputable def constantSheaf : D ⥤ Sheaf J D := Functor.const Cᵒᵖ ⋙ (presheafToSheaf J D) | ||
|
||
/-- The constant sheaf functor is left adjoint to evaluation at a terminal object. -/ | ||
noncomputable def constantSheafAdj {T : C} (hT : IsTerminal T) : | ||
constantSheaf J D ⊣ (sheafSections J D).obj (op T) := | ||
(constantPresheafAdj D hT).comp (sheafificationAdjunction J D) | ||
|
||
end CategoryTheory |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
/- | ||
Copyright (c) 2023 Dagur Asgeirsson. All rights reserved. | ||
Released under Apache 2.0 license as described in the file LICENSE. | ||
Authors: Dagur Asgeirsson | ||
-/ | ||
import Mathlib.CategoryTheory.Sites.ConstantSheaf | ||
import Mathlib.Condensed.Basic | ||
|
||
/-! | ||
# Discrete-underlying adjunction | ||
Given a well-behaved concrete category `C`, we define a functor `C ⥤ Condensed C` which associates | ||
to an object of `C` the corresponding "discrete" condensed object (see `Condensed.discrete`). | ||
In `Condensed.discrete_underlying_adj` we prove that this functor is left adjoint to the forgetful | ||
functor from `Condensed C` to `C`. | ||
-/ | ||
|
||
universe u v w | ||
|
||
open CategoryTheory Limits Opposite GrothendieckTopology | ||
|
||
variable (C : Type w) [Category.{u+1} C] [ConcreteCategory C] | ||
[PreservesLimits (forget C)] [ReflectsIsomorphisms (forget C)] | ||
[∀ (P : CompHausᵒᵖ ⥤ C) X (S : Cover (coherentTopology CompHaus) X), | ||
HasMultiequalizer (Cover.index S P)] | ||
[∀ X, HasColimitsOfShape (Cover (coherentTopology CompHaus) X)ᵒᵖ C] | ||
[∀ X, PreservesColimitsOfShape (Cover (coherentTopology CompHaus) X)ᵒᵖ (forget C)] | ||
-- These conditions are satisfied by the category of abelian groups, and other "algebraic" | ||
-- categories. | ||
|
||
/-- | ||
The discrete condensed object associated to an object of `C` is the constant sheaf at that object. | ||
-/ | ||
@[simps!] | ||
noncomputable def Condensed.discrete : C ⥤ Condensed.{u} C := constantSheaf _ C | ||
|
||
/-- | ||
The underlying object of a condensed object in `C` is the condensed object evaluated at a point. | ||
This can be viewed as a sort of forgetful functor from `Condensed C` to `C` | ||
-/ | ||
@[simps!] | ||
noncomputable def Condensed.underlying : Condensed.{u} C ⥤ C := (sheafSections _ _).obj (op (⊤_ _)) | ||
|
||
/-- | ||
Discreteness is left adjoint to the forgetful functor. When `C` is `Type*`, this is analogous to | ||
`TopCat.adj₁ : TopCat.discrete ⊣ forget TopCat`. | ||
-/ | ||
noncomputable def Condensed.discrete_underlying_adj : discrete C ⊣ underlying C := | ||
constantSheafAdj _ _ terminalIsTerminal |