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✝¹ : R1Space G
inst✝ : BorelSpace G
H : μ.ContentRegular
K : Compacts G
⊢ μ.measure ↑K = (fun s => ↑(μ.toFun s)) K
state_after: case refine_1
G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : R1Space G
inst✝ : BorelSpace G
H : μ.ContentRegular
K : Compacts G
⊢ μ.measure ↑K ≤ (fun s => ↑(μ.toFun s)) K

case refine_2
G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : R1Space G
inst✝ : BorelSpace G
H : μ.ContentRegular
K : Compacts G
⊢ (fun s => ↑(μ.toFun s)) K ≤ μ.measure ↑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✝¹ : R1Space G
inst✝ : BorelSpace G
H : μ.ContentRegular
K : Compacts G
⊢ μ.measure ↑K ≤ (fun s => ↑(μ.toFun s)) K
state_after: case refine_1.h
G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : R1Space G
inst✝ : BorelSpace G
H : μ.ContentRegular
K : Compacts G
⊢ ∀ (ε : ℝ≥0), 0 < ε → (fun s => ↑(μ.toFun s)) K < ⊤ → μ.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✝¹ : R1Space G
inst✝ : BorelSpace G
H : μ.ContentRegular
K : Compacts G
⊢ ∀ (ε : ℝ≥0), 0 < ε → (fun s => ↑(μ.toFun s)) K < ⊤ → μ.measure ↑K ≤ (fun s => ↑(μ.toFun s)) K + ↑ε
state_after: case refine_1.h
G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : R1Space G
inst✝ : BorelSpace G
H : μ.ContentRegular
K : Compacts G
ε : ℝ≥0
εpos : 0 < ε
a✝ : (fun s => ↑(μ.toFun s)) K < ⊤
⊢ μ.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✝¹ : R1Space G
inst✝ : BorelSpace G
H : μ.ContentRegular
K : Compacts G
ε : ℝ≥0
εpos : 0 < ε
a✝ : (fun s => ↑(μ.toFun s)) K < ⊤
⊢ μ.measure ↑K ≤ (fun s => ↑(μ.toFun s)) K + ↑ε
state_after: case refine_1.h.intro
G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : R1Space 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 + ↑ε
⊢ μ.measure ↑K ≤ (fun s => ↑(μ.toFun s)) K + ↑ε

tactic: calc
  μ.measure ↑K ≤ μ.measure (interior ↑K') := measure_mono K'_hyp.1
  _ ≤ μ 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✝¹ : R1Space 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 + ↑ε
⊢ μ.measure ↑K ≤ (fun s => ↑(μ.toFun s)) K + ↑ε
state_after: no goals

tactic: rw [μ.measure_apply (IsOpen.measurableSet isOpen_interior)]
state_before: G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : R1Space 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 + ↑ε
⊢ μ.measure (interior ↑K') ≤ (fun s => ↑(μ.toFun s)) K'
state_after: G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : R1Space 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 + ↑ε
⊢ μ.outerMeasure (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✝¹ : R1Space 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 + ↑ε
⊢ μ.outerMeasure (interior ↑K') ≤ (fun s => ↑(μ.toFun s)) K'
state_after: no goals

tactic: calc
μ K ≤ μ ⟨closure K, K.2.closure⟩ := μ.mono _ _ subset_closure
_ ≤ μ.measure (closure K) := by
  rw [μ.measure_apply (isClosed_closure.measurableSet)]
  exact μ.le_outerMeasure_compacts _
_ = μ.measure K := Measure.OuterRegular.measure_closure_eq_of_isCompact K.2
state_before: case refine_2
G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : R1Space G
inst✝ : BorelSpace G
H : μ.ContentRegular
K : Compacts G
⊢ (fun s => ↑(μ.toFun s)) K ≤ μ.measure ↑K
state_after: no goals

tactic: rw [μ.measure_apply (isClosed_closure.measurableSet)]
state_before: G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : R1Space G
inst✝ : BorelSpace G
H : μ.ContentRegular
K : Compacts G
⊢ (fun s => ↑(μ.toFun s)) { carrier := closure ↑K, isCompact' := ⋯ } ≤ μ.measure (closure ↑K)
state_after: G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : R1Space G
inst✝ : BorelSpace G
H : μ.ContentRegular
K : Compacts G
⊢ (fun s => ↑(μ.toFun s)) { carrier := closure ↑K, isCompact' := ⋯ } ≤ μ.outerMeasure (closure ↑K)

tactic: exact μ.le_outerMeasure_compacts _
state_before: G : Type w
inst✝³ : TopologicalSpace G
μ : Content G
inst✝² : MeasurableSpace G
inst✝¹ : R1Space G
inst✝ : BorelSpace G
H : μ.ContentRegular
K : Compacts G
⊢ (fun s => ↑(μ.toFun s)) { carrier := closure ↑K, isCompact' := ⋯ } ≤ μ.outerMeasure (closure ↑K)
state_after: no goals