Documentation

VCVio.EvalDist.Defs.Measure.Core

Measure-valued evaluation and its composition laws #

EvalDistSemantics denotes successful outputs by subprobability measures. LawfulPureEvalDistSemantics supplies the Dirac equation independently of bind, while LawfulEvalDistSemantics adds the measurable-bind equation. Measurable spaces and continuations are explicit; discrete source spaces discharge continuation measurability without constraining the result space.

class EvalDistSemantics (m : Type u β†’ Type v) :
Type (max (u + 1) v)

A measure-valued subprobability semantics for a type constructor.

Instances
    @[reducible, inline]
    noncomputable def evalDist {m : Type u β†’ Type v} [EvalDistSemantics m] {Ξ± : Type u} [MeasurableSpace Ξ±] (mx : m Ξ±) :

    The measure of successful outputs produced by mx.

    Instances For

      Evaluation-measure notation.

      Instances For
        theorem evalDist_ite {m : Type u β†’ Type v} [EvalDistSemantics m] {Ξ± : Type u} [MeasurableSpace Ξ±] (p : Prop) [Decidable p] (mx my : m Ξ±) :

        Denotation commutes with conditional choice of a computation.

        theorem evalDist_dite {m : Type u β†’ Type v} [EvalDistSemantics m] {Ξ± : Type u} [MeasurableSpace Ξ±] (p : Prop) [Decidable p] (mx : p β†’ m Ξ±) (my : Β¬p β†’ m Ξ±) :
        π’Ÿ[if h : p then mx h else my h] = if h : p then π’Ÿ[mx h] else π’Ÿ[my h]

        Denotation commutes with dependent conditional choice of a computation.

        @[simp]
        theorem evalDist_ite_apply {m : Type u β†’ Type v} [EvalDistSemantics m] {Ξ± : Type u} [MeasurableSpace Ξ±] (p : Prop) [Decidable p] (mx my : m Ξ±) (s : Set Ξ±) :

        The mass of an event commutes with conditional choice of a computation.

        @[simp]
        theorem evalDist_dite_apply {m : Type u β†’ Type v} [EvalDistSemantics m] {Ξ± : Type u} [MeasurableSpace Ξ±] (p : Prop) [Decidable p] (mx : p β†’ m Ξ±) (my : Β¬p β†’ m Ξ±) (s : Set Ξ±) :
        π’Ÿ[if h : p then mx h else my h] s = if h : p then π’Ÿ[mx h] s else π’Ÿ[my h] s

        Event mass commutes with dependent conditional choice of a computation.

        theorem evalDist_apply_univ_le_one {m : Type u β†’ Type v} [EvalDistSemantics m] {Ξ± : Type u} [MeasurableSpace Ξ±] (mx : m Ξ±) :

        Every computation denotation is a subprobability measure.

        @[simp]
        theorem evalDist_apply_le_one {m : Type u β†’ Type v} [EvalDistSemantics m] {Ξ± : Type u} [MeasurableSpace Ξ±] (mx : m Ξ±) (s : Set Ξ±) :

        No event of a computation has mass above one.

        A measure-valued semantics sends pure to a Dirac measure. This law is separate from the bind law because a semantics can preserve pure even when continuous effects prevent a global measurability proof for arbitrary bind continuations.

        Instances

          A measure-valued semantics also respects measurable bind in the Giry monad.

          Instances
            theorem evalDist_bind {m : Type u β†’ Type v} [Monad m] [EvalDistSemantics m] [LawfulEvalDistSemantics m] {Ξ± Ξ² : Type u} [MeasurableSpace Ξ±] [MeasurableSpace Ξ²] (mx : m Ξ±) (f : Ξ± β†’ m Ξ²) (hf : Measurable fun (x : Ξ±) => π’Ÿ[f x]) :
            π’Ÿ[mx >>= f] = π’Ÿ[mx].bind fun (x : Ξ±) => π’Ÿ[f x]
            theorem evalDist_bind_of_discrete {m : Type u β†’ Type v} [Monad m] [EvalDistSemantics m] [LawfulEvalDistSemantics m] {Ξ± Ξ² : Type u} [MeasurableSpace Ξ±] [DiscreteMeasurableSpace Ξ±] [MeasurableSpace Ξ²] (mx : m Ξ±) (f : Ξ± β†’ m Ξ²) :
            π’Ÿ[mx >>= f] = π’Ÿ[mx].bind fun (x : Ξ±) => π’Ÿ[f x]

            On a discrete source type, every measure-valued continuation is measurable.

            theorem evalDist_bind_congr_ae {m : Type u β†’ Type v} [Monad m] [EvalDistSemantics m] [LawfulEvalDistSemantics m] {Ξ± Ξ² : Type u} [MeasurableSpace Ξ±] [MeasurableSpace Ξ²] (mx : m Ξ±) (f g : Ξ± β†’ m Ξ²) (hf : Measurable fun (x : Ξ±) => π’Ÿ[f x]) (hg : Measurable fun (x : Ξ±) => π’Ÿ[g x]) (h : (fun (x : Ξ±) => π’Ÿ[f x]) =ᡐ[π’Ÿ[mx]] fun (x : Ξ±) => π’Ÿ[g x]) :

            Almost-everywhere equal measurable continuation measures give equal composed measures.

            theorem evalDist_bind_congr {m : Type u β†’ Type v} [Monad m] [EvalDistSemantics m] [LawfulEvalDistSemantics m] {Ξ± Ξ² : Type u} [MeasurableSpace Ξ²] (mx : m Ξ±) (f g : Ξ± β†’ m Ξ²) (h : βˆ€ (x : Ξ±), π’Ÿ[f x] = π’Ÿ[g x]) :

            Pointwise equality of continuation measures gives equality after a common bind. No measurable structure is required on the unobserved intermediate type: the common continuation measure supplies its observation's pullback measurable space.

            theorem evalDist_map {m : Type u β†’ Type v} [Monad m] [LawfulMonad m] [EvalDistSemantics m] [LawfulEvalDistSemantics m] {Ξ± Ξ² : Type u} [MeasurableSpace Ξ±] [MeasurableSpace Ξ²] (mx : m Ξ±) {f : Ξ± β†’ Ξ²} (hf : Measurable f) :

            Functor.map along a measurable function denotes the pushforward measure.

            theorem evalDist_map_of_discrete {m : Type u β†’ Type v} [Monad m] [LawfulMonad m] [EvalDistSemantics m] [LawfulEvalDistSemantics m] {Ξ± Ξ² : Type u} [MeasurableSpace Ξ±] [DiscreteMeasurableSpace Ξ±] [MeasurableSpace Ξ²] (mx : m Ξ±) (f : Ξ± β†’ Ξ²) :

            On a discrete source type, every Functor.map denotes a pushforward.

            theorem evalDist_pair {m : Type u β†’ Type v} [Monad m] [LawfulMonad m] [EvalDistSemantics m] [LawfulEvalDistSemantics m] {Ξ± Ξ² : Type u} [MeasurableSpace Ξ±] [MeasurableSpace Ξ²] (mx : m Ξ±) (my : m Ξ²) :
            π’Ÿ[do let x ← mx let y ← my pure (x, y)] = π’Ÿ[mx].prod π’Ÿ[my]

            Independent sequential draws denote Mathlib's product measure.

            @[simp]
            theorem evalDist_bind_const {m : Type u β†’ Type v} [Monad m] [EvalDistSemantics m] [LawfulEvalDistSemantics m] {Ξ± Ξ² : Type u} [MeasurableSpace Ξ±] [MeasurableSpace Ξ²] (mx : m Ξ±) (my : m Ξ²) :

            A constant continuation scales the continuation's measure by the success mass (Measure.bind_const); the measure form of probOutput_bind_const.

            @[simp]
            theorem evalDist_map_const {m : Type u β†’ Type v} [Monad m] [LawfulMonad m] [EvalDistSemantics m] [LawfulEvalDistSemantics m] {Ξ± Ξ² : Type u} [MeasurableSpace Ξ±] [MeasurableSpace Ξ²] (mx : m Ξ±) (c : Ξ²) :

            A constant map denotes the success mass at a point (Measure.map_const); the measure form of probOutput_map_const.

            theorem lintegral_evalDist_bind_of_aemeasurable {m : Type u β†’ Type v} [Monad m] [EvalDistSemantics m] [LawfulEvalDistSemantics m] {Ξ± Ξ² : Type u} [MeasurableSpace Ξ±] [MeasurableSpace Ξ²] (mx : m Ξ±) (f : Ξ± β†’ m Ξ²) (hf : Measurable fun (x : Ξ±) => π’Ÿ[f x]) {g : Ξ² β†’ ENNReal} (hg : AEMeasurable g π’Ÿ[mx >>= f]) :

            An AE-measurable valuation of composed outputs satisfies the integral tower law.

            theorem lintegral_evalDist_bind {m : Type u β†’ Type v} [Monad m] [EvalDistSemantics m] [LawfulEvalDistSemantics m] {Ξ± Ξ² : Type u} [MeasurableSpace Ξ±] [MeasurableSpace Ξ²] (mx : m Ξ±) (f : Ξ± β†’ m Ξ²) (hf : Measurable fun (x : Ξ±) => π’Ÿ[f x]) {g : Ξ² β†’ ENNReal} (hg : Measurable g) :

            Integrating a bind first integrates each measurable continuation, then its common draw.

            theorem lintegral_evalDist_bind_of_discrete {m : Type u β†’ Type v} [Monad m] [EvalDistSemantics m] [LawfulEvalDistSemantics m] {Ξ± Ξ² : Type u} [MeasurableSpace Ξ±] [DiscreteMeasurableSpace Ξ±] [MeasurableSpace Ξ²] (mx : m Ξ±) (f : Ξ± β†’ m Ξ²) {g : Ξ² β†’ ENNReal} (hg : Measurable g) :

            For a discrete common draw, the tower law needs no continuation measurability proof.

            theorem lintegral_evalDist_map_of_aemeasurable {m : Type u β†’ Type v} [Monad m] [LawfulMonad m] [EvalDistSemantics m] [LawfulEvalDistSemantics m] {Ξ± Ξ² : Type u} [MeasurableSpace Ξ±] [MeasurableSpace Ξ²] (mx : m Ξ±) {f : Ξ± β†’ Ξ²} (hf : Measurable f) {g : Ξ² β†’ ENNReal} (hg : AEMeasurable g π’Ÿ[f <$> mx]) :
            ∫⁻ (y : Ξ²), g y βˆ‚π’Ÿ[f <$> mx] = ∫⁻ (x : Ξ±), g (f x) βˆ‚π’Ÿ[mx]

            An AE-measurable valuation of a measurable output map integrates the composed functional.

            theorem lintegral_evalDist_map {m : Type u β†’ Type v} [Monad m] [LawfulMonad m] [EvalDistSemantics m] [LawfulEvalDistSemantics m] {Ξ± Ξ² : Type u} [MeasurableSpace Ξ±] [MeasurableSpace Ξ²] (mx : m Ξ±) {f : Ξ± β†’ Ξ²} (hf : Measurable f) {g : Ξ² β†’ ENNReal} (hg : Measurable g) :
            ∫⁻ (y : Ξ²), g y βˆ‚π’Ÿ[f <$> mx] = ∫⁻ (x : Ξ±), g (f x) βˆ‚π’Ÿ[mx]

            Integrating a measurable output map integrates the composed functional.

            @[simp]
            theorem lintegral_evalDist_map_of_discrete {m : Type u β†’ Type v} [Monad m] [LawfulMonad m] [EvalDistSemantics m] [LawfulEvalDistSemantics m] {Ξ± Ξ² : Type u} [MeasurableSpace Ξ±] [DiscreteMeasurableSpace Ξ±] [MeasurableSpace Ξ²] [DiscreteMeasurableSpace Ξ²] (mx : m Ξ±) (f : Ξ± β†’ Ξ²) (g : Ξ² β†’ ENNReal) :
            ∫⁻ (y : Ξ²), g y βˆ‚π’Ÿ[f <$> mx] = ∫⁻ (x : Ξ±), g (f x) βˆ‚π’Ÿ[mx]

            On discrete source and target spaces, output-map integration needs no measurability proofs.

            @[simp]
            theorem lintegral_evalDist_map_add_nat {m : Type β†’ Type v} [Monad m] [LawfulMonad m] [EvalDistSemantics m] [LawfulEvalDistSemantics m] {Ξ± : Type} (mx : m Ξ±) (f : Ξ± β†’ β„•) (c : β„•) :
            ∫⁻ (n : β„•), ↑n βˆ‚π’Ÿ[(fun (x : Ξ±) => f x + c) <$> mx] = ∫⁻ (n : β„•), ↑n βˆ‚π’Ÿ[f <$> mx] + ↑c * π’Ÿ[f <$> mx] Set.univ

            Adding to a natural-valued observation adds the constant scaled by the successful output mass. The observed computation's intermediate result needs no measurable-space instance.

            theorem lintegral_evalDist_map_const_add_nat {m : Type β†’ Type v} [Monad m] [LawfulMonad m] [EvalDistSemantics m] [LawfulEvalDistSemantics m] {Ξ± : Type} (mx : m Ξ±) (f : Ξ± β†’ β„•) (c : β„•) :

            Adding a fixed natural to an observed count scales that increment by successful mass. The curried addition form supplies a binder-free pattern for grind.

            theorem evalDist_bind_apply_univ {m : Type u β†’ Type v} [Monad m] [EvalDistSemantics m] [LawfulEvalDistSemantics m] {Ξ± Ξ² : Type u} [MeasurableSpace Ξ±] [MeasurableSpace Ξ²] (mx : m Ξ±) (f : Ξ± β†’ m Ξ²) (hf : Measurable fun (x : Ξ±) => π’Ÿ[f x]) :

            The success mass of a bind is the integral of its continuation's success mass.

            theorem evalDist_map_apply_univ {m : Type u β†’ Type v} [Monad m] [LawfulMonad m] [EvalDistSemantics m] [LawfulEvalDistSemantics m] {Ξ± Ξ² : Type u} [MeasurableSpace Ξ±] [MeasurableSpace Ξ²] (mx : m Ξ±) {f : Ξ± β†’ Ξ²} (hf : Measurable f) :

            A measurable map preserves the successful-output mass.

            Implication between Boolean results bounds their pure successful masses.

            A pure Boolean result covered by either of two results has mass bounded by their sum.