@@ -292,6 +292,89 @@ instance forget_preserves_colimits : preserves_colimits (PresheafedSpace.forget
292
292
{ intro j, dsimp, simp, }
293
293
end } }
294
294
295
+ /--
296
+ Given a diagram of `PresheafedSpace C`s, its colimit is computed by pushing the sheaves onto
297
+ the colimit of the underlying spaces, and taking componentwise limit.
298
+ This is the componentwise diagram for an open set `U` of the colimit of the underlying spaces.
299
+ -/
300
+ @[simps]
301
+ def componentwise_diagram (F : J ⥤ PresheafedSpace C)
302
+ (U : opens (limits.colimit F).carrier) : Jᵒᵖ ⥤ C :=
303
+ { obj := λ j, (F.obj (unop j)).presheaf.obj (op ((opens.map (colimit.ι F (unop j)).base).obj U)),
304
+ map := λ j k f, (F.map f.unop).c.app _ ≫ (F.obj (unop k)).presheaf.map
305
+ (eq_to_hom (by { rw [← colimit.w F f.unop, comp_base], refl })),
306
+ map_comp' := λ i j k f g,
307
+ begin
308
+ cases U,
309
+ dsimp,
310
+ simp_rw [map_comp_c_app, category.assoc],
311
+ congr' 1 ,
312
+ rw [Top.presheaf.pushforward.comp_inv_app, Top.presheaf.pushforward_eq_hom_app,
313
+ category_theory.nat_trans.naturality_assoc, Top.presheaf.pushforward_map_app],
314
+ congr' 1 ,
315
+ rw [category.id_comp, ← (F.obj (unop k)).presheaf.map_comp],
316
+ erw ← (F.obj (unop k)).presheaf.map_comp,
317
+ congr
318
+ end }
319
+
320
+ /--
321
+ The components of the colimit of a diagram of `PresheafedSpace C` is obtained
322
+ via taking componentwise limits.
323
+ -/
324
+ def colimit_presheaf_obj_iso_componentwise_limit (F : J ⥤ PresheafedSpace C)
325
+ (U : opens (limits.colimit F).carrier) :
326
+ (limits.colimit F).presheaf.obj (op U) ≅ limit (componentwise_diagram F U) :=
327
+ begin
328
+ refine ((sheaf_iso_of_iso (colimit.iso_colimit_cocone
329
+ ⟨_, colimit_cocone_is_colimit F⟩).symm).app (op U)).trans _,
330
+ refine (limit_obj_iso_limit_comp_evaluation _ _).trans (limits.lim.map_iso _),
331
+ fapply nat_iso.of_components,
332
+ { intro X,
333
+ refine ((F.obj (unop X)).presheaf.map_iso (eq_to_iso _)),
334
+ dsimp only [functor.op, unop_op, opens.map],
335
+ congr' 2 ,
336
+ rw set.preimage_preimage,
337
+ simp_rw ← comp_app,
338
+ congr' 2 ,
339
+ exact ι_preserves_colimits_iso_inv (forget C) F (unop X) },
340
+ { intros X Y f,
341
+ change ((F.map f.unop).c.app _ ≫ _ ≫ _) ≫ (F.obj (unop Y)).presheaf.map _ = _ ≫ _,
342
+ rw Top.presheaf.pushforward.comp_inv_app,
343
+ erw category.id_comp,
344
+ rw category.assoc,
345
+ erw [← (F.obj (unop Y)).presheaf.map_comp, (F.map f.unop).c.naturality_assoc,
346
+ ← (F.obj (unop Y)).presheaf.map_comp],
347
+ congr }
348
+ end
349
+
350
+ @[simp]
351
+ lemma colimit_presheaf_obj_iso_componentwise_limit_inv_ι_app (F : J ⥤ PresheafedSpace C)
352
+ (U : opens (limits.colimit F).carrier) (j : J) :
353
+ (colimit_presheaf_obj_iso_componentwise_limit F U).inv ≫ (colimit.ι F j).c.app (op U) =
354
+ limit.π _ (op j) :=
355
+ begin
356
+ delta colimit_presheaf_obj_iso_componentwise_limit,
357
+ rw [iso.trans_inv, iso.trans_inv, iso.app_inv, sheaf_iso_of_iso_inv, pushforward_to_of_iso_app,
358
+ congr_app (iso.symm_inv _)],
359
+ simp_rw category.assoc,
360
+ rw [← functor.map_comp_assoc, nat_trans.naturality],
361
+ erw ← comp_c_app_assoc,
362
+ rw congr_app (colimit.iso_colimit_cocone_ι_hom _ _),
363
+ simp_rw category.assoc,
364
+ erw [limit_obj_iso_limit_comp_evaluation_inv_π_app_assoc, lim_map_π_assoc],
365
+ convert category.comp_id _,
366
+ erw ← (F.obj j).presheaf.map_id,
367
+ iterate 2 { erw ← (F.obj j).presheaf.map_comp },
368
+ congr
369
+ end
370
+
371
+ @[simp]
372
+ lemma colimit_presheaf_obj_iso_componentwise_limit_hom_π (F : J ⥤ PresheafedSpace C)
373
+ (U : opens (limits.colimit F).carrier) (j : J) :
374
+ (colimit_presheaf_obj_iso_componentwise_limit F U).hom ≫ limit.π _ (op j) =
375
+ (colimit.ι F j).c.app (op U) :=
376
+ by rw [← iso.eq_inv_comp, colimit_presheaf_obj_iso_componentwise_limit_inv_ι_app]
377
+
295
378
end PresheafedSpace
296
379
297
380
end algebraic_geometry
0 commit comments