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

Commit 4a0c497

Browse files
committed
feat(algebraic_geometry/morphisms): Condition for target affine locally to be stable under base change (#16061)
Co-authored-by: Andrew Yang <36414270+erdOne@users.noreply.github.com>
1 parent b78cf50 commit 4a0c497

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

src/algebraic_geometry/morphisms/basic.lean

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
391438
end algebraic_geometry

0 commit comments

Comments
 (0)