Skip to content
Rainbow docs menu

Reference · Finite types, distributions and Markov chains

rainbow.math.finite.async-value-iteration

Finite types, distributions and Markov chainssrc/rainbow/math/finite/async_value_iteration.clj2 definitions, 6 theorems

Asynchronous (Gauss-Seidel) finite Bellman value iteration. The Bellman optimality operator is exactly the one proved for D22 finite value iteration; the only new content is a pluggable state-selection strategy. A `choose?` predicate delegates, per state, whether this stroke applies the optimality backup (selected states) or preserves the previous value (non-selected states). Bounded asynchronous iteration folds a schedule of such selectors over Nat recursion, so the selection order is a first-class strategy rather than a fixed synchronous sweep.

value/nnrat-async-update

DefinitionSource, line 102

value/nnrat-async-update.{u, v} :
  (S : Type u) (A : Type v) (actions : Finset A) (fallback : S → A)
  (backup : (S → ℚ≥0) → S → A → ℚ≥0) (choose : S → data/Bool) (value : S → ℚ≥0) (x₁ : S)
  → ℚ≥0

Finset = finset-data/Finsetℚ≥0 = nnrat/NonnegativeRational

value/nnrat-async-iterate

DefinitionSource, line 120

value/nnrat-async-iterate.{u, v} :
  (S : Type u) (A : Type v) (actions : Finset A) (fallback : S → A)
  (backup : (S → ℚ≥0) → S → A → ℚ≥0) (schedule : ℕ → S → data/Bool) (x₁ : ℕ)
  (x₂ : S → ℚ≥0) (x₃ : S)
  → ℚ≥0

Finset = finset-data/Finsetℕ = data/Natℚ≥0 = nnrat/NonnegativeRational

value/nnrat-async-update-selected

TheoremFor all inputsNo axiomsSource, line 148

value/nnrat-async-update-selected.{u, v} :
  (S : Type u) (A : Type v) (actions : Finset A) (fallback : S → A)
  (backup : (S → ℚ≥0) → S → A → ℚ≥0) (choose : S → data/Bool) (value : S → ℚ≥0)
  (state : S)
  (selected : choose state = data/true)
  → value/nnrat-async-update S A actions fallback backup choose value state = value/nnrat-optimality-step S A actions fallback backup value state

= = equality/EqFinset = finset-data/Finsetℚ≥0 = nnrat/NonnegativeRational

value/nnrat-async-update-preserved

TheoremFor all inputsNo axiomsSource, line 178

value/nnrat-async-update-preserved.{u, v} :
  (S : Type u) (A : Type v) (actions : Finset A) (fallback : S → A)
  (backup : (S → ℚ≥0) → S → A → ℚ≥0) (choose : S → data/Bool) (value : S → ℚ≥0)
  (state : S)
  (non-selected : choose state = data/false)
  → value/nnrat-async-update S A actions fallback backup choose value state = value state

= = equality/EqFinset = finset-data/Finsetℚ≥0 = nnrat/NonnegativeRational

value/nnrat-async-iterate-zero

TheoremHolds by unfolding a definitionNo axiomsSource, line 210

value/nnrat-async-iterate-zero.{u, v} :
  (S : Type u) (A : Type v) (actions : Finset A) (fallback : S → A)
  (backup : (S → ℚ≥0) → S → A → ℚ≥0) (schedule : ℕ → S → data/Bool) (initial : S → ℚ≥0)
  (state : S)
  → value/nnrat-async-iterate S A actions fallback backup schedule 0 initial state = initial state

= = equality/EqFinset = finset-data/Finsetℕ = data/Natℚ≥0 = nnrat/NonnegativeRational

value/nnrat-async-iterate-successor

TheoremFor all inputsNo axiomsSource, line 235

value/nnrat-async-iterate-successor.{u, v} :
  (S : Type u) (A : Type v) (actions : Finset A) (fallback : S → A)
  (backup : (S → ℚ≥0) → S → A → ℚ≥0) (schedule : ℕ → S → data/Bool) (steps : ℕ)
  (initial : S → ℚ≥0)
  → iterate (data/succ steps) initial = (fun step-index => fun previous => value/nnrat-async-update S A actions fallback backup (schedule step-index) previous) steps (iterate steps initial)
  where iterate := value/nnrat-async-iterate S A actions fallback backup schedule

= = equality/EqFinset = finset-data/Finsetℕ = data/Natℚ≥0 = nnrat/NonnegativeRational

value/nnrat-async-update-selected-dominates

TheoremFor all inputsNo axiomsSource, line 254

value/nnrat-async-update-selected-dominates.{u, v} :
  (S : Type u) (A : Type v) (actions : Finset A) (fallback : S → A)
  (backup : (S → ℚ≥0) → S → A → ℚ≥0) (choose : S → data/Bool) (value : S → ℚ≥0)
  (state : S)
  (selected : choose state = data/true)
  (candidate : A)
  (candidate-member : candidate ∈ actions)
  → backup value state candidate ≤ value/nnrat-async-update S A actions fallback backup choose value state

= = equality/EqFinset = finset-data/Finsetℚ≥0 = nnrat/NonnegativeRational∈ = finset-data/to-set: membership in a finite set≤ = nnrat/at-most

value/nnrat-async-state-schedule-transfer

TheoremFor all inputsNo axiomsSource, line 301

value/nnrat-async-state-schedule-transfer.{u, v} :
  (S : Type u) (A : Type v) (actions : Finset A) (fallback : S → A)
  (backup : (S → ℚ≥0) → S → A → ℚ≥0) (value : S → ℚ≥0)
  (left-schedule right-schedule : S → data/Bool) (left-state right-state : S)
  (left-selected : left-schedule left-state = data/true)
  (right-selected : right-schedule right-state = data/true)
  → proposition/conjunction (update₁ = step₃) (update = step)
  where step := value/nnrat-optimality-step S A actions fallback backup value right-state
  where step₃ := value/nnrat-optimality-step S A actions fallback backup value left-state
  where update := value/nnrat-async-update S A actions fallback backup right-schedule value right-state
  where update₁ := value/nnrat-async-update S A actions fallback backup left-schedule value left-state

= = equality/EqFinset = finset-data/Finsetℚ≥0 = nnrat/NonnegativeRational