Definition · The basis matrixFor a standard-form programme with coefficient matrix A and a basis whose columns, in row order, are B(1), …, B(m), the basis matrix B is the m × m matrix whose i-th column is column B(i) of A. It is invertible, which is part of what it means to be a basis.
Theorem · Every tableau is the original data times one matrixThe tableau at basis B has body B⁻¹[A | b] and objective row c_BᵀB⁻¹[A | b] - [c | 0], where c_B is the vector of objective coefficients of the basic variables in row order. In particular the right-hand column is B⁻¹b and the reduced cost of column j is c_BᵀB⁻¹A_j - c_j.
Each elementary row operation on a matrix is left multiplication by an invertible matrix, and a pivot is a composition of finitely many of them. So the tableau body after any run of pivots is M[A | b] for a single invertible M, because a product of invertible matrices is invertible.
The tableau is held so that the basic columns form the identity: the columns of M A indexed by the basis are I. Those columns of A are B by definition, so M B = I and therefore M = B⁻¹. The objective row is the same argument on the extra equation: it starts as -[c | 0] and each pivot adds multiples of body rows to it until the basic columns read zero, which is exactly the combination c_BᵀB⁻¹[A | b].
□
Two consequences follow at once. A tableau is not a degraded copy of the data — it is B⁻¹ times the data, recoverable from A, b and a list of column indices. And every entry of it is a ratio of determinants of submatrices of the original data, by Cramer’s rule, so the denominators never grow beyond what the numbers you typed can produce, however many pivots it takes.
The three products, on a programme with a requirement row
Take maximise 3x₁ + 2x₂ subject to x₁ + x₂ ≤ 4 (capacity) and x₁ + 3x₂ ≥ 6 (a contract). The ≥ row gets a surplus e₂ with column -1 and an artificial a₂ with column +1, so the columns are x₁, x₂, s₁, e₂, a₂ and the starting identity is {s₁, a₂}. The method finishes at the basis {x₁, x₂}.
original data
x1 x2 s1 e2 a2 | b
A 1 1 1 0 0 | 4
1 3 0 -1 1 | 6
c 3 2 0 0 0
final tableau, basis {x1, x2}
x1 x2 s1 e2 a2 | rhs
x1 1 0 3/2 1/2 -1/2 | 3
x2 0 1 -1/2 -1/2 1/2 | 1
z 0 0 7/2 1/2 -1/2 | 11
B = the x1 and x2 columns of the ORIGINAL A B⁻¹
[ 1 1 ] [ 3/2 -1/2 ]
[ 1 3 ] [ -1/2 1/2 ]
B⁻¹A = [ 1 0 3/2 1/2 -1/2 ] B⁻¹b = [ 3 ]
[ 0 1 -1/2 -1/2 1/2 ] [ 1 ]
c_B = (3, 2) c_BᵀB⁻¹ = (7/2, -1/2)
c_BᵀB⁻¹A - c = (0, 0, 7/2, 1/2, -1/2)
all three products agree with the tableau, entry for entry
Now the misreading. B⁻¹ is [[3/2, -1/2], [-1/2, 1/2]], and it appears in the final tableau under the columns s₁ and a₂ — the two that started as the identity. The slack and surplus columns are s₁ and e₂, and e₂’s column is (1/2, -1/2), which is the negative of B⁻¹’s second column, because A’s surplus column is the negative of its artificial column. Read B⁻¹ out of the slack and surplus columns and you get a matrix whose determinant has the wrong sign.
Example · The caps-only case, where the slogan happens to be trueOn maximise 3x₁ + 5x₂ with x₁ ≤ 4, 2x₂ ≤ 12 and 3x₁ + 2x₂ ≤ 18, all three rows are ≤ rows, the three slacks are the starting identity, and the final tableau really does hold B⁻¹ under s₁, s₂, s₃: [[1, 1/3, -1/3], [0, 1/2, 0], [0, -1/3, 1/3]] against a basis matrix built from the s₁, x₂ and x₁ columns of the original A.
Every example a reader is likely to have met is of this kind, which is why the slogan survives. It stops being true at the first ≥ row, and it also stops being true after a first phase of “Artificial Variables and Two-Phase Simplex”, where the starting identity contains artificials by construction.
One detail of the requirement-row tableau is worth explaining rather than passing over: the reduced cost of a₂ is -1/2, which is negative in an optimal tableau. That column is an artificial, dropped after the first phase and barred from re-entering, so it is not a candidate and the optimality test does not apply to it. Its entry is still a perfectly meaningful number — it is the second component of c_BᵀB⁻¹.
The product that is a second answer
c_BᵀB⁻¹ is (7/2, -1/2) here, and those two numbers are sitting in the objective row under the columns that started as the identity. They are the solution of a second linear programme built from the same data, they say what one more unit of each right-hand side would be worth, and finding them already computed in a row you have been carrying since the first pivot is the whole opening of Duality and Sensitivity Analysis.