@@ -388,4 +388,51 @@ lemma property_is_local_at_target.open_cover_iff
388388⟨λ H, let h := ((hP.open_cover_tfae f).out 0 2 ).mp H in h 𝒰,
389389 λ H, let h := ((hP.open_cover_tfae f).out 1 0 ).mp in h ⟨𝒰, H⟩⟩
390390
391+ namespace affine_target_morphism_property
392+
393+ /-- A `P : affine_target_morphism_property` is stable under base change if `P` holds for `Y ⟶ S`
394+ implies that `P` holds for `X ×ₛ Y ⟶ X` with `X` and `S` affine schemes. -/
395+ def stable_under_base_change
396+ (P : affine_target_morphism_property) : Prop :=
397+ ∀ ⦃X Y S : Scheme⦄ [is_affine S] [is_affine X] (f : X ⟶ S) (g : Y ⟶ S),
398+ by exactI P g → P (pullback.fst : pullback f g ⟶ X)
399+
400+ lemma is_local.target_affine_locally_pullback_fst_of_right_of_stable_under_base_change
401+ {P : affine_target_morphism_property} (hP : P.is_local) (hP' : P.stable_under_base_change)
402+ {X Y S : Scheme} (f : X ⟶ S) (g : Y ⟶ S) [is_affine S] (H : P g) :
403+ target_affine_locally P (pullback.fst : pullback f g ⟶ X) :=
404+ begin
405+ rw (hP.affine_open_cover_tfae (pullback.fst : pullback f g ⟶ X)).out 0 1 ,
406+ use [X.affine_cover, infer_instance],
407+ intro i,
408+ let e := pullback_symmetry _ _ ≪≫ pullback_right_pullback_fst_iso f g (X.affine_cover.map i),
409+ have : e.hom ≫ pullback.fst = pullback.snd := by simp,
410+ rw [← this , affine_cancel_left_is_iso hP.1 ],
411+ apply hP'; assumption,
412+ end
413+
414+ lemma is_local.stable_under_base_change
415+ {P : affine_target_morphism_property} (hP : P.is_local) (hP' : P.stable_under_base_change) :
416+ (target_affine_locally P).stable_under_base_change :=
417+ begin
418+ introv X H,
419+ rw (hP.target_affine_locally_is_local.open_cover_tfae (pullback.fst : pullback f g ⟶ X)).out 0 1 ,
420+ use S.affine_cover.pullback_cover f,
421+ intro i,
422+ rw (hP.affine_open_cover_tfae g).out 0 3 at H,
423+ let e : pullback (pullback.fst : pullback f g ⟶ _) ((S.affine_cover.pullback_cover f).map i) ≅ _,
424+ { refine pullback_symmetry _ _ ≪≫ pullback_right_pullback_fst_iso f g _ ≪≫ _ ≪≫
425+ (pullback_right_pullback_fst_iso (S.affine_cover.map i) g
426+ (pullback.snd : pullback f (S.affine_cover.map i) ⟶ _)).symm,
427+ exact as_iso (pullback.map _ _ _ _ (𝟙 _) (𝟙 _) (𝟙 _)
428+ (by simpa using pullback.condition) (by simp)) },
429+ have : e.hom ≫ pullback.fst = pullback.snd := by simp,
430+ rw [← this , (target_affine_locally_respects_iso hP.1 ).cancel_left_is_iso],
431+ apply hP.target_affine_locally_pullback_fst_of_right_of_stable_under_base_change hP',
432+ rw [← pullback_symmetry_hom_comp_snd, affine_cancel_left_is_iso hP.1 ],
433+ apply H
434+ end
435+
436+ end affine_target_morphism_property
437+
391438end algebraic_geometry
0 commit comments