Imports

29.5 Full initialized SIMPLEX

The public solver combines the auxiliary phase-I feasibility test with the restored-objective phase II. Its result type exposes exactly the three CLRS outcomes and carries a proof of each outcome.

namespace CLRSnamespace Chapter29namespace StandardLP

Certified outcomes of the complete two-phase SIMPLEX algorithm.

inductive InitializedSimplexResult (P : StandardLP m n) where | infeasible (notFeasible : ¬ x, P.IsFeasible x) | optimal (assignment : Fin n ) (isOptimal : P.IsOptimal assignment) | unbounded (isUnbounded : P.IsUnbounded)

CLRS INITIALIZE-SIMPLEX followed by finite Bland-SIMPLEX.

The initialized solver always certifies infeasibility, returns an optimal assignment, or proves the objective unbounded.

theorem initializedSimplex_complete (P : StandardLP m n) : (¬ x, P.IsFeasible x) ( x, P.IsOptimal x) P.IsUnbounded := by cases P.initializedSimplex with | infeasible h => exact Or.inl h | optimal x hx => exact Or.inr (Or.inl x, hx) | unbounded h => exact Or.inr (Or.inr h)
end StandardLPend Chapter29end CLRS