Theorem: AlgebraicGeometry.targetAffineLocally_respectsIso
File: Mathlib/AlgebraicGeometry/Morphisms/Basic.lean

tactic: constructor
state_before: P : AffineTargetMorphismProperty
hP : P.toProperty.RespectsIso
⊢ (targetAffineLocally P).RespectsIso
state_after: case left
P : AffineTargetMorphismProperty
hP : P.toProperty.RespectsIso
⊢ ∀ {X Y Z : Scheme} (e : X ≅ Y) (f : Y ⟶ Z), targetAffineLocally P f → targetAffineLocally P (e.hom ≫ f)

case right
P : AffineTargetMorphismProperty
hP : P.toProperty.RespectsIso
⊢ ∀ {X Y Z : Scheme} (e : Y ≅ Z) (f : X ⟶ Y), targetAffineLocally P f → targetAffineLocally P (f ≫ e.hom)

tactic: introv H U
state_before: case left
P : AffineTargetMorphismProperty
hP : P.toProperty.RespectsIso
⊢ ∀ {X Y Z : Scheme} (e : X ≅ Y) (f : Y ⟶ Z), targetAffineLocally P f → targetAffineLocally P (e.hom ≫ f)
state_after: case left
P : AffineTargetMorphismProperty
hP : P.toProperty.RespectsIso
X Y Z : Scheme
e : X ≅ Y
f : Y ⟶ Z
H : targetAffineLocally P f
U : ↑Z.affineOpens
⊢ P ((e.hom ≫ f) ∣_ ↑U)

tactic: rw [morphismRestrict_comp, affine_cancel_left_isIso hP]
state_before: case left
P : AffineTargetMorphismProperty
hP : P.toProperty.RespectsIso
X Y Z : Scheme
e : X ≅ Y
f : Y ⟶ Z
H : targetAffineLocally P f
U : ↑Z.affineOpens
⊢ P ((e.hom ≫ f) ∣_ ↑U)
state_after: case left
P : AffineTargetMorphismProperty
hP : P.toProperty.RespectsIso
X Y Z : Scheme
e : X ≅ Y
f : Y ⟶ Z
H : targetAffineLocally P f
U : ↑Z.affineOpens
⊢ P (f ∣_ ↑U)

tactic: exact H U
state_before: case left
P : AffineTargetMorphismProperty
hP : P.toProperty.RespectsIso
X Y Z : Scheme
e : X ≅ Y
f : Y ⟶ Z
H : targetAffineLocally P f
U : ↑Z.affineOpens
⊢ P (f ∣_ ↑U)
state_after: no goals

tactic: introv H
state_before: case right
P : AffineTargetMorphismProperty
hP : P.toProperty.RespectsIso
⊢ ∀ {X Y Z : Scheme} (e : Y ≅ Z) (f : X ⟶ Y), targetAffineLocally P f → targetAffineLocally P (f ≫ e.hom)
state_after: case right
P : AffineTargetMorphismProperty
hP : P.toProperty.RespectsIso
X Y Z : Scheme
e : Y ≅ Z
f : X ⟶ Y
H : targetAffineLocally P f
⊢ targetAffineLocally P (f ≫ e.hom)

tactic: rintro ⟨U, hU : IsAffineOpen U⟩
state_before: case right
P : AffineTargetMorphismProperty
hP : P.toProperty.RespectsIso
X Y Z : Scheme
e : Y ≅ Z
f : X ⟶ Y
H : targetAffineLocally P f
⊢ targetAffineLocally P (f ≫ e.hom)
state_after: case right.mk
P : AffineTargetMorphismProperty
hP : P.toProperty.RespectsIso
X Y Z : Scheme
e : Y ≅ Z
f : X ⟶ Y
H : targetAffineLocally P f
U : Opens ↑↑Z.toPresheafedSpace
hU : IsAffineOpen U
⊢ P ((f ≫ e.hom) ∣_ ↑⟨U, hU⟩)

tactic: dsimp
state_before: case right.mk
P : AffineTargetMorphismProperty
hP : P.toProperty.RespectsIso
X Y Z : Scheme
e : Y ≅ Z
f : X ⟶ Y
H : targetAffineLocally P f
U : Opens ↑↑Z.toPresheafedSpace
hU : IsAffineOpen U
⊢ P ((f ≫ e.hom) ∣_ ↑⟨U, hU⟩)
state_after: case right.mk
P : AffineTargetMorphismProperty
hP : P.toProperty.RespectsIso
X Y Z : Scheme
e : Y ≅ Z
f : X ⟶ Y
H : targetAffineLocally P f
U : Opens ↑↑Z.toPresheafedSpace
hU : IsAffineOpen U
⊢ P ((f ≫ e.hom) ∣_ U)

tactic: haveI : IsAffine _ := hU.preimage_of_isIso e.hom
state_before: case right.mk
P : AffineTargetMorphismProperty
hP : P.toProperty.RespectsIso
X Y Z : Scheme
e : Y ≅ Z
f : X ⟶ Y
H : targetAffineLocally P f
U : Opens ↑↑Z.toPresheafedSpace
hU : IsAffineOpen U
⊢ P ((f ≫ e.hom) ∣_ U)
state_after: case right.mk
P : AffineTargetMorphismProperty
hP : P.toProperty.RespectsIso
X Y Z : Scheme
e : Y ≅ Z
f : X ⟶ Y
H : targetAffineLocally P f
U : Opens ↑↑Z.toPresheafedSpace
hU : IsAffineOpen U
this : IsAffine (Y.restrict ⋯)
⊢ P ((f ≫ e.hom) ∣_ U)

tactic: rw [morphismRestrict_comp, affine_cancel_right_isIso hP]
state_before: case right.mk
P : AffineTargetMorphismProperty
hP : P.toProperty.RespectsIso
X Y Z : Scheme
e : Y ≅ Z
f : X ⟶ Y
H : targetAffineLocally P f
U : Opens ↑↑Z.toPresheafedSpace
hU : IsAffineOpen U
this : IsAffine (Y.restrict ⋯)
⊢ P ((f ≫ e.hom) ∣_ U)
state_after: case right.mk
P : AffineTargetMorphismProperty
hP : P.toProperty.RespectsIso
X Y Z : Scheme
e : Y ≅ Z
f : X ⟶ Y
H : targetAffineLocally P f
U : Opens ↑↑Z.toPresheafedSpace
hU : IsAffineOpen U
this : IsAffine (Y.restrict ⋯)
⊢ P (f ∣_ e.hom ⁻¹ᵁ U)

tactic: exact H ⟨(Opens.map e.hom.val.base).obj U, hU.preimage_of_isIso e.hom⟩
state_before: case right.mk
P : AffineTargetMorphismProperty
hP : P.toProperty.RespectsIso
X Y Z : Scheme
e : Y ≅ Z
f : X ⟶ Y
H : targetAffineLocally P f
U : Opens ↑↑Z.toPresheafedSpace
hU : IsAffineOpen U
this : IsAffine (Y.restrict ⋯)
⊢ P (f ∣_ e.hom ⁻¹ᵁ U)
state_after: no goals