Documentation

Mathlib.Probability.Kernel.IonescuTulcea.Traj

Ionescu-Tulcea theorem #

This file proves the Ionescu-Tulcea theorem. The idea of the statement is as follows: consider a family of kernels κ : (n : ℕ) → Kernel (Π i : Iic n, X i) (X (n + 1)). One can interpret κ n as a kernel which takes as an input the trajectory of a point started in X 0 and moving X 0 → X 1 → X 2 → ... → X n and which outputs the distribution of the next position of the point in X (n + 1). If a b : ℕ and a < b, we can compose the kernels, and κ a ⊗ₖ κ (a + 1) ⊗ₖ ... ⊗ₖ κ b will take the trajectory up to time a as input and outputs the distribution of the trajectory on X (a + 1) × ... × X (b + 1).

The Ionescu-Tulcea theorem tells us that these compositions can be extended into a Kernel (Π i : Iic a, X i) (Π n > a, X n) which given the trajectory up to time a outputs the distribution of the infinite trajectory started in X (a + 1). In other words this theorem makes sense of composing infinitely many kernels together.

In this file we construct this "limit" kernel given the family κ. More precisely, for any a : ℕ, we construct the kernel traj κ a : Kernel (Π i : Iic a, X i) (Π n, X n), which takes as input the trajectory in X 0 × ... × X a and outputs the distribution of the whole trajectory. The name traj thus stands for "trajectory". We build a kernel with output in Π n, X n instead of Π i > a, X i to make manipulations easier. The first coordinates are deterministic.

We also provide tools to compute integrals against traj κ a and an expression for the conditional expectation.

Main definition #

Main statements #

Implementation notes #

The kernel traj κ a is built using the Carathéodory extension theorem. First we build a projective family of measures using inducedFamily and partialTraj κ a. Then we build a MeasureTheory.AddContent on MeasureTheory.measurableCylinders called trajContent using projectiveFamilyContent. Finally we prove trajContent_tendsto_zero which implies the σ-additivity of the content, allowing to turn it into a measure.

References #

We follow the proof of Theorem 8.24 in O. Kallenberg, Foundations of Modern Probability. For a more detailed proof in the case of constant kernels (i.e. measures), see Proposition 10.6.1 in D. L. Cohn, Measure Theory.

Tags #

Ionescu-Tulcea theorem

@[irreducible]
def iterateInduction {X : Type u_1} {a : } (x : (i : { x : // x Finset.Iic a }) → X i) (ind : (n : ) → ((i : { x : // x Finset.Iic n }) → X i)X (n + 1)) (n : ) :
X n

This function takes as input a tuple (x_₀, ..., x_ₐ) and ind a function which given (y_₀, ...,y_ₙ) outputs x_{n+1} : X (n + 1), and it builds an element of Π n, X n by starting with (x_₀, ..., x_ₐ) and then iterating ind.

Equations
Instances For
    theorem frestrictLe_iterateInduction {X : Type u_1} {a : } (x : (i : { x : // x Finset.Iic a }) → X i) (ind : (n : ) → ((i : { x : // x Finset.Iic n }) → X i)X (n + 1)) :

    Projective families indexed by Finset #

    theorem MeasureTheory.isProjectiveLimit_nat_iff' {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {μ : (I : Finset ) → Measure ((i : { x : // x I }) → X i)} ( : IsProjectiveMeasureFamily μ) (ν : Measure ((n : ) → X n)) (a : ) :
    IsProjectiveLimit ν μ ∀ ⦃n : ⦄, a nMeasure.map (Preorder.frestrictLe n) ν = μ (Finset.Iic n)

    To check that a measure ν is the projective limit of a projective family of measures indexed by Finset, it is enough to check on intervals of the form Iic n, where n is larger than a given integer.

    theorem MeasureTheory.isProjectiveLimit_nat_iff {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {μ : (I : Finset ) → Measure ((i : { x : // x I }) → X i)} ( : IsProjectiveMeasureFamily μ) (ν : Measure ((n : ) → X n)) :

    To check that a measure ν is the projective limit of a projective family of measures indexed by Finset, it is enough to check on intervals of the form Iic n.

    noncomputable def MeasureTheory.inducedFamily {X : Type u_1} [(n : ) → MeasurableSpace (X n)] (μ : (n : ) → Measure ((i : { x : // x Finset.Iic n }) → X i)) (S : Finset ) :
    Measure ((k : { x : // x S }) → X k)

    Given a family of measures μ : (n : ℕ) → Measure (Π i : Iic n, X i), we can define a family of measures indexed by Finset by projecting the measures.

    Equations
    Instances For
      instance MeasureTheory.instSFiniteForallValNatMemFinsetInducedFamilyOfForallIic {X : Type u_1} [(n : ) → MeasurableSpace (X n)] (μ : (n : ) → Measure ((i : { x : // x Finset.Iic n }) → X i)) [∀ (n : ), SFinite (μ n)] (I : Finset ) :
      instance MeasureTheory.instIsFiniteMeasureForallValNatMemFinsetInducedFamilyOfForallIic {X : Type u_1} [(n : ) → MeasurableSpace (X n)] (μ : (n : ) → Measure ((i : { x : // x Finset.Iic n }) → X i)) [∀ (n : ), IsFiniteMeasure (μ n)] (I : Finset ) :
      theorem MeasureTheory.inducedFamily_Iic {X : Type u_1} [(n : ) → MeasurableSpace (X n)] (μ : (n : ) → Measure ((i : { x : // x Finset.Iic n }) → X i)) (n : ) :

      Given a family of measures μ : (n : ℕ) → Measure (Π i : Iic n, X i), the induced family equals μ over the intervals Iic n.

      theorem MeasureTheory.isProjectiveMeasureFamily_inducedFamily {X : Type u_1} [(n : ) → MeasurableSpace (X n)] (μ : (n : ) → Measure ((i : { x : // x Finset.Iic n }) → X i)) (h : ∀ (a b : ) (hab : a b), Measure.map (Preorder.frestrictLe₂ hab) (μ b) = μ a) :

      Given a family of measures μ : (n : ℕ) → Measure (Π i : Iic n, X i), the induced family will be projective only if μ is projective, in the sense that if a ≤ b, then projecting μ b gives μ a.

      Definition and basic properties of traj #

      theorem ProbabilityTheory.Kernel.isProjectiveMeasureFamily_partialTraj {X : Type u_1} [(n : ) → MeasurableSpace (X n)] (κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))) [∀ (n : ), IsMarkovKernel (κ n)] {a : } (x₀ : (i : { x : // x Finset.Iic a }) → X i) :
      noncomputable def ProbabilityTheory.Kernel.trajContent {X : Type u_1} [(n : ) → MeasurableSpace (X n)] (κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))) [∀ (n : ), IsMarkovKernel (κ n)] {a : } (x₀ : (i : { x : // x Finset.Iic a }) → X i) :

      Given a family of kernels κ : (n : ℕ) → Kernel (Π i : Iic n, X i) (X (n + 1)), and the trajectory up to time a we can construct an additive content over cylinders. It corresponds to composing the kernels, starting at time a + 1.

      Equations
      Instances For
        theorem ProbabilityTheory.Kernel.trajContent_cylinder {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] {a b : } {S : Set ((i : { x : // x Finset.Iic b }) → X i)} (mS : MeasurableSet S) (x₀ : (i : { x : // x Finset.Iic a }) → X i) :
        (trajContent κ x₀) (MeasureTheory.cylinder (Finset.Iic b) S) = ((partialTraj κ a b) x₀) S

        The trajContent κ x₀ of a cylinder indexed by first coordinates is given by partialTraj.

        theorem ProbabilityTheory.Kernel.trajContent_eq_lmarginalPartialTraj {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] {b : } {S : Set ((i : { x : // x Finset.Iic b }) → X i)} (mS : MeasurableSet S) (x₀ : (n : ) → X n) (a : ) :

        The trajContent of a cylinder is equal to the integral of its indicator function against partialTraj.

        theorem ProbabilityTheory.Kernel.trajContent_ne_top {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] {a : } {x : (i : { x : // x Finset.Iic a }) → X i} {s : Set ((n : ) → X n)} :
        theorem ProbabilityTheory.Kernel.le_lmarginalPartialTraj_succ {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] {f : ((n : ) → X n)ENNReal} {a : } (hcte : ∀ (n : ), DependsOn (f n) (Finset.Iic (a n))) (mf : ∀ (n : ), Measurable (f n)) {bound : ENNReal} (fin_bound : bound ) (le_bound : ∀ (n : ) (x : (n : ) → X n), f n x bound) {k : } (anti : ∀ (x : (n : ) → X n), Antitone fun (n : ) => lmarginalPartialTraj κ (k + 1) (a n) (f n) x) {l : ((n : ) → X n)ENNReal} (htendsto : ∀ (x : (n : ) → X n), Filter.Tendsto (fun (n : ) => lmarginalPartialTraj κ (k + 1) (a n) (f n) x) Filter.atTop (nhds (l x))) (ε : ENNReal) (y : (i : { x : // x Finset.Iic k }) → X i) (hpos : ∀ (x : (i : ) → X i) (n : ), ε lmarginalPartialTraj κ k (a n) (f n) (Function.updateFinset x (Finset.Iic k) y)) :
        ∃ (z : X (k + 1)), ∀ (x : (i : ) → X i) (n : ), ε lmarginalPartialTraj κ (k + 1) (a n) (f n) (Function.update (Function.updateFinset x (Finset.Iic k) y) (k + 1) z)

        This is an auxiliary result for trajContent_tendsto_zero. Consider f a sequence of bounded measurable functions such that f n depends only on the first coordinates up to a n. Assume that when integrating f n against partialTraj (k + 1) (a n), one gets a non-increasing sequence of functions wich converges to l. Assume then that there exists ε and y : Π i : Iic k, X i such that when integrating f n against partialTraj k (a n) y, you get something at least ε for all n. Then there exists z such that this remains true when integrating f against partialTraj (k + 1) (a n) (update y (k + 1) z).

        theorem ProbabilityTheory.Kernel.trajContent_tendsto_zero {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] {A : Set ((n : ) → X n)} (A_mem : ∀ (n : ), A n MeasureTheory.measurableCylinders X) (A_anti : Antitone A) (A_inter : ⋂ (n : ), A n = ) {p : } (x₀ : (i : { x : // x Finset.Iic p }) → X i) :
        Filter.Tendsto (fun (n : ) => (trajContent κ x₀) (A n)) Filter.atTop (nhds 0)

        This is the key theorem to prove the existence of the traj: the trajContent of a decreasing sequence of cylinders with empty intersection converges to 0.

        This implies the σ-additivity of trajContent (see addContent_iUnion_eq_sum_of_tendsto_zero), which allows to extend it to the σ-algebra by Carathéodory's theorem.

        theorem ProbabilityTheory.Kernel.isSigmaSubadditive_trajContent {X : Type u_1} [(n : ) → MeasurableSpace (X n)] (κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))) [∀ (n : ), IsMarkovKernel (κ n)] {a : } (x₀ : (i : { x : // x Finset.Iic a }) → X i) :

        The trajContent is sigma-subadditive.

        noncomputable def ProbabilityTheory.Kernel.trajFun {X : Type u_1} [(n : ) → MeasurableSpace (X n)] (κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))) [∀ (n : ), IsMarkovKernel (κ n)] (a : ) (x₀ : (i : { x : // x Finset.Iic a }) → X i) :
        MeasureTheory.Measure ((n : ) → X n)

        This function is the kernel given by the Ionescu-Tulcea theorem. It is shown belown that it is measurable and turned into a true kernel in Kernel.traj.

        Equations
        Instances For
          theorem ProbabilityTheory.Kernel.isProbabilityMeasure_trajFun {X : Type u_1} [(n : ) → MeasurableSpace (X n)] (κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))) [∀ (n : ), IsMarkovKernel (κ n)] (a : ) (x₀ : (i : { x : // x Finset.Iic a }) → X i) :
          theorem ProbabilityTheory.Kernel.isProjectiveLimit_trajFun {X : Type u_1} [(n : ) → MeasurableSpace (X n)] (κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))) [∀ (n : ), IsMarkovKernel (κ n)] (a : ) (x₀ : (i : { x : // x Finset.Iic a }) → X i) :
          theorem ProbabilityTheory.Kernel.measurable_trajFun {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] (a : ) :
          noncomputable def ProbabilityTheory.Kernel.traj {X : Type u_1} [(n : ) → MeasurableSpace (X n)] (κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))) [∀ (n : ), IsMarkovKernel (κ n)] (a : ) :
          Kernel ((i : { x : // x Finset.Iic a }) → X i) ((n : ) → X n)

          Ionescu-Tulcea Theorem : Given a family of kernels κ n taking variables in Iic n with value in X (n + 1), the kernel traj κ a takes a variable x depending on the variables i ≤ a and associates to it a kernel on trajectories depending on all variables, where the entries with index ≤ a are those of x, and then one follows iteratively the kernels κ a, then κ (a + 1), and so on.

          The fact that such a kernel exists on infinite trajectories is not obvious, and is the content of the Ionescu-Tulcea theorem.

          Equations
          Instances For
            theorem ProbabilityTheory.Kernel.traj_apply {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] (a : ) (x : (i : { x : // x Finset.Iic a }) → X i) :
            (traj κ a) x = trajFun κ a x
            instance ProbabilityTheory.Kernel.instIsMarkovKernelForallValNatMemFinsetIicForallTraj {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] (a : ) :
            theorem ProbabilityTheory.Kernel.traj_map_frestrictLe {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] (a b : ) :
            theorem ProbabilityTheory.Kernel.traj_map_frestrictLe_apply {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] (a b : ) (x : (i : { x : // x Finset.Iic a }) → X i) :
            theorem ProbabilityTheory.Kernel.traj_map_frestrictLe_of_le {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] {a b : } (hab : a b) :
            theorem ProbabilityTheory.Kernel.eq_traj' {X : Type u_1} [(n : ) → MeasurableSpace (X n)] (κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))) [∀ (n : ), IsMarkovKernel (κ n)] {a : } (n : ) (η : Kernel ((i : { x : // x Finset.Iic a }) → X i) ((n : ) → X n)) ( : bn, η.map (Preorder.frestrictLe b) = partialTraj κ a b) :
            η = traj κ a

            To check that η = traj κ a it is enough to show that the restriction of η to variables ≤ b is partialTraj κ a b for any b ≥ n.

            theorem ProbabilityTheory.Kernel.eq_traj {X : Type u_1} [(n : ) → MeasurableSpace (X n)] (κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))) [∀ (n : ), IsMarkovKernel (κ n)] {a : } (η : Kernel ((i : { x : // x Finset.Iic a }) → X i) ((n : ) → X n)) ( : ∀ (b : ), η.map (Preorder.frestrictLe b) = partialTraj κ a b) :
            η = traj κ a

            To check that η = traj κ a it is enough to show that the restriction of η to variables ≤ b is partialTraj κ a b.

            theorem ProbabilityTheory.Kernel.traj_comp_partialTraj {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] {a b : } (hab : a b) :
            (traj κ b).comp (partialTraj κ a b) = traj κ a

            Given the distribution up to tome a, partialTraj κ a b gives the distribution of the trajectory up to time b, and composing this with traj κ b gives the distribution of the whole trajectory.

            theorem ProbabilityTheory.Kernel.traj_eq_prod {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] (a : ) :

            This theorem shows that traj κ n is, up to an equivalence, the product of a determinstic kernel with another kernel. This is an intermediate result to compute integrals with respect to this kernel.

            theorem ProbabilityTheory.Kernel.traj_map_updateFinset {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] {n : } (x : (i : { x : // x Finset.Iic n }) → X i) :
            MeasureTheory.Measure.map (fun (x_1 : (i : ) → X i) => Function.updateFinset x_1 (Finset.Iic n) x) ((traj κ n) x) = (traj κ n) x

            Integrals and traj #

            theorem ProbabilityTheory.Kernel.integrable_traj {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] {E : Type u_2} [NormedAddCommGroup E] {a b : } (hab : a b) {f : ((n : ) → X n)E} (x₀ : (i : { x : // x Finset.Iic a }) → X i) (i_f : MeasureTheory.Integrable f ((traj κ a) x₀)) :
            ∀ᵐ (x : (i : ) → X i) (traj κ a) x₀, MeasureTheory.Integrable f ((traj κ b) (Preorder.frestrictLe b x))
            theorem ProbabilityTheory.Kernel.aestronglyMeasurable_traj {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] {E : Type u_2} [NormedAddCommGroup E] {a b : } (hab : a b) {f : ((n : ) → X n)E} {x₀ : (i : { x : // x Finset.Iic a }) → X i} (hf : MeasureTheory.AEStronglyMeasurable f ((traj κ a) x₀)) :
            ∀ᵐ (x : (i : { x : // x Finset.Iic b }) → X i) (partialTraj κ a b) x₀, MeasureTheory.AEStronglyMeasurable f ((traj κ b) x)
            theorem ProbabilityTheory.Kernel.integral_traj {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace E] {a : } (x₀ : (i : { x : // x Finset.Iic a }) → X i) {f : ((n : ) → X n)E} (mf : MeasureTheory.AEStronglyMeasurable f ((traj κ a) x₀)) :
            (x : (n : ) → X n), f x (traj κ a) x₀ = (x : (n : ) → X n), f (Function.updateFinset x (Finset.Iic a) x₀) (traj κ a) x₀

            When computing ∫ x, f x ∂traj κ n x₀, because the trajectory up to time n is determined by x₀ we can replace x by updateFinset x (Iic a) x₀.

            theorem ProbabilityTheory.Kernel.partialTraj_compProd_traj {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] {a b : } (hab : a b) (u : (i : { x : // x Finset.Iic a }) → X i) :
            ((partialTraj κ a b) u).compProd (traj κ b) = MeasureTheory.Measure.map (fun (x : (i : ) → X i) => (Preorder.frestrictLe b x, x)) ((traj κ a) u)
            theorem ProbabilityTheory.Kernel.integral_traj_partialTraj' {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace E] {a b : } (hab : a b) {x₀ : (i : { x : // x Finset.Iic a }) → X i} {f : ((i : { x : // x Finset.Iic b }) → X i)((n : ) → X n)E} (hf : MeasureTheory.Integrable (Function.uncurry f) (((partialTraj κ a b) x₀).compProd (traj κ b))) :
            (x : (i : { x : // x Finset.Iic b }) → X i), (y : (n : ) → X n), f x y (traj κ b) x (partialTraj κ a b) x₀ = (x : (n : ) → X n), f (Preorder.frestrictLe b x) x (traj κ a) x₀
            theorem ProbabilityTheory.Kernel.integral_traj_partialTraj {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace E] {a b : } (hab : a b) {x₀ : (i : { x : // x Finset.Iic a }) → X i} {f : ((n : ) → X n)E} (hf : MeasureTheory.Integrable f ((traj κ a) x₀)) :
            (x : (i : { x : // x Finset.Iic b }) → X i), (y : (n : ) → X n), f y (traj κ b) x (partialTraj κ a b) x₀ = (x : (n : ) → X n), f x (traj κ a) x₀
            theorem ProbabilityTheory.Kernel.setIntegral_traj_partialTraj' {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace E] {a b : } (hab : a b) {u : (i : { x : // x Finset.Iic a }) → X i} {f : ((i : { x : // x Finset.Iic b }) → X i)((n : ) → X n)E} (hf : MeasureTheory.Integrable (Function.uncurry f) (((partialTraj κ a b) u).compProd (traj κ b))) {A : Set ((i : { x : // x Finset.Iic b }) → X i)} (hA : MeasurableSet A) :
            (x : (i : { x : // x Finset.Iic b }) → X i) in A, (y : (n : ) → X n), f x y (traj κ b) x (partialTraj κ a b) u = (y : (n : ) → X n) in Preorder.frestrictLe b ⁻¹' A, f (Preorder.frestrictLe b y) y (traj κ a) u
            theorem ProbabilityTheory.Kernel.setIntegral_traj_partialTraj {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace E] {a b : } (hab : a b) {x₀ : (i : { x : // x Finset.Iic a }) → X i} {f : ((n : ) → X n)E} (hf : MeasureTheory.Integrable f ((traj κ a) x₀)) {A : Set ((i : { x : // x Finset.Iic b }) → X i)} (hA : MeasurableSet A) :
            (x : (i : { x : // x Finset.Iic b }) → X i) in A, (y : (n : ) → X n), f y (traj κ b) x (partialTraj κ a b) x₀ = (y : (n : ) → X n) in Preorder.frestrictLe b ⁻¹' A, f y (traj κ a) x₀
            theorem ProbabilityTheory.Kernel.condExp_traj {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace E] [CompleteSpace E] {a b : } (hab : a b) {x₀ : (i : { x : // x Finset.Iic a }) → X i} {f : ((n : ) → X n)E} (i_f : MeasureTheory.Integrable f ((traj κ a) x₀)) :
            ((traj κ a) x₀)[f|MeasureTheory.Filtration.piLE b] =ᵐ[(traj κ a) x₀] fun (x : (n : ) → X n) => (y : (n : ) → X n), f y (traj κ b) (Preorder.frestrictLe b x)
            theorem ProbabilityTheory.Kernel.condExp_traj' {X : Type u_1} [(n : ) → MeasurableSpace (X n)] {κ : (n : ) → Kernel ((i : { x : // x Finset.Iic n }) → X i) (X (n + 1))} [∀ (n : ), IsMarkovKernel (κ n)] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace E] [CompleteSpace E] {a b c : } (hab : a b) (hbc : b c) (x₀ : (i : { x : // x Finset.Iic a }) → X i) (f : ((n : ) → X n)E) :
            ((traj κ a) x₀)[f|MeasureTheory.Filtration.piLE b] =ᵐ[(traj κ a) x₀] fun (x : (n : ) → X n) => (y : (i : { x : // x Finset.Iic c }) → X i), ((traj κ a) x₀)[f|MeasureTheory.Filtration.piLE c] (Function.updateFinset x (Finset.Iic c) y) (partialTraj κ b c) (Preorder.frestrictLe b x)