4
4
5
5
import category_theory.full_subcategory
6
6
import category_theory.functor_category
7
+ import category_theory.limits.preserves
8
+ import category_theory.limits.types
7
9
import category_theory.natural_isomorphism
8
10
import category_theory.eq_to_hom
9
11
import analysis.topology.topological_space
@@ -28,6 +30,49 @@ instance : concrete_category @continuous := ⟨@continuous_id, @continuous.comp
28
30
29
31
-- local attribute [ class ] continuous
30
32
-- instance {R S : Top} (f : R ⟶ S) : continuous (f : R → S) := f.2
33
+
34
+ section
35
+ open category_theory.limits
36
+
37
+ variables {J : Type u} [small_category J]
38
+
39
+ def limit (F : J ⥤ Top.{u}) : cone F :=
40
+ { X := ⟨limit (F ⋙ forget), ⨆ j, (F.obj j).str.induced (limit.π (F ⋙ forget) j)⟩,
41
+ π :=
42
+ { app := λ j, ⟨limit.π (F ⋙ forget) j, continuous_iff_induced_le.mpr (lattice.le_supr _ j)⟩,
43
+ naturality' := λ j j' f, subtype.eq ((limit.cone (F ⋙ forget)).π.naturality f) } }
44
+
45
+ def limit_is_limit (F : J ⥤ Top.{u}) : is_limit (limit F) :=
46
+ by refine is_limit.of_faithful forget (limit.is_limit _) (λ s, ⟨_, _⟩) (λ s, rfl);
47
+ exact continuous_iff_le_coinduced.mpr (lattice.supr_le $ λ j,
48
+ induced_le_iff_le_coinduced.mpr $ continuous_iff_le_coinduced.mp (s.π.app j).property)
49
+
50
+ instance : has_limits.{u+1 u} Top.{u} :=
51
+ λ J 𝒥 F, by exactI { cone := limit F, is_limit := limit_is_limit F }
52
+
53
+ instance : preserves_limits (forget : Top.{u} ⥤ Type u) :=
54
+ λ J 𝒥 F, by exactI preserves_limit_of_preserves_limit_cone
55
+ (limit.is_limit F) (limit.is_limit (F ⋙ forget))
56
+
57
+ def colimit (F : J ⥤ Top.{u}) : cocone F :=
58
+ { X := ⟨colimit (F ⋙ forget), ⨅ j, (F.obj j).str.coinduced (colimit.ι (F ⋙ forget) j)⟩,
59
+ ι :=
60
+ { app := λ j, ⟨colimit.ι (F ⋙ forget) j, continuous_iff_le_coinduced.mpr (lattice.infi_le _ j)⟩,
61
+ naturality' := λ j j' f, subtype.eq ((colimit.cocone (F ⋙ forget)).ι.naturality f) } }
62
+
63
+ def colimit_is_colimit (F : J ⥤ Top.{u}) : is_colimit (colimit F) :=
64
+ by refine is_colimit.of_faithful forget (colimit.is_colimit _) (λ s, ⟨_, _⟩) (λ s, rfl);
65
+ exact continuous_iff_induced_le.mpr (lattice.le_infi $ λ j,
66
+ induced_le_iff_le_coinduced.mpr $ continuous_iff_le_coinduced.mp (s.ι.app j).property)
67
+
68
+ instance : has_colimits.{u+1 u} Top.{u} :=
69
+ λ J 𝒥 F, by exactI { cocone := colimit F, is_colimit := colimit_is_colimit F }
70
+
71
+ instance : preserves_colimits (forget : Top.{u} ⥤ Type u) :=
72
+ λ J 𝒥 F, by exactI preserves_colimit_of_preserves_colimit_cocone
73
+ (colimit.is_colimit F) (colimit.is_colimit (F ⋙ forget))
74
+
75
+ end
31
76
end Top
32
77
33
78
variables {X : Top.{u}}
0 commit comments