delpi
Verified Linear Programming through Tolerance-Aware Precision Boosting
VSTTE 2026
Bits of computer architecture
Computers use bits to store data, including numbers.
Floating point
0.2,−42.42,100.10
Rationals
21,−43,33
We only have a finite number of bits.
101+102=103
0.1+0.2=0.3
31+32=1
0.3333…+0.6666…=1.0?
Motivation
Standard linear program (LP)
min{c⊤x∣Ax=b, x≥0}
with A∈Qm×n, b∈Qm, c∈Qn.
- Linear Programming is a core component of:
- Optimization
- SMT Solving
- Program Analysis
- Numerical errors undermine soundness.
- Commercial floating-point LP solvers can produce incorrect results.
Solutions
- Rational arithmetic
- Easy to implement, exactness guarantee.
- Slow and memory-intensive.
- Iterative refinement (SoPlex1)
- Generally faster.
- Can struggle with numerical issues.
- Precision boosting (QSopt_ex2)
- Can solve difficult LPs.
- Limited theoretical justification.
[1] A. Gleixner, D. Steffy, K. Wolter (2016), Iterative Refinement for Linear Programming
[2] D. L. Applegate, W. Cook, S. Dash, D. G. Espinoza (2009), QSopt_ex Rational LP Solver
Goal
Loading diagram...
IEEE 754 Standard
Modern computers implement the IEEE 754 standard3 for floating-point arithmetic.
Floating-point number=±m⋅βe−t
where β is the base, t is the precision, m is the integer significand and e is the exponent.
Loading diagram...
[3] IEEE (2019) IEEE Standard for Floating-Point Arithmetic
Operations with floating-point numbers
The IEEE 754 standard provides the following guarantees for floating-point operations:
flϵ(x⊙y)=(x⊙y)(1+ε)±1with ∣ε∣≤ϵ.
where ϵ is the unit roundoff (2−53≈1.1×10−16 for double precision) and flϵ(x⊙y) is the floating-point computation of x⊙y.
Any operation can introduce an error.
Error analysis
Error analysis is the study of how floating-point computations affect our results.
Forward error analysis VS Backward error analysis4.
[4] N. J. Higham (2002), Accuracy and Stability of Numerical Algorithms
Ensuring backward stability in the simplex
Given an initial sequence of indices B1,B2,…,Bm corresponding to the columns of A, at each iteration:
- Construct the basis: B=[A:,B1A:,B2…A:,Bm]
- Compute primal vector: xB=B−1b
- Compute dual vector: y=B−TcB
- Evaluate reduced costs: r=c−A⊤y
- Determine entering variable.
- Determine leaving variable: d=B−1A:,e.
- Pivot and update basis.
Bartels-Golub update
After the initial LU decomposition of B, the factor U is updated5:
U(i)
H(i+1)
U(i+1)
[5] R. H. Bartels (1971), A Stabilization of the Simplex Method
Error analysis
In the backward-error analysis formulation,
(B(i)+E(i))x=b,x,b∈Qm,
we find that
∥E(i)∥1=O(ϵ).
As long as the number of iterations is limited, the backward error is reasonably bounded.
Variable precision floating-point simplex
Loading diagram...
Characteristic constants
For a given input A, b, and c, we can define the following constants:
- rmax− is the maximum negative across all reduced costs;
- dmin+ is the minimum positive element across all ds;
- umin1∼2 is the smallest difference between the two smallest distinct values of u=xB/d across all bases.
Computing them directly would require exploring all the possible bases.
Convergence of precision boosting
If (1) and (2) hold, then the floating-point simplex makes the same decisions as the exact rational simplex.
(1)τ<−rmax−/2τ<dmin+/2τ<umin1∼2
(2)∥εr∥1≤τ∥εd∥1≤τ∥εu∥1≤min(τ,umin1∼2−τ)/2
Delta-optimality
Theorem
Given δ>0, a δ-complete LP algorithm returns exactly one of the following:
- δ-optimal: iff it produces a δ-optimal certificate (xU,yL) such that 0≤c⊤xU−b⊤yL≤δ;
- infeasible: iff the LP is infeasible;
- unbounded: iff the LP is unbounded.
If δ=0, then the algorithm is exact.
Precision boosting simplex
Loading diagram...
Delpi
- Delta-complete Exact Linear ProgrammIng framework:
Delpi.
- C++ library with python interface.
QSopt_ex as a basis.
- Implements the δ-complete procedure.
- Can interface with
SoPlex.
Future Work
- Integration into SMT solvers (work in progress!)
- Stronger practical heuristics for choosing tolerances
- Extensions to MILP
References
- IEEE (2019) IEEE Standard for Floating-Point Arithmetic
- R. H. Bartels (1971), A Stabilization of the Simplex Method
- N. J. Higham (2002), Accuracy and Stability of Numerical Algorithms
- D. L. Applegate, W. Cook, S. Dash, D. G. Espinoza (2007), Exact Solutions to Linear Programming Problems
- R. Wunderling (1996), Paralleler und objektorientierter simplex-algorithmusr
- A. Gleixner, D. Steffy, K. Wolter (2016), Iterative Refinement for Linear Programming
- A. Gleixner, D. Steffy (2019), Limited-Precision LP Oracles
- L. Eifler, J. Nicolas-Thouvenin, A. Gleixner (2024), Combining Precision Boosting with LP Iterative Refinement
- N. J. A. Sloane, J. Stufken (1996), A linear programming bound for orthogonal arrays with mixed levels
- D. L. Applegate, W. Cook, S. Dash, D. G. Espinoza (2009), QSopt_ex Rational LP Solver
Thank you!