-- Mathlib/MeasureTheory/Measure/Content.lean
theorem borel_le_caratheodory : S ≤ μ.outerMeasure.caratheodory

Proof state:
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
S : MeasurableSpace G
inst✝ : BorelSpace G
⊢ ∀ t ∈ {s | IsOpen s}, MeasurableSet t

Tactic:
intro U hU

Result:
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
S : MeasurableSpace G
inst✝ : BorelSpace G
U : Set G
hU : U ∈ {s | IsOpen s}
⊢ MeasurableSet U

Proof state:
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
S : MeasurableSpace G
inst✝ : BorelSpace G
U : Set G
hU : U ∈ {s | IsOpen s}
U' : Opens G
this✝² : Nonempty { L // ↑L ⊆ ↑U' ∩ U }
L : Compacts G
L' : Compacts G := { carrier := closure ↑L, isCompact' := ⋯ }
hL : ↑L ⊆ ↑U' ∧ ↑L ⊆ U
hL'U : ↑L' ⊆ U
hL'U' : ↑L' ⊆ ↑U'
this✝¹ : ↑U' \ U ⊆ ↑U' \ ↑L'
this✝ : Nonempty { M // ↑M ⊆ ↑U' \ closure ↑L }
M : Compacts G
hM : ↑M ⊆ ↑U' \ ↑L'
M' : Compacts G := { carrier := closure ↑M, isCompact' := ⋯ }
this : μ L' + μ M' ≤ μ.outerMeasure ↑U'
⊢ μ L' + μ ↑⟨M, hM⟩ ≤ μ.outerMeasure ↑U'

Tactic:
have A : μ M ≤ μ M' := μ.mono _ _ subset_closure

Result:
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
S : MeasurableSpace G
inst✝ : BorelSpace G
U : Set G
hU : U ∈ {s | IsOpen s}
U' : Opens G
this✝² : Nonempty { L // ↑L ⊆ ↑U' ∩ U }
L : Compacts G
L' : Compacts G := { carrier := closure ↑L, isCompact' := ⋯ }
hL : ↑L ⊆ ↑U' ∧ ↑L ⊆ U
hL'U : ↑L' ⊆ U
hL'U' : ↑L' ⊆ ↑U'
this✝¹ : ↑U' \ U ⊆ ↑U' \ ↑L'
this✝ : Nonempty { M // ↑M ⊆ ↑U' \ closure ↑L }
M : Compacts G
hM : ↑M ⊆ ↑U' \ ↑L'
M' : Compacts G := { carrier := closure ↑M, isCompact' := ⋯ }
this : μ L' + μ M' ≤ μ.outerMeasure ↑U'
A : μ M ≤ μ M'
⊢ μ L' + μ ↑⟨M, hM⟩ ≤ μ.outerMeasure ↑U'

Proof state:
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
S : MeasurableSpace G
inst✝ : BorelSpace G
U : Set G
hU : U ∈ {s | IsOpen s}
U' : Opens G
this : Nonempty { L // ↑L ⊆ ↑U' ∩ U }
⊢ ⨆ i, μ ↑i + μ.outerMeasure (↑U' \ U) ≤ μ.outerMeasure ↑U'

Tactic:
refine iSup_le ?_

Result:
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
S : MeasurableSpace G
inst✝ : BorelSpace G
U : Set G
hU : U ∈ {s | IsOpen s}
U' : Opens G
this : Nonempty { L // ↑L ⊆ ↑U' ∩ U }
⊢ ∀ (i : { i // ↑i ⊆ ↑U' ∩ U }), μ ↑i + μ.outerMeasure (↑U' \ U) ≤ μ.outerMeasure ↑U'

Proof state:
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
S : MeasurableSpace G
inst✝ : BorelSpace G
U : Set G
hU : U ∈ {s | IsOpen s}
U' : Opens G
this✝ : Nonempty { L // ↑L ⊆ ↑U' ∩ U }
L : Compacts G
hL : ↑L ⊆ ↑U' ∩ U
L' : Compacts G := { carrier := closure ↑L, isCompact' := ⋯ }
this : μ L' + μ.outerMeasure (↑U' \ U) ≤ μ.outerMeasure ↑U'
A : μ L ≤ μ L'
⊢ μ ↑⟨L, hL⟩ + μ.outerMeasure (↑U' \ U) ≤ μ.outerMeasure ↑U'

Tactic:
exact (add_le_add_right A _).trans this

Result:
no goals

Proof state:
case mk
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
S : MeasurableSpace G
inst✝ : BorelSpace G
U : Set G
hU : U ∈ {s | IsOpen s}
U' : Opens G
this✝ : Nonempty { L // ↑L ⊆ ↑U' ∩ U }
L : Compacts G
L' : Compacts G := { carrier := closure ↑L, isCompact' := ⋯ }
hL : ↑L ⊆ ↑U' ∧ ↑L ⊆ U
hL'U : ↑L' ⊆ U
hL'U' : ↑L' ⊆ ↑U'
this : ↑U' \ U ⊆ ↑U' \ ↑L'
⊢ μ L' + μ.outerMeasure (↑U' \ U) ≤ μ.outerMeasure ↑U'

Tactic:
refine le_trans (add_le_add_left (measure_mono this) _) ?_

Result:
case mk
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
S : MeasurableSpace G
inst✝ : BorelSpace G
U : Set G
hU : U ∈ {s | IsOpen s}
U' : Opens G
this✝ : Nonempty { L // ↑L ⊆ ↑U' ∩ U }
L : Compacts G
L' : Compacts G := { carrier := closure ↑L, isCompact' := ⋯ }
hL : ↑L ⊆ ↑U' ∧ ↑L ⊆ U
hL'U : ↑L' ⊆ U
hL'U' : ↑L' ⊆ ↑U'
this : ↑U' \ U ⊆ ↑U' \ ↑L'
⊢ μ L' + μ.outerMeasure (↑U' \ ↑L') ≤ μ.outerMeasure ↑U'

Proof state:
case mk
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
S : MeasurableSpace G
inst✝ : BorelSpace G
U : Set G
hU : U ∈ {s | IsOpen s}
U' : Opens G
this✝ : Nonempty { L // ↑L ⊆ ↑U' ∩ U }
L : Compacts G
L' : Compacts G := { carrier := closure ↑L, isCompact' := ⋯ }
hL : ↑L ⊆ ↑U' ∧ ↑L ⊆ U
hL'U : ↑L' ⊆ U
hL'U' : ↑L' ⊆ ↑U'
this : ↑U' \ U ⊆ ↑U' \ ↑L'
⊢ μ L' + ⨆ x, μ ↑x ≤ μ.outerMeasure ↑U'

Tactic:
haveI : Nonempty { M : Compacts G // (M : Set G) ⊆ ↑U' \ closure L } := ⟨⟨⊥, empty_subset _⟩⟩

Result:
case mk
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
S : MeasurableSpace G
inst✝ : BorelSpace G
U : Set G
hU : U ∈ {s | IsOpen s}
U' : Opens G
this✝¹ : Nonempty { L // ↑L ⊆ ↑U' ∩ U }
L : Compacts G
L' : Compacts G := { carrier := closure ↑L, isCompact' := ⋯ }
hL : ↑L ⊆ ↑U' ∧ ↑L ⊆ U
hL'U : ↑L' ⊆ U
hL'U' : ↑L' ⊆ ↑U'
this✝ : ↑U' \ U ⊆ ↑U' \ ↑L'
this : Nonempty { M // ↑M ⊆ ↑U' \ closure ↑L }
⊢ μ L' + ⨆ x, μ ↑x ≤ μ.outerMeasure ↑U'

Proof state:
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
S : MeasurableSpace G
inst✝ : BorelSpace G
U : Set G
hU : U ∈ {s | IsOpen s}
U' : Opens G
this✝² : Nonempty { L // ↑L ⊆ ↑U' ∩ U }
L : Compacts G
L' : Compacts G := { carrier := closure ↑L, isCompact' := ⋯ }
hL : ↑L ⊆ ↑U' ∧ ↑L ⊆ U
hL'U : ↑L' ⊆ U
hL'U' : ↑L' ⊆ ↑U'
this✝¹ : ↑U' \ U ⊆ ↑U' \ ↑L'
this✝ : Nonempty { M // ↑M ⊆ ↑U' \ closure ↑L }
M : Compacts G
hM : ↑M ⊆ ↑U' \ ↑L'
M' : Compacts G := { carrier := closure ↑M, isCompact' := ⋯ }
this : μ L' + μ M' ≤ μ.outerMeasure ↑U'
A : μ M ≤ μ M'
⊢ μ L' + μ ↑⟨M, hM⟩ ≤ μ.outerMeasure ↑U'

Tactic:
exact (add_le_add_left A _).trans this

Result:
no goals

Proof state:
case mk.mk
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
S : MeasurableSpace G
inst✝ : BorelSpace G
U : Set G
hU : U ∈ {s | IsOpen s}
U' : Opens G
this✝¹ : Nonempty { L // ↑L ⊆ ↑U' ∩ U }
L : Compacts G
L' : Compacts G := { carrier := closure ↑L, isCompact' := ⋯ }
hL : ↑L ⊆ ↑U' ∧ ↑L ⊆ U
hL'U : ↑L' ⊆ U
hL'U' : ↑L' ⊆ ↑U'
this✝ : ↑U' \ U ⊆ ↑U' \ ↑L'
this : Nonempty { M // ↑M ⊆ ↑U' \ closure ↑L }
M : Compacts G
hM : ↑M ⊆ ↑U' \ ↑L'
⊢ μ L' + μ ↑⟨M, hM⟩ ≤ μ.outerMeasure ↑U'

Tactic:
let M' : Compacts G := ⟨closure M, M.isCompact.closure⟩

Result:
case mk.mk
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
S : MeasurableSpace G
inst✝ : BorelSpace G
U : Set G
hU : U ∈ {s | IsOpen s}
U' : Opens G
this✝¹ : Nonempty { L // ↑L ⊆ ↑U' ∩ U }
L : Compacts G
L' : Compacts G := { carrier := closure ↑L, isCompact' := ⋯ }
hL : ↑L ⊆ ↑U' ∧ ↑L ⊆ U
hL'U : ↑L' ⊆ U
hL'U' : ↑L' ⊆ ↑U'
this✝ : ↑U' \ U ⊆ ↑U' \ ↑L'
this : Nonempty { M // ↑M ⊆ ↑U' \ closure ↑L }
M : Compacts G
hM : ↑M ⊆ ↑U' \ ↑L'
M' : Compacts G := { carrier := closure ↑M, isCompact' := ⋯ }
⊢ μ L' + μ ↑⟨M, hM⟩ ≤ μ.outerMeasure ↑U'

Proof state:
case mk
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
S : MeasurableSpace G
inst✝ : BorelSpace G
U : Set G
hU : U ∈ {s | IsOpen s}
U' : Opens G
this✝ : Nonempty { L // ↑L ⊆ ↑U' ∩ U }
L : Compacts G
L' : Compacts G := { carrier := closure ↑L, isCompact' := ⋯ }
hL : ↑L ⊆ ↑U' ∧ ↑L ⊆ U
hL'U : ↑L' ⊆ U
hL'U' : ↑L' ⊆ ↑U'
this : ↑U' \ U ⊆ ↑U' \ ↑L'
⊢ μ L' + μ.outerMeasure (↑U' \ ↑L') ≤ μ.outerMeasure ↑U'

Tactic:
rw [μ.outerMeasure_of_isOpen (↑U' \ L') (IsOpen.sdiff U'.2 isClosed_closure)]

Result:
case mk
G : Type w
inst✝² : TopologicalSpace G
μ : Content G
inst✝¹ : R1Space G
S : MeasurableSpace G
inst✝ : BorelSpace G
U : Set G
hU : U ∈ {s | IsOpen s}
U' : Opens G
this✝ : Nonempty { L // ↑L ⊆ ↑U' ∩ U }
L : Compacts G
L' : Compacts G := { carrier := closure ↑L, isCompact' := ⋯ }
hL : ↑L ⊆ ↑U' ∧ ↑L ⊆ U
hL'U : ↑L' ⊆ U
hL'U' : ↑L' ⊆ ↑U'
this : ↑U' \ U ⊆ ↑U' \ ↑L'
⊢ μ L' + μ.innerContent { carrier := ↑U' \ ↑L', is_open' := ⋯ } ≤ μ.outerMeasure ↑U'