Theorem: AlgebraicGeometry.LocallyRingedSpace.toΓSpec_val_base
File: Mathlib/AlgebraicGeometry/GammaSpecAdjunction.lean

Proof steps:
state_before: X : LocallyRingedSpace
r : ↑(Γ.obj (op X))
⊢ ∀ (x : ↑↑X.toPresheafedSpace), IsLocalRingHom (PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x)
state_after: X : LocallyRingedSpace
r : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
⊢ IsLocalRingHom (PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x)
tactic: intro x
state_before: X : LocallyRingedSpace
r : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
⊢ IsLocalRingHom (PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x)
state_after: X : LocallyRingedSpace
r : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
⊢ IsLocalRingHom (PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x)
tactic: let p : PrimeSpectrum (Γ.obj (op X)) := X.toΓSpecFun x
state_before: X : LocallyRingedSpace
r : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
⊢ IsLocalRingHom (PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x)
state_after: case map_nonunit
X : LocallyRingedSpace
r : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
⊢ ∀ (a : ↑((Spec.locallyRingedSpaceObj (Γ.obj (op X))).presheaf.stalk (X.toΓSpecSheafedSpace.base x))),
    IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) a) → IsUnit a
tactic: constructor
state_before: case map_nonunit
X : LocallyRingedSpace
r : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
⊢ ∀ (a : ↑((Spec.locallyRingedSpaceObj (Γ.obj (op X))).presheaf.stalk (X.toΓSpecSheafedSpace.base x))),
    IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) a) → IsUnit a
state_after: case map_nonunit
X : LocallyRingedSpace
r : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
⊢ ∀ (a : ↑((Spec.locallyRingedSpaceObj (Γ.obj (op X))).presheaf.stalk (X.toΓSpecSheafedSpace.base x))),
    IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) a) → IsUnit a
tactic: let S := (structureSheaf _).presheaf.stalk p
state_before: case map_nonunit
X : LocallyRingedSpace
r : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
⊢ ∀ (a : ↑((Spec.locallyRingedSpaceObj (Γ.obj (op X))).presheaf.stalk (X.toΓSpecSheafedSpace.base x))),
    IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) a) → IsUnit a
state_after: case map_nonunit
X : LocallyRingedSpace
r : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
⊢ IsUnit t
tactic: rintro (t : S) ht
state_before: case map_nonunit
X : LocallyRingedSpace
r : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
⊢ IsUnit t
state_after: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
he : t * (algebraMap ↑(Γ.obj (op X)) ↑S) ↑(r, s).2 = (algebraMap ↑(Γ.obj (op X)) ↑S) (r, s).1
⊢ IsUnit t
tactic: obtain ⟨⟨r, s⟩, he⟩ := IsLocalization.surj p.asIdeal.primeCompl t
state_before: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
he : t * (algebraMap ↑(Γ.obj (op X)) ↑S) ↑(r, s).2 = (algebraMap ↑(Γ.obj (op X)) ↑S) (r, s).1
⊢ IsUnit t
state_after: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
he : t * (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
⊢ IsUnit t
tactic: dsimp at he
state_before: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
he : t * (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
⊢ IsUnit t
state_after: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
he : t * (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
t' : ?m.55451 := ?m.55452
⊢ IsUnit t
tactic: set t' := _
state_before: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
he : t * (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
t' : ?m.55451 := ?m.55452
⊢ IsUnit t
state_after: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
t' : ↑S := (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s
he : t * t' = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
⊢ IsUnit t
tactic: change t * t' = _ at he
state_before: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
t' : ↑S := (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s
he : t * t' = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
⊢ IsUnit t
state_after: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
t' : ↑S := (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s
he : t * t' = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
⊢ IsUnit (t * t')
tactic: apply isUnit_of_mul_isUnit_left (y := t')
state_before: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
t' : ↑S := (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s
he : t * t' = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
⊢ IsUnit (t * t')
state_after: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
t' : ↑S := (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s
he : t * t' = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
⊢ IsUnit ((algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r)
tactic: rw [he]
state_before: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
t' : ↑S := (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s
he : t * t' = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
⊢ IsUnit ((algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r)
state_after: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
t' : ↑S := (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s
he : t * t' = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
⊢ r ∈ p.asIdeal.primeCompl
tactic: refine IsLocalization.map_units S (⟨r, ?_⟩ : p.asIdeal.primeCompl)
state_before: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
t' : ↑S := (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s
he : t * t' = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
⊢ r ∈ p.asIdeal.primeCompl
state_after: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
t' : ↑S := (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s
he : t * t' = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
⊢ IsUnit ((X.presheaf.Γgerm x) r)
tactic: apply (not_mem_prime_iff_unit_in_stalk _ _ _).mpr
state_before: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
t' : ↑S := (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s
he : t * t' = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
⊢ IsUnit ((X.presheaf.Γgerm x) r)
state_after: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
t' : ↑S := (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s
he : t * t' = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
⊢ IsUnit
    ((toStalk (↑(unop (op (Γ.obj (op X))))) (X.toΓSpecSheafedSpace.base x) ≫
        PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x)
      r)
tactic: rw [← toStalk_stalkMap_toΓSpec]
state_before: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
t' : ↑S := (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s
he : t * t' = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
⊢ IsUnit
    ((toStalk (↑(unop (op (Γ.obj (op X))))) (X.toΓSpecSheafedSpace.base x) ≫
        PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x)
      r)
state_after: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
t' : ↑S := (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s
he : t * t' = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
⊢ IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) (t * t'))
tactic: erw [comp_apply, ← he]
state_before: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
t' : ↑S := (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s
he : t * t' = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
⊢ IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) (t * t'))
state_after: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
t' : ↑S := (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s
he : t * t' = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
⊢ IsUnit
    ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t *
      (PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t')
tactic: rw [RingHom.map_mul]
state_before: case map_nonunit.intro.mk
X : LocallyRingedSpace
r✝ : ↑(Γ.obj (op X))
x : ↑↑X.toPresheafedSpace
p : PrimeSpectrum ↑(Γ.obj (op X)) := X.toΓSpecFun x
S : CommRingCat := (structureSheaf ↑(Γ.obj (op X))).presheaf.stalk p
t : ↑S
ht : IsUnit ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t)
r : ↑(Γ.obj (op X))
s : ↥p.asIdeal.primeCompl
t' : ↑S := (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) ↑s
he : t * t' = (algebraMap ↑(X.presheaf.obj (op ⊤)) ↑S) r
⊢ IsUnit
    ((PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t *
      (PresheafedSpace.Hom.stalkMap X.toΓSpecSheafedSpace x) t')
state_after: no goals
tactic: exact ht.mul <| (IsLocalization.map_units (R := Γ.obj (op X)) S s).map _