Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit df93166

Browse files
committed
feat(algebraic_geometry): Explicit description of the colimit of presheafed spaces. (#10466)
Co-authored-by: erd1 <the.erd.one@gmail.com>
1 parent b7ed03f commit df93166

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

src/algebraic_geometry/presheafed_space/has_colimits.lean

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,89 @@ instance forget_preserves_colimits : preserves_colimits (PresheafedSpace.forget
292292
{ intro j, dsimp, simp, }
293293
end } }
294294

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+
295378
end PresheafedSpace
296379

297380
end algebraic_geometry

0 commit comments

Comments
 (0)