TorchLean API

NN.Proofs.RL.FiniteStochasticMDP

Finite Stochastic MDP Proofs #

This module proves the key discounted Bellman facts for TorchLean's finite stochastic MDP layer:

The setting is intentionally finite and concrete: a clean, trustworthy formal base that mirrors the standard textbook RL theory for discounted MDPs, rather than maximal generality.

References:

The sup metric on finite value tables is shared with the deterministic development rather than restated here. Proofs.RL.MDP already carries a comment saying the two developments "intentionally use the same metric", and until now that sentence was aspirational: both files defined valueSupDist and proved its two basic facts with byte-identical proofs. The layering is the one the specs already chose, since Spec.RL.FiniteStochasticMDP imports Spec.RL.MDP.

The open is fully qualified because MDP on its own is ambiguous inside this file: Spec.RL.MDP is also the name of the transition structure used throughout the theorems below.

theorem Proofs.RL.FiniteStochastic.expectedNextValue_monotone {nStates nActions : } (mdp : Spec.RL.FiniteStochastic.MDP nStates nActions) (valid : Spec.RL.FiniteStochastic.Valid mdp) (values₁ values₂ : Spec.RL.ValueFunction nStates) (hValues : ∀ (state : Fin nStates), Spec.RL.valueAt values₁ state Spec.RL.valueAt values₂ state) (state : Fin nStates) (action : Fin nActions) :

Expected next-state value is monotone in the candidate value function.

theorem Proofs.RL.FiniteStochastic.actionValue_monotone {nStates nActions : } (mdp : Spec.RL.FiniteStochastic.MDP nStates nActions) (valid : Spec.RL.FiniteStochastic.Valid mdp) (values₁ values₂ : Spec.RL.ValueFunction nStates) (hValues : ∀ (state : Fin nStates), Spec.RL.valueAt values₁ state Spec.RL.valueAt values₂ state) (state : Fin nStates) (action : Fin nActions) :
Spec.RL.FiniteStochastic.actionValue mdp values₁ state action Spec.RL.FiniteStochastic.actionValue mdp values₂ state action

Bellman state-action values are monotone in the candidate value function.

theorem Proofs.RL.FiniteStochastic.bellmanPolicy_monotone {nStates nActions : } (mdp : Spec.RL.FiniteStochastic.MDP nStates nActions) (valid : Spec.RL.FiniteStochastic.Valid mdp) (policy : Spec.RL.Policy nStates nActions) (values₁ values₂ : Spec.RL.ValueFunction nStates) (hValues : ∀ (state : Fin nStates), Spec.RL.valueAt values₁ state Spec.RL.valueAt values₂ state) (state : Fin nStates) :

Bellman expectation operators are pointwise monotone.

theorem Proofs.RL.FiniteStochastic.bellmanOptimality_monotone {nStates nActions : } [Fact (0 < nActions)] (mdp : Spec.RL.FiniteStochastic.MDP nStates nActions) (valid : Spec.RL.FiniteStochastic.Valid mdp) (values₁ values₂ : Spec.RL.ValueFunction nStates) (hValues : ∀ (state : Fin nStates), Spec.RL.valueAt values₁ state Spec.RL.valueAt values₂ state) (state : Fin nStates) :

Optimal Bellman operators are pointwise monotone.

theorem Proofs.RL.FiniteStochastic.expectedNextValue_abs_sub_le {nStates nActions : } [Fact (0 < nStates)] (mdp : Spec.RL.FiniteStochastic.MDP nStates nActions) (valid : Spec.RL.FiniteStochastic.Valid mdp) (values₁ values₂ : Spec.RL.ValueFunction nStates) (state : Fin nStates) (action : Fin nActions) :
|Spec.RL.FiniteStochastic.expectedNextValue mdp values₁ state action - Spec.RL.FiniteStochastic.expectedNextValue mdp values₂ state action| MDP.valueSupDist values₁ values₂

Coordinatewise expectation difference is bounded by the sup distance.

theorem Proofs.RL.FiniteStochastic.actionValue_abs_sub_le {nStates nActions : } [Fact (0 < nStates)] (mdp : Spec.RL.FiniteStochastic.MDP nStates nActions) (valid : Spec.RL.FiniteStochastic.Valid mdp) (values₁ values₂ : Spec.RL.ValueFunction nStates) (state : Fin nStates) (action : Fin nActions) :
|Spec.RL.FiniteStochastic.actionValue mdp values₁ state action - Spec.RL.FiniteStochastic.actionValue mdp values₂ state action| mdp.discount * MDP.valueSupDist values₁ values₂

State-action Bellman values are Lipschitz with constant γ in the sup metric.

theorem Proofs.RL.FiniteStochastic.bellmanPolicy_contraction {nStates nActions : } [Fact (0 < nStates)] (mdp : Spec.RL.FiniteStochastic.MDP nStates nActions) (valid : Spec.RL.FiniteStochastic.Valid mdp) (policy : Spec.RL.Policy nStates nActions) (values₁ values₂ : Spec.RL.ValueFunction nStates) :

Bellman expectation is a contraction with modulus γ in the sup metric:

valueSupDist (T^π values₁) (T^π values₂) ≤ γ * valueSupDist values₁ values₂.

theorem Proofs.RL.FiniteStochastic.actionValue_le_bellmanOptimality {nStates nActions : } [Fact (0 < nActions)] (mdp : Spec.RL.FiniteStochastic.MDP nStates nActions) (values : Spec.RL.ValueFunction nStates) (state : Fin nStates) (action : Fin nActions) :

Every particular action-value is bounded by Bellman optimality.

theorem Proofs.RL.FiniteStochastic.bellmanPolicy_le_bellmanOptimality {nStates nActions : } [Fact (0 < nActions)] (mdp : Spec.RL.FiniteStochastic.MDP nStates nActions) (policy : Spec.RL.Policy nStates nActions) (values : Spec.RL.ValueFunction nStates) (state : Fin nStates) :

Bellman optimality dominates Bellman evaluation under any deterministic policy.

theorem Proofs.RL.FiniteStochastic.bellmanOptimality_abs_sub_le {nStates nActions : } [Fact (0 < nStates)] [Fact (0 < nActions)] (mdp : Spec.RL.FiniteStochastic.MDP nStates nActions) (valid : Spec.RL.FiniteStochastic.Valid mdp) (values₁ values₂ : Spec.RL.ValueFunction nStates) (state : Fin nStates) :

At a fixed state, Bellman optimality is a contraction with modulus γ.

theorem Proofs.RL.FiniteStochastic.bellmanOptimality_contraction {nStates nActions : } [Fact (0 < nStates)] [Fact (0 < nActions)] (mdp : Spec.RL.FiniteStochastic.MDP nStates nActions) (valid : Spec.RL.FiniteStochastic.Valid mdp) (values₁ values₂ : Spec.RL.ValueFunction nStates) :

Bellman optimality is a contraction with modulus γ in the sup metric:

valueSupDist (T* values₁) (T* values₂) ≤ γ * valueSupDist values₁ values₂.

Contraction Iterates and Fixed Points #

The earlier theorems show that (under 0 ≤ γ < 1) the Bellman operators are γ-contractions in the sup metric (valueSupDist).

The theorems below package the standard consequences used throughout discounted-RL theory:

These statements are the formal backbone behind “value iteration converges” style arguments, and they are useful even before we prove existence of a fixed point (existence is typically obtained via a completeness argument, or via an explicit linear-system solution in the finite case).

theorem Proofs.RL.FiniteStochastic.valueSupDist_eq_zero_iff {nStates : } [Fact (0 < nStates)] (values₁ values₂ : Spec.RL.ValueFunction nStates) :
MDP.valueSupDist values₁ values₂ = 0 values₁ = values₂

valueSupDist = 0 iff two finite value functions are equal.

theorem Proofs.RL.FiniteStochastic.bellmanPolicy_iterate_contraction {nStates nActions : } [Fact (0 < nStates)] (mdp : Spec.RL.FiniteStochastic.MDP nStates nActions) (valid : Spec.RL.FiniteStochastic.Valid mdp) (policy : Spec.RL.Policy nStates nActions) (k : ) (values₁ values₂ : Spec.RL.ValueFunction nStates) :
MDP.valueSupDist ((Spec.RL.FiniteStochastic.bellmanPolicy mdp policy)^[k] values₁) ((Spec.RL.FiniteStochastic.bellmanPolicy mdp policy)^[k] values₂) mdp.discount ^ k * MDP.valueSupDist values₁ values₂

bellmanPolicy iterates are geometric contractions in valueSupDist.

theorem Proofs.RL.FiniteStochastic.bellmanPolicy_fixedPoint_unique {nStates nActions : } [Fact (0 < nStates)] (mdp : Spec.RL.FiniteStochastic.MDP nStates nActions) (valid : Spec.RL.FiniteStochastic.Valid mdp) (policy : Spec.RL.Policy nStates nActions) (v w : Spec.RL.ValueFunction nStates) (hv : Spec.RL.FiniteStochastic.bellmanPolicy mdp policy v = v) (hw : Spec.RL.FiniteStochastic.bellmanPolicy mdp policy w = w) :
v = w

If a discounted Bellman policy operator has a fixed point, it is unique.

This is the standard “contraction has at most one fixed point” argument.

theorem Proofs.RL.FiniteStochastic.bellmanPolicy_iterate_error_to_fixedPoint {nStates nActions : } [Fact (0 < nStates)] (mdp : Spec.RL.FiniteStochastic.MDP nStates nActions) (valid : Spec.RL.FiniteStochastic.Valid mdp) (policy : Spec.RL.Policy nStates nActions) (v vStar : Spec.RL.ValueFunction nStates) (hvStar : Spec.RL.FiniteStochastic.bellmanPolicy mdp policy vStar = vStar) (k : ) :

Error bound to a fixed point: iterating the Bellman policy operator reduces sup-distance geometrically (γ^k).

theorem Proofs.RL.FiniteStochastic.bellmanOptimality_iterate_contraction {nStates nActions : } [Fact (0 < nStates)] [Fact (0 < nActions)] (mdp : Spec.RL.FiniteStochastic.MDP nStates nActions) (valid : Spec.RL.FiniteStochastic.Valid mdp) (k : ) (values₁ values₂ : Spec.RL.ValueFunction nStates) :

bellmanOptimality iterates are geometric contractions in valueSupDist.

If a discounted Bellman optimality operator has a fixed point, it is unique.

This is the “contraction has at most one fixed point” argument for T*.

Error bound to a fixed point: iterating Bellman optimality reduces sup-distance geometrically.