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

tactic: by_cases easy : P.toMeasure G < ε
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 ε_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 < ε
⊢ {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: 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 < ε
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: 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 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: 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 : 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: convert ENNReal.add_lt_add_right ε_top 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: exact (tsub_add_cancel_of_le easy).symm
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 eventually_of_forall (fun _ ↦ lt_of_lt_of_le easy le_add_self)
state_before: 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
state_after: no goals

tactic: simp [ε_top, measure_lt_top]
state_before: 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
state_after: no goals

tactic: apply lt_of_lt_of_le (ENNReal.sub_lt_self (measure_lt_top _ _).ne _ _)
    <| ProbabilityMeasure.le_liminf_measure_open_of_tendsto tendsto_id G_open
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 < ε
ε_top : ¬ε = ⊤
easy : ε ≤ ↑P G
⊢ ↑P G - ε < liminf (fun Q => ↑Q G) (𝓝 P)
state_after: ι : 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
⊢ ↑P G ≠ 0

ι : 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
⊢ ε ≠ 0

tactic: exact (lt_of_lt_of_le ε_pos easy).ne.symm
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 < ε
ε_top : ¬ε = ⊤
easy : ε ≤ ↑P G
⊢ ↑P G ≠ 0
state_after: no goals

tactic: exact ε_pos.ne.symm
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 < ε
ε_top : ¬ε = ⊤
easy : ε ≤ ↑P G
⊢ ε ≠ 0
state_after: no goals