Theorem: AlgebraicGeometry.ΓSpec.right_triangle
File: Mathlib/AlgebraicGeometry/GammaSpecAdjunction.lean

tactic: apply LocallyRingedSpace.comp_ring_hom_ext
state_before: R : CommRingCat
⊢ identityToΓSpec.app (Spec.toLocallyRingedSpace.obj { unop := R }) ≫
      Spec.toLocallyRingedSpace.map (SpecΓIdentity.inv.app R).op =
    𝟙 ((𝟭 LocallyRingedSpace).obj (Spec.toLocallyRingedSpace.obj { unop := R }))
state_after: case w
R : CommRingCat
⊢ ((𝟭 LocallyRingedSpace).obj (Spec.toLocallyRingedSpace.obj { unop := R })).toΓSpec.val.base ≫
      (Spec.locallyRingedSpaceMap (SpecΓIdentity.inv.app R).op.unop).val.base =
    (𝟙 ((𝟭 LocallyRingedSpace).obj (Spec.toLocallyRingedSpace.obj { unop := R }))).val.base

case h
R : CommRingCat
⊢ ∀ (r : ↑{ unop := (𝟭 CommRingCat).obj R }.unop),
    (SpecΓIdentity.inv.app R).op.unop ≫
        ((𝟭 LocallyRingedSpace).obj (Spec.toLocallyRingedSpace.obj { unop := R })).presheaf.map (homOfLE ⋯).op =
      toOpen (↑{ unop := (𝟭 CommRingCat).obj R }.unop) (basicOpen r) ≫
        (𝟙 ((𝟭 LocallyRingedSpace).obj (Spec.toLocallyRingedSpace.obj { unop := R }))).val.c.app { unop := basicOpen r }

tactic: ext (p : PrimeSpectrum R)
state_before: case w
R : CommRingCat
⊢ ((𝟭 LocallyRingedSpace).obj (Spec.toLocallyRingedSpace.obj { unop := R })).toΓSpec.val.base ≫
      (Spec.locallyRingedSpaceMap (SpecΓIdentity.inv.app R).op.unop).val.base =
    (𝟙 ((𝟭 LocallyRingedSpace).obj (Spec.toLocallyRingedSpace.obj { unop := R }))).val.base
state_after: case w.w
R : CommRingCat
p : PrimeSpectrum ↑R
⊢ (((𝟭 LocallyRingedSpace).obj (Spec.toLocallyRingedSpace.obj { unop := R })).toΓSpec.val.base ≫
        (Spec.locallyRingedSpaceMap (SpecΓIdentity.inv.app R).op.unop).val.base)
      p =
    (𝟙 ((𝟭 LocallyRingedSpace).obj (Spec.toLocallyRingedSpace.obj { unop := R }))).val.base p

tactic: dsimp
state_before: case w.w
R : CommRingCat
p : PrimeSpectrum ↑R
⊢ (((𝟭 LocallyRingedSpace).obj (Spec.toLocallyRingedSpace.obj { unop := R })).toΓSpec.val.base ≫
        (Spec.locallyRingedSpaceMap (SpecΓIdentity.inv.app R).op.unop).val.base)
      p =
    (𝟙 ((𝟭 LocallyRingedSpace).obj (Spec.toLocallyRingedSpace.obj { unop := R }))).val.base p
state_after: case w.w
R : CommRingCat
p : PrimeSpectrum ↑R
⊢ ((Spec.locallyRingedSpaceObj R).toΓSpecBase ≫ Spec.topMap (toSpecΓ R)) p = (𝟙 (Spec.topObj R)) p

tactic: ext x
state_before: case w.w
R : CommRingCat
p : PrimeSpectrum ↑R
⊢ ((Spec.locallyRingedSpaceObj R).toΓSpecBase ≫ Spec.topMap (toSpecΓ R)) p = (𝟙 (Spec.topObj R)) p
state_after: case w.w.asIdeal.h
R : CommRingCat
p : PrimeSpectrum ↑R
x : ↑R
⊢ x ∈ (((Spec.locallyRingedSpaceObj R).toΓSpecBase ≫ Spec.topMap (toSpecΓ R)) p).asIdeal ↔
    x ∈ ((𝟙 (Spec.topObj R)) p).asIdeal

tactic: erw [← IsLocalization.AtPrime.to_map_mem_maximal_iff ((structureSheaf R).presheaf.stalk p)
    p.asIdeal x]
state_before: case w.w.asIdeal.h
R : CommRingCat
p : PrimeSpectrum ↑R
x : ↑R
⊢ x ∈ (((Spec.locallyRingedSpaceObj R).toΓSpecBase ≫ Spec.topMap (toSpecΓ R)) p).asIdeal ↔
    x ∈ ((𝟙 (Spec.topObj R)) p).asIdeal
state_after: case w.w.asIdeal.h
R : CommRingCat
p : PrimeSpectrum ↑R
x : ↑R
⊢ x ∈ (((Spec.locallyRingedSpaceObj R).toΓSpecBase ≫ Spec.topMap (toSpecΓ R)) p).asIdeal ↔
    (algebraMap ↑R ↑((structureSheaf ↑R).presheaf.stalk p)) x ∈
      LocalRing.maximalIdeal ↑((structureSheaf ↑R).presheaf.stalk p)

tactic: rfl
state_before: case w.w.asIdeal.h
R : CommRingCat
p : PrimeSpectrum ↑R
x : ↑R
⊢ x ∈ (((Spec.locallyRingedSpaceObj R).toΓSpecBase ≫ Spec.topMap (toSpecΓ R)) p).asIdeal ↔
    (algebraMap ↑R ↑((structureSheaf ↑R).presheaf.stalk p)) x ∈
      LocalRing.maximalIdeal ↑((structureSheaf ↑R).presheaf.stalk p)
state_after: no goals

tactic: intro r
state_before: case h
R : CommRingCat
⊢ ∀ (r : ↑{ unop := (𝟭 CommRingCat).obj R }.unop),
    (SpecΓIdentity.inv.app R).op.unop ≫
        ((𝟭 LocallyRingedSpace).obj (Spec.toLocallyRingedSpace.obj { unop := R })).presheaf.map (homOfLE ⋯).op =
      toOpen (↑{ unop := (𝟭 CommRingCat).obj R }.unop) (basicOpen r) ≫
        (𝟙 ((𝟭 LocallyRingedSpace).obj (Spec.toLocallyRingedSpace.obj { unop := R }))).val.c.app { unop := basicOpen r }
state_after: case h
R : CommRingCat
r : ↑{ unop := (𝟭 CommRingCat).obj R }.unop
⊢ (SpecΓIdentity.inv.app R).op.unop ≫
      ((𝟭 LocallyRingedSpace).obj (Spec.toLocallyRingedSpace.obj { unop := R })).presheaf.map (homOfLE ⋯).op =
    toOpen (↑{ unop := (𝟭 CommRingCat).obj R }.unop) (basicOpen r) ≫
      (𝟙 ((𝟭 LocallyRingedSpace).obj (Spec.toLocallyRingedSpace.obj { unop := R }))).val.c.app { unop := basicOpen r }

tactic: apply toOpen_res
state_before: case h
R : CommRingCat
r : ↑{ unop := (𝟭 CommRingCat).obj R }.unop
⊢ (SpecΓIdentity.inv.app R).op.unop ≫
      ((𝟭 LocallyRingedSpace).obj (Spec.toLocallyRingedSpace.obj { unop := R })).presheaf.map (homOfLE ⋯).op =
    toOpen (↑{ unop := (𝟭 CommRingCat).obj R }.unop) (basicOpen r) ≫
      (𝟙 ((𝟭 LocallyRingedSpace).obj (Spec.toLocallyRingedSpace.obj { unop := R }))).val.c.app { unop := basicOpen r }
state_after: no goals