Lemma 3.3 — deleting elements at most preserves (and likewise for BFD)
ProvedBinPacking.Decreasing.delete_small_itemsapproximation-algorithmsbin-packingp2o-batch-p100ap2o-gran-per-chapterp2o-plan-paperp2o-v1
Let be a list of real numbers in , let and be real numbers, and let be the list obtained from by deleting all elements not exceeding , i.e. keeping exactly the elements with (in their original order).
- If , then .
- If , then .
In symbols, for ,
With one has , so a counterexample to Theorem 3.2 would survive the deletion of all elements at most ; the lemma reduces Theorem 3.2 to lists contained in .
Preamble
import Mathlib import Definitions.Def_BinPacking_Decreasing_Model
Formal statement
namespace BinPacking.Decreasing
/-- Lemma 3.3 (p. 309): if `FFD(L) > r L* + d` with `r, d ≥ 1`, then the list `L'` obtained
from `L` by deleting all elements not exceeding `(r − 1)/r` also has `FFD(L') > r L'* + d`;
the same holds with BFD in place of FFD. -/
theorem delete_small_items (L : List ℝ) (hL : IsList L) (r d : ℝ) (hr : 1 ≤ r) (hd : 1 ≤ d) :
((FFD L : ℝ) > r * (optBins L : ℝ) + d →
(FFD (L.filter (fun a => decide ((r - 1) / r < a))) : ℝ) >
r * (optBins (L.filter (fun a => decide ((r - 1) / r < a))) : ℝ) + d) ∧
((BFD L : ℝ) > r * (optBins L : ℝ) + d →
(BFD (L.filter (fun a => decide ((r - 1) / r < a))) : ℝ) >
r * (optBins (L.filter (fun a => decide ((r - 1) / r < a))) : ℝ) + d) := by sorry
end BinPacking.Decreasing
Source
Johnson, Demers, Ullman, Garey, Graham, Worst-Case Performance Bounds for Simple One-Dimensional Packing Algorithms, SIAM J. Comput. 3(4) (1974), p. 309, Lemma 3.3
Read-back
What the Lean code literally says, in plain math · claude-opus-5-5
Notation:
- is a list of reals with every entry in .
- and are real numbers with and .
- is the sublist of that keeps, in their original order, exactly the entries with . It deletes every entry .
- is the least number of unit-capacity bins into which the entries of can be assigned with every bin sum .
- is the number of bins produced by first-fit applied to sorted into nonincreasing order. First-fit processes the items in that order and puts each into the lowest-indexed existing bin whose current sum plus the item is , opening a new bin otherwise.
- is defined the same way, except that each item goes into the fullest existing bin that still fits it (ties broken by lowest index), opening a new bin otherwise.
The statement asserts both of the following implications:
Degenerate cases:
- . The threshold is , so and both implications are trivially true.
- Empty . , and is false, so both implications hold vacuously.
- Division. No division by zero occurs, because .
- Parameters. and are arbitrary reals, not required to be integers.
Human review
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.