theorem isOpenImmersion_is_local_at_target : PropertyIsLocalAtTarget @IsOpenImmersion := by
  constructor
  · exact isOpenImmersion_respectsIso
  · intros; infer_instance
  · intro X Y f 𝒰 H
    rw [isOpenImmersion_iff_stalk]
    constructor
    · apply (openEmbedding_iff_openEmbedding_of_iSup_eq_top 𝒰.iSup_opensRange f.1.base.2).mpr
      intro i
      have := ((isOpenImmersion_respectsIso.arrow_iso_iff
        (morphismRestrictOpensRange f (𝒰.map i))).mpr (H i)).1
      erw [Arrow.mk_hom, morphismRestrict_val_base] at this
      norm_cast
    · intro x
      have := Arrow.iso_w (morphismRestrictStalkMap
        f (Scheme.Hom.opensRange (𝒰.map <| 𝒰.f <| f.1.base x)) ⟨x, 𝒰.Covers _⟩)
      dsimp only [Arrow.mk_hom] at this
      rw [this]
      haveI : IsOpenImmersion (f ∣_ Scheme.Hom.opensRange (𝒰.map <| 𝒰.f <| f.1.base x)) :=
        (isOpenImmersion_respectsIso.arrow_iso_iff
          (morphismRestrictOpensRange f (𝒰.map _))).mpr (H _)
      

Proof state:
case of_openCover.right
X✝ Y✝ Z : Scheme
f✝ : X✝ ⟶ Y✝
g : Y✝ ⟶ Z
X Y : Scheme
f : X ⟶ Y
𝒰 : Scheme.OpenCover Y
H : ∀ (i : 𝒰.J), IsOpenImmersion pullback.snd
x : ↑↑X.toPresheafedSpace
this✝ :
  PresheafedSpace.stalkMap f.val x =
    (morphismRestrictStalkMap f (Scheme.Hom.opensRange (Scheme.OpenCover.map 𝒰 (Scheme.OpenCover.f 𝒰 (f.val.base x))))
            { val := x,
              property :=
                (_ :
                  f.val.base x ∈
                    Set.range ⇑(Scheme.OpenCover.map 𝒰 (Scheme.OpenCover.f 𝒰 (f.val.base x))).val.base) }).inv.left ≫
      PresheafedSpace.stalkMap
          (f ∣_ Scheme.Hom.opensRange (Scheme.OpenCover.map 𝒰 (Scheme.OpenCover.f 𝒰 (f.val.base x)))).val
          { val := x,
            property :=
              (_ :
                f.val.base x ∈ Set.range ⇑(Scheme.OpenCover.map 𝒰 (Scheme.OpenCover.f 𝒰 (f.val.base x))).val.base) } ≫
        (morphismRestrictStalkMap f
              (Scheme.Hom.opensRange (Scheme.OpenCover.map 𝒰 (Scheme.OpenCover.f 𝒰 (f.val.base x))))
              { val := x,
                property :=
                  (_ :
                    f.val.base x ∈
                      Set.range ⇑(Scheme.OpenCover.map 𝒰 (Scheme.OpenCover.f 𝒰 (f.val.base x))).val.base) }).hom.right
this : IsOpenImmersion (f ∣_ Scheme.Hom.opensRange (Scheme.OpenCover.map 𝒰 (Scheme.OpenCover.f 𝒰 (f.val.base x))))
⊢ IsIso
    ((morphismRestrictStalkMap f (Scheme.Hom.opensRange (Scheme.OpenCover.map 𝒰 (Scheme.OpenCover.f 𝒰 (f.val.base x))))
            { val := x,
              property :=
                (_ :
                  f.val.base x ∈
                    Set.range ⇑(Scheme.OpenCover.map 𝒰 (Scheme.OpenCover.f 𝒰 (f.val.base x))).val.base) }).inv.left ≫
      PresheafedSpace.stalkMap
          (f ∣_ Scheme.Hom.opensRange (Scheme.OpenCover.map 𝒰 (Scheme.OpenCover.f 𝒰 (f.val.base x)))).val
          { val := x,
            property :=
              (_ :
                f.val.base x ∈ Set.range ⇑(Scheme.OpenCover.map 𝒰 (Scheme.OpenCover.f 𝒰 (f.val.base x))).val.base) } ≫
        (morphismRestrictStalkMap f
              (Scheme.Hom.opensRange (Scheme.OpenCover.map 𝒰 (Scheme.OpenCover.f 𝒰 (f.val.base x))))
              { val := x,
                property :=
                  (_ :
                    f.val.base x ∈
                      Set.range ⇑(Scheme.OpenCover.map 𝒰 (Scheme.OpenCover.f 𝒰 (f.val.base x))).val.base) }).hom.right)

Next tactic:
infer_instance