-- Mathlib/Geometry/Manifold/IsManifold/InteriorBoundary.lean
/-- The interior and boundary of a manifold `M` are disjoint. -/
lemma disjoint_interior_boundary : Disjoint (I.interior M) (I.boundary M)

Proof state:
𝕜 : Type u_1
inst✝⁵ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
H : Type u_3
inst✝² : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
h : ¬Disjoint (ModelWithCorners.interior M) (ModelWithCorners.boundary M)
⊢ False

Tactic:
obtain ⟨x, h1, h2⟩ := not_disjoint_iff.mp h

Result:
case intro.intro
𝕜 : Type u_1
inst✝⁵ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
H : Type u_3
inst✝² : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
h : ¬Disjoint (ModelWithCorners.interior M) (ModelWithCorners.boundary M)
x : M
h1 : x ∈ ModelWithCorners.interior M
h2 : x ∈ ModelWithCorners.boundary M
⊢ False

Proof state:
𝕜 : Type u_1
inst✝⁵ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
H : Type u_3
inst✝² : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
⊢ Disjoint (ModelWithCorners.interior M) (ModelWithCorners.boundary M)

Tactic:
by_contra h

Result:
𝕜 : Type u_1
inst✝⁵ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
H : Type u_3
inst✝² : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
h : ¬Disjoint (ModelWithCorners.interior M) (ModelWithCorners.boundary M)
⊢ False

Proof state:
case intro.intro
𝕜 : Type u_1
inst✝⁵ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
H : Type u_3
inst✝² : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
h : ¬Disjoint (ModelWithCorners.interior M) (ModelWithCorners.boundary M)
x : M
h1 : x ∈ ModelWithCorners.interior M
h2 : x ∈ ModelWithCorners.boundary M
⊢ False

Tactic:
rw [← mem_empty_iff_false (extChartAt I x x),
  ← disjoint_iff_inter_eq_empty.mp disjoint_interior_frontier, mem_inter_iff]

Result:
case intro.intro
𝕜 : Type u_1
inst✝⁵ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
H : Type u_3
inst✝² : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
h : ¬Disjoint (ModelWithCorners.interior M) (ModelWithCorners.boundary M)
x : M
h1 : x ∈ ModelWithCorners.interior M
h2 : x ∈ ModelWithCorners.boundary M
⊢ ↑(extChartAt I x) x ∈ interior ?m.8079 ∧ ↑(extChartAt I x) x ∈ frontier ?m.8079

𝕜 : Type u_1
inst✝⁵ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
H : Type u_3
inst✝² : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
h : ¬Disjoint (ModelWithCorners.interior M) (ModelWithCorners.boundary M)
x : M
h1 : x ∈ ModelWithCorners.interior M
h2 : x ∈ ModelWithCorners.boundary M
⊢ Set E

Proof state:
case intro.intro
𝕜 : Type u_1
inst✝⁵ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
H : Type u_3
inst✝² : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
h : ¬Disjoint (ModelWithCorners.interior M) (ModelWithCorners.boundary M)
x : M
h1 : x ∈ ModelWithCorners.interior M
h2 : x ∈ ModelWithCorners.boundary M
⊢ ↑(extChartAt I x) x ∈ interior ?m.8079 ∧ ↑(extChartAt I x) x ∈ frontier ?m.8079

𝕜 : Type u_1
inst✝⁵ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
H : Type u_3
inst✝² : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
h : ¬Disjoint (ModelWithCorners.interior M) (ModelWithCorners.boundary M)
x : M
h1 : x ∈ ModelWithCorners.interior M
h2 : x ∈ ModelWithCorners.boundary M
⊢ Set E

Tactic:
exact ⟨h1, h2⟩

Result:
no goals