Learning.stepsUntil_eq_leastGE
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.
stepsUntil_eq_leastGE🔗
Learning.stepsUntil_eq_leastGENo docstring.
Learning.stepsUntil_eq_leastGE.{u_1, u_3} {𝓐 : Type u_1} {Ω : Type u_3} [DecidableEq 𝓐] {A : ℕ → Ω → 𝓐} {m : ℕ} (a : 𝓐) (hm : m ≠ 0) : stepsUntil A a m = MeasureTheory.leastGE (fun n ω => pullCount A a (n + 1) ω) mLearning.stepsUntil_eq_leastGE.{u_1, u_3} {𝓐 : Type u_1} {Ω : Type u_3} [DecidableEq 𝓐] {A : ℕ → Ω → 𝓐} {m : ℕ} (a : 𝓐) (hm : m ≠ 0) : stepsUntil A a m = MeasureTheory.leastGE (fun n ω => pullCount A a (n + 1) ω) m
Code
lemma stepsUntil_eq_leastGE (a : 𝓐) (hm : m ≠ 0) :
stepsUntil A a m = leastGE (fun n (ω : Ω) ↦ pullCount A a (n + 1) ω) mType uses (2)
Body uses (3)
Used by (2)
Actions: Source · Open Issue
Proof
by
classical
ext ω
rw [stepsUntil_eq_dite]
unfold leastGE hittingAfter
simp only [Nat.bot_eq_zero, zero_le, Set.mem_Ici, true_and, ENat.some_eq_coe]
have h_iff : (∃ s, pullCount A a (s + 1) ω = m) ↔ (∃ s, m ≤ pullCount A a (s + 1) ω) := by
refine ⟨fun ⟨s, hs⟩ ↦ ⟨s, hs.ge⟩, fun ⟨s, hs⟩ ↦ ?_⟩
exact exists_pullCount_eq_of_le hs hm
by_cases h_exists : ∃ s, m ≤ pullCount A a (s + 1) ω
swap; · simp_rw [h_iff]; simp [h_exists]
rw [if_pos h_exists, dif_pos]
swap; · rwa [h_iff]
norm_cast
rw [Nat.find_eq_iff]
constructor
· apply le_antisymm
· by_contra! h_contra
obtain ⟨s, hs⟩ : ∃ s, pullCount A a (s + 1) ω = m := exists_pullCount_eq_of_le h_contra.le hm
rw [← hs] at h_contra
refine h_contra.not_ge ?_
gcongr
exact csInf_le (by simp) (by simp)
· exact Nat.sInf_mem (s := {j | m ≤ pullCount A a (j + 1) ω}) h_exists
· intro n hn h_contra
refine hn.not_ge ?_
exact csInf_le (by simp) (by simp [h_contra])Dependency graph
Type dependencies (2)
stepsUntil🔗
Learning.stepsUntil
Number of steps until action a was pulled exactly m times.
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
pullCount🔗
Learning.pullCount
Number of times action a was chosen up to time t (excluding t).
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))
Actions: Source · Open Issue