The Coester--Koutsoupias potential for servers
DefinitionKServer_ck_potential_kThe Coester–Koutsoupias potential for servers, in the general- form of which KServer.ckPot is the instance.
Let be a metric space, let bound all distances of , and let be the antipodal extension of at scale (KServer.antipodalExtension), in which every point has an antipode with for all . Fix an initial configuration of servers and a request sequence , both drawn from , and let
be the unordered work function of the instance, evaluated in .
Anchored potential. For anchors ,
where denotes servers coalesced on the antipode of . The terms interpolate between the all-original configuration and the fully coalesced antipodal configuration .
Potential. For finite ,
the minimum of the anchored potential over all -tuples of anchors of the base space.
This is the potential proposed by Coester and Koutsoupias as a unifying route to the -server conjecture: the conjecture follows from the assertion that, at every request, the increase of dominates the increase of the work function at the coalesced configuration on the antipode of that request, together with the bound .
Formalization Note ckConfigK x i is the anchor configuration indexed by i : Fin k, i.e. the -st term above: coordinates carry Sum.inr (x i) (the antipode of the anchor in 1-based notation) and coordinates carry Sum.inl (x j). ckPotAtK is the anchored potential and ckPotK the minimum over anchors, taken as an iInf over Fin k → M, which is a genuine minimum because M is a Fintype. Specializing to k = 3 recovers KServer.ckPotAt and KServer.ckPot verbatim.
import Mathlib
import Definitions.Def_KServer_workfunctionU
import Definitions.Def_KServer_antipodal_extension
namespace KServer
/-- The `i`-th **anchor configuration** of the Coester–Koutsoupias potential, for anchors
`x₁ … x_k` of the base space `M` and `i : Fin k`: the configuration of the antipodal
extension `M ⊕ M` whose first `i+1` servers all sit on the antipode of the anchor `xᵢ`,
and whose remaining servers sit on the anchors `x_{i+1}, …, x_k` themselves. -/
def ckConfigK {k : ℕ} {M : Type} (x : Fin k → M) (i : Fin k) : Config k (M ⊕ M) :=
fun j => if (j : ℕ) ≤ (i : ℕ) then Sum.inr (x i) else Sum.inl (x j)
/-- The **anchored Coester–Koutsoupias potential** for `k` servers: for anchors
`x₁ … x_k` of the base space,
`Φ_{x₁ … x_k}(w) = w(x₁ … x_k) + Σ_{i=1}^{k} w(x̄ᵢ^i x_{i+1} … x_k)`,
where `w` is the work function of the instance `(C₀, σ)` evaluated in the antipodal
extension `M ⊕ M` and `x̄` denotes the antipode of `x`. -/
noncomputable def ckPotAtK (k : ℕ) (M : Type) [MetricSpace M] (Δ : ℝ) (hΔ0 : 0 < Δ)
(hΔ : ∀ x y : M, dist x y ≤ Δ) (C₀ : Config k M) (σ : List M) (x : Fin k → M) : ℝ :=
@workFnU k (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) (σ.map Sum.inl) (fun j => Sum.inl (x j))
+ ∑ i : Fin k, @workFnU k (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) (σ.map Sum.inl) (ckConfigK x i)
/-- The **Coester–Koutsoupias potential** for `k` servers: the minimum of the anchored
potential over all `k`-tuples of anchors from the base space. -/
noncomputable def ckPotK (k : ℕ) (M : Type) [MetricSpace M] [Fintype M] (Δ : ℝ) (hΔ0 : 0 < Δ)
(hΔ : ∀ x y : M, dist x y ≤ Δ) (C₀ : Config k M) (σ : List M) : ℝ :=
⨅ x : Fin k → M, ckPotAtK k M Δ hΔ0 hΔ C₀ σ x
theorem ckPotK_le (k : ℕ) (M : Type) [MetricSpace M] [Fintype M] (Δ : ℝ) (hΔ0 : 0 < Δ)
(hΔ : ∀ x y : M, dist x y ≤ Δ) (C₀ : Config k M) (σ : List M) (x : Fin k → M) :
ckPotK k M Δ hΔ0 hΔ C₀ σ ≤ ckPotAtK k M Δ hΔ0 hΔ C₀ σ x :=
ciInf_le (Finite.bddBelow_range _) x
theorem exists_ckPotK_eq (k : ℕ) (M : Type) [MetricSpace M] [Fintype M] [Nonempty M] (Δ : ℝ)
(hΔ0 : 0 < Δ) (hΔ : ∀ x y : M, dist x y ≤ Δ) (C₀ : Config k M) (σ : List M) :
∃ x : Fin k → M, ckPotK k M Δ hΔ0 hΔ C₀ σ = ckPotAtK k M Δ hΔ0 hΔ C₀ σ x := by
obtain ⟨x, hx⟩ :=
exists_eq_ciInf_of_finite (f := fun x : Fin k → M => ckPotAtK k M Δ hΔ0 hΔ C₀ σ x)
exact ⟨x, hx.symm⟩
end KServer