Pushing the request from the first anchor slot to the last
ProvedKServer.potential_push_firstLet be the work function of a -server instance ending with the request , in the antipodal extension of a bounded metric space. The anchored potential has a common first summand for all orderings of a fixed triple, so comparing anchored potentials over reorderings compares the last three summands. The theorem states, in that reduced form: for any ,
the request can be pushed from the first anchor slot to the last, at the price of possibly transposing the other two anchors. Together with the middle-slot push this completes Lemma 21 of Coester and Koutsoupias for : the minimum of the potential over orderings of a fixed anchor triple containing is attained with last. (Remarkably, this pushing lemma is false for ; it is the step that confines the potential method, in this form, to three servers.)
Structure of the proof
The configuration resolves. If a -server resolves (cost ), a single Lipschitz move lands the first three summands on those of , and the middle-slot push finishes.
If instead resolves, the all-antipodes value of expands exactly (, the resolution being forced), and the resolution dichotomy for --- such a configuration always resolves through one of its original servers --- splits the argument. If it resolves from , quasiconvexity of the work function applied to the pair with the request as common point, followed by the Lipschitz bound , closes the first disjunct; if from , the mirror argument with closes the second. Each branch is a linear assembly of the substituted identities.
Role
In the case analysis of Theorem 23 (WFA is -competitive on trees), whenever the minimising anchor triple resolves from its first or second anchor, the analysis produces an anchored potential with in the first slot; this lemma relocates to the last slot, which is the form the update property of the potential consumes. No tree structure is used --- resolution, quasiconvexity, Lipschitzness, and the antipodal distance algebra suffice.
import Mathlib import Definitions.Def_KServer_workfunctionU import Definitions.Def_KServer_antipodal_extension
namespace KServer
theorem potential_push_first (M : Type) [MetricSpace M] (Δ : ℝ) (hΔ0 : 0 < Δ)
(hΔ : ∀ u v : M, dist u v ≤ Δ) (C₀ : Config 3 M) (σ : List M) (r y z : M) :
(@workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inr y, Sum.inl z, Sum.inl r]
+ @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inr z, Sum.inr z, Sum.inl r]
+ @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inr r, Sum.inr r, Sum.inr r]
≤ @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inr r, Sum.inl y, Sum.inl z]
+ @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inr y, Sum.inr y, Sum.inl z]
+ @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inr z, Sum.inr z, Sum.inr z])
∨ (@workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inr z, Sum.inl y, Sum.inl r]
+ @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inr y, Sum.inr y, Sum.inl r]
+ @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inr r, Sum.inr r, Sum.inr r]
≤ @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inr r, Sum.inl y, Sum.inl z]
+ @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inr y, Sum.inr y, Sum.inl z]
+ @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inr z, Sum.inr z, Sum.inr z]) := by sorry
end KServer