Theorem: MeasureTheory.Content.innerContent_exists_compact
File: Mathlib/MeasureTheory/Measure/Content.lean

tactic: have h'ε := ENNReal.coe_ne_zero.2 hε
state_before: G : Type w
inst✝ : TopologicalSpace G
μ : Content G
U : Opens G
hU : μ.innerContent U ≠ ⊤
ε : ℝ≥0
hε : ε ≠ 0
⊢ ∃ K, ↑K ⊆ ↑U ∧ μ.innerContent U ≤ (fun s => ↑(μ.toFun s)) K + ↑ε
state_after: G : Type w
inst✝ : TopologicalSpace G
μ : Content G
U : Opens G
hU : μ.innerContent U ≠ ⊤
ε : ℝ≥0
hε : ε ≠ 0
h'ε : ↑ε ≠ 0
⊢ ∃ K, ↑K ⊆ ↑U ∧ μ.innerContent U ≤ (fun s => ↑(μ.toFun s)) K + ↑ε

tactic: rcases le_or_lt (μ.innerContent U) ε with h | h
state_before: G : Type w
inst✝ : TopologicalSpace G
μ : Content G
U : Opens G
hU : μ.innerContent U ≠ ⊤
ε : ℝ≥0
hε : ε ≠ 0
h'ε : ↑ε ≠ 0
⊢ ∃ K, ↑K ⊆ ↑U ∧ μ.innerContent U ≤ (fun s => ↑(μ.toFun s)) K + ↑ε
state_after: case inl
G : Type w
inst✝ : TopologicalSpace G
μ : Content G
U : Opens G
hU : μ.innerContent U ≠ ⊤
ε : ℝ≥0
hε : ε ≠ 0
h'ε : ↑ε ≠ 0
h : μ.innerContent U ≤ ↑ε
⊢ ∃ K, ↑K ⊆ ↑U ∧ μ.innerContent U ≤ (fun s => ↑(μ.toFun s)) K + ↑ε

case inr
G : Type w
inst✝ : TopologicalSpace G
μ : Content G
U : Opens G
hU : μ.innerContent U ≠ ⊤
ε : ℝ≥0
hε : ε ≠ 0
h'ε : ↑ε ≠ 0
h : ↑ε < μ.innerContent U
⊢ ∃ K, ↑K ⊆ ↑U ∧ μ.innerContent U ≤ (fun s => ↑(μ.toFun s)) K + ↑ε

tactic: have h₂ := ENNReal.sub_lt_self hU h.ne_bot h'ε
state_before: case inr
G : Type w
inst✝ : TopologicalSpace G
μ : Content G
U : Opens G
hU : μ.innerContent U ≠ ⊤
ε : ℝ≥0
hε : ε ≠ 0
h'ε : ↑ε ≠ 0
h : ↑ε < μ.innerContent U
⊢ ∃ K, ↑K ⊆ ↑U ∧ μ.innerContent U ≤ (fun s => ↑(μ.toFun s)) K + ↑ε
state_after: case inr
G : Type w
inst✝ : TopologicalSpace G
μ : Content G
U : Opens G
hU : μ.innerContent U ≠ ⊤
ε : ℝ≥0
hε : ε ≠ 0
h'ε : ↑ε ≠ 0
h : ↑ε < μ.innerContent U
h₂ : μ.innerContent U - ↑ε < μ.innerContent U
⊢ ∃ K, ↑K ⊆ ↑U ∧ μ.innerContent U ≤ (fun s => ↑(μ.toFun s)) K + ↑ε

tactic: conv at h₂ => rhs; rw [innerContent]
state_before: case inr
G : Type w
inst✝ : TopologicalSpace G
μ : Content G
U : Opens G
hU : μ.innerContent U ≠ ⊤
ε : ℝ≥0
hε : ε ≠ 0
h'ε : ↑ε ≠ 0
h : ↑ε < μ.innerContent U
h₂ : μ.innerContent U - ↑ε < μ.innerContent U
⊢ ∃ K, ↑K ⊆ ↑U ∧ μ.innerContent U ≤ (fun s => ↑(μ.toFun s)) K + ↑ε
state_after: case inr
G : Type w
inst✝ : TopologicalSpace G
μ : Content G
U : Opens G
hU : μ.innerContent U ≠ ⊤
ε : ℝ≥0
hε : ε ≠ 0
h'ε : ↑ε ≠ 0
h : ↑ε < μ.innerContent U
h₂ : μ.innerContent U - ↑ε < ⨆ K, ⨆ (_ : ↑K ⊆ ↑U), (fun s => ↑(μ.toFun s)) K
⊢ ∃ K, ↑K ⊆ ↑U ∧ μ.innerContent U ≤ (fun s => ↑(μ.toFun s)) K + ↑ε

tactic: simp only [lt_iSup_iff] at h₂
state_before: case inr
G : Type w
inst✝ : TopologicalSpace G
μ : Content G
U : Opens G
hU : μ.innerContent U ≠ ⊤
ε : ℝ≥0
hε : ε ≠ 0
h'ε : ↑ε ≠ 0
h : ↑ε < μ.innerContent U
h₂ : μ.innerContent U - ↑ε < ⨆ K, ⨆ (_ : ↑K ⊆ ↑U), (fun s => ↑(μ.toFun s)) K
⊢ ∃ K, ↑K ⊆ ↑U ∧ μ.innerContent U ≤ (fun s => ↑(μ.toFun s)) K + ↑ε
state_after: case inr
G : Type w
inst✝ : TopologicalSpace G
μ : Content G
U : Opens G
hU : μ.innerContent U ≠ ⊤
ε : ℝ≥0
hε : ε ≠ 0
h'ε : ↑ε ≠ 0
h : ↑ε < μ.innerContent U
h₂ : ∃ i, ∃ (_ : ↑i ⊆ ↑U), μ.innerContent U - ↑ε < ↑(μ.toFun i)
⊢ ∃ K, ↑K ⊆ ↑U ∧ μ.innerContent U ≤ (fun s => ↑(μ.toFun s)) K + ↑ε

tactic: rcases h₂ with ⟨U, h1U, h2U⟩
state_before: case inr
G : Type w
inst✝ : TopologicalSpace G
μ : Content G
U : Opens G
hU : μ.innerContent U ≠ ⊤
ε : ℝ≥0
hε : ε ≠ 0
h'ε : ↑ε ≠ 0
h : ↑ε < μ.innerContent U
h₂ : ∃ i, ∃ (_ : ↑i ⊆ ↑U), μ.innerContent U - ↑ε < ↑(μ.toFun i)
⊢ ∃ K, ↑K ⊆ ↑U ∧ μ.innerContent U ≤ (fun s => ↑(μ.toFun s)) K + ↑ε
state_after: case inr.intro.intro
G : Type w
inst✝ : TopologicalSpace G
μ : Content G
U✝ : Opens G
hU : μ.innerContent U✝ ≠ ⊤
ε : ℝ≥0
hε : ε ≠ 0
h'ε : ↑ε ≠ 0
h : ↑ε < μ.innerContent U✝
U : Compacts G
h1U : ↑U ⊆ ↑U✝
h2U : μ.innerContent U✝ - ↑ε < ↑(μ.toFun U)
⊢ ∃ K, ↑K ⊆ ↑U✝ ∧ μ.innerContent U✝ ≤ (fun s => ↑(μ.toFun s)) K + ↑ε

tactic: refine ⟨U, h1U, ?_⟩
state_before: case inr.intro.intro
G : Type w
inst✝ : TopologicalSpace G
μ : Content G
U✝ : Opens G
hU : μ.innerContent U✝ ≠ ⊤
ε : ℝ≥0
hε : ε ≠ 0
h'ε : ↑ε ≠ 0
h : ↑ε < μ.innerContent U✝
U : Compacts G
h1U : ↑U ⊆ ↑U✝
h2U : μ.innerContent U✝ - ↑ε < ↑(μ.toFun U)
⊢ ∃ K, ↑K ⊆ ↑U✝ ∧ μ.innerContent U✝ ≤ (fun s => ↑(μ.toFun s)) K + ↑ε
state_after: case inr.intro.intro
G : Type w
inst✝ : TopologicalSpace G
μ : Content G
U✝ : Opens G
hU : μ.innerContent U✝ ≠ ⊤
ε : ℝ≥0
hε : ε ≠ 0
h'ε : ↑ε ≠ 0
h : ↑ε < μ.innerContent U✝
U : Compacts G
h1U : ↑U ⊆ ↑U✝
h2U : μ.innerContent U✝ - ↑ε < ↑(μ.toFun U)
⊢ μ.innerContent U✝ ≤ (fun s => ↑(μ.toFun s)) U + ↑ε

tactic: rw [← tsub_le_iff_right]
state_before: case inr.intro.intro
G : Type w
inst✝ : TopologicalSpace G
μ : Content G
U✝ : Opens G
hU : μ.innerContent U✝ ≠ ⊤
ε : ℝ≥0
hε : ε ≠ 0
h'ε : ↑ε ≠ 0
h : ↑ε < μ.innerContent U✝
U : Compacts G
h1U : ↑U ⊆ ↑U✝
h2U : μ.innerContent U✝ - ↑ε < ↑(μ.toFun U)
⊢ μ.innerContent U✝ ≤ (fun s => ↑(μ.toFun s)) U + ↑ε
state_after: case inr.intro.intro
G : Type w
inst✝ : TopologicalSpace G
μ : Content G
U✝ : Opens G
hU : μ.innerContent U✝ ≠ ⊤
ε : ℝ≥0
hε : ε ≠ 0
h'ε : ↑ε ≠ 0
h : ↑ε < μ.innerContent U✝
U : Compacts G
h1U : ↑U ⊆ ↑U✝
h2U : μ.innerContent U✝ - ↑ε < ↑(μ.toFun U)
⊢ μ.innerContent U✝ - ↑ε ≤ (fun s => ↑(μ.toFun s)) U

tactic: exact le_of_lt h2U
state_before: case inr.intro.intro
G : Type w
inst✝ : TopologicalSpace G
μ : Content G
U✝ : Opens G
hU : μ.innerContent U✝ ≠ ⊤
ε : ℝ≥0
hε : ε ≠ 0
h'ε : ↑ε ≠ 0
h : ↑ε < μ.innerContent U✝
U : Compacts G
h1U : ↑U ⊆ ↑U✝
h2U : μ.innerContent U✝ - ↑ε < ↑(μ.toFun U)
⊢ μ.innerContent U✝ - ↑ε ≤ (fun s => ↑(μ.toFun s)) U
state_after: no goals

tactic: exact ⟨⊥, empty_subset _, le_add_left h⟩
state_before: case inl
G : Type w
inst✝ : TopologicalSpace G
μ : Content G
U : Opens G
hU : μ.innerContent U ≠ ⊤
ε : ℝ≥0
hε : ε ≠ 0
h'ε : ↑ε ≠ 0
h : μ.innerContent U ≤ ↑ε
⊢ ∃ K, ↑K ⊆ ↑U ∧ μ.innerContent U ≤ (fun s => ↑(μ.toFun s)) K + ↑ε
state_after: no goals