Exact Primal Accounting Identity
ProvedPrimalDual.buchbinder_naor_primal_objective_identityAfter a successful prefix of jobs of the normalized Buchbinder–Naor load-balancing algorithm — the failure marker is unset — the covering-primal objective of the current state satisfies the exact identity
where denotes the current machine weights and the sums over range over all machines.
The identity replaces the source's asymptotic accounting with an exact equation: since every machine weight is positive, it forces as soon as some weight exceeds , which is exactly what the failure certificate needs. It corresponds to the primal-objective calculation in the proof of Theorem 8.1, Claim (2).
Formalization Note The objective on the left is the full finite-LP objective, so it also sums the slacks of jobs with indices ; along the algorithm's run these remain , so the identity coincides with the source's prefix objective.
import Definitions.Def_pd_unrelated_machines open scoped BigOperators
namespace PrimalDual
/--
The telescoping identity used in the failure argument. For a successful prefix
of `k` jobs, `P = 1 + k - sum_j x(j)` exactly (not asymptotically).
-/
theorem buchbinder_naor_primal_objective_identity
{jobs machines : ℕ} (I : UnrelatedMachines.Instance jobs machines)
(k : ℕ) (hk : k ≤ jobs)
(hNoFailure : (I.runPrefix k).failedAt = none) :
I.primalObjectiveThrough k (I.runPrefix k) =
1 + (k : ℝ) - ∑ j, (I.runPrefix k).weight j := by
sorry
end PrimalDualRead-back
What the Lean code literally says, in plain math · gpt-5
For all natural numbers and , every instance consisting of a proof , a real load for every and , and proofs that all these loads are nonnegative, and every with , let be the state denoted by , expanded as follows: start from the state having for every machine, every assignment equal to , every slack and dual entry equal to , and failure field ; form the arrival list , whose entries are all elements of in order, take its first entries, and recursively process them, retaining the next-state component of each process output (the accompanying decision is the next state’s assignment at the current arrival). For a current state and arriving job , if for some , the next state is unchanged; if , put , and if or there exists with , keep every field of except set ; otherwise, take the list obtained by sorting by the natural order and apply to , setting only if this returns no machine, while if it returns , writing and , update the weight at to , the assignment at to , the slack at to , and the dual entry to , leave all other corresponding entries unchanged, and set the failure field to . Assuming the resulting state satisfies the explicit no-failure hypothesis , the declaration asserts that the left-hand quantity —expanded as the finite-program objective , where and , hence exactly —is equal, in this direction, to ; the slack sum on the left ranges over every job, not merely indices below , and all displayed quantities and the numeral in the equality are real, with explicitly coerced from to and likewise coerced in the initial weight. The binders allow and (and is forced when ); then the processed prefix is empty, , and the sum over jobs is the empty sum . They do not allow , because the instance contains , so the initial division is not by zero. More generally, finite sums over empty index types have value , cannot exceed the arrival-list length because of , and the equality is asserted only when the terminal no-failure equation is available; if that hypothesis cannot hold for particular data, there is no applicable case of the assertion for those data.
Confirmed by the mission captain (proposal self-audit).