-- Mathlib/Analysis/Convex/Intrinsic.lean
theorem intrinsicClosure_eq_closure : intrinsicClosure 𝕜 s = closure s

Proof state:
case h.refine_1.intro.intro
𝕜 : Type u_1
V : Type u_2
P : Type u_5
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : CompleteSpace 𝕜
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace 𝕜 V
inst✝² : FiniteDimensional 𝕜 V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Set P
x : ↥(affineSpan 𝕜 s)
h : ∀ (o : Set ↥(affineSpan 𝕜 s)), IsOpen o → x ∈ o → (o ∩ Subtype.val ⁻¹' s).Nonempty
t : Set P
ht : IsOpen t
hx : ↑x ∈ t
⊢ (t ∩ s).Nonempty

Tactic:
obtain ⟨z, hz₁, hz₂⟩ := h _ (continuous_induced_dom.isOpen_preimage t ht) hx

Result:
case h.refine_1.intro.intro.intro.intro
𝕜 : Type u_1
V : Type u_2
P : Type u_5
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : CompleteSpace 𝕜
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace 𝕜 V
inst✝² : FiniteDimensional 𝕜 V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Set P
x : ↥(affineSpan 𝕜 s)
h : ∀ (o : Set ↥(affineSpan 𝕜 s)), IsOpen o → x ∈ o → (o ∩ Subtype.val ⁻¹' s).Nonempty
t : Set P
ht : IsOpen t
hx : ↑x ∈ t
z : ↥(affineSpan 𝕜 s)
hz₁ : z ∈ Subtype.val ⁻¹' t
hz₂ : z ∈ Subtype.val ⁻¹' s
⊢ (t ∩ s).Nonempty

Proof state:
case h.refine_3
𝕜 : Type u_1
V : Type u_2
P : Type u_5
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : CompleteSpace 𝕜
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace 𝕜 V
inst✝² : FiniteDimensional 𝕜 V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Set P
x : P
h : ∀ (o : Set P), IsOpen o → x ∈ o → (o ∩ s).Nonempty
⊢ x ∈ affineSpan 𝕜 s

Tactic:
by_contra hc

Result:
case h.refine_3
𝕜 : Type u_1
V : Type u_2
P : Type u_5
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : CompleteSpace 𝕜
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace 𝕜 V
inst✝² : FiniteDimensional 𝕜 V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Set P
x : P
h : ∀ (o : Set P), IsOpen o → x ∈ o → (o ∩ s).Nonempty
hc : x ∉ affineSpan 𝕜 s
⊢ False

Proof state:
case h.refine_2.intro.intro
𝕜 : Type u_1
V : Type u_2
P : Type u_5
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : CompleteSpace 𝕜
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace 𝕜 V
inst✝² : FiniteDimensional 𝕜 V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Set P
x : P
h : ∀ (o : Set P), IsOpen o → x ∈ o → (o ∩ s).Nonempty
t : Set P
ht : IsOpen t
hx : ⟨x, ?h.refine_3⟩ ∈ Subtype.val ⁻¹' t
⊢ (Subtype.val ⁻¹' t ∩ Subtype.val ⁻¹' s).Nonempty

Tactic:
obtain ⟨y, hyt, hys⟩ := h _ ht hx

Result:
case h.refine_2.intro.intro.intro.intro
𝕜 : Type u_1
V : Type u_2
P : Type u_5
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : CompleteSpace 𝕜
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace 𝕜 V
inst✝² : FiniteDimensional 𝕜 V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Set P
x : P
h : ∀ (o : Set P), IsOpen o → x ∈ o → (o ∩ s).Nonempty
t : Set P
ht : IsOpen t
hx : ⟨x, ?h.refine_3⟩ ∈ Subtype.val ⁻¹' t
y : P
hyt : y ∈ t
hys : y ∈ s
⊢ (Subtype.val ⁻¹' t ∩ Subtype.val ⁻¹' s).Nonempty

Proof state:
case h.refine_1.intro.intro.intro.intro
𝕜 : Type u_1
V : Type u_2
P : Type u_5
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : CompleteSpace 𝕜
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace 𝕜 V
inst✝² : FiniteDimensional 𝕜 V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Set P
x : ↥(affineSpan 𝕜 s)
h : ∀ (o : Set ↥(affineSpan 𝕜 s)), IsOpen o → x ∈ o → (o ∩ Subtype.val ⁻¹' s).Nonempty
t : Set P
ht : IsOpen t
hx : ↑x ∈ t
z : ↥(affineSpan 𝕜 s)
hz₁ : z ∈ Subtype.val ⁻¹' t
hz₂ : z ∈ Subtype.val ⁻¹' s
⊢ (t ∩ s).Nonempty

Tactic:
exact ⟨z, hz₁, hz₂⟩

Result:
no goals

Proof state:
𝕜 : Type u_1
V : Type u_2
P : Type u_5
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : CompleteSpace 𝕜
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace 𝕜 V
inst✝² : FiniteDimensional 𝕜 V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Set P
⊢ intrinsicClosure 𝕜 s = closure s

Tactic:
ext x

Result:
case h
𝕜 : Type u_1
V : Type u_2
P : Type u_5
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : CompleteSpace 𝕜
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace 𝕜 V
inst✝² : FiniteDimensional 𝕜 V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Set P
x : P
⊢ x ∈ intrinsicClosure 𝕜 s ↔ x ∈ closure s

Proof state:
case h
𝕜 : Type u_1
V : Type u_2
P : Type u_5
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : CompleteSpace 𝕜
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace 𝕜 V
inst✝² : FiniteDimensional 𝕜 V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Set P
x : P
⊢ x ∈ intrinsicClosure 𝕜 s ↔ x ∈ closure s

Tactic:
simp only [mem_closure_iff, mem_intrinsicClosure]

Result:
case h
𝕜 : Type u_1
V : Type u_2
P : Type u_5
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : CompleteSpace 𝕜
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace 𝕜 V
inst✝² : FiniteDimensional 𝕜 V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Set P
x : P
⊢ (∃ y, (∀ (o : Set ↥(affineSpan 𝕜 s)), IsOpen o → y ∈ o → (o ∩ Subtype.val ⁻¹' s).Nonempty) ∧ ↑y = x) ↔
    ∀ (o : Set P), IsOpen o → x ∈ o → (o ∩ s).Nonempty

Proof state:
case h.refine_2
𝕜 : Type u_1
V : Type u_2
P : Type u_5
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : CompleteSpace 𝕜
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace 𝕜 V
inst✝² : FiniteDimensional 𝕜 V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Set P
x : P
h : ∀ (o : Set P), IsOpen o → x ∈ o → (o ∩ s).Nonempty
⊢ ∀ (o : Set ↥(affineSpan 𝕜 s)), IsOpen o → ⟨x, ?h.refine_3⟩ ∈ o → (o ∩ Subtype.val ⁻¹' s).Nonempty

Tactic:
rintro _ ⟨t, ht, rfl⟩ hx

Result:
case h.refine_2.intro.intro
𝕜 : Type u_1
V : Type u_2
P : Type u_5
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : CompleteSpace 𝕜
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace 𝕜 V
inst✝² : FiniteDimensional 𝕜 V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Set P
x : P
h : ∀ (o : Set P), IsOpen o → x ∈ o → (o ∩ s).Nonempty
t : Set P
ht : IsOpen t
hx : ⟨x, ?h.refine_3⟩ ∈ Subtype.val ⁻¹' t
⊢ (Subtype.val ⁻¹' t ∩ Subtype.val ⁻¹' s).Nonempty

Proof state:
case h.refine_1
𝕜 : Type u_1
V : Type u_2
P : Type u_5
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : CompleteSpace 𝕜
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace 𝕜 V
inst✝² : FiniteDimensional 𝕜 V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Set P
x : P
⊢ (∃ y, (∀ (o : Set ↥(affineSpan 𝕜 s)), IsOpen o → y ∈ o → (o ∩ Subtype.val ⁻¹' s).Nonempty) ∧ ↑y = x) →
    ∀ (o : Set P), IsOpen o → x ∈ o → (o ∩ s).Nonempty

Tactic:
rintro ⟨x, h, rfl⟩ t ht hx

Result:
case h.refine_1.intro.intro
𝕜 : Type u_1
V : Type u_2
P : Type u_5
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : CompleteSpace 𝕜
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace 𝕜 V
inst✝² : FiniteDimensional 𝕜 V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Set P
x : ↥(affineSpan 𝕜 s)
h : ∀ (o : Set ↥(affineSpan 𝕜 s)), IsOpen o → x ∈ o → (o ∩ Subtype.val ⁻¹' s).Nonempty
t : Set P
ht : IsOpen t
hx : ↑x ∈ t
⊢ (t ∩ s).Nonempty

Proof state:
case h.refine_3
𝕜 : Type u_1
V : Type u_2
P : Type u_5
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : CompleteSpace 𝕜
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace 𝕜 V
inst✝² : FiniteDimensional 𝕜 V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Set P
x : P
h : ∀ (o : Set P), IsOpen o → x ∈ o → (o ∩ s).Nonempty
hc : x ∉ affineSpan 𝕜 s
⊢ False

Tactic:
obtain ⟨z, hz₁, hz₂⟩ := h _ (affineSpan 𝕜 s).closed_of_finiteDimensional.isOpen_compl hc

Result:
case h.refine_3.intro.intro
𝕜 : Type u_1
V : Type u_2
P : Type u_5
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : CompleteSpace 𝕜
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace 𝕜 V
inst✝² : FiniteDimensional 𝕜 V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Set P
x : P
h : ∀ (o : Set P), IsOpen o → x ∈ o → (o ∩ s).Nonempty
hc : x ∉ affineSpan 𝕜 s
z : P
hz₁ : z ∈ (↑(affineSpan 𝕜 s))ᶜ
hz₂ : z ∈ s
⊢ False