Theorem: AlgebraicGeometry.RingedSpace.basicOpen_res
File: Mathlib/Geometry/RingedSpace/Basic.lean

Proof steps:
state_before: X : RingedSpace
U V : (Opens ↑↑X.toPresheafedSpace)ᵒᵖ
i : U ⟶ V
f : ↑(X.presheaf.obj U)
⊢ X.basicOpen ((X.presheaf.map i) f) = unop V ⊓ X.basicOpen f
state_after: case h
X : RingedSpace
V : (Opens ↑↑X.toPresheafedSpace)ᵒᵖ
X✝ : Opens ↑↑X.toPresheafedSpace
i : op X✝ ⟶ V
f : ↑(X.presheaf.obj (op X✝))
⊢ X.basicOpen ((X.presheaf.map i) f) = unop V ⊓ X.basicOpen f
tactic: induction U using Opposite.rec'
state_before: case h
X : RingedSpace
V : (Opens ↑↑X.toPresheafedSpace)ᵒᵖ
X✝ : Opens ↑↑X.toPresheafedSpace
i : op X✝ ⟶ V
f : ↑(X.presheaf.obj (op X✝))
⊢ X.basicOpen ((X.presheaf.map i) f) = unop V ⊓ X.basicOpen f
state_after: case h.h
X : RingedSpace
X✝¹ : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op X✝¹))
X✝ : Opens ↑↑X.toPresheafedSpace
i : op X✝¹ ⟶ op X✝
⊢ X.basicOpen ((X.presheaf.map i) f) = unop (op X✝) ⊓ X.basicOpen f
tactic: induction V using Opposite.rec'
state_before: case h.h
X : RingedSpace
X✝¹ : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op X✝¹))
X✝ : Opens ↑↑X.toPresheafedSpace
i : op X✝¹ ⟶ op X✝
⊢ X.basicOpen ((X.presheaf.map i) f) = unop (op X✝) ⊓ X.basicOpen f
state_after: case h.h
X : RingedSpace
X✝¹ : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op X✝¹))
X✝ : Opens ↑↑X.toPresheafedSpace
i : op X✝¹ ⟶ op X✝
g : unop (op X✝) ⟶ unop (op X✝¹) := i.unop
⊢ X.basicOpen ((X.presheaf.map i) f) = unop (op X✝) ⊓ X.basicOpen f
tactic: let g := i.unop
state_before: case h.h
X : RingedSpace
X✝¹ : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op X✝¹))
X✝ : Opens ↑↑X.toPresheafedSpace
i : op X✝¹ ⟶ op X✝
g : unop (op X✝) ⟶ unop (op X✝¹) := i.unop
⊢ X.basicOpen ((X.presheaf.map i) f) = unop (op X✝) ⊓ X.basicOpen f
state_after: case h.h
X : RingedSpace
X✝¹ : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op X✝¹))
X✝ : Opens ↑↑X.toPresheafedSpace
i : op X✝¹ ⟶ op X✝
g : unop (op X✝) ⟶ unop (op X✝¹) := i.unop
this : i = g.op
⊢ X.basicOpen ((X.presheaf.map i) f) = unop (op X✝) ⊓ X.basicOpen f
tactic: have : i = g.op := rfl
state_before: case h.h
X : RingedSpace
X✝¹ : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op X✝¹))
X✝ : Opens ↑↑X.toPresheafedSpace
i : op X✝¹ ⟶ op X✝
g : unop (op X✝) ⟶ unop (op X✝¹) := i.unop
this : i = g.op
⊢ X.basicOpen ((X.presheaf.map i) f) = unop (op X✝) ⊓ X.basicOpen f
state_after: case h.h
X : RingedSpace
X✝¹ : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op X✝¹))
X✝ : Opens ↑↑X.toPresheafedSpace
i : op X✝¹ ⟶ op X✝
g : unop (op X✝) ⟶ unop (op X✝¹)
this : i = g.op
⊢ X.basicOpen ((X.presheaf.map i) f) = unop (op X✝) ⊓ X.basicOpen f
tactic: clear_value g
state_before: case h.h
X : RingedSpace
X✝¹ : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op X✝¹))
X✝ : Opens ↑↑X.toPresheafedSpace
i : op X✝¹ ⟶ op X✝
g : unop (op X✝) ⟶ unop (op X✝¹)
this : i = g.op
⊢ X.basicOpen ((X.presheaf.map i) f) = unop (op X✝) ⊓ X.basicOpen f
state_after: case h.h
X : RingedSpace
X✝¹ : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op X✝¹))
X✝ : Opens ↑↑X.toPresheafedSpace
g : unop (op X✝) ⟶ unop (op X✝¹)
⊢ X.basicOpen ((X.presheaf.map g.op) f) = unop (op X✝) ⊓ X.basicOpen f
tactic: subst this
state_before: case h.h
X : RingedSpace
X✝¹ : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op X✝¹))
X✝ : Opens ↑↑X.toPresheafedSpace
g : unop (op X✝) ⟶ unop (op X✝¹)
⊢ X.basicOpen ((X.presheaf.map g.op) f) = unop (op X✝) ⊓ X.basicOpen f
state_after: case h.h.h.h
X : RingedSpace
X✝¹ : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op X✝¹))
X✝ : Opens ↑↑X.toPresheafedSpace
g : unop (op X✝) ⟶ unop (op X✝¹)
x✝ : ↑↑X.toPresheafedSpace
⊢ x✝ ∈ ↑(X.basicOpen ((X.presheaf.map g.op) f)) ↔ x✝ ∈ ↑(unop (op X✝) ⊓ X.basicOpen f)
tactic: ext
state_before: case h.h.h.h
X : RingedSpace
X✝¹ : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op X✝¹))
X✝ : Opens ↑↑X.toPresheafedSpace
g : unop (op X✝) ⟶ unop (op X✝¹)
x✝ : ↑↑X.toPresheafedSpace
⊢ x✝ ∈ ↑(X.basicOpen ((X.presheaf.map g.op) f)) ↔ x✝ ∈ ↑(unop (op X✝) ⊓ X.basicOpen f)
state_after: case h.h.h.h.mp
X : RingedSpace
X✝¹ : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op X✝¹))
X✝ : Opens ↑↑X.toPresheafedSpace
g : unop (op X✝) ⟶ unop (op X✝¹)
x✝ : ↑↑X.toPresheafedSpace
⊢ x✝ ∈ ↑(X.basicOpen ((X.presheaf.map g.op) f)) → x✝ ∈ ↑(unop (op X✝) ⊓ X.basicOpen f)

case h.h.h.h.mpr
X : RingedSpace
X✝¹ : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op X✝¹))
X✝ : Opens ↑↑X.toPresheafedSpace
g : unop (op X✝) ⟶ unop (op X✝¹)
x✝ : ↑↑X.toPresheafedSpace
⊢ x✝ ∈ ↑(unop (op X✝) ⊓ X.basicOpen f) → x✝ ∈ ↑(X.basicOpen ((X.presheaf.map g.op) f))
tactic: constructor