Anchored potential shift: for
ProvedKServer.ckPotAtK_snoc_of_anchor_lastLet be a metric space, let bound all its distances, and let be the antipodal extension of at scale , in which every point has an antipode with . Fix servers with initial configuration in , write for the unordered work function of the instance evaluated in , and write
for the anchored Coester--Koutsoupias potential of the anchor tuple (KServer.ckPotAtK).
Statement. For every request sequence , every request and every anchor tuple whose last coordinate is the request, ,
In words: serving shifts the anchored potential of every anchor tuple ending at by exactly the growth of the work function at the coalesced antipode of , which is the quantity appearing on the left of the Coester--Koutsoupias step inequality.
The reason is that among the configurations occurring in , all but the last contain the base point itself: the base configuration has , and for the configuration retains the coordinate . A configuration that already occupies the requested point has an unchanged work function after that request, since the work function is monotone under appending a request and the optimal schedule may stop at that configuration. The remaining configuration, the one with index , is , whose value grows by the stated amount.
Formalization note. The last coordinate is the index of Fin k, whose bound follows from ; requests are carried into by List.map Sum.inl and the antipode of is Sum.inr r.
import Mathlib import Definitions.Def_KServer_ck_potential_k
namespace KServer
theorem ckPotAtK_snoc_of_anchor_last (k : ℕ) (hk : 1 ≤ k) (M : Type) [MetricSpace M]
(Δ : ℝ) (hΔ0 : 0 < Δ) (hΔ : ∀ x y : M, dist x y ≤ Δ) (C₀ : Config k M)
(l : List M) (r : M) (x : Fin k → M) (hx : x ⟨k - 1, by omega⟩ = r) :
ckPotAtK k M Δ hΔ0 hΔ C₀ (l ++ [r]) x - ckPotAtK k M Δ hΔ0 hΔ C₀ l x
= @workFnU k (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ) (fun i => Sum.inl (C₀ i))
((l ++ [r]).map Sum.inl) (fun _ => Sum.inr r)
- @workFnU k (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ) (fun i => Sum.inl (C₀ i))
(l.map Sum.inl) (fun _ => Sum.inr r) := by sorry
end KServer