forked from leanprover-community/mathlib4
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFunctors.lean
More file actions
86 lines (68 loc) · 3.14 KB
/
Functors.lean
File metadata and controls
86 lines (68 loc) · 3.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/-
Copyright (c) 2023 Dagur Asgeirsson. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Dagur Asgeirsson
-/
module
public import Mathlib.Condensed.Light.CartesianClosed
public import Mathlib.Condensed.Light.TopCatAdjunction
public import Mathlib.Topology.Category.LightProfinite.Cartesian
/-!
# Functors from categories of topological spaces to light condensed sets
This file defines the embedding of the test objects (light profinite sets) into light condensed
sets.
## Main definitions
* `lightProfiniteToLightCondSet : LightProfinite.{u} ⥤ LightCondSet.{u}`
is the yoneda sheaf functor.
-/
@[expose] public section
universe u v
open CategoryTheory Limits Functor
/-- The functor from `LightProfinite.{u}` to `LightCondSet.{u}` given by the Yoneda sheaf. -/
def lightProfiniteToLightCondSet : LightProfinite.{u} ⥤ LightCondSet.{u} :=
(coherentTopology LightProfinite).yoneda
/-- Dot notation for the value of `lightProfiniteToLightCondSet`. -/
abbrev LightProfinite.toCondensed (S : LightProfinite.{u}) : LightCondSet.{u} :=
lightProfiniteToLightCondSet.obj S
/-- `lightProfiniteToLightCondSet` is fully faithful. -/
abbrev lightProfiniteToLightCondSetFullyFaithful :
lightProfiniteToLightCondSet.FullyFaithful :=
(coherentTopology LightProfinite).yonedaFullyFaithful
instance : lightProfiniteToLightCondSet.Full :=
inferInstanceAs ((coherentTopology LightProfinite).yoneda).Full
instance : lightProfiniteToLightCondSet.Faithful :=
inferInstanceAs ((coherentTopology LightProfinite).yoneda).Faithful
/--
The functor from `LightProfinite` to `LightCondSet` factors through `TopCat`.
-/
@[simps!]
noncomputable def lightProfiniteToLightCondSetIsoTopCatToLightCondSet :
lightProfiniteToLightCondSet.{u} ≅ LightProfinite.toTopCat.{u} ⋙ topCatToLightCondSet.{u} :=
NatIso.ofComponents fun X ↦ FullyFaithful.preimageIso (fullyFaithfulSheafToPresheaf _ _) <|
NatIso.ofComponents fun S ↦ {
hom f := { toFun := f.hom }
inv f := InducedCategory.homMk (TopCat.ofHom f) }
/--
The functor from `LightProfinite` to `LightCondSet` preserves countable limits.
-/
instance {J : Type} [SmallCategory J] [CountableCategory J] : PreservesLimitsOfShape J
lightProfiniteToLightCondSet.{u} :=
haveI : Functor.IsRightAdjoint topCatToLightCondSet.{u} :=
LightCondSet.topCatAdjunction.isRightAdjoint
haveI : PreservesLimitsOfShape J LightProfinite.toTopCat.{u} :=
inferInstanceAs (PreservesLimitsOfShape J (lightToProfinite ⋙ Profinite.toTopCat))
preservesLimitsOfShape_of_natIso lightProfiniteToLightCondSetIsoTopCatToLightCondSet.symm
/--
The functor from `LightProfinite` to `LightCondSet` preserves finite limits.
-/
instance : PreservesFiniteLimits lightProfiniteToLightCondSet.{u} where
preservesFiniteLimits _ := inferInstance
/--
The functor from `LightProfinite` to `LightCondSet` is monoidal with respect to the cartesian
monoidal structure.
-/
noncomputable instance : lightProfiniteToLightCondSet.Monoidal := by
have : Nonempty lightProfiniteToLightCondSet.Monoidal := by
rw [Functor.Monoidal.nonempty_monoidal_iff_preservesFiniteProducts]
infer_instance
exact this.some