Learning.stepsUntil_eq_zero_iff
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_zero_iff🔗
Learning.stepsUntil_eq_zero_iffNo docstring.
Learning.stepsUntil_eq_zero_iff.{u_1, u_3} {𝓐 : Type u_1} {Ω : Type u_3} [DecidableEq 𝓐] {A : ℕ → Ω → 𝓐} {a : 𝓐} {m : ℕ} {ω : Ω} : stepsUntil A a m ω = 0 ↔ m = 0 ∧ A 0 ω ≠ a ∨ m = 1 ∧ A 0 ω = aLearning.stepsUntil_eq_zero_iff.{u_1, u_3} {𝓐 : Type u_1} {Ω : Type u_3} [DecidableEq 𝓐] {A : ℕ → Ω → 𝓐} {a : 𝓐} {m : ℕ} {ω : Ω} : stepsUntil A a m ω = 0 ↔ m = 0 ∧ A 0 ω ≠ a ∨ m = 1 ∧ A 0 ω = a
Code
lemma stepsUntil_eq_zero_iff :
stepsUntil A a m ω = 0 ↔ (m = 0 ∧ A 0 ω ≠ a) ∨ (m = 1 ∧ A 0 ω = a)Type uses (1)
Body uses (6)
Used by (3)
Actions: Source · Open Issue
Proof
by
classical
refine ⟨fun h' ↦ ?_, fun h' ↦ ?_⟩
· have h_exists : ∃ s, pullCount A a (s + 1) ω = m := exists_pullCount_eq (by simp [h'])
simp only [stepsUntil_eq_dite, h_exists, ↓reduceDIte, Nat.cast_eq_zero, Nat.find_eq_zero,
zero_add] at h'
rw [pullCount_one] at h'
by_cases hka : A 0 ω = a <;> simp_all
· cases h' with
| inl h =>
rw [h.1, stepsUntil_zero_of_ne h.2]
| inr h =>
rw [h.1]
exact stepsUntil_one_of_eq h.2Dependency graph
Type dependencies (1)
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
All dependencies, transitively (1)
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