LeanMachineLearning exposition

Learning.IT.instIsProbabilityMeasureForallNatProdBayesTrajMeasure🔗

This page has the declaration's own card below, then its dependency graph, then a card for each dependency (type dependencies first, then the rest of the transitive closure). For a theorem, the graph and the dependency cards only follow its statement's dependencies (its proof is replaced by sorry, so what it proves doesn't depend on how); for everything else, both the type and the body/value are followed, since their content is part of what later declarations build on.

Minimal Lean file

instIsProbabilityMeasureForallNatProdBayesTrajMeasure🔗

InstanceLearning.IT.instIsProbabilityMeasureForallNatProdBayesTrajMeasure

No docstring.

🔗theorem
Learning.IT.instIsProbabilityMeasureForallNatProdBayesTrajMeasure.{u_1, u_2, u_3} {𝓔 : Type u_1} {𝓐 : Type u_2} {𝓨 : Type u_3} [MeasurableSpace 𝓔] [MeasurableSpace 𝓐] [MeasurableSpace 𝓨] (Q : MeasureTheory.Measure 𝓔) [MeasureTheory.IsProbabilityMeasure Q] (κ : ProbabilityTheory.Kernel (𝓔 × 𝓐) 𝓨) [ProbabilityTheory.IsMarkovKernel κ] (alg : Algorithm 𝓐 𝓨) : MeasureTheory.IsProbabilityMeasure (bayesTrajMeasure Q κ alg)
Learning.IT.instIsProbabilityMeasureForallNatProdBayesTrajMeasure.{u_1, u_2, u_3} {𝓔 : Type u_1} {𝓐 : Type u_2} {𝓨 : Type u_3} [MeasurableSpace 𝓔] [MeasurableSpace 𝓐] [MeasurableSpace 𝓨] (Q : MeasureTheory.Measure 𝓔) [MeasureTheory.IsProbabilityMeasure Q] (κ : ProbabilityTheory.Kernel (𝓔 × 𝓐) 𝓨) [ProbabilityTheory.IsMarkovKernel κ] (alg : Algorithm 𝓐 𝓨) : MeasureTheory.IsProbabilityMeasure (bayesTrajMeasure Q κ alg)

Code

deriving IsProbabilityMeasure
Type uses (2)
Body uses (3)
Used by (4)

Actions: Source · Open Issue

Proof
deriving IsProbabilityMeasure

Dependency graph

Type dependencies (2)

Algorithm🔗

StructureLearning.Algorithm

A stochastic, sequential algorithm.

🔗structure
Learning.Algorithm.{u_4, u_5} (𝓐 : Type u_4) (𝓨 : Type u_5) [MeasurableSpace 𝓐] [MeasurableSpace 𝓨] : Type (max u_4 u_5)
Learning.Algorithm.{u_4, u_5} (𝓐 : Type u_4) (𝓨 : Type u_5) [MeasurableSpace 𝓐] [MeasurableSpace 𝓨] : Type (max u_4 u_5)

Code

structure Algorithm (𝓐 𝓨 : Type*) [MeasurableSpace 𝓐] [MeasurableSpace 𝓨] where
  /-- Policy or sampling rule: distribution of the next action. -/
  policy : (n : ℕ) → Kernel (Iic n → 𝓐 × 𝓨) 𝓐
  /-- The policy is a Markov kernel. -/
  [h_policy : ∀ n, IsMarkovKernel (policy n)]
  /-- Distribution of the first action. -/
  p0 : Measure 𝓐
  /-- The first action distribution is a probability measure. -/
  [hp0 : IsProbabilityMeasure p0]
Used by (216)

Actions: Source · Open Issue

bayesTrajMeasure🔗

DefinitionLearning.IT.bayesTrajMeasure

A measure P on a measurable space that carries random variables E, A, and Y such that IsBayesAlgEnvSeq Q κ alg E A Y P.

🔗def
Learning.IT.bayesTrajMeasure.{u_1, u_2, u_3} {𝓔 : Type u_1} {𝓐 : Type u_2} {𝓨 : Type u_3} [MeasurableSpace 𝓔] [MeasurableSpace 𝓐] [MeasurableSpace 𝓨] (Q : MeasureTheory.Measure 𝓔) [MeasureTheory.IsProbabilityMeasure Q] (κ : ProbabilityTheory.Kernel (𝓔 × 𝓐) 𝓨) [ProbabilityTheory.IsMarkovKernel κ] (alg : Algorithm 𝓐 𝓨) : MeasureTheory.Measure ( 𝓐 × 𝓔 × 𝓨)
Learning.IT.bayesTrajMeasure.{u_1, u_2, u_3} {𝓔 : Type u_1} {𝓐 : Type u_2} {𝓨 : Type u_3} [MeasurableSpace 𝓔] [MeasurableSpace 𝓐] [MeasurableSpace 𝓨] (Q : MeasureTheory.Measure 𝓔) [MeasureTheory.IsProbabilityMeasure Q] (κ : ProbabilityTheory.Kernel (𝓔 × 𝓐) 𝓨) [ProbabilityTheory.IsMarkovKernel κ] (alg : Algorithm 𝓐 𝓨) : MeasureTheory.Measure ( 𝓐 × 𝓔 × 𝓨)

Code

noncomputable
def bayesTrajMeasure (Q : Measure 𝓔) [IsProbabilityMeasure Q] (κ : Kernel (𝓔 × 𝓐) 𝓨)
    [IsMarkovKernel κ] (alg : Algorithm 𝓐 𝓨) : Measure (ℕ → 𝓐 × 𝓔 × 𝓨) :=
  trajMeasure (alg.prodLeft 𝓔) (bayesStationaryEnv Q κ)
deriving IsProbabilityMeasure
Type uses (1)
Body uses (3)
Used by (5)

Actions: Source · Open Issue

All dependencies, transitively (11)

Environment🔗

StructureLearning.Environment

A stochastic environment.

🔗structure
Learning.Environment.{u_4, u_5} (𝓐 : Type u_4) (𝓨 : Type u_5) [MeasurableSpace 𝓐] [MeasurableSpace 𝓨] : Type (max u_4 u_5)
Learning.Environment.{u_4, u_5} (𝓐 : Type u_4) (𝓨 : Type u_5) [MeasurableSpace 𝓐] [MeasurableSpace 𝓨] : Type (max u_4 u_5)

Code

structure Environment (𝓐 𝓨 : Type*) [MeasurableSpace 𝓐] [MeasurableSpace 𝓨] where
  /-- Distribution of the next observation as function of the past history. -/
  feedback : (n : ℕ) → Kernel ((Iic n → 𝓐 × 𝓨) × 𝓐) 𝓨
  /-- The feedback kernels are Markov kernels. -/
  [h_feedback : ∀ n, IsMarkovKernel (feedback n)]
  /-- Distribution of the first observation given the first action. -/
  ν0 : Kernel 𝓐 𝓨
  /-- The initial observation kernel is a Markov kernel. -/
  [hp0 : IsMarkovKernel ν0]
Used by (128)

Actions: Source · Open Issue

stepKernel🔗

DefinitionLearning.stepKernel

Kernel describing the distribution of the next action-feedback pair given the history up to n.

🔗def
Learning.stepKernel.{u_1, u_2} {𝓐 : Type u_1} {𝓨 : Type u_2} {m𝓐 : MeasurableSpace 𝓐} {m𝓨 : MeasurableSpace 𝓨} (alg : Algorithm 𝓐 𝓨) (env : Environment 𝓐 𝓨) (n : ) : ProbabilityTheory.Kernel ((Finset.Iic n) 𝓐 × 𝓨) (𝓐 × 𝓨)
Learning.stepKernel.{u_1, u_2} {𝓐 : Type u_1} {𝓨 : Type u_2} {m𝓐 : MeasurableSpace 𝓐} {m𝓨 : MeasurableSpace 𝓨} (alg : Algorithm 𝓐 𝓨) (env : Environment 𝓐 𝓨) (n : ) : ProbabilityTheory.Kernel ((Finset.Iic n) 𝓐 × 𝓨) (𝓐 × 𝓨)

Code

noncomputable
def stepKernel (alg : Algorithm 𝓐 𝓨) (env : Environment 𝓐 𝓨) (n : ℕ) :
    Kernel (Iic n → 𝓐 × 𝓨) (𝓐 × 𝓨) :=
  alg.policy n ⊗ₖ env.feedback n
deriving IsMarkovKernel
Type uses (2)
Used by (17)

Actions: Source · Open Issue

instIsMarkovKernelForallSubtypeNatMemFinsetIicProdPolicy🔗

InstanceLearning.instIsMarkovKernelForallSubtypeNatMemFinsetIicProdPolicy

No docstring.

🔗theorem
Learning.instIsMarkovKernelForallSubtypeNatMemFinsetIicProdPolicy.{u_1, u_2} {𝓐 : Type u_1} {𝓨 : Type u_2} {m𝓐 : MeasurableSpace 𝓐} {m𝓨 : MeasurableSpace 𝓨} (alg : Algorithm 𝓐 𝓨) (n : ) : ProbabilityTheory.IsMarkovKernel (Algorithm.policy alg n)
Learning.instIsMarkovKernelForallSubtypeNatMemFinsetIicProdPolicy.{u_1, u_2} {𝓐 : Type u_1} {𝓨 : Type u_2} {m𝓐 : MeasurableSpace 𝓐} {m𝓨 : MeasurableSpace 𝓨} (alg : Algorithm 𝓐 𝓨) (n : ) : ProbabilityTheory.IsMarkovKernel (Algorithm.policy alg n)

Code

instance (alg : Algorithm 𝓐 𝓨) (n : ℕ) : IsMarkovKernel (alg.policy n)
Type uses (1)
Used by (14)

Actions: Source · Open Issue

Proof
alg.h_policy n

instIsMarkovKernelProdForallSubtypeNatMemFinsetIicFeedback🔗

InstanceLearning.instIsMarkovKernelProdForallSubtypeNatMemFinsetIicFeedback

No docstring.

🔗theorem
Learning.instIsMarkovKernelProdForallSubtypeNatMemFinsetIicFeedback.{u_1, u_2} {𝓐 : Type u_1} {𝓨 : Type u_2} {m𝓐 : MeasurableSpace 𝓐} {m𝓨 : MeasurableSpace 𝓨} (env : Environment 𝓐 𝓨) (n : ) : ProbabilityTheory.IsMarkovKernel (Environment.feedback env n)
Learning.instIsMarkovKernelProdForallSubtypeNatMemFinsetIicFeedback.{u_1, u_2} {𝓐 : Type u_1} {𝓨 : Type u_2} {m𝓐 : MeasurableSpace 𝓐} {m𝓨 : MeasurableSpace 𝓨} (env : Environment 𝓐 𝓨) (n : ) : ProbabilityTheory.IsMarkovKernel (Environment.feedback env n)

Code

instance (env : Environment 𝓐 𝓨) (n : ℕ) : IsMarkovKernel (env.feedback n)
Type uses (1)
Used by (5)

Actions: Source · Open Issue

Proof
env.h_feedback n

instIsMarkovKernelForallSubtypeNatMemFinsetIicProdStepKernel🔗

InstanceLearning.instIsMarkovKernelForallSubtypeNatMemFinsetIicProdStepKernel

No docstring.

🔗theorem
Learning.instIsMarkovKernelForallSubtypeNatMemFinsetIicProdStepKernel.{u_1, u_2} {𝓐 : Type u_1} {𝓨 : Type u_2} {m𝓐 : MeasurableSpace 𝓐} {m𝓨 : MeasurableSpace 𝓨} (alg : Algorithm 𝓐 𝓨) (env : Environment 𝓐 𝓨) (n : ) : ProbabilityTheory.IsMarkovKernel (stepKernel alg env n)
Learning.instIsMarkovKernelForallSubtypeNatMemFinsetIicProdStepKernel.{u_1, u_2} {𝓐 : Type u_1} {𝓨 : Type u_2} {m𝓐 : MeasurableSpace 𝓐} {m𝓨 : MeasurableSpace 𝓨} (alg : Algorithm 𝓐 𝓨) (env : Environment 𝓐 𝓨) (n : ) : ProbabilityTheory.IsMarkovKernel (stepKernel alg env n)

Code

deriving IsMarkovKernel
Type uses (3)
Body uses (2)
Used by (10)

Actions: Source · Open Issue

Proof
deriving IsMarkovKernel

trajMeasure🔗

DefinitionLearning.trajMeasure

Measure on the sequence of actions and observations generated by the algorithm/environment.

🔗def
Learning.trajMeasure.{u_1, u_2} {𝓐 : Type u_1} {𝓨 : Type u_2} {m𝓐 : MeasurableSpace 𝓐} {m𝓨 : MeasurableSpace 𝓨} (alg : Algorithm 𝓐 𝓨) (env : Environment 𝓐 𝓨) : MeasureTheory.Measure ( 𝓐 × 𝓨)
Learning.trajMeasure.{u_1, u_2} {𝓐 : Type u_1} {𝓨 : Type u_2} {m𝓐 : MeasurableSpace 𝓐} {m𝓨 : MeasurableSpace 𝓨} (alg : Algorithm 𝓐 𝓨) (env : Environment 𝓐 𝓨) : MeasureTheory.Measure ( 𝓐 × 𝓨)

Code

noncomputable
def trajMeasure (alg : Algorithm 𝓐 𝓨) (env : Environment 𝓐 𝓨) :
    Measure (ℕ → 𝓐 × 𝓨) :=
  Kernel.trajMeasure (alg.p0 ⊗ₘ env.ν0) (stepKernel alg env)
deriving IsProbabilityMeasure
Type uses (2)
Body uses (2)
Used by (19)

Actions: Source · Open Issue

instIsProbabilityMeasureP0🔗

InstanceLearning.instIsProbabilityMeasureP0

No docstring.

🔗theorem
Learning.instIsProbabilityMeasureP0.{u_1, u_2} {𝓐 : Type u_1} {𝓨 : Type u_2} {m𝓐 : MeasurableSpace 𝓐} {m𝓨 : MeasurableSpace 𝓨} (alg : Algorithm 𝓐 𝓨) : MeasureTheory.IsProbabilityMeasure (Algorithm.p0 alg)
Learning.instIsProbabilityMeasureP0.{u_1, u_2} {𝓐 : Type u_1} {𝓨 : Type u_2} {m𝓐 : MeasurableSpace 𝓐} {m𝓨 : MeasurableSpace 𝓨} (alg : Algorithm 𝓐 𝓨) : MeasureTheory.IsProbabilityMeasure (Algorithm.p0 alg)

Code

instance (alg : Algorithm 𝓐 𝓨) : IsProbabilityMeasure alg.p0
Type uses (1)
Used by (13)

Actions: Source · Open Issue

Proof
alg.hp0

prodLeft🔗

DefinitionLearning.Algorithm.prodLeft

An algorithm with observations in 𝓧 × 𝓨 obtained from an algorithm with observations in 𝓨 by ignoring the 𝓧 component of each observation.

🔗def
Learning.Algorithm.prodLeft.{u_1, u_2, u_4} {𝓐 : Type u_1} {𝓨 : Type u_2} {m𝓐 : MeasurableSpace 𝓐} {m𝓨 : MeasurableSpace 𝓨} (𝓧 : Type u_4) [MeasurableSpace 𝓧] (alg : Algorithm 𝓐 𝓨) : Algorithm 𝓐 (𝓧 × 𝓨)
Learning.Algorithm.prodLeft.{u_1, u_2, u_4} {𝓐 : Type u_1} {𝓨 : Type u_2} {m𝓐 : MeasurableSpace 𝓐} {m𝓨 : MeasurableSpace 𝓨} (𝓧 : Type u_4) [MeasurableSpace 𝓧] (alg : Algorithm 𝓐 𝓨) : Algorithm 𝓐 (𝓧 × 𝓨)

Code

def Algorithm.prodLeft (𝓧 : Type*) [MeasurableSpace 𝓧] (alg : Algorithm 𝓐 𝓨) :
    Algorithm 𝓐 (𝓧 × 𝓨) where
  policy n := (alg.policy n).comap (fun h i ↦ ((h i).1, (h i).2.2)) (by fun_prop)
  p0 := alg.p0
Type uses (1)
Body uses (2)
Used by (6)

Actions: Source · Open Issue

bayesStationaryEnv🔗

DefinitionLearning.bayesStationaryEnv

An environment with observations in 𝓔 × 𝓨. The first element e of an observation is sampled from Q once and remains constant. The second element of an observation is sampled from κ (e, a), where a is the corresponding action.

🔗def
Learning.bayesStationaryEnv.{u_1, u_2, u_3} {𝓔 : Type u_1} {𝓐 : Type u_2} {𝓨 : Type u_3} [MeasurableSpace 𝓔] [MeasurableSpace 𝓐] [MeasurableSpace 𝓨] (Q : MeasureTheory.Measure 𝓔) [MeasureTheory.IsProbabilityMeasure Q] (κ : ProbabilityTheory.Kernel (𝓔 × 𝓐) 𝓨) [ProbabilityTheory.IsMarkovKernel κ] : Environment 𝓐 (𝓔 × 𝓨)
Learning.bayesStationaryEnv.{u_1, u_2, u_3} {𝓔 : Type u_1} {𝓐 : Type u_2} {𝓨 : Type u_3} [MeasurableSpace 𝓔] [MeasurableSpace 𝓐] [MeasurableSpace 𝓨] (Q : MeasureTheory.Measure 𝓔) [MeasureTheory.IsProbabilityMeasure Q] (κ : ProbabilityTheory.Kernel (𝓔 × 𝓐) 𝓨) [ProbabilityTheory.IsMarkovKernel κ] : Environment 𝓐 (𝓔 × 𝓨)

Code

noncomputable
def bayesStationaryEnv (Q : Measure 𝓔) [IsProbabilityMeasure Q] (κ : Kernel (𝓔 × 𝓐) 𝓨)
    [IsMarkovKernel κ] : Environment 𝓐 (𝓔 × 𝓨) where
  feedback n :=
    let g : (Iic n → 𝓐 × 𝓔 × 𝓨) × 𝓐 → 𝓔 × 𝓐 := fun (h, a) => ((h ⟨0, by simp⟩).2.1, a)
    (Kernel.deterministic (Prod.fst ∘ g) (by fun_prop)) ×ₖ (κ.comap g (by fun_prop))
  ν0 := (Kernel.const _ Q) ⊗ₖ κ.swapLeft
Type uses (1)
Used by (4)

Actions: Source · Open Issue

instIsMarkovKernelν0🔗

InstanceLearning.instIsMarkovKernelν0

No docstring.

🔗theorem
Learning.instIsMarkovKernelν0.{u_1, u_2} {𝓐 : Type u_1} {𝓨 : Type u_2} {m𝓐 : MeasurableSpace 𝓐} {m𝓨 : MeasurableSpace 𝓨} (env : Environment 𝓐 𝓨) : ProbabilityTheory.IsMarkovKernel (Environment.ν0 env)
Learning.instIsMarkovKernelν0.{u_1, u_2} {𝓐 : Type u_1} {𝓨 : Type u_2} {m𝓐 : MeasurableSpace 𝓐} {m𝓨 : MeasurableSpace 𝓨} (env : Environment 𝓐 𝓨) : ProbabilityTheory.IsMarkovKernel (Environment.ν0 env)

Code

instance (env : Environment 𝓐 𝓨) : IsMarkovKernel env.ν0
Type uses (1)
Used by (8)

Actions: Source · Open Issue

Proof
env.hp0

instIsProbabilityMeasureForallNatProdTrajMeasure🔗

InstanceLearning.instIsProbabilityMeasureForallNatProdTrajMeasure

No docstring.

🔗theorem
Learning.instIsProbabilityMeasureForallNatProdTrajMeasure.{u_1, u_2} {𝓐 : Type u_1} {𝓨 : Type u_2} {m𝓐 : MeasurableSpace 𝓐} {m𝓨 : MeasurableSpace 𝓨} (alg : Algorithm 𝓐 𝓨) (env : Environment 𝓐 𝓨) : MeasureTheory.IsProbabilityMeasure (trajMeasure alg env)
Learning.instIsProbabilityMeasureForallNatProdTrajMeasure.{u_1, u_2} {𝓐 : Type u_1} {𝓨 : Type u_2} {m𝓐 : MeasurableSpace 𝓐} {m𝓨 : MeasurableSpace 𝓨} (alg : Algorithm 𝓐 𝓨) (env : Environment 𝓐 𝓨) : MeasureTheory.IsProbabilityMeasure (trajMeasure alg env)

Code

deriving IsProbabilityMeasure
Type uses (3)
Body uses (4)
Used by (8)

Actions: Source · Open Issue

Proof
deriving IsProbabilityMeasure