Skip to content

Commit 2f033db

Browse files
committed
remove Unit
1 parent ff5aa2e commit 2f033db

1 file changed

Lines changed: 57 additions & 75 deletions

File tree

‎LeanMachineLearning/SequentialLearning/BayesStationaryEnv.lean‎

Lines changed: 57 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,25 @@ A Bayesian stationary environment is an environment that draws a parameter `e :
1616
`stationaryEnv (κ.sectR e)`. Following the "announced variables" mechanism of
1717
`LeanMachineLearning/SequentialLearning/Announce.lean`, the parameter is not hidden: it is part of
1818
the environment's move, and the algorithm is the one that ignores it. Concretely,
19-
`bayesStationaryEnv Q κ : Environment (𝓔 × Unit) 𝓐 𝓨` announces `e` in every observation and runs
20-
against `alg.comapObs Prod.snd`, for an `alg : Algorithm Unit 𝓐 𝓨`.
19+
`bayesStationaryEnv Q κ : Environment 𝓔 𝓐 𝓨` announces `e` as the observation of every round and
20+
runs against `alg.comapObs (fun _ ↦ ())`, for an `alg : Algorithm Unit 𝓐 𝓨`.
2121
2222
The predicate `IsBayesAlgEnvSeq` is not a new notion of run: it is `IsAlgEnvSeq` for that pair,
2323
for the observation process that announces the parameter `E` at every round.
2424
2525
## Main definitions
2626
2727
* `bayesStationaryEnv Q κ`: the environment that draws a parameter from `Q` before the first
28-
round, announces it in the first component of every observation, and returns feedback `κ (e, a)`
29-
when the parameter is `e` and the action is `a`.
28+
round, announces it as the observation of every round, and returns feedback `κ (e, a)` when the
29+
parameter is `e` and the action is `a`.
3030
* `IsBayesAlgEnvSeq Q κ alg E A Y P`: states that the parameter `E : Ω → 𝓔` has law `Q` and that
3131
the sequences of actions `A : ℕ → Ω → 𝓐` and feedbacks `Y : ℕ → Ω → 𝓨` are generated by the
3232
algorithm `alg : Algorithm Unit 𝓐 𝓨` interacting with `bayesStationaryEnv Q κ`, which it sees
33-
through `Algorithm.comapObs Prod.snd`. Equivalently, `A` and `Y` are generated by `alg`
33+
through `Algorithm.comapObs (fun _ ↦ ())`. Equivalently, `A` and `Y` are generated by `alg`
3434
interacting with the stationary environment `stationaryEnv (κ.sectR (E ω))`.
3535
* `bayesTrajMeasure Q κ alg`: for any choice of probability measure `Q : Measure 𝓔`, Markov kernel
3636
`κ : Kernel (𝓔 × 𝓐) 𝓨`, and algorithm `alg : Algorithm Unit 𝓐 𝓨`, provides a probability measure
37-
`P : Measure (ℕ → Round (𝓔 × Unit) 𝓐 𝓨)` on a space that carries `E`, `A`, and `Y` such that
37+
`P : Measure (ℕ → Round 𝓔 𝓐 𝓨)` on a space that carries `E`, `A`, and `Y` such that
3838
`IsBayesAlgEnvSeq Q κ alg E A Y P`.
3939
* `bayesTrajMeasurePosterior Q κ alg n`: a `Kernel (Hist Unit 𝓐 𝓨 n) 𝓔` that represents the
4040
posterior over `E` given the history before time `n` (the `n` first rounds) under
@@ -44,8 +44,8 @@ for the observation process that announces the parameter `E` at every round.
4444
4545
## Main results
4646
47-
* `IsAlgEnvSeq.isBayesAlgEnvSeq`: a run of `alg.comapObs Prod.snd` against `bayesStationaryEnv Q κ`
48-
is a Bayesian algorithm-environment sequence for the announced parameter.
47+
* `IsAlgEnvSeq.isBayesAlgEnvSeq`: a run of `alg.comapObs (fun _ ↦ ())` against
48+
`bayesStationaryEnv Q κ` is a Bayesian algorithm-environment sequence for the announced parameter.
4949
* `ae_IsAlgEnvSeq h`: if `h : IsBayesAlgEnvSeq Q κ alg E A Y P`, for `Q`-almost every `e : 𝓔`,
5050
`IsAlgEnvSeq O' A' Y' alg (stationaryEnv (κ.sectR e)) (condDistrib (trajectory _ A Y) E P e)` for
5151
some sequence of actions `A' : ℕ → (ℕ → Round Unit 𝓐 𝓨) → 𝓐` and sequence of feedbacks
@@ -69,46 +69,44 @@ variable [MeasurableSpace 𝓔] [MeasurableSpace 𝓐] [MeasurableSpace 𝓨] [M
6969

7070
section BayesEnv
7171

72-
/-- The environment that draws a parameter `e : 𝓔` from `Q` before the first round, announces it in
73-
the first component of every observation, and returns a feedback drawn from `κ (e, a)` when the
74-
action is `a`. The algorithm is meant to ignore the announced parameter, that is, to run through
75-
`Algorithm.comapObs Prod.snd`. -/
72+
/-- The environment that draws a parameter `e : 𝓔` from `Q` before the first round, announces it as
73+
the observation of every round, and returns a feedback drawn from `κ (e, a)` when the action is
74+
`a`. The algorithm is meant to ignore the announced parameter, that is, to run through
75+
`Algorithm.comapObs (fun _ ↦ ())`. -/
7676
noncomputable
7777
def bayesStationaryEnv (Q : Measure 𝓔) [IsProbabilityMeasure Q] (κ : Kernel (𝓔 × 𝓐) 𝓨)
78-
[IsMarkovKernel κ] : Environment (𝓔 × Unit) 𝓐 𝓨 where
78+
[IsMarkovKernel κ] : Environment 𝓔 𝓐 𝓨 where
7979
obs
80-
| 0 => Kernel.const _ (Q.prod (Measure.dirac ()))
80+
| 0 => Kernel.const _ Q
8181
| _ + 1 => Kernel.deterministic (fun h ↦ (h 0).obs) (by fun_prop)
82-
feedback _ := κ.comap (fun p ↦ (p.1.2.1, p.2)) (by fun_prop)
82+
feedback _ := κ.comap (fun p ↦ (p.1.2, p.2)) (by fun_prop)
8383
isMarkovKernel_obs n := by cases n <;> infer_instance
8484

8585
variable {Q : Measure 𝓔} [IsProbabilityMeasure Q] {κ : Kernel (𝓔 × 𝓐) 𝓨} [IsMarkovKernel κ]
8686

8787
@[simp]
88-
lemma obs_bayesStationaryEnv_zero :
89-
(bayesStationaryEnv Q κ).obs 0 = Kernel.const _ (Q.prod (Measure.dirac ())) := rfl
88+
lemma obs_bayesStationaryEnv_zero : (bayesStationaryEnv Q κ).obs 0 = Kernel.const _ Q := rfl
9089

9190
@[simp]
9291
lemma obs_bayesStationaryEnv_succ (n : ℕ) :
9392
(bayesStationaryEnv Q κ).obs (n + 1)
94-
= Kernel.deterministic (fun h : Hist (𝓔 × Unit) 𝓐 𝓨 (n + 1) ↦ (h 0).obs) (by fun_prop) := rfl
93+
= Kernel.deterministic (fun h : Hist 𝓔 𝓐 𝓨 (n + 1) ↦ (h 0).obs) (by fun_prop) := rfl
9594

9695
@[simp]
9796
lemma feedback_bayesStationaryEnv (n : ℕ) :
98-
(bayesStationaryEnv Q κ).feedback n = κ.comap (fun p ↦ (p.1.2.1, p.2)) (by fun_prop) := rfl
97+
(bayesStationaryEnv Q κ).feedback n = κ.comap (fun p ↦ (p.1.2, p.2)) (by fun_prop) := rfl
9998

10099
@[simp]
101-
lemma obs0_bayesStationaryEnv : (bayesStationaryEnv Q κ).obs0 = Q.prod (Measure.dirac ()) := rfl
100+
lemma obs0_bayesStationaryEnv : (bayesStationaryEnv Q κ).obs0 = Q := rfl
102101

103102
@[simp]
104-
lemma ν0_bayesStationaryEnv :
105-
(bayesStationaryEnv Q κ).ν0 = κ.comap (fun p ↦ (p.1.1, p.2)) (by fun_prop) := rfl
103+
lemma ν0_bayesStationaryEnv : (bayesStationaryEnv Q κ).ν0 = κ := rfl
106104

107105
end BayesEnv
108106

109-
/-- Insert an announced parameter `e` into every round of an observable history. -/
110-
def announceHist (e : 𝓔) {n : ℕ} (h : Hist Unit 𝓐 𝓨 n) : Hist (𝓔 × Unit) 𝓐 𝓨 n :=
111-
fun i ↦ ((e, ()), (h i).action, (h i).feedback)
107+
/-- Insert an announced parameter `e` as the observation of every round of an observable history. -/
108+
def announceHist (e : 𝓔) {n : ℕ} (h : Hist Unit 𝓐 𝓨 n) : Hist 𝓔 𝓐 𝓨 n :=
109+
fun i ↦ (e, (h i).action, (h i).feedback)
112110

113111
@[fun_prop]
114112
lemma measurable_announceHist (n : ℕ) :
@@ -123,13 +121,13 @@ interacting with an underlying environment that depends on `E` and `κ`
123121
(`stationaryEnv (κ.sectR (E ω))`).
124122
125123
This is `IsAlgEnvSeq` for the announcing environment `bayesStationaryEnv Q κ` and the algorithm
126-
`alg.comapObs Prod.snd` that ignores the announced parameter: the observation at every round is
127-
`(E ω, ())`. -/
124+
`alg.comapObs (fun _ ↦ ())` that ignores the announced parameter: the observation at every round
125+
is `E ω`. -/
128126
def IsBayesAlgEnvSeq (Q : Measure 𝓔) [IsProbabilityMeasure Q] (κ : Kernel (𝓔 × 𝓐) 𝓨)
129127
[IsMarkovKernel κ] (alg : Algorithm Unit 𝓐 𝓨)
130128
(E : Ω → 𝓔) (A : ℕ → Ω → 𝓐) (Y : ℕ → Ω → 𝓨)
131129
(P : Measure Ω) [IsProbabilityMeasure P] : Prop :=
132-
IsAlgEnvSeq (fun _ ω ↦ (E ω, ())) A Y (alg.comapObs Prod.snd) (bayesStationaryEnv Q κ) P
130+
IsAlgEnvSeq (fun _ ↦ E) A Y (alg.comapObs (fun _ : 𝓔 ↦ ())) (bayesStationaryEnv Q κ) P
133131

134132
namespace IsBayesAlgEnvSeq
135133

@@ -154,43 +152,38 @@ lemma mk (hasLaw_env : HasLaw E Q P)
154152
(measurable_action : ∀ n, Measurable (A n) := by fun_prop)
155153
(measurable_feedback : ∀ n, Measurable (Y n) := by fun_prop) :
156154
IsBayesAlgEnvSeq Q κ alg E A Y P := by
157-
have hO : ∀ _ : ℕ, Measurable (fun ω ↦ ((E ω, ()) : 𝓔 × Unit)) :=
158-
fun _ ↦ measurable_param.prodMk measurable_const
159-
refine IsAlgEnvSeq.mk hO measurable_action measurable_feedback ?_ ?_ ?_
155+
refine IsAlgEnvSeq.mk (fun _ ↦ measurable_param) measurable_action measurable_feedback ?_ ?_ ?_
160156
· intro n
161157
cases n with
162158
| zero =>
163159
rw [history_zero, obs_bayesStationaryEnv_zero]
164-
refine HasLaw.hasCondDistrib_const ⟨(hO 0).aemeasurable, ?_⟩
165-
rw [Kernel.const_apply, Measure.prod_dirac, ← hasLaw_env.map_eq,
166-
AEMeasurable.map_map_of_aemeasurable (by fun_prop) hasLaw_env.aemeasurable]
167-
rfl
160+
exact hasLaw_env.hasCondDistrib_const
168161
| succ n =>
169162
rw [obs_bayesStationaryEnv_succ]
170163
exact hasCondDistrib_deterministic _
171-
(measurable_history hO measurable_action measurable_feedback (n + 1)).aemeasurable
172-
(ae_of_all _ fun _ ↦ rfl)
164+
(measurable_history (fun _ ↦ measurable_param) measurable_action measurable_feedback
165+
(n + 1)).aemeasurable (ae_of_all _ fun _ ↦ rfl)
173166
· intro n
174167
exact HasCondDistrib.comp_right
175-
(f := fun q : 𝓔 × (Hist Unit 𝓐 𝓨 n × Unit) ↦ (announceHist q.1 q.2.1, (q.1, q.2.2)))
168+
(f := fun q : 𝓔 × (Hist Unit 𝓐 𝓨 n × Unit) ↦ (announceHist q.1 q.2.1, q.1))
176169
(hf := by fun_prop)
177170
(Z := fun ω ↦ (E ω, (history (noObs Ω) A Y n ω, noObs Ω n ω)))
178171
(hasCondDistrib_action n)
179172
· intro n
180173
exact HasCondDistrib.comp_right
181174
(f := fun q : (Hist Unit 𝓐 𝓨 n × Unit) × (𝓔 × 𝓐) ↦
182-
((announceHist q.2.1 q.1.1, (q.2.1, q.1.2)), q.2.2))
175+
((announceHist q.2.1 q.1.1, q.2.1), q.2.2))
183176
(hf := by fun_prop)
184177
(Z := fun ω ↦ ((history (noObs Ω) A Y n ω, noObs Ω n ω), (E ω, A n ω)))
185178
(hasCondDistrib_feedback n)
186179

187180
/-- A Bayesian algorithm-environment sequence is an algorithm-environment sequence for the
188181
announcing environment `bayesStationaryEnv Q κ`. -/
189182
lemma isAlgEnvSeq (h : IsBayesAlgEnvSeq Q κ alg E A Y P) :
190-
IsAlgEnvSeq (fun _ ω ↦ (E ω, ())) A Y (alg.comapObs Prod.snd) (bayesStationaryEnv Q κ) P := h
183+
IsAlgEnvSeq (fun _ ↦ E) A Y (alg.comapObs (fun _ : 𝓔 ↦ ())) (bayesStationaryEnv Q κ) P := h
191184

192185
lemma measurable_param (h : IsBayesAlgEnvSeq Q κ alg E A Y P) : Measurable E :=
193-
(h.isAlgEnvSeq.measurable_obs 0).fst
186+
h.isAlgEnvSeq.measurable_obs 0
194187

195188
lemma measurable_action (h : IsBayesAlgEnvSeq Q κ alg E A Y P) (n : ℕ) : Measurable (A n) :=
196189
h.isAlgEnvSeq.measurable_action n
@@ -202,22 +195,17 @@ lemma measurable_feedback (h : IsBayesAlgEnvSeq Q κ alg E A Y P) (n : ℕ) : Me
202195
lemma hasLaw_env (h : IsBayesAlgEnvSeq Q κ alg E A Y P) : HasLaw E Q P := by
203196
have h0 := h.isAlgEnvSeq.hasCondDistrib_obs 0
204197
rw [history_zero] at h0
205-
have h1 : HasLaw (fun ω ↦ (E ω, ())) (Q.prod (Measure.dirac ())) P := h0.hasLaw_of_const'
206-
refine ⟨h.measurable_param.aemeasurable, ?_⟩
207-
have h2 : E = Prod.fst ∘ (fun ω ↦ (E ω, ())) := rfl
208-
rw [h2, ← Measure.map_map measurable_fst
209-
(h.measurable_param.prodMk (measurable_const : Measurable fun _ : Ω ↦ ())), h1.map_eq]
210-
exact Measure.fst_prod
198+
exact h0.hasLaw_of_const'
211199

212200
/-- The action at time `n` has the correct conditional distribution given the parameter and the
213201
history: it depends only on the history. -/
214202
lemma hasCondDistrib_action (h : IsBayesAlgEnvSeq Q κ alg E A Y P) (n : ℕ) :
215203
HasCondDistrib (A n) (fun ω ↦ (E ω, (history (noObs Ω) A Y n ω, noObs Ω n ω)))
216204
((alg.policy n).prodMkLeft _) P :=
217205
HasCondDistrib.comp_right
218-
(f := fun p : Hist (𝓔 × Unit) 𝓐 𝓨 n × (𝓔 × Unit) ↦ (p.2.1, (Hist.mapObs Prod.snd p.1, p.2.2)))
206+
(f := fun p : Hist 𝓔 𝓐 𝓨 n × 𝓔 ↦ (p.2, (Hist.mapObs (fun _ ↦ ()) p.1, ())))
219207
(hf := by fun_prop)
220-
(Z := fun ω ↦ (history (fun _ ω ↦ (E ω, ())) A Y n ω, (E ω, ())))
208+
(Z := fun ω ↦ (history (fun _ ↦ E) A Y n ω, E ω))
221209
(h.isAlgEnvSeq.hasCondDistrib_action n)
222210

223211
/-- The feedback at time `n` has the correct conditional distribution given the history, the
@@ -226,10 +214,10 @@ lemma hasCondDistrib_feedback (h : IsBayesAlgEnvSeq Q κ alg E A Y P) (n : ℕ)
226214
HasCondDistrib (Y n) (fun ω ↦ ((history (noObs Ω) A Y n ω, noObs Ω n ω), (E ω, A n ω)))
227215
(κ.prodMkLeft _) P :=
228216
HasCondDistrib.comp_right
229-
(f := fun p : (Hist (𝓔 × Unit) 𝓐 𝓨 n × (𝓔 × Unit)) × 𝓐 ↦
230-
((Hist.mapObs Prod.snd p.1.1, p.1.2.2), (p.1.2.1, p.2)))
217+
(f := fun p : (Hist 𝓔 𝓐 𝓨 n × 𝓔) × 𝓐 ↦
218+
((Hist.mapObs (fun _ ↦ ()) p.1.1, ()), (p.1.2, p.2)))
231219
(hf := by fun_prop)
232-
(Z := fun ω ↦ ((history (fun _ ω ↦ (E ω, ())) A Y n ω, (E ω, ())), A n ω))
220+
(Z := fun ω ↦ ((history (fun _ ↦ E) A Y n ω, E ω), A n ω))
233221
(h.isAlgEnvSeq.hasCondDistrib_feedback n)
234222

235223
lemma hasCondDistrib_action' (h : IsBayesAlgEnvSeq Q κ alg E A Y P) (n : ℕ) :
@@ -325,16 +313,16 @@ end IsBayesAlgEnvSeq
325313
section IsAlgEnvSeq
326314

327315
variable {Q : Measure 𝓔} [IsProbabilityMeasure Q] {κ : Kernel (𝓔 × 𝓐) 𝓨} [IsMarkovKernel κ]
328-
variable {alg : Algorithm Unit 𝓐 𝓨} {O : ℕ → Ω → 𝓔 × Unit} {A : ℕ → Ω → 𝓐} {Y : ℕ → Ω → 𝓨}
316+
variable {alg : Algorithm Unit 𝓐 𝓨} {O : ℕ → Ω → 𝓔} {A : ℕ → Ω → 𝓐} {Y : ℕ → Ω → 𝓨}
329317
variable {P : Measure Ω} [IsProbabilityMeasure P]
330318

331319
/-- Under `bayesStationaryEnv Q κ`, the announced parameter is almost surely the same at every
332320
round. -/
333321
lemma IsAlgEnvSeq.ae_obs_eq_obs_zero [StandardBorelSpace 𝓔]
334-
(h : IsAlgEnvSeq O A Y (alg.comapObs Prod.snd) (bayesStationaryEnv Q κ) P) (n : ℕ) :
335-
(fun ω ↦ ((O 0 ω).1, ())) =ᵐ[P] O n := by
322+
(h : IsAlgEnvSeq O A Y (alg.comapObs (fun _ : 𝓔 ↦ ())) (bayesStationaryEnv Q κ) P) (n : ℕ) :
323+
O 0 =ᵐ[P] O n := by
336324
cases n with
337-
| zero => exact ae_of_all _ fun _ ↦ rfl
325+
| zero => rfl
338326
| succ n =>
339327
have h1 := h.hasCondDistrib_obs (n + 1)
340328
rw [obs_bayesStationaryEnv_succ] at h1
@@ -344,46 +332,40 @@ lemma IsAlgEnvSeq.ae_obs_eq_obs_zero [StandardBorelSpace 𝓔]
344332
rw [hω]
345333
simp [history_apply]
346334

347-
/-- A run of `alg.comapObs Prod.snd` against the announcing environment `bayesStationaryEnv Q κ`
348-
is a Bayesian algorithm-environment sequence for the announced parameter. -/
335+
/-- A run of `alg.comapObs (fun _ ↦ ())` against the announcing environment
336+
`bayesStationaryEnv Q κ` is a Bayesian algorithm-environment sequence for the announced
337+
parameter. -/
349338
lemma IsAlgEnvSeq.isBayesAlgEnvSeq [StandardBorelSpace 𝓔]
350-
(h : IsAlgEnvSeq O A Y (alg.comapObs Prod.snd) (bayesStationaryEnv Q κ) P) :
351-
IsBayesAlgEnvSeq Q κ alg (fun ω ↦ (O 0 ω).1) A Y P :=
352-
h.congr (fun _ ↦ (h.measurable_obs 0).fst.prodMk measurable_const)
353-
h.measurable_action h.measurable_feedback h.ae_obs_eq_obs_zero
354-
(fun _ ↦ .rfl) (fun _ ↦ .rfl)
339+
(h : IsAlgEnvSeq O A Y (alg.comapObs (fun _ : 𝓔 ↦ ())) (bayesStationaryEnv Q κ) P) :
340+
IsBayesAlgEnvSeq Q κ alg (O 0) A Y P :=
341+
h.congr (fun _ ↦ h.measurable_obs 0) h.measurable_action h.measurable_feedback
342+
h.ae_obs_eq_obs_zero (fun _ ↦ .rfl) (fun _ ↦ .rfl)
355343

356344
end IsAlgEnvSeq
357345

358346
namespace IT
359347

360348
/-- A measure `P` on a measurable space that carries random variables `E`, `A`, and `Y` such that
361-
`IsBayesAlgEnvSeq Q κ alg E A Y P`. -/
349+
`IsBayesAlgEnvSeq Q κ alg E A Y P`. The parameter is the observation of the first round,
350+
`IT.obs 0`. -/
362351
noncomputable
363352
def bayesTrajMeasure (Q : Measure 𝓔) [IsProbabilityMeasure Q] (κ : Kernel (𝓔 × 𝓐) 𝓨)
364-
[IsMarkovKernel κ] (alg : Algorithm Unit 𝓐 𝓨) : Measure (ℕ → Round (𝓔 × Unit) 𝓐 𝓨) :=
365-
trajMeasure (alg.comapObs Prod.snd) (bayesStationaryEnv Q κ)
353+
[IsMarkovKernel κ] (alg : Algorithm Unit 𝓐 𝓨) : Measure (ℕ → Round 𝓔 𝓐 𝓨) :=
354+
trajMeasure (alg.comapObs (fun _ : 𝓔 ↦ ())) (bayesStationaryEnv Q κ)
366355
deriving IsProbabilityMeasure
367356

368-
/-- The parameter announced by `bayesStationaryEnv Q κ`, read on the trajectory space. -/
369-
def param (τ : ℕ → Round (𝓔 × Unit) 𝓐 𝓨) : 𝓔 := (IT.obs 0 τ).1
370-
371-
@[fun_prop]
372-
lemma measurable_param : Measurable (param (𝓔 := 𝓔) (𝓐 := 𝓐) (𝓨 := 𝓨)) := by
373-
unfold param; fun_prop
374-
375357
lemma isBayesAlgEnvSeq_bayesTrajMeasure [StandardBorelSpace 𝓔]
376358
(Q : Measure 𝓔) [IsProbabilityMeasure Q] (κ : Kernel (𝓔 × 𝓐) 𝓨) [IsMarkovKernel κ]
377359
(alg : Algorithm Unit 𝓐 𝓨) :
378-
IsBayesAlgEnvSeq Q κ alg param action feedback (bayesTrajMeasure Q κ alg) :=
360+
IsBayesAlgEnvSeq Q κ alg (obs 0) action feedback (bayesTrajMeasure Q κ alg) :=
379361
(isAlgEnvSeq_trajMeasure _ _).isBayesAlgEnvSeq
380362

381363
/-- A kernel that represents the posterior over `E` given the history before time `n`. -/
382364
noncomputable
383365
def bayesTrajMeasurePosterior [StandardBorelSpace 𝓔] [Nonempty 𝓔]
384366
(Q : Measure 𝓔) [IsProbabilityMeasure Q] (κ : Kernel (𝓔 × 𝓐) 𝓨) [IsMarkovKernel κ]
385367
(alg : Algorithm Unit 𝓐 𝓨) (n : ℕ) : Kernel (Hist Unit 𝓐 𝓨 n) 𝓔 :=
386-
condDistrib param (history (noObs _) action feedback n) (bayesTrajMeasure Q κ alg)
368+
condDistrib (obs 0) (history (noObs _) action feedback n) (bayesTrajMeasure Q κ alg)
387369
deriving IsMarkovKernel
388370

389371
/-- The posterior given the empty history is the prior. -/

0 commit comments

Comments
 (0)