Documentation

TestingLowerBounds.FDiv.Basic

f-Divergences #

Main definitions #

Main statements #

Notation #

Implementation details #

The most natural type for f is ℝ≥0∞ → EReal since we apply it to an ℝ≥0∞-valued RN derivative, and its value can be in general both positive or negative, and potentially +∞. However, we use ℝ → ℝ instead, for the following reasons:

Most results will require these conditions on f: (hf_cvx : ConvexOn ℝ (Ici 0) f) (hf_cont : ContinuousOn f (Ici 0)) (hf_one : f 1 = 0)

References #

Tags #

Foobars, barfoos

noncomputable def ProbabilityTheory.fDiv {α : Type u_1} {mα : MeasurableSpace α} (f : ) (μ : MeasureTheory.Measure α) (ν : MeasureTheory.Measure α) :

f-Divergence of two measures.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    theorem ProbabilityTheory.fDiv_of_not_integrable {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } (hf : ¬MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν) :
    theorem ProbabilityTheory.fDiv_of_integrable {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } (hf : MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν) :
    ProbabilityTheory.fDiv f μ ν = (∫ (x : α), f (μ.rnDeriv ν x).toRealν) + derivAtTop f * ((μ.singularPart ν) Set.univ)
    @[simp]
    theorem ProbabilityTheory.fDiv_zero {α : Type u_1} {mα : MeasurableSpace α} (μ : MeasureTheory.Measure α) (ν : MeasureTheory.Measure α) :
    ProbabilityTheory.fDiv (fun (x : ) => 0) μ ν = 0
    @[simp]
    theorem ProbabilityTheory.fDiv_zero_measure_left {α : Type u_1} {mα : MeasurableSpace α} {f : } (ν : MeasureTheory.Measure α) [MeasureTheory.IsFiniteMeasure ν] :
    ProbabilityTheory.fDiv f 0 ν = (f 0) * (ν Set.univ)
    @[simp]
    theorem ProbabilityTheory.fDiv_zero_measure_right {α : Type u_1} {mα : MeasurableSpace α} {f : } (μ : MeasureTheory.Measure α) :
    ProbabilityTheory.fDiv f μ 0 = derivAtTop f * (μ Set.univ)
    @[simp]
    theorem ProbabilityTheory.fDiv_const {α : Type u_1} {mα : MeasurableSpace α} (c : ) (μ : MeasureTheory.Measure α) (ν : MeasureTheory.Measure α) [MeasureTheory.IsFiniteMeasure ν] :
    ProbabilityTheory.fDiv (fun (x : ) => c) μ ν = (ν Set.univ) * c
    theorem ProbabilityTheory.fDiv_const' {α : Type u_1} {mα : MeasurableSpace α} {c : } (hc : 0 c) (μ : MeasureTheory.Measure α) (ν : MeasureTheory.Measure α) :
    ProbabilityTheory.fDiv (fun (x : ) => c) μ ν = (ν Set.univ) * c
    theorem ProbabilityTheory.fDiv_self {α : Type u_1} {mα : MeasurableSpace α} {f : } (hf_one : f 1 = 0) (μ : MeasureTheory.Measure α) [MeasureTheory.SigmaFinite μ] :
    @[simp]
    theorem ProbabilityTheory.fDiv_id' {α : Type u_1} {mα : MeasurableSpace α} (μ : MeasureTheory.Measure α) (ν : MeasureTheory.Measure α) [MeasureTheory.SigmaFinite μ] [MeasureTheory.SigmaFinite ν] :
    ProbabilityTheory.fDiv (fun (x : ) => x) μ ν = (μ Set.univ)
    theorem ProbabilityTheory.fDiv_congr' {α : Type u_1} {mα : MeasurableSpace α} {f : } {g : } (μ : MeasureTheory.Measure α) (ν : MeasureTheory.Measure α) (hfg : ∀ᵐ (x : ) ∂MeasureTheory.Measure.map (fun (x : α) => (μ.rnDeriv ν x).toReal) ν, f x = g x) (hfg' : f =ᶠ[Filter.atTop] g) :
    theorem ProbabilityTheory.fDiv_congr {α : Type u_1} {mα : MeasurableSpace α} {f : } {g : } (μ : MeasureTheory.Measure α) (ν : MeasureTheory.Measure α) (h : x0, f x = g x) :
    theorem ProbabilityTheory.fDiv_congr_measure {α : Type u_1} {β : Type u_2} {mα : MeasurableSpace α} {mβ : MeasurableSpace β} {f : } {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {μ' : MeasureTheory.Measure β} {ν' : MeasureTheory.Measure β} (h_int : MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν MeasureTheory.Integrable (fun (x : β) => f (μ'.rnDeriv ν' x).toReal) ν') (h_eq : MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) νMeasureTheory.Integrable (fun (x : β) => f (μ'.rnDeriv ν' x).toReal) ν'∫ (x : α), f (μ.rnDeriv ν x).toRealν = ∫ (x : β), f (μ'.rnDeriv ν' x).toRealν') (h_sing : (μ.singularPart ν) Set.univ = (μ'.singularPart ν') Set.univ) :
    theorem ProbabilityTheory.fDiv_eq_zero_of_forall_nonneg {α : Type u_1} {mα : MeasurableSpace α} {f : } (μ : MeasureTheory.Measure α) (ν : MeasureTheory.Measure α) (hf : x0, f x = 0) :
    theorem ProbabilityTheory.fDiv_mul {α : Type u_1} {mα : MeasurableSpace α} {f : } {c : } (hc : 0 c) (hf_cvx : ConvexOn (Set.Ici 0) f) (μ : MeasureTheory.Measure α) (ν : MeasureTheory.Measure α) :
    ProbabilityTheory.fDiv (fun (x : ) => c * f x) μ ν = c * ProbabilityTheory.fDiv f μ ν
    theorem ProbabilityTheory.fDiv_mul_of_ne_top {α : Type u_1} {mα : MeasurableSpace α} {f : } (c : ) (hf_cvx : ConvexOn (Set.Ici 0) f) (h_top : derivAtTop f ) (μ : MeasureTheory.Measure α) (ν : MeasureTheory.Measure α) [MeasureTheory.IsFiniteMeasure μ] (h_int : MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν) :
    ProbabilityTheory.fDiv (fun (x : ) => c * f x) μ ν = c * ProbabilityTheory.fDiv f μ ν
    theorem ProbabilityTheory.fDiv_add {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } {g : } [MeasureTheory.IsFiniteMeasure μ] (hf : MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν) (hg : MeasureTheory.Integrable (fun (x : α) => g (μ.rnDeriv ν x).toReal) ν) (hf_cvx : ConvexOn (Set.Ici 0) f) (hg_cvx : ConvexOn (Set.Ici 0) g) :
    ProbabilityTheory.fDiv (fun (x : ) => f x + g x) μ ν = ProbabilityTheory.fDiv f μ ν + ProbabilityTheory.fDiv g μ ν
    theorem ProbabilityTheory.fDiv_add_const {α : Type u_1} {mα : MeasurableSpace α} {f : } (μ : MeasureTheory.Measure α) (ν : MeasureTheory.Measure α) [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.IsFiniteMeasure ν] (hf_cvx : ConvexOn (Set.Ici 0) f) (c : ) :
    ProbabilityTheory.fDiv (fun (x : ) => f x + c) μ ν = ProbabilityTheory.fDiv f μ ν + c * (ν Set.univ)
    theorem ProbabilityTheory.fDiv_sub_const {α : Type u_1} {mα : MeasurableSpace α} {f : } (μ : MeasureTheory.Measure α) (ν : MeasureTheory.Measure α) [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.IsFiniteMeasure ν] (hf_cvx : ConvexOn (Set.Ici 0) f) (c : ) :
    ProbabilityTheory.fDiv (fun (x : ) => f x - c) μ ν = ProbabilityTheory.fDiv f μ ν - c * (ν Set.univ)
    theorem ProbabilityTheory.fDiv_linear {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {c : } [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.IsFiniteMeasure ν] :
    ProbabilityTheory.fDiv (fun (x : ) => c * (x - 1)) μ ν = c * ((μ Set.univ).toReal - (ν Set.univ).toReal)
    theorem ProbabilityTheory.fDiv_add_linear' {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } {c : } [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.IsFiniteMeasure ν] (hf_cvx : ConvexOn (Set.Ici 0) f) :
    ProbabilityTheory.fDiv (fun (x : ) => f x + c * (x - 1)) μ ν = ProbabilityTheory.fDiv f μ ν + c * ((μ Set.univ).toReal - (ν Set.univ).toReal)
    theorem ProbabilityTheory.fDiv_add_linear {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } {c : } [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.IsFiniteMeasure ν] (hf_cvx : ConvexOn (Set.Ici 0) f) (h_eq : μ Set.univ = ν Set.univ) :
    ProbabilityTheory.fDiv (fun (x : ) => f x + c * (x - 1)) μ ν = ProbabilityTheory.fDiv f μ ν
    theorem ProbabilityTheory.fDiv_eq_fDiv_centeredFunction {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.IsFiniteMeasure ν] (hf_cvx : ConvexOn (Set.Ici 0) f) :
    ProbabilityTheory.fDiv f μ ν = ProbabilityTheory.fDiv (fun (x : ) => f x - f 1 - rightDeriv f 1 * (x - 1)) μ ν + (f 1) * (ν Set.univ) + (rightDeriv f 1) * ((μ Set.univ).toReal - (ν Set.univ).toReal)
    theorem ProbabilityTheory.fDiv_of_mutuallySingular {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } [MeasureTheory.SigmaFinite μ] [MeasureTheory.IsFiniteMeasure ν] (h : μ.MutuallySingular ν) :
    ProbabilityTheory.fDiv f μ ν = (f 0) * (ν Set.univ) + derivAtTop f * (μ Set.univ)
    theorem ProbabilityTheory.fDiv_of_absolutelyContinuous {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } [Decidable (MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν)] (h : μ.AbsolutelyContinuous ν) :
    ProbabilityTheory.fDiv f μ ν = if MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν then (∫ (x : α), f (μ.rnDeriv ν x).toRealν) else
    theorem ProbabilityTheory.fDiv_eq_add_withDensity_singularPart {α : Type u_1} {mα : MeasurableSpace α} {f : } (μ : MeasureTheory.Measure α) (ν : MeasureTheory.Measure α) [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.IsFiniteMeasure ν] (hf_cvx : ConvexOn (Set.Ici 0) f) :
    ProbabilityTheory.fDiv f μ ν = ProbabilityTheory.fDiv f (ν.withDensity (μ.rnDeriv ν)) ν + ProbabilityTheory.fDiv f (μ.singularPart ν) ν - (f 0) * (ν Set.univ)
    theorem ProbabilityTheory.fDiv_eq_add_withDensity_singularPart' {α : Type u_1} {mα : MeasurableSpace α} {f : } (μ : MeasureTheory.Measure α) (ν : MeasureTheory.Measure α) [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.IsFiniteMeasure ν] (hf_cvx : ConvexOn (Set.Ici 0) f) :
    ProbabilityTheory.fDiv f μ ν = ProbabilityTheory.fDiv (fun (x : ) => f x - f 0) (ν.withDensity (μ.rnDeriv ν)) ν + ProbabilityTheory.fDiv f (μ.singularPart ν) ν
    theorem ProbabilityTheory.fDiv_eq_add_withDensity_singularPart'' {α : Type u_1} {mα : MeasurableSpace α} {f : } (μ : MeasureTheory.Measure α) (ν : MeasureTheory.Measure α) [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.IsFiniteMeasure ν] (hf_cvx : ConvexOn (Set.Ici 0) f) :
    ProbabilityTheory.fDiv f μ ν = ProbabilityTheory.fDiv f (ν.withDensity (μ.rnDeriv ν)) ν + ProbabilityTheory.fDiv (fun (x : ) => f x - f 0) (μ.singularPart ν) ν
    theorem ProbabilityTheory.fDiv_eq_add_withDensity_derivAtTop {α : Type u_1} {mα : MeasurableSpace α} {f : } (μ : MeasureTheory.Measure α) (ν : MeasureTheory.Measure α) [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.IsFiniteMeasure ν] (hf_cvx : ConvexOn (Set.Ici 0) f) :
    ProbabilityTheory.fDiv f μ ν = ProbabilityTheory.fDiv f (ν.withDensity (μ.rnDeriv ν)) ν + derivAtTop f * ((μ.singularPart ν) Set.univ)
    theorem ProbabilityTheory.fDiv_absolutelyContinuous_add_mutuallySingular {α : Type u_1} {mα : MeasurableSpace α} {f : } {μ₁ : MeasureTheory.Measure α} {μ₂ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} [MeasureTheory.IsFiniteMeasure μ₁] [MeasureTheory.IsFiniteMeasure μ₂] [MeasureTheory.IsFiniteMeasure ν] (h₁ : μ₁.AbsolutelyContinuous ν) (h₂ : μ₂.MutuallySingular ν) (hf_cvx : ConvexOn (Set.Ici 0) f) :
    ProbabilityTheory.fDiv f (μ₁ + μ₂) ν = ProbabilityTheory.fDiv f μ₁ ν + derivAtTop f * (μ₂ Set.univ)
    theorem ProbabilityTheory.fDiv_add_measure_le_of_ac {α : Type u_1} {mα : MeasurableSpace α} {f : } {μ₁ : MeasureTheory.Measure α} {μ₂ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} [MeasureTheory.IsFiniteMeasure μ₁] [MeasureTheory.IsFiniteMeasure μ₂] [MeasureTheory.IsFiniteMeasure ν] (h₁ : μ₁.AbsolutelyContinuous ν) (h₂ : μ₂.AbsolutelyContinuous ν) (hf : MeasureTheory.StronglyMeasurable f) (hf_cvx : ConvexOn (Set.Ici 0) f) :
    ProbabilityTheory.fDiv f (μ₁ + μ₂) ν ProbabilityTheory.fDiv f μ₁ ν + derivAtTop f * (μ₂ Set.univ)

    Auxiliary lemma for fDiv_add_measure_le.

    theorem ProbabilityTheory.fDiv_le_zero_add_top_of_ac {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.IsFiniteMeasure ν] (hμν : μ.AbsolutelyContinuous ν) (hf : MeasureTheory.StronglyMeasurable f) (hf_cvx : ConvexOn (Set.Ici 0) f) :
    ProbabilityTheory.fDiv f μ ν (f 0) * (ν Set.univ) + derivAtTop f * (μ Set.univ)

    Auxiliary lemma for fDiv_le_zero_add_top.

    theorem ProbabilityTheory.fDiv_lt_top_of_ac {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } (h : μ.AbsolutelyContinuous ν) (h_int : MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν) :
    theorem ProbabilityTheory.fDiv_of_not_ac {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } [MeasureTheory.SigmaFinite μ] [MeasureTheory.SigmaFinite ν] (hf : derivAtTop f = ) (hμν : ¬μ.AbsolutelyContinuous ν) :
    theorem ProbabilityTheory.fDiv_lt_top_iff_ac {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } [MeasureTheory.SigmaFinite μ] [MeasureTheory.SigmaFinite ν] (hf : derivAtTop f = ) (h_int : MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν) :
    ProbabilityTheory.fDiv f μ ν < μ.AbsolutelyContinuous ν
    theorem ProbabilityTheory.fDiv_ne_top_iff_ac {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } [MeasureTheory.SigmaFinite μ] [MeasureTheory.SigmaFinite ν] (hf : derivAtTop f = ) (h_int : MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν) :
    ProbabilityTheory.fDiv f μ ν μ.AbsolutelyContinuous ν
    theorem ProbabilityTheory.fDiv_eq_top_iff_not_ac {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } [MeasureTheory.SigmaFinite μ] [MeasureTheory.SigmaFinite ν] (hf : derivAtTop f = ) (h_int : MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν) :
    ProbabilityTheory.fDiv f μ ν = ¬μ.AbsolutelyContinuous ν
    theorem ProbabilityTheory.fDiv_of_derivAtTop_eq_top {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } [MeasureTheory.SigmaFinite μ] [MeasureTheory.SigmaFinite ν] (hf : derivAtTop f = ) [Decidable (MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν μ.AbsolutelyContinuous ν)] :
    ProbabilityTheory.fDiv f μ ν = if MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν μ.AbsolutelyContinuous ν then (∫ (x : α), f (μ.rnDeriv ν x).toRealν) else
    theorem ProbabilityTheory.fDiv_lt_top_of_derivAtTop_ne_top {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } [MeasureTheory.IsFiniteMeasure μ] (hf : derivAtTop f ) (h_int : MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν) :
    theorem ProbabilityTheory.fDiv_eq_top_iff {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.SigmaFinite ν] :
    ProbabilityTheory.fDiv f μ ν = ¬MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν derivAtTop f = ¬μ.AbsolutelyContinuous ν
    theorem ProbabilityTheory.fDiv_eq_top_iff' {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.IsFiniteMeasure ν] (hf : MeasureTheory.StronglyMeasurable f) (h_cvx : ConvexOn (Set.Ici 0) f) :
    ProbabilityTheory.fDiv f μ ν = derivAtTop f = (¬MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν ¬μ.AbsolutelyContinuous ν)
    theorem ProbabilityTheory.fDiv_ne_top_iff {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.SigmaFinite ν] :
    ProbabilityTheory.fDiv f μ ν MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν (derivAtTop f = μ.AbsolutelyContinuous ν)
    theorem ProbabilityTheory.fDiv_ne_top_iff' {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.IsFiniteMeasure ν] (hf : MeasureTheory.StronglyMeasurable f) (h_cvx : ConvexOn (Set.Ici 0) f) :
    ProbabilityTheory.fDiv f μ ν derivAtTop f = MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν μ.AbsolutelyContinuous ν
    theorem ProbabilityTheory.integrable_of_fDiv_ne_top {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } (h : ProbabilityTheory.fDiv f μ ν ) :
    MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν
    theorem ProbabilityTheory.fDiv_of_ne_top {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } (h : ProbabilityTheory.fDiv f μ ν ) :
    ProbabilityTheory.fDiv f μ ν = (∫ (x : α), f (μ.rnDeriv ν x).toRealν) + derivAtTop f * ((μ.singularPart ν) Set.univ)
    theorem ProbabilityTheory.toReal_fDiv_of_integrable {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } [MeasureTheory.IsFiniteMeasure μ] (hf_cvx : ConvexOn (Set.Ici 0) f) (hf_int : MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν) (h_deriv : derivAtTop f = μ.AbsolutelyContinuous ν) :
    (ProbabilityTheory.fDiv f μ ν).toReal = ∫ (y : α), f (μ.rnDeriv ν y).toRealν + (derivAtTop f * ((μ.singularPart ν) Set.univ)).toReal
    theorem ProbabilityTheory.le_fDiv_of_ac {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.IsProbabilityMeasure ν] (hf_cvx : ConvexOn (Set.Ici 0) f) (hf_cont : ContinuousOn f (Set.Ici 0)) (hμν : μ.AbsolutelyContinuous ν) :
    (f (μ Set.univ).toReal) ProbabilityTheory.fDiv f μ ν
    theorem ProbabilityTheory.f_measure_univ_le_add {α : Type u_1} {mα : MeasurableSpace α} {f : } (μ : MeasureTheory.Measure α) (ν : MeasureTheory.Measure α) [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.IsProbabilityMeasure ν] (hf_cvx : ConvexOn (Set.Ici 0) f) :
    (f (μ Set.univ).toReal) (f ((ν.withDensity (μ.rnDeriv ν)) Set.univ).toReal) + derivAtTop f * ((μ.singularPart ν) Set.univ)
    theorem ProbabilityTheory.le_fDiv {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.IsProbabilityMeasure ν] (hf_cvx : ConvexOn (Set.Ici 0) f) (hf_cont : ContinuousOn f (Set.Ici 0)) :
    (f (μ Set.univ).toReal) ProbabilityTheory.fDiv f μ ν
    theorem ProbabilityTheory.fDiv_mono'' {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } {g : } (hf_int : MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν) (hfg : f ≤ᵐ[MeasureTheory.Measure.map (fun (x : α) => (μ.rnDeriv ν x).toReal) ν] g) (hfg' : derivAtTop f derivAtTop g) :
    theorem ProbabilityTheory.fDiv_mono' {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } {g : } (hf_int : MeasureTheory.Integrable (fun (x : α) => f (μ.rnDeriv ν x).toReal) ν) (hfg : f g) (hfg' : derivAtTop f derivAtTop g) :
    theorem ProbabilityTheory.fDiv_nonneg_of_nonneg {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } (hf : 0 f) (hf' : 0 derivAtTop f) :
    theorem ProbabilityTheory.fDiv_eq_zero_iff {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.IsFiniteMeasure ν] (h_mass : μ Set.univ = ν Set.univ) (hf_deriv : derivAtTop f = ) (hf_cvx : StrictConvexOn (Set.Ici 0) f) (hf_cont : ContinuousOn f (Set.Ici 0)) (hf_one : f 1 = 0) :
    ProbabilityTheory.fDiv f μ ν = 0 μ = ν
    theorem ProbabilityTheory.fDiv_eq_zero_iff' {α : Type u_1} {mα : MeasurableSpace α} {μ : MeasureTheory.Measure α} {ν : MeasureTheory.Measure α} {f : } [MeasureTheory.IsProbabilityMeasure μ] [MeasureTheory.IsProbabilityMeasure ν] (hf_deriv : derivAtTop f = ) (hf_cvx : StrictConvexOn (Set.Ici 0) f) (hf_cont : ContinuousOn f (Set.Ici 0)) (hf_one : f 1 = 0) :
    ProbabilityTheory.fDiv f μ ν = 0 μ = ν
    theorem ProbabilityTheory.fDiv_restrict_of_integrable {α : Type u_1} {mα : MeasurableSpace α} {f : } (μ : MeasureTheory.Measure α) (ν : MeasureTheory.Measure α) [MeasureTheory.IsFiniteMeasure μ] [MeasureTheory.IsFiniteMeasure ν] {s : Set α} (hs : MeasurableSet s) (h_int : MeasureTheory.IntegrableOn (fun (x : α) => f (μ.rnDeriv ν x).toReal) s ν) :
    ProbabilityTheory.fDiv f (μ.restrict s) ν = (∫ (x : α) in s, f (μ.rnDeriv ν x).toRealν) + (f 0) * (ν s) + derivAtTop f * ((μ.singularPart ν) s)