Theorem: AlgebraicGeometry.stalkwise_respectsIso
File: Mathlib/AlgebraicGeometry/Morphisms/Constructors.lean

Proof steps:
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RingHom.RespectsIso fun {R S} [CommRing R] [CommRing S] => P
X Y Z : Scheme
e : X ≅ Y
f : Y ⟶ Z
hf : stalkwise (fun {R S} [CommRing R] [CommRing S] => P) f
⊢ stalkwise (fun {R S} [CommRing R] [CommRing S] => P) (e.hom ≫ f)
state_after: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RingHom.RespectsIso fun {R S} [CommRing R] [CommRing S] => P
X Y Z : Scheme
e : X ≅ Y
f : Y ⟶ Z
hf : stalkwise (fun {R S} [CommRing R] [CommRing S] => P) f
⊢ ∀ (x : ↑↑X.toPresheafedSpace), P (Scheme.Hom.stalkMap (e.hom ≫ f) x)
tactic: simp only [stalkwise, Scheme.comp_coeBase, TopCat.coe_comp, Function.comp_apply]
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RingHom.RespectsIso fun {R S} [CommRing R] [CommRing S] => P
X Y Z : Scheme
e : X ≅ Y
f : Y ⟶ Z
hf : stalkwise (fun {R S} [CommRing R] [CommRing S] => P) f
⊢ ∀ (x : ↑↑X.toPresheafedSpace), P (Scheme.Hom.stalkMap (e.hom ≫ f) x)
state_after: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RingHom.RespectsIso fun {R S} [CommRing R] [CommRing S] => P
X Y Z : Scheme
e : X ≅ Y
f : Y ⟶ Z
hf : stalkwise (fun {R S} [CommRing R] [CommRing S] => P) f
x : ↑↑X.toPresheafedSpace
⊢ P (Scheme.Hom.stalkMap (e.hom ≫ f) x)
tactic: intro x
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RingHom.RespectsIso fun {R S} [CommRing R] [CommRing S] => P
X Y Z : Scheme
e : X ≅ Y
f : Y ⟶ Z
hf : stalkwise (fun {R S} [CommRing R] [CommRing S] => P) f
x : ↑↑X.toPresheafedSpace
⊢ P (Scheme.Hom.stalkMap (e.hom ≫ f) x)
state_after: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RingHom.RespectsIso fun {R S} [CommRing R] [CommRing S] => P
X Y Z : Scheme
e : X ≅ Y
f : Y ⟶ Z
hf : stalkwise (fun {R S} [CommRing R] [CommRing S] => P) f
x : ↑↑X.toPresheafedSpace
⊢ P (Scheme.Hom.stalkMap f (e.hom.val.base x) ≫ Scheme.Hom.stalkMap e.hom x)
tactic: rw [Scheme.stalkMap_comp]
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RingHom.RespectsIso fun {R S} [CommRing R] [CommRing S] => P
X Y Z : Scheme
e : X ≅ Y
f : Y ⟶ Z
hf : stalkwise (fun {R S} [CommRing R] [CommRing S] => P) f
x : ↑↑X.toPresheafedSpace
⊢ P (Scheme.Hom.stalkMap f (e.hom.val.base x) ≫ Scheme.Hom.stalkMap e.hom x)
state_after: no goals
tactic: exact (RingHom.RespectsIso.cancel_right_isIso hP _ _).mpr <| hf (e.hom.val.base x)
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RingHom.RespectsIso fun {R S} [CommRing R] [CommRing S] => P
X Y Z : Scheme
e : Y ≅ Z
f : X ⟶ Y
hf : stalkwise (fun {R S} [CommRing R] [CommRing S] => P) f
⊢ stalkwise (fun {R S} [CommRing R] [CommRing S] => P) (f ≫ e.hom)
state_after: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RingHom.RespectsIso fun {R S} [CommRing R] [CommRing S] => P
X Y Z : Scheme
e : Y ≅ Z
f : X ⟶ Y
hf : stalkwise (fun {R S} [CommRing R] [CommRing S] => P) f
⊢ ∀ (x : ↑↑X.toPresheafedSpace), P (Scheme.Hom.stalkMap (f ≫ e.hom) x)
tactic: simp only [stalkwise, Scheme.comp_coeBase, TopCat.coe_comp, Function.comp_apply]
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RingHom.RespectsIso fun {R S} [CommRing R] [CommRing S] => P
X Y Z : Scheme
e : Y ≅ Z
f : X ⟶ Y
hf : stalkwise (fun {R S} [CommRing R] [CommRing S] => P) f
⊢ ∀ (x : ↑↑X.toPresheafedSpace), P (Scheme.Hom.stalkMap (f ≫ e.hom) x)
state_after: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RingHom.RespectsIso fun {R S} [CommRing R] [CommRing S] => P
X Y Z : Scheme
e : Y ≅ Z
f : X ⟶ Y
hf : stalkwise (fun {R S} [CommRing R] [CommRing S] => P) f
x : ↑↑X.toPresheafedSpace
⊢ P (Scheme.Hom.stalkMap (f ≫ e.hom) x)
tactic: intro x
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RingHom.RespectsIso fun {R S} [CommRing R] [CommRing S] => P
X Y Z : Scheme
e : Y ≅ Z
f : X ⟶ Y
hf : stalkwise (fun {R S} [CommRing R] [CommRing S] => P) f
x : ↑↑X.toPresheafedSpace
⊢ P (Scheme.Hom.stalkMap (f ≫ e.hom) x)
state_after: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RingHom.RespectsIso fun {R S} [CommRing R] [CommRing S] => P
X Y Z : Scheme
e : Y ≅ Z
f : X ⟶ Y
hf : stalkwise (fun {R S} [CommRing R] [CommRing S] => P) f
x : ↑↑X.toPresheafedSpace
⊢ P (Scheme.Hom.stalkMap e.hom (f.val.base x) ≫ Scheme.Hom.stalkMap f x)
tactic: rw [Scheme.stalkMap_comp]
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
hP : RingHom.RespectsIso fun {R S} [CommRing R] [CommRing S] => P
X Y Z : Scheme
e : Y ≅ Z
f : X ⟶ Y
hf : stalkwise (fun {R S} [CommRing R] [CommRing S] => P) f
x : ↑↑X.toPresheafedSpace
⊢ P (Scheme.Hom.stalkMap e.hom (f.val.base x) ≫ Scheme.Hom.stalkMap f x)
state_after: no goals
tactic: exact (RingHom.RespectsIso.cancel_left_isIso hP _ _).mpr <| hf x