Lemma 3.3 — a chain of prediction-based evictions has length at most
ProvedCachingML.PredMarker.chainLen_le_one_add_spreadLet , let be a loss function, and let be concave on , continuous at from the right, and an upper bound for the spread: for every the spread is finite and . Run Predictive Marker with cache size and any admissible tie-breaking rule on a request sequence with predictions . Then on every possible outcome of the run, for every phase and every chain of that phase whose evictions were all prediction-based (no random eviction of line 21),
where is the length of the chain and the cumulative error of the predictor on the elements evicted into it.
This is the robustness core of the analysis: as long as a chain follows the predictions, its length is controlled by the error the predictor made on that chain alone.
Formalization Note The paper states the bound for "the expected length of any chain" with the spread itself. Its proof treats chains that evict by the predictions only, and shows the bound on every outcome; this is what is stated, while chains that switch to random evictions are covered by Lemma 3.4. The spread is replaced by a concave majorant , as in Theorem 3.3. Continuity of at is an added hypothesis: for a loss whose minimal reversed-order loss stays over several lengths (for instance when and otherwise), while a chain can have several zero-error prediction-based evictions, so the bound fails for a majorant with that jumps up right after . Continuity at excludes this; on a concave function is continuous anyway. Chains that do not exist have length .
import Mathlib import Definitions.Def_CachingML_PredMarker_spread import Definitions.Def_CachingML_PredMarker_predictiveMarker
namespace CachingML.PredMarker
/-- Lemma 3.3 of Lykouris–Vassilvitskii (arXiv:1802.05399v4, p. 15), in the pointwise form its proof
establishes: on every outcome of a run of Predictive Marker, every chain `(r, c)` that made no random
eviction has length `n(r, c) ≤ 1 + S(η_{r,c})`, for any concave `S` on `[0, ∞)`, continuous at `0`, that
bounds the spread of the loss `ℓ` from above. -/
theorem chainLen_le_one_add_spread {α : Type*} [DecidableEq α] (k : ℕ) (hk : 1 ≤ k)
(ℓ : ℝ → ℝ → ℝ) (hℓ : ∀ a b, 0 ≤ ℓ a b)
(S : ℝ → ℝ) (hSconc : ConcaveOn ℝ (Set.Ici 0) S)
(hScont : ContinuousWithinAt S (Set.Ici 0) 0)
(hspread : ∀ m : ℝ, 0 ≤ m → ∃ t : ℕ, spread ℓ m = t ∧ (t : ℝ) ≤ S m)
(tb : PMState α → α) (htb : IsMaxTieBreak tb)
(σ : List α) (h : Fin σ.length → ℝ)
(s : PMState α) (hs : s ∈ (run k tb σ h).support) (r c : ℕ) (hc : (r, c) ∉ s.randomChains) :
(s.chainLen r c : ℝ) ≤ 1 + S (chainError ℓ σ h s r c) := by sorry
end CachingML.PredMarker
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.