Imports

29.1 Standard/slack feasibility equivalence

This module proves the exact semantic bridge Ax ≤ b ↔ ∃ s ≥ 0, Ax + s = b for nonnegative decision variables. The slack vector is uniquely determined by the decision assignment.

Main results:

  • isFeasible_iff_exists_slackExtension.

  • slackExtension_eq_slack.

  • existsUnique_slackExtension_iff.

namespace CLRSnamespace Chapter29namespace StandardLP

Eliminating nonnegative slack variables recovers primal feasibility.

theorem feasible_of_slackExtension {m n : } {P : StandardLP m n} {x : Fin n } {s : Fin m } (hxs : P.IsSlackExtension x s) : P.IsFeasible x := by refine hxs.1, ?_ intro i have hs : 0 s i := hxs.2.1 i have heq := hxs.2.2 i linarith

Standard-form feasibility is equivalent to the existence of a nonnegative slack vector satisfying the equality system.

theorem isFeasible_iff_exists_slackExtension {m n : } (P : StandardLP m n) {x : Fin n } : P.IsFeasible x s, P.IsSlackExtension x s := by constructor · intro hx exact P.slack x, slackExtension_of_feasible hx · rintro s, hxs exact feasible_of_slackExtension hxs

Every slack extension equals the canonical vector b - Ax.

theorem slackExtension_eq_slack {m n : } {P : StandardLP m n} {x : Fin n } {s : Fin m } (hxs : P.IsSlackExtension x s) : s = P.slack x := by funext i have heq := hxs.2.2 i simp only [slack] linarith

A standard-form assignment is feasible exactly when it has a unique nonnegative slack extension.

theorem existsUnique_slackExtension_iff {m n : } (P : StandardLP m n) {x : Fin n } : P.IsFeasible x ∃! s, P.IsSlackExtension x s := by constructor · intro hx refine P.slack x, slackExtension_of_feasible hx, ?_ intro s hxs exact slackExtension_eq_slack hxs · rintro s, hxs, _ exact feasible_of_slackExtension hxs
end StandardLPend Chapter29end CLRS