The push case of the anchoring theorem
ProvedKServer.anchor_push_caseLet be the anchored Coester--Koutsoupias potential of a -server instance ending with the request , in the antipodal extension of a bounded space. Suppose the anchored triple resolves in its first slot: either (the anchor's server resolves) or (its antipodal companion resolves). Then
Role
This is the terminal move of the case analysis behind Theorem 23 of Coester and Koutsoupias: whenever the current minimising triple resolves through its first anchor (or through that anchor's antipode --- the two cases are interchangeable because the first two summands of the anchored potential are symmetric in ), the potential at is dominated, and the pushing lemma relocates from the first slot to the last, possibly transposing and . Applied to a minimising triple it exhibits the potential's minimum at a triple ending with the request --- the anchoring premise from which the update property, and hence -competitiveness, follows.
About the proof
Step one dominates by : the first summands trade places using the resolution hypothesis, and a single Lipschitz move ( at cost in the original case, at cost in the antipodal case) bounds the second summand; the last two summands are common. Step two is the published first-slot pushing lemma, its remainder-level disjunction upgraded to the full anchored potentials by permutation invariance of the first summand. No tree structure is used.
import Mathlib import Definitions.Def_KServer_workfunctionU import Definitions.Def_KServer_antipodal_extension import Definitions.Def_KServer_ck_potential
namespace KServer
theorem anchor_push_case (M : Type) [MetricSpace M] (Δ : ℝ) (hΔ0 : 0 < Δ)
(hΔ : ∀ u v : M, dist u v ≤ Δ) (C₀ : Config 3 M) (σ : List M) (r a b c : M)
(h : @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inl a, Sum.inl b, Sum.inl c]
= @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inl r, Sum.inl b, Sum.inl c]
+ dist a r
∨ @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inr a, Sum.inl b, Sum.inl c]
= @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inl r, Sum.inl b, Sum.inl c]
+ (2 * Δ - dist a r)) :
ckPotAt M Δ hΔ0 hΔ C₀ (σ ++ [r]) b c r ≤ ckPotAt M Δ hΔ0 hΔ C₀ (σ ++ [r]) a b c
∨ ckPotAt M Δ hΔ0 hΔ C₀ (σ ++ [r]) c b r ≤ ckPotAt M Δ hΔ0 hΔ C₀ (σ ++ [r]) a b c := by sorry
end KServer