Prove2Me
Navigate
DiscoverCollectionsFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

§2, p. 95 — (PR_λ) separates into one binary knapsack per agent

Proved
RossSolandGAP.Bound.lagrangean_separates_into_knapsacks

by mikedeng1 · Sep 27, 2026 · Mathlib 0df444a (Lean v4.33.1)

generalized-assignmentinteger-programmingknapsacklagrangean-relaxationp2o-batch-p200ap2o-gran-per-chapterp2o-plan-paperp2o-v1

Fix multipliers λj\lambda_jλj​. For every xxx the objective of (PRλ_\lambdaλ​) can be written

∑i∈I∑j∈Jcijxij+∑j∈Jλj(1−∑i∈Ixij)=∑j∈Jλj−∑i∈I∑j∈J(λj−cij)xij.\sum_{i\in I}\sum_{j\in J}c_{ij}x_{ij}+\sum_{j\in J}\lambda_j\Bigl(1-\sum_{i\in I}x_{ij}\Bigr)=\sum_{j\in J}\lambda_j-\sum_{i\in I}\sum_{j\in J}(\lambda_j-c_{ij})x_{ij}.i∈I∑​j∈J∑​cij​xij​+j∈J∑​λj​(1−i∈I∑​xij​)=j∈J∑​λj​−i∈I∑​j∈J∑​(λj​−cij​)xij​.

Moreover, a point xxx feasible for (PRλ_\lambdaλ​) is optimal for (PRλ_\lambdaλ​) if and only if, for every agent iii, the row (xij)j∈J(x_{ij})_{j\in J}(xij​)j∈J​ is optimal for agent iii's binary knapsack problem

max⁡ ∑j∈J(λj−cij)vjs.t.∑j∈Jrijvj≤bi,vj∈{0,1}.\max\ \sum_{j\in J}(\lambda_j-c_{ij})v_j\quad\text{s.t.}\quad \sum_{j\in J}r_{ij}v_j\le b_i,\quad v_j\in\{0,1\}.max j∈J∑​(λj​−cij​)vj​s.t.j∈J∑​rij​vj​≤bi​,vj​∈{0,1}.

So the optimal value of (PRλ_\lambdaλ​) is ∑jλj\sum_j\lambda_j∑j​λj​ minus the sum over agents of their knapsack optima: (PRλ_\lambdaλ​) separates into a series of binary knapsack problems, one for each i∈Ii\in Ii∈I.

Formalization Note The paper writes the "equivalent form of the objective function" as ∑jλj−max⁡[∑j∑i(λj−cij)xij]\sum_j\lambda_j-\max[\sum_j\sum_i(\lambda_j-c_{ij})x_{ij}]∑j​λj​−max[∑j​∑i​(λj​−cij​)xij​]; the max⁡\maxmax belongs to the optimal value, not to the objective of a single point. The statement gives the pointwise identity and the separation of optimal solutions, which together give the optimal-value form.

Preamble
import Mathlib
import Definitions.Def_RossSolandGAP_Bound_Model
open Finset
Formal statement
namespace RossSolandGAP.Bound

theorem lagrangean_separates_into_knapsacks {m n : ℕ} (c r : Fin m → Fin n → ℝ)
    (b : Fin m → ℝ) (lam : Fin n → ℝ) :
    (∀ x, lagObj c lam x = ∑ j, lam j - ∑ i, knapObj c lam i (x i)) ∧
    ∀ x, FeasibleLag r b x →
      ((∀ x', FeasibleLag r b x' → lagObj c lam x ≤ lagObj c lam x') ↔
        ∀ i v, KnapFeasible r b i v → knapObj c lam i v ≤ knapObj c lam i (x i)) := by sorry

end RossSolandGAP.Bound
Source
Ross & Soland, A Branch and Bound Algorithm for the Generalized Assignment Problem, Mathematical Programming 8, 1975, p. 95, §2, the display after (PR_λ) and the sentence 'Thus (PR_λ) separates into a series of binary knapsack problems, one for each i ∈ I.'
Human review
  • Endorsed by Shuze Chen · Sep 27, 2026

    Confirmed by the moderator at approval.

  • Endorsed by mikedeng1 · Sep 27, 2026

    Confirmed by the mission captain (proposal self-audit).

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me