LeanMachineLearning exposition

Learning.measurableSet_stepsUntil_eq🔗

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

measurableSet_stepsUntil_eq🔗

LemmaLearning.measurableSet_stepsUntil_eq

No docstring.

🔗theorem
Learning.measurableSet_stepsUntil_eq.{u_1, u_2, u_3} {𝓐 : Type u_1} {R : Type u_2} {Ω : Type u_3} {m𝓐 : MeasurableSpace 𝓐} {mR : MeasurableSpace R} { : MeasurableSpace Ω} [DecidableEq 𝓐] {A : Ω 𝓐} {R' : Ω R} [MeasurableSingletonClass 𝓐] (hA : (n : ), Measurable (A n)) (hR' : (n : ), Measurable (R' n)) (a : 𝓐) (m n : ) : MeasurableSet {ω | stepsUntil A a m ω = n}
Learning.measurableSet_stepsUntil_eq.{u_1, u_2, u_3} {𝓐 : Type u_1} {R : Type u_2} {Ω : Type u_3} {m𝓐 : MeasurableSpace 𝓐} {mR : MeasurableSpace R} { : MeasurableSpace Ω} [DecidableEq 𝓐] {A : Ω 𝓐} {R' : Ω R} [MeasurableSingletonClass 𝓐] (hA : (n : ), Measurable (A n)) (hR' : (n : ), Measurable (R' n)) (a : 𝓐) (m n : ) : MeasurableSet {ω | stepsUntil A a m ω = n}

Code

lemma measurableSet_stepsUntil_eq [MeasurableSingletonClass 𝓐]
    (hA : ∀ n, Measurable (A n)) (hR' : ∀ n, Measurable (R' n)) (a : 𝓐) (m n : ℕ) :
    MeasurableSet[MeasurableSpace.comap (fun ω : Ω ↦ (history A R' (n-1) ω, A n ω))
        inferInstance]
      {ω : Ω | stepsUntil A a m ω = ↑n}
Type uses (2)
Body uses (1)
Used by (1)

Actions: Source · Open Issue

Proof
by
  let mProd := MeasurableSpace.comap
    (fun ω : Ω ↦ (history A R' (n-1) ω, A n ω)) inferInstance
  suffices Measurable[mProd] ({ω | stepsUntil A a m ω = ↑n}.indicator fun x ↦ 1) by
    rwa [measurable_indicator_const_iff] at this
  exact measurable_comap_indicator_stepsUntil_eq hA hR' a m n

Dependency graph

Type dependencies (2)

history🔗

DefinitionLearning.history

History of the algorithm-environment sequence up to time n.

🔗def
Learning.history.{u_1, u_2, u_3} {𝓐 : Type u_1} {𝓨 : Type u_2} {Ω : Type u_3} (A : Ω 𝓐) (Y : Ω 𝓨) (n : ) (ω : Ω) : (Finset.Iic n) 𝓐 × 𝓨
Learning.history.{u_1, u_2, u_3} {𝓐 : Type u_1} {𝓨 : Type u_2} {Ω : Type u_3} (A : Ω 𝓐) (Y : Ω 𝓨) (n : ) (ω : Ω) : (Finset.Iic n) 𝓐 × 𝓨

Code

def history (A : ℕ → Ω → 𝓐) (Y : ℕ → Ω → 𝓨) (n : ℕ) (ω : Ω) : Iic n → 𝓐 × 𝓨 :=
  fun i ↦ (A i ω, Y i ω)
Used by (72)

Actions: Source · Open Issue

stepsUntil🔗

DefinitionLearning.stepsUntil

Number of steps until action a was pulled exactly m times.

🔗def
Learning.stepsUntil.{u_1, u_3} {𝓐 : Type u_1} {Ω : Type u_3} [DecidableEq 𝓐] (A : Ω 𝓐) (a : 𝓐) (m : ) (ω : Ω) : ℕ∞
Learning.stepsUntil.{u_1, u_3} {𝓐 : Type u_1} {Ω : Type u_3} [DecidableEq 𝓐] (A : Ω 𝓐) (a : 𝓐) (m : ) (ω : Ω) : ℕ∞

Code

noncomputable
def stepsUntil (A : ℕ → Ω → 𝓐) (a : 𝓐) (m : ℕ) (ω : Ω) : ℕ∞ :=
  sInf ((↑) '' {s | pullCount A a (s + 1) ω = m})
Body uses (1)
Used by (46)

Actions: Source · Open Issue

All dependencies, transitively (1)

pullCount🔗

DefinitionLearning.pullCount

Number of times action a was chosen up to time t (excluding t).

🔗def
Learning.pullCount.{u_1, u_3} {𝓐 : Type u_1} {Ω : Type u_3} [DecidableEq 𝓐] (A : Ω 𝓐) (a : 𝓐) (t : ) (ω : Ω) :
Learning.pullCount.{u_1, u_3} {𝓐 : Type u_1} {Ω : Type u_3} [DecidableEq 𝓐] (A : Ω 𝓐) (a : 𝓐) (t : ) (ω : Ω) :

Code

noncomputable
def pullCount (A : ℕ → Ω → 𝓐) (a : 𝓐) (t : ℕ) (ω : Ω) : ℕ :=
  #(filter (fun s ↦ A s ω = a) (range t))
Used by (146)

Actions: Source · Open Issue