Theorem: MeasureTheory.levyProkhorovDist_triangle
File: Mathlib/MeasureTheory/Measure/LevyProkhorovMetric.lean

Proof steps:
state_before: ι : Type u_1
Ω : Type u_2
inst✝⁵ : MeasurableSpace Ω
inst✝⁴ : PseudoEMetricSpace Ω
inst✝³ : OpensMeasurableSpace Ω
μ ν κ : Measure Ω
inst✝² : IsFiniteMeasure μ
inst✝¹ : IsFiniteMeasure ν
inst✝ : IsFiniteMeasure κ
⊢ levyProkhorovDist μ κ ≤ levyProkhorovDist μ ν + levyProkhorovDist ν κ
state_after: ι : Type u_1
Ω : Type u_2
inst✝⁵ : MeasurableSpace Ω
inst✝⁴ : PseudoEMetricSpace Ω
inst✝³ : OpensMeasurableSpace Ω
μ ν κ : Measure Ω
inst✝² : IsFiniteMeasure μ
inst✝¹ : IsFiniteMeasure ν
inst✝ : IsFiniteMeasure κ
dμκ_finite : levyProkhorovEDist μ κ ≠ ⊤
⊢ levyProkhorovDist μ κ ≤ levyProkhorovDist μ ν + levyProkhorovDist ν κ
tactic: have dμκ_finite := (levyProkhorovEDist_lt_top μ κ).ne
state_before: ι : Type u_1
Ω : Type u_2
inst✝⁵ : MeasurableSpace Ω
inst✝⁴ : PseudoEMetricSpace Ω
inst✝³ : OpensMeasurableSpace Ω
μ ν κ : Measure Ω
inst✝² : IsFiniteMeasure μ
inst✝¹ : IsFiniteMeasure ν
inst✝ : IsFiniteMeasure κ
dμκ_finite : levyProkhorovEDist μ κ ≠ ⊤
⊢ levyProkhorovDist μ κ ≤ levyProkhorovDist μ ν + levyProkhorovDist ν κ
state_after: ι : Type u_1
Ω : Type u_2
inst✝⁵ : MeasurableSpace Ω
inst✝⁴ : PseudoEMetricSpace Ω
inst✝³ : OpensMeasurableSpace Ω
μ ν κ : Measure Ω
inst✝² : IsFiniteMeasure μ
inst✝¹ : IsFiniteMeasure ν
inst✝ : IsFiniteMeasure κ
dμκ_finite : levyProkhorovEDist μ κ ≠ ⊤
dμν_finite : levyProkhorovEDist μ ν ≠ ⊤
⊢ levyProkhorovDist μ κ ≤ levyProkhorovDist μ ν + levyProkhorovDist ν κ
tactic: have dμν_finite := (levyProkhorovEDist_lt_top μ ν).ne
state_before: ι : Type u_1
Ω : Type u_2
inst✝⁵ : MeasurableSpace Ω
inst✝⁴ : PseudoEMetricSpace Ω
inst✝³ : OpensMeasurableSpace Ω
μ ν κ : Measure Ω
inst✝² : IsFiniteMeasure μ
inst✝¹ : IsFiniteMeasure ν
inst✝ : IsFiniteMeasure κ
dμκ_finite : levyProkhorovEDist μ κ ≠ ⊤
dμν_finite : levyProkhorovEDist μ ν ≠ ⊤
⊢ levyProkhorovDist μ κ ≤ levyProkhorovDist μ ν + levyProkhorovDist ν κ
state_after: ι : Type u_1
Ω : Type u_2
inst✝⁵ : MeasurableSpace Ω
inst✝⁴ : PseudoEMetricSpace Ω
inst✝³ : OpensMeasurableSpace Ω
μ ν κ : Measure Ω
inst✝² : IsFiniteMeasure μ
inst✝¹ : IsFiniteMeasure ν
inst✝ : IsFiniteMeasure κ
dμκ_finite : levyProkhorovEDist μ κ ≠ ⊤
dμν_finite : levyProkhorovEDist μ ν ≠ ⊤
dνκ_finite : levyProkhorovEDist ν κ ≠ ⊤
⊢ levyProkhorovDist μ κ ≤ levyProkhorovDist μ ν + levyProkhorovDist ν κ
tactic: have dνκ_finite := (levyProkhorovEDist_lt_top ν κ).ne
state_before: ι : Type u_1
Ω : Type u_2
inst✝⁵ : MeasurableSpace Ω
inst✝⁴ : PseudoEMetricSpace Ω
inst✝³ : OpensMeasurableSpace Ω
μ ν κ : Measure Ω
inst✝² : IsFiniteMeasure μ
inst✝¹ : IsFiniteMeasure ν
inst✝ : IsFiniteMeasure κ
dμκ_finite : levyProkhorovEDist μ κ ≠ ⊤
dμν_finite : levyProkhorovEDist μ ν ≠ ⊤
dνκ_finite : levyProkhorovEDist ν κ ≠ ⊤
⊢ levyProkhorovDist μ κ ≤ levyProkhorovDist μ ν + levyProkhorovDist ν κ
state_after: case h.e'_4
ι : Type u_1
Ω : Type u_2
inst✝⁵ : MeasurableSpace Ω
inst✝⁴ : PseudoEMetricSpace Ω
inst✝³ : OpensMeasurableSpace Ω
μ ν κ : Measure Ω
inst✝² : IsFiniteMeasure μ
inst✝¹ : IsFiniteMeasure ν
inst✝ : IsFiniteMeasure κ
dμκ_finite : levyProkhorovEDist μ κ ≠ ⊤
dμν_finite : levyProkhorovEDist μ ν ≠ ⊤
dνκ_finite : levyProkhorovEDist ν κ ≠ ⊤
⊢ levyProkhorovDist μ ν + levyProkhorovDist ν κ = (levyProkhorovEDist μ ν + levyProkhorovEDist ν κ).toReal

case convert_1
ι : Type u_1
Ω : Type u_2
inst✝⁵ : MeasurableSpace Ω
inst✝⁴ : PseudoEMetricSpace Ω
inst✝³ : OpensMeasurableSpace Ω
μ ν κ : Measure Ω
inst✝² : IsFiniteMeasure μ
inst✝¹ : IsFiniteMeasure ν
inst✝ : IsFiniteMeasure κ
dμκ_finite : levyProkhorovEDist μ κ ≠ ⊤
dμν_finite : levyProkhorovEDist μ ν ≠ ⊤
dνκ_finite : levyProkhorovEDist ν κ ≠ ⊤
⊢ levyProkhorovEDist μ κ ≠ ⊤

case convert_2
ι : Type u_1
Ω : Type u_2
inst✝⁵ : MeasurableSpace Ω
inst✝⁴ : PseudoEMetricSpace Ω
inst✝³ : OpensMeasurableSpace Ω
μ ν κ : Measure Ω
inst✝² : IsFiniteMeasure μ
inst✝¹ : IsFiniteMeasure ν
inst✝ : IsFiniteMeasure κ
dμκ_finite : levyProkhorovEDist μ κ ≠ ⊤
dμν_finite : levyProkhorovEDist μ ν ≠ ⊤
dνκ_finite : levyProkhorovEDist ν κ ≠ ⊤
⊢ levyProkhorovEDist μ ν + levyProkhorovEDist ν κ ≠ ⊤
tactic: convert (ENNReal.toReal_le_toReal (a := levyProkhorovEDist μ κ)
    (b := levyProkhorovEDist μ ν + levyProkhorovEDist ν κ)
    _ _).mpr <| levyProkhorovEDist_triangle μ ν κ