The quasiconvexity case of the anchoring theorem
ProvedKServer.anchor_quasiconvex_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 three resolutions of the final case of Coester--Koutsoupias' Theorem 23 hold: the triple resolves in its third slot (), its first-anchor antipodal companion resolves in the middle slot (), and the doubled antipode of the second anchor resolves through an antipodal server (). Then
Role
This is the last case of the case analysis behind Theorem 23 --- the one Coester and Koutsoupias close "using only quasiconvexity of ". The three resolutions rewrite all four summands of into work-function values at configurations containing the request (the fourth summand's resolution, , is forced, all three coordinates being equal), at a total additive cost of exactly . Quasiconvexity in its three-point form, with the request as the common coordinate, then exchanges the pairs and : the pairing leads to , the crossing absorbing the hybrid into ; the pairing leads to , re-using the middle-slot resolution and the Lipschitz bound . Each branch is exact up to a discarded non-negative multiple of .
Applied to the swap-symmetric minimising triple of Lemma 25, this exhibits the potential's minimum at a triple ending with the request whenever the deep case of the analysis is reached.
Formalization note
Stated in the antipodal extension on with originals embedded by Sum.inl; all distances are literal (). No tree structure is used in this case, and the conclusion is a disjunction because quasiconvexity chooses the pairing.
import Mathlib import Definitions.Def_KServer_workfunctionU import Definitions.Def_KServer_antipodal_extension import Definitions.Def_KServer_ck_potential
namespace KServer
theorem anchor_quasiconvex_case (M : Type) [MetricSpace M] (Δ : ℝ) (hΔ0 : 0 < Δ)
(hΔ : ∀ u v : M, dist u v ≤ Δ) (C₀ : Config 3 M) (σ : List M) (r x₁ x₂ x₃ : M)
(h0 : @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inl x₁, Sum.inl x₂, Sum.inl x₃]
= @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inl x₁, Sum.inl x₂, Sum.inl r]
+ dist r x₃)
(h1 : @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inr x₁, Sum.inl x₂, Sum.inl x₃]
= @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inr x₁, Sum.inl r, Sum.inl x₃]
+ dist r x₂)
(h2 : @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inr x₂, Sum.inr x₂, Sum.inl x₃]
= @workFnU 3 (M ⊕ M) (antipodalExtension M Δ hΔ0 hΔ)
(fun i => Sum.inl (C₀ i)) ((σ ++ [r]).map Sum.inl) ![Sum.inr x₂, Sum.inl r, Sum.inl x₃]
+ (2 * Δ - dist r x₂)) :
ckPotAt M Δ hΔ0 hΔ C₀ (σ ++ [r]) x₂ x₃ r ≤ ckPotAt M Δ hΔ0 hΔ C₀ (σ ++ [r]) x₁ x₂ x₃
∨ ckPotAt M Δ hΔ0 hΔ C₀ (σ ++ [r]) x₁ x₃ r ≤ ckPotAt M Δ hΔ0 hΔ C₀ (σ ++ [r]) x₁ x₂ x₃ := by sorry
end KServer