Take any plan that satisfies the primal's constraints and any set of prices that satisfies the dual's. Neither has to be optimal and neither has to have been solved for. Then write down the single number yᵀAx and read it two ways.
y'Ax = (A'y)' x ≥ c'x because A'y ≥ c and x ≥ 0
y'Ax = y' (Ax) ≤ b'y because Ax ≤ b and y ≥ 0
therefore c'x ≤ y'Ax ≤ b'y
workshop, x = (1, 1) and y = (0, 2, 1):
c'x = 3(1) + 5(1) = 8
Ax = (1, 2, 5)
y'Ax = 0(1) + 2(2) + 1(5) = 9
b'y = 4(0) + 12(2) + 18(1) = 42
8 ≤ 9 ≤ 42 gap 1 at the left link, 33 at the right
Theorem · Weak dualityIf x is feasible for the primal maximisation and y is feasible for its dual, then cᵀx ≤ bᵀy. In particular every dual-feasible y gives an upper bound on the primal optimum, and every primal-feasible x gives a lower bound on the dual optimum.
If cᵀx = bᵀy for such a pair, then x is optimal for the primal and y is optimal for the dual.
Both inequalities of the chain hold by the two sign arguments above, so cᵀx ≤ bᵀy for every feasible pair. Now suppose cᵀx = bᵀy. Any feasible x̂ satisfies cᵀx̂ ≤ bᵀy = cᵀx, so no feasible plan earns more than x does, and x is optimal. Any feasible ŷ satisfies bᵀŷ ≥ cᵀx = bᵀy, so no feasible prices value the resources below y, and y is optimal.
Note what is absent. No algorithm was run, no basis was mentioned, and nothing was assumed about how either point was obtained.
□
Example · A bound from prices nobody solved forThe bakery maximises 5x + 4y subject to 6x + 4y ≤ 24, x + 2y ≤ 6 and x + y ≥ 2. Guess the crudest prices that work: y = (1, 0, 0). Check dual feasibility — 6(1) ≥ 5 for the x column and 4(1) ≥ 4 for the y column — and the certificate is valid.
It says no plan earns more than bᵀy = 24. The plan x = (1, 1) earns 9, so the chain reads 9 ≤ 10 ≤ 24. The true optimum is 21, so the guess was not sharp; it was, nonetheless, a proved bound obtained by inspecting one column at a time.
What a gap proves, and what it does not
A chain reading 8 ≤ 9 ≤ 42 establishes that the optimum lies between 8 and 42 and says nothing at all about where. On the workshop it is 36, close to the upper end; nothing in the chain could have told you that. What the two links do give you is an account of where the gap went: 1 of it is the amount by which the prices overvalue what this plan actually consumes, and 33 of it is the amount of resource the plan leaves unused at those prices.
This is also why a gap is not evidence against either point. One end of a wide chain can already be optimal — the plan could be perfect and the prices dreadful — and the chain cannot distinguish that case from one where both are poor. Only a closed gap says anything about either point on its own.
Trying to beat the bound
The lab invites you to type a plan that earns more than the prices allow, and refuses every attempt by naming which of the two points is not feasible. That refusal is the theorem. Type x = (10, 10) against the workshop's optimal prices and the numbers do read 80 against 36 — and the panel reports that all three rows are broken, so the plan was never a candidate.
Example · Prices that are not a certificateOffer y = (0, 0, 1) for the workshop. Then bᵀy = 18, and the optimal plan (2, 6) earns 36, which is more. Weak duality has not failed: the x2 dual constraint asks for 2y2 + 2y3 ≥ 5 and these prices give 2, so y is not dual feasible and was never a certificate.
This is the check to run first and the one most often skipped. A number is a bound because its point is feasible, and feasibility is one substitution per dual constraint.
The same chain on a minimisation
Example · A certificate that bounds from belowmin 2x + 3y subject to x + y ≥ 4, x ≤ 3, y ≥ 1 has the dual max 4y1 + 3y2 + y3 subject to y1 + y2 ≤ 2, y1 + y3 ≤ 3, with y1, y3 ≥ 0 and y2 ≤ 0. At x = (3, 2) and y = (1, 0, 0) the chain reads 4 ≤ 5 ≤ 12, with the primal value at the top.
Everything has turned over: now the dual value is the lower bound and the primal value the upper one, and a certificate proves that no plan costs less than 4. The optimum is 9. A kit that had hard-coded the direction would report the wrong claim here rather than the wrong number, which is the harder failure to notice.
This one inequality reappears twice more on this path wearing different nouns. In Networks: Flows, Paths and Assignments it is the statement that any cut's capacity bounds any flow, with the cut playing the part of the prices. In Integer Programming it is the optimality gap that lets a search stop early, with the relaxation's value playing the part of bᵀy. Both of those are this chain, and both cite it.