Prove2Me
Navigate
DiscoverFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Proposition 3 — a fractional basic solution of Aλ=1A\lambda = \mathbf 1Aλ=1, λ≥0\lambda \ge \mathbf 0λ≥0 covers some pair of rows fractionally

Proved
Lubbecke2005.RyanFoster.exists_fractional_row_pair

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

branch-and-pricecolumn-generationp2o-batch-p200bp2o-gran-per-chapterp2o-plan-paperp2o-v1set-partitioning

This is the Ryan–Foster lemma behind branch-and-price for set-partitioning problems.

Let A=(arj)∈{0,1}m×∣J′∣A = (a_{rj}) \in \{0,1\}^{m \times |J'|}A=(arj​)∈{0,1}m×∣J′∣ be a 0/10/10/1 matrix with rows {1,…,m}\{1, \dots, m\}{1,…,m} and columns indexed by a finite set J′J'J′. Let λ∈RJ′\lambda \in \mathbb R^{J'}λ∈RJ′ be a basic feasible solution of the system

Aλ=1,λ≥0,A\lambda = \mathbf 1, \qquad \lambda \ge \mathbf 0,Aλ=1,λ≥0,

in the sense of Bertsimas and Tsitsiklis (Definition 2.9): λ\lambdaλ satisfies all constraints, and among the constraints active at λ\lambdaλ (all mmm equality rows, and those λj≥0\lambda_j \ge 0λj​≥0 with λj=0\lambda_j = 0λj​=0) there are ∣J′∣|J'|∣J′∣ linearly independent ones. Suppose λ\lambdaλ is fractional, λ∉{0,1}∣J′∣\lambda \notin \{0,1\}^{|J'|}λ∈/{0,1}∣J′∣. Then there exist rows r,s∈{1,…,m}r, s \in \{1, \dots, m\}r,s∈{1,…,m} such that

0<∑j∈J′arj asj λj<1.0 < \sum_{j \in J'} a_{rj}\, a_{sj}\, \lambda_j < 1 .0<j∈J′∑​arj​asj​λj​<1.

For r=sr = sr=s the sum is the row sum ∑jarjλj=1\sum_j a_{rj}\lambda_j = 1∑j​arj​λj​=1, so the two rows found are necessarily distinct. The pair (r,s)(r, s)(r,s) is what Ryan–Foster branching branches on: one branch requires the rows to be covered by the same column (the sum equals 111), the other by two distinct columns (the sum equals 000), and the current fractional solution satisfies neither. The paper states the proposition and attributes it to Ryan and Foster (1981) without proof.

Formalization Note The paper writes "i.e., λ∉{0,1}m\lambda \notin \{0,1\}^mλ∈/{0,1}m"; since λ\lambdaλ has one coordinate per column, this statement reads it as λ∉{0,1}∣J′∣\lambda \notin \{0,1\}^{|J'|}λ∈/{0,1}∣J′∣ (a typo correction). "Basic solution" is not defined in the paper; it is read as the textbook notion for the standard-form system, via the platform definitions LinearOptimization.stdFormSystem and LinearOptimization.IsBasicFeasibleSolution, which need no full-row-rank assumption on AAA. The solution is any fractional basic solution, not necessarily an optimal one. Rows are Fin m, columns Fin n, AAA is a real matrix with the 0/10/10/1 property as a hypothesis, and the quantity is pairCover A lam r s. For m=0m = 0m=0 or n=0n = 0n=0 no fractional basic solution exists, so the statement is vacuous there, as on the page.

Preamble
import Mathlib
import Definitions.Def_ActiveConstraints
import Definitions.Def_BasicSolution
import Definitions.Def_Lubbecke2005_RyanFoster_SetPartitioning

open Matrix
Formal statement
namespace Lubbecke2005.RyanFoster

/-- **Proposition 3** (Lübbecke–Desrosiers 2005, §7.3, p. 1020; Ryan and Foster 1981).
Let `A` be an `m × n` matrix with entries in `{0, 1}` (the columns are indexed by
`J′ = Fin n`) and let `λ` be a basic feasible solution of the standard-form system
`Aλ = 𝟏, λ ⩾ 𝟎` (Bertsimas–Tsitsiklis Definition 2.9) which is fractional, i.e.
`λ ∉ {0, 1}^{|J′|}` (the paper's `{0, 1}^m` is a typo: `λ` has one coordinate per
column). Then some rows `r, s` satisfy `0 < ∑_j a_rj a_sj λ_j < 1`. -/
theorem exists_fractional_row_pair {m n : ℕ} (A : Matrix (Fin m) (Fin n) ℝ)
    (hA : IsZeroOneMatrix A) (lam : Fin n → ℝ)
    (hbasic : LinearOptimization.IsBasicFeasibleSolution
      (LinearOptimization.stdFormSystem A (fun _ => 1)) lam)
    (hfrac : ¬ IsZeroOneVector lam) :
    ∃ r s : Fin m, 0 < pairCover A lam r s ∧ pairCover A lam r s < 1 := by sorry

end Lubbecke2005.RyanFoster
Source
Lübbecke and Desrosiers, Selected Topics in Column Generation, Operations Research 53(6), 2005, p. 1020, Proposition 3
Human review
  • Endorsed by Shuze Chen · Oct 1, 2026

    Confirmed by the moderator at approval.

  • Endorsed by mikedeng1 · Oct 1, 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