@@ -472,210 +472,6 @@ theorem IsLocal.stableUnderBaseChange {P : AffineTargetMorphismProperty} (hP : P
472
472
473
473
end AffineTargetMorphismProperty
474
474
475
- /-- The `AffineTargetMorphismProperty` associated to `(targetAffineLocally P).diagonal`.
476
- See `diagonal_targetAffineLocally_eq_targetAffineLocally`.
477
- -/
478
- def AffineTargetMorphismProperty.diagonal (P : AffineTargetMorphismProperty) :
479
- AffineTargetMorphismProperty :=
480
- fun {X _} f _ =>
481
- ∀ {U₁ U₂ : Scheme} (f₁ : U₁ ⟶ X) (f₂ : U₂ ⟶ X) [IsAffine U₁] [IsAffine U₂] [IsOpenImmersion f₁]
482
- [IsOpenImmersion f₂], P (pullback.mapDesc f₁ f₂ f)
483
- #align algebraic_geometry.affine_target_morphism_property.diagonal AlgebraicGeometry.AffineTargetMorphismProperty.diagonal
484
-
485
- theorem AffineTargetMorphismProperty.diagonal_respectsIso (P : AffineTargetMorphismProperty)
486
- (hP : P.toProperty.RespectsIso) : P.diagonal.toProperty.RespectsIso := by
487
- delta AffineTargetMorphismProperty.diagonal
488
- apply AffineTargetMorphismProperty.respectsIso_mk
489
- · introv H _ _
490
- rw [pullback.mapDesc_comp, affine_cancel_left_isIso hP, affine_cancel_right_isIso hP]
491
- -- Porting note: add the following two instances
492
- have i1 : IsOpenImmersion (f₁ ≫ e.hom) := PresheafedSpace.IsOpenImmersion.comp _ _
493
- have i2 : IsOpenImmersion (f₂ ≫ e.hom) := PresheafedSpace.IsOpenImmersion.comp _ _
494
- apply H
495
- · introv H _ _
496
- -- Porting note: add the following two instances
497
- have _ : IsAffine Z := isAffine_of_isIso e.inv
498
- rw [pullback.mapDesc_comp, affine_cancel_right_isIso hP]
499
- apply H
500
- #align algebraic_geometry.affine_target_morphism_property.diagonal_respects_iso AlgebraicGeometry.AffineTargetMorphismProperty.diagonal_respectsIso
501
-
502
- theorem diagonal_targetAffineLocally_of_openCover
503
- (P : AffineTargetMorphismProperty) (hP : P.IsLocal)
504
- {X Y : Scheme.{u}} (f : X ⟶ Y) (𝒰 : Scheme.OpenCover.{u} Y) [∀ i, IsAffine (𝒰.obj i)]
505
- (𝒰' : ∀ i, Scheme.OpenCover.{u} (pullback f (𝒰.map i))) [∀ i j, IsAffine ((𝒰' i).obj j)]
506
- (h𝒰' : ∀ i j k, P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)) :
507
- (targetAffineLocally P).diagonal f := by
508
- let 𝒱 := (Scheme.Pullback.openCoverOfBase 𝒰 f f).bind fun i =>
509
- Scheme.Pullback.openCoverOfLeftRight.{u} (𝒰' i) (𝒰' i) pullback.snd pullback.snd
510
- have i1 : ∀ i, IsAffine (𝒱.obj i) := fun i => by dsimp [𝒱]; infer_instance
511
- apply (hP.affine_openCover_iff _ 𝒱).mpr
512
- rintro ⟨i, j, k⟩
513
- dsimp [𝒱]
514
- convert (affine_cancel_left_isIso hP.1
515
- (pullbackDiagonalMapIso _ _ ((𝒰' i).map j) ((𝒰' i).map k)).inv pullback.snd).mp _
516
- pick_goal 3
517
- · convert h𝒰' i j k; apply pullback.hom_ext <;> simp
518
- all_goals apply pullback.hom_ext <;>
519
- simp only [Category.assoc, pullback.lift_fst, pullback.lift_snd, pullback.lift_fst_assoc,
520
- pullback.lift_snd_assoc]
521
- #align algebraic_geometry.diagonal_target_affine_locally_of_open_cover AlgebraicGeometry.diagonal_targetAffineLocally_of_openCover
522
-
523
- theorem AffineTargetMorphismProperty.diagonal_of_targetAffineLocally
524
- (P : AffineTargetMorphismProperty) (hP : P.IsLocal) {X Y U : Scheme.{u}} (f : X ⟶ Y) (g : U ⟶ Y)
525
- [IsAffine U] [IsOpenImmersion g] (H : (targetAffineLocally P).diagonal f) :
526
- P.diagonal (pullback.snd : pullback f g ⟶ _) := by
527
- rintro U V f₁ f₂ hU hV hf₁ hf₂
528
- replace H := ((hP.affine_openCover_TFAE (pullback.diagonal f)).out 0 3 ).mp H
529
- let g₁ := pullback.map (f₁ ≫ pullback.snd) (f₂ ≫ pullback.snd) f f
530
- (f₁ ≫ pullback.fst) (f₂ ≫ pullback.fst) g
531
- (by rw [Category.assoc, Category.assoc, pullback.condition])
532
- (by rw [Category.assoc, Category.assoc, pullback.condition])
533
- specialize H g₁
534
- rw [← affine_cancel_left_isIso hP.1 (pullbackDiagonalMapIso f _ f₁ f₂).hom]
535
- convert H
536
- apply pullback.hom_ext <;>
537
- simp only [Category.assoc, pullback.lift_fst, pullback.lift_snd, pullback.lift_fst_assoc,
538
- pullback.lift_snd_assoc, Category.comp_id, pullbackDiagonalMapIso_hom_fst,
539
- pullbackDiagonalMapIso_hom_snd]
540
- #align algebraic_geometry.affine_target_morphism_property.diagonal_of_target_affine_locally AlgebraicGeometry.AffineTargetMorphismProperty.diagonal_of_targetAffineLocally
541
-
542
- open List in
543
- theorem AffineTargetMorphismProperty.IsLocal.diagonal_affine_openCover_TFAE
544
- {P : AffineTargetMorphismProperty} (hP : P.IsLocal) {X Y : Scheme.{u}} (f : X ⟶ Y) :
545
- TFAE
546
- [(targetAffineLocally P).diagonal f,
547
- ∃ (𝒰 : Scheme.OpenCover.{u} Y) (_ : ∀ i, IsAffine (𝒰.obj i)),
548
- ∀ i : 𝒰.J, P.diagonal (pullback.snd : pullback f (𝒰.map i) ⟶ _),
549
- ∀ (𝒰 : Scheme.OpenCover.{u} Y) [∀ i, IsAffine (𝒰.obj i)] (i : 𝒰.J),
550
- P.diagonal (pullback.snd : pullback f (𝒰.map i) ⟶ _),
551
- ∀ {U : Scheme} (g : U ⟶ Y) [IsAffine U] [IsOpenImmersion g],
552
- P.diagonal (pullback.snd : pullback f g ⟶ _),
553
- ∃ (𝒰 : Scheme.OpenCover.{u} Y) (_ : ∀ i, IsAffine (𝒰.obj i)) (𝒰' :
554
- ∀ i, Scheme.OpenCover.{u} (pullback f (𝒰.map i))) (_ : ∀ i j, IsAffine ((𝒰' i).obj j)),
555
- ∀ i j k, P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)] := by
556
- tfae_have 1 → 4
557
- · introv H hU hg _ _; apply P.diagonal_of_targetAffineLocally <;> assumption
558
- tfae_have 4 → 3
559
- · introv H h𝒰; apply H
560
- tfae_have 3 → 2
561
- · exact fun H => ⟨Y.affineCover, inferInstance, H Y.affineCover⟩
562
- tfae_have 2 → 5
563
- · rintro ⟨𝒰, h𝒰, H⟩
564
- refine ⟨𝒰, inferInstance, fun _ => Scheme.affineCover _, inferInstance, ?_⟩
565
- intro i j k
566
- apply H
567
- tfae_have 5 → 1
568
- · rintro ⟨𝒰, _, 𝒰', _, H⟩
569
- exact diagonal_targetAffineLocally_of_openCover P hP f 𝒰 𝒰' H
570
- tfae_finish
571
- #align algebraic_geometry.affine_target_morphism_property.is_local.diagonal_affine_open_cover_tfae AlgebraicGeometry.AffineTargetMorphismProperty.IsLocal.diagonal_affine_openCover_TFAE
572
-
573
- theorem AffineTargetMorphismProperty.IsLocal.diagonal {P : AffineTargetMorphismProperty}
574
- (hP : P.IsLocal) : P.diagonal.IsLocal :=
575
- AffineTargetMorphismProperty.isLocalOfOpenCoverImply P.diagonal (P.diagonal_respectsIso hP.1 )
576
- fun {_ _} f => ((hP.diagonal_affine_openCover_TFAE f).out 1 3 ).mp
577
- #align algebraic_geometry.affine_target_morphism_property.is_local.diagonal AlgebraicGeometry.AffineTargetMorphismProperty.IsLocal.diagonal
578
-
579
- theorem diagonal_targetAffineLocally_eq_targetAffineLocally (P : AffineTargetMorphismProperty)
580
- (hP : P.IsLocal) : (targetAffineLocally P).diagonal = targetAffineLocally P.diagonal := by
581
- ext _ _ f
582
- exact ((hP.diagonal_affine_openCover_TFAE f).out 0 1 ).trans
583
- ((hP.diagonal.affine_openCover_TFAE f).out 1 0 )
584
- #align algebraic_geometry.diagonal_target_affine_locally_eq_target_affine_locally AlgebraicGeometry.diagonal_targetAffineLocally_eq_targetAffineLocally
585
-
586
- theorem universally_isLocalAtTarget (P : MorphismProperty Scheme)
587
- (hP : ∀ {X Y : Scheme.{u}} (f : X ⟶ Y) (𝒰 : Scheme.OpenCover.{u} Y),
588
- (∀ i : 𝒰.J, P (pullback.snd : (𝒰.pullbackCover f).obj i ⟶ 𝒰.obj i)) → P f) :
589
- PropertyIsLocalAtTarget P.universally := by
590
- refine ⟨P.universally_respectsIso, fun {X Y} f U =>
591
- P.universally_stableUnderBaseChange (isPullback_morphismRestrict f U).flip, ?_⟩
592
- intro X Y f 𝒰 h X' Y' i₁ i₂ f' H
593
- apply hP _ (𝒰.pullbackCover i₂)
594
- intro i
595
- dsimp
596
- apply h i (pullback.lift (pullback.fst ≫ i₁) (pullback.snd ≫ pullback.snd) _) pullback.snd
597
- swap
598
- · rw [Category.assoc, Category.assoc, ← pullback.condition, ← pullback.condition_assoc, H.w]
599
- refine (IsPullback.of_right ?_ (pullback.lift_snd _ _ _) (IsPullback.of_hasPullback _ _)).flip
600
- rw [pullback.lift_fst, ← pullback.condition]
601
- exact (IsPullback.of_hasPullback _ _).paste_horiz H.flip
602
- #align algebraic_geometry.universally_is_local_at_target AlgebraicGeometry.universally_isLocalAtTarget
603
-
604
- theorem universally_isLocalAtTarget_of_morphismRestrict (P : MorphismProperty Scheme)
605
- (hP₁ : P.RespectsIso)
606
- (hP₂ : ∀ {X Y : Scheme.{u}} (f : X ⟶ Y) {ι : Type u} (U : ι → Opens Y.carrier)
607
- (_ : iSup U = ⊤), (∀ i, P (f ∣_ U i)) → P f) : PropertyIsLocalAtTarget P.universally :=
608
- universally_isLocalAtTarget P (fun f 𝒰 h𝒰 => by
609
- apply hP₂ f (fun i : 𝒰.J => Scheme.Hom.opensRange (𝒰.map i)) 𝒰.iSup_opensRange
610
- simp_rw [hP₁.arrow_mk_iso_iff (morphismRestrictOpensRange f _)]
611
- exact h𝒰)
612
- #align algebraic_geometry.universally_is_local_at_target_of_morphism_restrict AlgebraicGeometry.universally_isLocalAtTarget_of_morphismRestrict
613
-
614
- theorem morphismRestrict_base {X Y : Scheme} (f : X ⟶ Y) (U : Opens Y.carrier) :
615
- ⇑(f ∣_ U).1 .base = U.1 .restrictPreimage f.1 .1 :=
616
- funext fun x => Subtype.ext <| morphismRestrict_base_coe f U x
617
- #align algebraic_geometry.morphism_restrict_base AlgebraicGeometry.morphismRestrict_base
618
-
619
- /-- `topologically P` holds for a morphism if the underlying topological map satisfies `P`. -/
620
- def MorphismProperty.topologically
621
- (P : ∀ {α β : Type u} [TopologicalSpace α] [TopologicalSpace β] (_ : α → β), Prop ) :
622
- MorphismProperty Scheme.{u} := fun _ _ f => P f.1 .base
623
- #align algebraic_geometry.morphism_property.topologically AlgebraicGeometry.MorphismProperty.topologically
624
-
625
- variable (P : ∀ {α β : Type u} [TopologicalSpace α] [TopologicalSpace β] (_ : α → β), Prop )
626
-
627
- /-- If a property of maps of topological spaces is stable under composition, the induced
628
- morphism property of schemes is stable under composition. -/
629
- lemma MorphismProperty.topologically_isStableUnderComposition
630
- (hP : ∀ {α β γ : Type u} [TopologicalSpace α] [TopologicalSpace β] [TopologicalSpace γ]
631
- (f : α → β) (g : β → γ) (_ : P f) (_ : P g), P (g ∘ f)) :
632
- (MorphismProperty.topologically P).IsStableUnderComposition where
633
- comp_mem {X Y Z} f g hf hg := by
634
- simp only [MorphismProperty.topologically, Scheme.comp_coeBase, TopCat.coe_comp]
635
- exact hP _ _ hf hg
636
-
637
- /-- If a property of maps of topological spaces is satisfied by all homeomorphisms,
638
- every isomorphism of schemes satisfies the induced property. -/
639
- lemma MorphismProperty.topologically_iso_le
640
- (hP : ∀ {α β : Type u} [TopologicalSpace α] [TopologicalSpace β] (f : α ≃ₜ β), P f) :
641
- MorphismProperty.isomorphisms Scheme ≤ (MorphismProperty.topologically P) := by
642
- intro X Y e (he : IsIso e)
643
- have : IsIso e := he
644
- exact hP (TopCat.homeoOfIso (asIso e.val.base))
645
-
646
- /-- If a property of maps of topological spaces is satisfied by homeomorphisms and is stable
647
- under composition, the induced property on schemes respects isomorphisms. -/
648
- lemma MorphismProperty.topologically_respectsIso
649
- (hP₁ : ∀ {α β : Type u} [TopologicalSpace α] [TopologicalSpace β] (f : α ≃ₜ β), P f)
650
- (hP₂ : ∀ {α β γ : Type u} [TopologicalSpace α] [TopologicalSpace β] [TopologicalSpace γ]
651
- (f : α → β) (g : β → γ) (_ : P f) (_ : P g), P (g ∘ f)) :
652
- (MorphismProperty.topologically P).RespectsIso :=
653
- have : (MorphismProperty.topologically P).IsStableUnderComposition :=
654
- topologically_isStableUnderComposition P hP₂
655
- MorphismProperty.respectsIso_of_isStableUnderComposition (topologically_iso_le P hP₁)
656
-
657
- /-- To check that a topologically defined morphism property is local at the target,
658
- we may check the corresponding properties on topological spaces. -/
659
- lemma MorphismProperty.topologically_propertyIsLocalAtTarget
660
- (hP₁ : (MorphismProperty.topologically P).RespectsIso)
661
- (hP₂ : ∀ {α β : Type u} [TopologicalSpace α] [TopologicalSpace β] (f : α → β) (s : Set β),
662
- P f → P (s.restrictPreimage f))
663
- (hP₃ : ∀ {α β : Type u} [TopologicalSpace α] [TopologicalSpace β] (f : α → β) {ι : Type u}
664
- (U : ι → TopologicalSpace.Opens β) (_ : iSup U = ⊤) (_ : Continuous f),
665
- (∀ i, P ((U i).carrier.restrictPreimage f)) → P f) :
666
- PropertyIsLocalAtTarget (MorphismProperty.topologically P) := by
667
- apply propertyIsLocalAtTarget_of_morphismRestrict
668
- · exact hP₁
669
- · intro X Y f U hf
670
- simp_rw [MorphismProperty.topologically, morphismRestrict_base]
671
- exact hP₂ f.val.base U.carrier hf
672
- · intro X Y f ι U hU hf
673
- apply hP₃ f.val.base U hU
674
- · exact f.val.base.continuous
675
- · intro i
676
- rw [← morphismRestrict_base]
677
- exact hf i
678
-
679
475
namespace AffineTargetMorphismProperty.IsLocal
680
476
681
477
@[deprecated (since := "2024-06-22")]
@@ -687,18 +483,4 @@ alias targetAffineLocallyPullbackFstOfRightOfStableUnderBaseChange :=
687
483
688
484
end AffineTargetMorphismProperty.IsLocal
689
485
690
- @[deprecated (since := "2024-06-22")]
691
- alias diagonalTargetAffineLocallyOfOpenCover := diagonal_targetAffineLocally_of_openCover
692
-
693
- @[deprecated (since := "2024-06-22")]
694
- alias AffineTargetMorphismProperty.diagonalOfTargetAffineLocally :=
695
- AffineTargetMorphismProperty.diagonal_of_targetAffineLocally
696
-
697
- @[deprecated (since := "2024-06-22")]
698
- alias universallyIsLocalAtTarget := universally_isLocalAtTarget
699
-
700
- @[deprecated (since := "2024-06-22")]
701
- alias universallyIsLocalAtTargetOfMorphismRestrict :=
702
- universally_isLocalAtTarget_of_morphismRestrict
703
-
704
486
end AlgebraicGeometry
0 commit comments