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

tactic: refine' le_antisymm _ _
state_before: G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : T2Space G
inst✝ : BorelSpace G
H : ContentRegular μ
K : Compacts G
⊢ ↑↑(Content.measure μ) ↑K = (fun s => ↑(toFun μ s)) K

tactic: apply ENNReal.le_of_forall_pos_le_add
state_before: case refine'_1
G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : T2Space G
inst✝ : BorelSpace G
H : ContentRegular μ
K : Compacts G
⊢ ↑↑(Content.measure μ) ↑K ≤ (fun s => ↑(toFun μ s)) K

tactic: intro ε εpos _
state_before: case refine'_1.h
G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : T2Space G
inst✝ : BorelSpace G
H : ContentRegular μ
K : Compacts G
⊢ ∀ (ε : ℝ≥0), 0 < ε → (fun s => ↑(toFun μ s)) K < ⊤ → ↑↑(Content.measure μ) ↑K ≤ (fun s => ↑(toFun μ s)) K + ↑ε

tactic: obtain ⟨K', K'_hyp⟩ := contentRegular_exists_compact μ H K (ne_bot_of_gt εpos)
state_before: case refine'_1.h
G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : T2Space G
inst✝ : BorelSpace G
H : ContentRegular μ
K : Compacts G
ε : ℝ≥0
εpos : 0 < ε
a✝ : (fun s => ↑(toFun μ s)) K < ⊤
⊢ ↑↑(Content.measure μ) ↑K ≤ (fun s => ↑(toFun μ s)) K + ↑ε

tactic: calc
  μ.measure ↑K ≤ μ.measure (interior ↑K') := by
    rw [μ.measure_apply isOpen_interior.measurableSet,
      μ.measure_apply K.isCompact.measurableSet]
    exact μ.outerMeasure.mono K'_hyp.left
  _ ≤ μ K' := by
    rw [μ.measure_apply (IsOpen.measurableSet isOpen_interior)]
    exact μ.outerMeasure_interior_compacts K'
  _ ≤ μ K + ε := K'_hyp.right
state_before: case refine'_1.h.intro
G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : T2Space G
inst✝ : BorelSpace G
H : ContentRegular μ
K : Compacts G
ε : ℝ≥0
εpos : 0 < ε
a✝ : (fun s => ↑(toFun μ s)) K < ⊤
K' : Compacts G
K'_hyp : K.carrier ⊆ interior K'.carrier ∧ (fun s => ↑(toFun μ s)) K' ≤ (fun s => ↑(toFun μ s)) K + ↑ε
⊢ ↑↑(Content.measure μ) ↑K ≤ (fun s => ↑(toFun μ s)) K + ↑ε

tactic: rw [μ.measure_apply isOpen_interior.measurableSet,
  μ.measure_apply K.isCompact.measurableSet]
state_before: G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : T2Space G
inst✝ : BorelSpace G
H : ContentRegular μ
K : Compacts G
ε : ℝ≥0
εpos : 0 < ε
a✝ : (fun s => ↑(toFun μ s)) K < ⊤
K' : Compacts G
K'_hyp : K.carrier ⊆ interior K'.carrier ∧ (fun s => ↑(toFun μ s)) K' ≤ (fun s => ↑(toFun μ s)) K + ↑ε
⊢ ↑↑(Content.measure μ) ↑K ≤ ↑↑(Content.measure μ) (interior ↑K')

tactic: exact μ.outerMeasure.mono K'_hyp.left
state_before: G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : T2Space G
inst✝ : BorelSpace G
H : ContentRegular μ
K : Compacts G
ε : ℝ≥0
εpos : 0 < ε
a✝ : (fun s => ↑(toFun μ s)) K < ⊤
K' : Compacts G
K'_hyp : K.carrier ⊆ interior K'.carrier ∧ (fun s => ↑(toFun μ s)) K' ≤ (fun s => ↑(toFun μ s)) K + ↑ε
⊢ ↑(Content.outerMeasure μ) ↑K ≤ ↑(Content.outerMeasure μ) (interior ↑K')

tactic: rw [μ.measure_apply (IsOpen.measurableSet isOpen_interior)]
state_before: G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : T2Space G
inst✝ : BorelSpace G
H : ContentRegular μ
K : Compacts G
ε : ℝ≥0
εpos : 0 < ε
a✝ : (fun s => ↑(toFun μ s)) K < ⊤
K' : Compacts G
K'_hyp : K.carrier ⊆ interior K'.carrier ∧ (fun s => ↑(toFun μ s)) K' ≤ (fun s => ↑(toFun μ s)) K + ↑ε
⊢ ↑↑(Content.measure μ) (interior ↑K') ≤ (fun s => ↑(toFun μ s)) K'

tactic: exact μ.outerMeasure_interior_compacts K'
state_before: G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : T2Space G
inst✝ : BorelSpace G
H : ContentRegular μ
K : Compacts G
ε : ℝ≥0
εpos : 0 < ε
a✝ : (fun s => ↑(toFun μ s)) K < ⊤
K' : Compacts G
K'_hyp : K.carrier ⊆ interior K'.carrier ∧ (fun s => ↑(toFun μ s)) K' ≤ (fun s => ↑(toFun μ s)) K + ↑ε
⊢ ↑(Content.outerMeasure μ) (interior ↑K') ≤ (fun s => ↑(toFun μ s)) K'

tactic: rw [μ.measure_apply (IsCompact.measurableSet K.isCompact)]
state_before: case refine'_2
G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : T2Space G
inst✝ : BorelSpace G
H : ContentRegular μ
K : Compacts G
⊢ (fun s => ↑(toFun μ s)) K ≤ ↑↑(Content.measure μ) ↑K

tactic: exact μ.le_outerMeasure_compacts K
state_before: case refine'_2
G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : T2Space G
inst✝ : BorelSpace G
H : ContentRegular μ
K : Compacts G
⊢ (fun s => ↑(toFun μ s)) K ≤ ↑(Content.outerMeasure μ) ↑K