Theorem: MeasureTheory.ProbabilityMeasure.toMeasure_add_pos_gt_mem_nhds
File: Mathlib/MeasureTheory/Measure/LevyProkhorovMetric.lean

Proof steps:
state_before: ι : Type u_1
Ω : Type u_2
inst✝³ : PseudoMetricSpace Ω
inst✝² : SeparableSpace Ω
inst✝¹ : MeasurableSpace Ω
inst✝ : OpensMeasurableSpace Ω
P : ProbabilityMeasure Ω
G : Set Ω
G_open : IsOpen G
ε : ℝ≥0∞
ε_pos : 0 < ε
⊢ {Q | ↑P G < ↑Q G + ε} ∈ 𝓝 P
state_after: case pos
ι : Type u_1
Ω : Type u_2
inst✝³ : PseudoMetricSpace Ω
inst✝² : SeparableSpace Ω
inst✝¹ : MeasurableSpace Ω
inst✝ : OpensMeasurableSpace Ω
P : ProbabilityMeasure Ω
G : Set Ω
G_open : IsOpen G
ε : ℝ≥0∞
ε_pos : 0 < ε
easy : ↑P G < ε
⊢ {Q | ↑P G < ↑Q G + ε} ∈ 𝓝 P

case neg
ι : Type u_1
Ω : Type u_2
inst✝³ : PseudoMetricSpace Ω
inst✝² : SeparableSpace Ω
inst✝¹ : MeasurableSpace Ω
inst✝ : OpensMeasurableSpace Ω
P : ProbabilityMeasure Ω
G : Set Ω
G_open : IsOpen G
ε : ℝ≥0∞
ε_pos : 0 < ε
easy : ¬↑P G < ε
⊢ {Q | ↑P G < ↑Q G + ε} ∈ 𝓝 P
tactic: by_cases easy : P.toMeasure G < ε
state_before: case neg
ι : Type u_1
Ω : Type u_2
inst✝³ : PseudoMetricSpace Ω
inst✝² : SeparableSpace Ω
inst✝¹ : MeasurableSpace Ω
inst✝ : OpensMeasurableSpace Ω
P : ProbabilityMeasure Ω
G : Set Ω
G_open : IsOpen G
ε : ℝ≥0∞
ε_pos : 0 < ε
easy : ¬↑P G < ε
⊢ {Q | ↑P G < ↑Q G + ε} ∈ 𝓝 P
state_after: case pos
ι : Type u_1
Ω : Type u_2
inst✝³ : PseudoMetricSpace Ω
inst✝² : SeparableSpace Ω
inst✝¹ : MeasurableSpace Ω
inst✝ : OpensMeasurableSpace Ω
P : ProbabilityMeasure Ω
G : Set Ω
G_open : IsOpen G
ε : ℝ≥0∞
ε_pos : 0 < ε
easy : ¬↑P G < ε
ε_top : ε = ⊤
⊢ {Q | ↑P G < ↑Q G + ε} ∈ 𝓝 P

case neg
ι : Type u_1
Ω : Type u_2
inst✝³ : PseudoMetricSpace Ω
inst✝² : SeparableSpace Ω
inst✝¹ : MeasurableSpace Ω
inst✝ : OpensMeasurableSpace Ω
P : ProbabilityMeasure Ω
G : Set Ω
G_open : IsOpen G
ε : ℝ≥0∞
ε_pos : 0 < ε
easy : ¬↑P G < ε
ε_top : ¬ε = ⊤
⊢ {Q | ↑P G < ↑Q G + ε} ∈ 𝓝 P
tactic: by_cases ε_top : ε = ∞
state_before: case neg
ι : Type u_1
Ω : Type u_2
inst✝³ : PseudoMetricSpace Ω
inst✝² : SeparableSpace Ω
inst✝¹ : MeasurableSpace Ω
inst✝ : OpensMeasurableSpace Ω
P : ProbabilityMeasure Ω
G : Set Ω
G_open : IsOpen G
ε : ℝ≥0∞
ε_pos : 0 < ε
easy : ¬↑P G < ε
ε_top : ¬ε = ⊤
⊢ {Q | ↑P G < ↑Q G + ε} ∈ 𝓝 P
state_after: case neg
ι : Type u_1
Ω : Type u_2
inst✝³ : PseudoMetricSpace Ω
inst✝² : SeparableSpace Ω
inst✝¹ : MeasurableSpace Ω
inst✝ : OpensMeasurableSpace Ω
P : ProbabilityMeasure Ω
G : Set Ω
G_open : IsOpen G
ε : ℝ≥0∞
ε_pos : 0 < ε
ε_top : ¬ε = ⊤
easy : ε ≤ ↑P G
⊢ {Q | ↑P G < ↑Q G + ε} ∈ 𝓝 P
tactic: simp only [not_lt] at easy
state_before: case neg
ι : Type u_1
Ω : Type u_2
inst✝³ : PseudoMetricSpace Ω
inst✝² : SeparableSpace Ω
inst✝¹ : MeasurableSpace Ω
inst✝ : OpensMeasurableSpace Ω
P : ProbabilityMeasure Ω
G : Set Ω
G_open : IsOpen G
ε : ℝ≥0∞
ε_pos : 0 < ε
ε_top : ¬ε = ⊤
easy : ε ≤ ↑P G
aux : ↑P G - ε < liminf (fun Q => ↑Q G) (𝓝 P)
⊢ {Q | ↑P G < ↑Q G + ε} ∈ 𝓝 P
state_after: case h
ι : Type u_1
Ω : Type u_2
inst✝³ : PseudoMetricSpace Ω
inst✝² : SeparableSpace Ω
inst✝¹ : MeasurableSpace Ω
inst✝ : OpensMeasurableSpace Ω
P : ProbabilityMeasure Ω
G : Set Ω
G_open : IsOpen G
ε : ℝ≥0∞
ε_pos : 0 < ε
ε_top : ¬ε = ⊤
easy : ε ≤ ↑P G
aux : ↑P G - ε < liminf (fun Q => ↑Q G) (𝓝 P)
Q : ProbabilityMeasure Ω
hQ : Q ∈ (fun Q => ↑Q G) ⁻¹' {x | ↑P G - ε < x}
⊢ ↑P G < ↑Q G + ε
tactic: filter_upwards [gt_mem_sets_of_limsInf_gt (α := ℝ≥0∞) isBounded_ge_of_bot
      (show P.toMeasure G - ε < limsInf ((𝓝 P).map (fun Q ↦ Q.toMeasure G)) from aux)] with Q hQ
state_before: case h
ι : Type u_1
Ω : Type u_2
inst✝³ : PseudoMetricSpace Ω
inst✝² : SeparableSpace Ω
inst✝¹ : MeasurableSpace Ω
inst✝ : OpensMeasurableSpace Ω
P : ProbabilityMeasure Ω
G : Set Ω
G_open : IsOpen G
ε : ℝ≥0∞
ε_pos : 0 < ε
ε_top : ¬ε = ⊤
easy : ε ≤ ↑P G
aux : ↑P G - ε < liminf (fun Q => ↑Q G) (𝓝 P)
Q : ProbabilityMeasure Ω
hQ : Q ∈ (fun Q => ↑Q G) ⁻¹' {x | ↑P G - ε < x}
⊢ ↑P G < ↑Q G + ε
state_after: case h
ι : Type u_1
Ω : Type u_2
inst✝³ : PseudoMetricSpace Ω
inst✝² : SeparableSpace Ω
inst✝¹ : MeasurableSpace Ω
inst✝ : OpensMeasurableSpace Ω
P : ProbabilityMeasure Ω
G : Set Ω
G_open : IsOpen G
ε : ℝ≥0∞
ε_pos : 0 < ε
ε_top : ¬ε = ⊤
easy : ε ≤ ↑P G
aux : ↑P G - ε < liminf (fun Q => ↑Q G) (𝓝 P)
Q : ProbabilityMeasure Ω
hQ : ↑P G - ε < ↑Q G
⊢ ↑P G < ↑Q G + ε
tactic: simp only [preimage_setOf_eq, mem_setOf_eq] at hQ
state_before: case h
ι : Type u_1
Ω : Type u_2
inst✝³ : PseudoMetricSpace Ω
inst✝² : SeparableSpace Ω
inst✝¹ : MeasurableSpace Ω
inst✝ : OpensMeasurableSpace Ω
P : ProbabilityMeasure Ω
G : Set Ω
G_open : IsOpen G
ε : ℝ≥0∞
ε_pos : 0 < ε
ε_top : ¬ε = ⊤
easy : ε ≤ ↑P G
aux : ↑P G - ε < liminf (fun Q => ↑Q G) (𝓝 P)
Q : ProbabilityMeasure Ω
hQ : ↑P G - ε < ↑Q G
⊢ ↑P G < ↑Q G + ε
state_after: case h.e'_3
ι : Type u_1
Ω : Type u_2
inst✝³ : PseudoMetricSpace Ω
inst✝² : SeparableSpace Ω
inst✝¹ : MeasurableSpace Ω
inst✝ : OpensMeasurableSpace Ω
P : ProbabilityMeasure Ω
G : Set Ω
G_open : IsOpen G
ε : ℝ≥0∞
ε_pos : 0 < ε
ε_top : ¬ε = ⊤
easy : ε ≤ ↑P G
aux : ↑P G - ε < liminf (fun Q => ↑Q G) (𝓝 P)
Q : ProbabilityMeasure Ω
hQ : ↑P G - ε < ↑Q G
⊢ ↑P G = ↑P G - ε + ε
tactic: convert ENNReal.add_lt_add_right ε_top hQ
state_before: case h.e'_3
ι : Type u_1
Ω : Type u_2
inst✝³ : PseudoMetricSpace Ω
inst✝² : SeparableSpace Ω
inst✝¹ : MeasurableSpace Ω
inst✝ : OpensMeasurableSpace Ω
P : ProbabilityMeasure Ω
G : Set Ω
G_open : IsOpen G
ε : ℝ≥0∞
ε_pos : 0 < ε
ε_top : ¬ε = ⊤
easy : ε ≤ ↑P G
aux : ↑P G - ε < liminf (fun Q => ↑Q G) (𝓝 P)
Q : ProbabilityMeasure Ω
hQ : ↑P G - ε < ↑Q G
⊢ ↑P G = ↑P G - ε + ε
state_after: no goals
tactic: exact (tsub_add_cancel_of_le easy).symm