Learning.action_stepsUntil
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.
action_stepsUntil๐
Learning.action_stepsUntilNo docstring.
Learning.action_stepsUntil.{u_1, u_3} {๐ : Type u_1} {ฮฉ : Type u_3} [DecidableEq ๐] {A : โ โ ฮฉ โ ๐} {a : ๐} {m : โ} {ฯ : ฮฉ} (hm : m โ 0) (h_exists : โ s, pullCount A a (s + 1) ฯ = m) : A (ENat.toNat (stepsUntil A a m ฯ)) ฯ = aLearning.action_stepsUntil.{u_1, u_3} {๐ : Type u_1} {ฮฉ : Type u_3} [DecidableEq ๐] {A : โ โ ฮฉ โ ๐} {a : ๐} {m : โ} {ฯ : ฮฉ} (hm : m โ 0) (h_exists : โ s, pullCount A a (s + 1) ฯ = m) : A (ENat.toNat (stepsUntil A a m ฯ)) ฯ = a
Code
lemma action_stepsUntil (hm : m โ 0) (h_exists : โ s, pullCount A a (s + 1) ฯ = m) :
A (stepsUntil A a m ฯ).toNat ฯ = aType uses (2)
Used by (1)
Actions: Source ยท Open Issue
Proof
by
classical
simp only [stepsUntil_eq_dite, h_exists, โreduceDIte, ENat.toNat_coe]
have h_spec := Nat.find_spec h_exists
have h_spec' n := Nat.find_min h_exists (m := n)
by_cases h_zero : Nat.find h_exists = 0
ยท simp only [h_zero, zero_add, not_lt_zero, IsEmpty.forall_iff, implies_true] at *
by_contra h_ne
rw [โ zero_add 1, pullCount_eq_pullCount_of_action_ne h_ne] at h_spec
simp only [pullCount_zero] at h_spec
exact hm h_spec.symm
have h_pos : 0 < Nat.find h_exists := Nat.pos_of_ne_zero h_zero
by_contra h_ne
refine h_spec' (Nat.find h_exists - 1) ?_ ?_
ยท simp [h_pos]
rw [Nat.sub_add_cancel (by omega)]
rwa [โ pullCount_eq_pullCount_of_action_ne]
exact h_neDependency graph
Type dependencies (2)
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
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