OAI/Combinatorics/UniformKServer/FourierMotzkin.lean
43 declarations, 0 contain sorry, 0 declared as axioms
- structure
OAI.UniformKServer.FourierMotzkin.Rowline 7 - def
OAI.UniformKServer.FourierMotzkin.Row.evalline 14 - def
OAI.UniformKServer.FourierMotzkin.Row.tailline 17 - def
OAI.UniformKServer.FourierMotzkin.Row.scaleline 20 - def
OAI.UniformKServer.FourierMotzkin.Row.subline 23 - def
OAI.UniformKServer.FourierMotzkin.Row.boundline 26 - theorem
OAI.UniformKServer.FourierMotzkin.Row.eval_scaleline 32 - theorem
OAI.UniformKServer.FourierMotzkin.Row.eval_subline 40 - theorem
OAI.UniformKServer.FourierMotzkin.Row.eval_consline 46 - theorem
OAI.UniformKServer.FourierMotzkin.Row.eval_boundline 51 - theorem
OAI.UniformKServer.FourierMotzkin.Row.eval_rat_castline 58 - theorem
OAI.UniformKServer.FourierMotzkin.Row.negative_iffline 64 - theorem
OAI.UniformKServer.FourierMotzkin.Row.positive_iffline 71 - theorem
OAI.UniformKServer.FourierMotzkin.Row.zero_iffline 79 - def
OAI.UniformKServer.FourierMotzkin.lowerline 86 - def
OAI.UniformKServer.FourierMotzkin.upperline 89 - def
OAI.UniformKServer.FourierMotzkin.independentline 92 - def
OAI.UniformKServer.FourierMotzkin.projectline 95 - def
OAI.UniformKServer.FourierMotzkin.Satisfiesline 98 - theorem
OAI.UniformKServer.FourierMotzkin.satisfies_cons_iffline 104 - theorem
OAI.UniformKServer.FourierMotzkin.satisfies_project_iffline 138 - theorem
OAI.UniformKServer.FourierMotzkin.project_of_satisfiesline 157 - def
OAI.UniformKServer.FourierMotzkin.highline 166 - def
OAI.UniformKServer.FourierMotzkin.lowline 168 - theorem
OAI.UniformKServer.FourierMotzkin.high_le_iffline 170 - theorem
OAI.UniformKServer.FourierMotzkin.le_low_iffline 181 - def
OAI.UniformKServer.FourierMotzkin.intervalPivotline 192 - def
OAI.UniformKServer.FourierMotzkin.pivotline 201Source documentation
Reversing one elimination. With no lower bound choose the least upper bound; with no bounds choose zero, exactly as in the source.
def pivot {n : ℕ} {K : Type*} [Field K] [LinearOrder K] (R : List (Row (n+1))) (x : Fin n → K) : K := …Mentions: OAI.UniformKServer.FourierMotzkin.Row
- theorem
OAI.UniformKServer.FourierMotzkin.pivot_boundsline 206 - theorem
OAI.UniformKServer.FourierMotzkin.satisfies_pivotline 225 - theorem
OAI.UniformKServer.FourierMotzkin.project_iff_existsline 243Source documentation
Exact existential projection over either ℚ or ℝ; no strict-inequality relaxation and no compactness or attainment assumption.
theorem project_iff_exists {n : ℕ} {K : Type*} [Field K] [LinearOrder K] [IsStrictOrderedRing K] (R : List (Row (n+1))) (x : Fin n → K) : Satisfies (project R) x ↔ ∃ z, Satisfies R (Fin.cons z x) := by …Mentions: OAI.UniformKServer.FourierMotzkin.Row, OAI.UniformKServer.FourierMotzkin.Satisfies, OAI.UniformKServer.FourierMotzkin.project
- def
OAI.UniformKServer.FourierMotzkin.objectiveline 254Source documentation
The objective is the final coordinate, retained through every projection.
def objective {n : ℕ} {K : Type*} (x : Fin (n+1) → K) : K := x (Fin.last n) - def
OAI.UniformKServer.FourierMotzkin.baseValueline 256 - def
OAI.UniformKServer.FourierMotzkin.optimizeline 261Source documentation
Exact rational arithmetic and comparisons only. The nonnegative objective constraint is imposed by the base case even if not listed among the rows.
def optimize : (n : ℕ) → List (Row (n+1)) → Option (Fin (n+1) → ℚ) | 0, R => let x := Fin.cons (baseValue R) Fin.elim0 …Mentions: OAI.UniformKServer.FourierMotzkin.Row, OAI.UniformKServer.FourierMotzkin.baseValue
- theorem
OAI.UniformKServer.FourierMotzkin.high_rat_castline 267 - theorem
OAI.UniformKServer.FourierMotzkin.eval_emptyline 273 - theorem
OAI.UniformKServer.FourierMotzkin.one_consline 276 - theorem
OAI.UniformKServer.FourierMotzkin.baseValue_nonnegline 282 - theorem
OAI.UniformKServer.FourierMotzkin.baseValue_minimalline 285 - theorem
OAI.UniformKServer.FourierMotzkin.baseValue_feasibleline 296 - theorem
OAI.UniformKServer.FourierMotzkin.objective_consline 316 - theorem
OAI.UniformKServer.FourierMotzkin.objective_tailline 319 - theorem
OAI.UniformKServer.FourierMotzkin.optimize_rational_attainmentline 325Source documentation
The exact finite rational optimizer succeeds whenever the rational rows have a real feasible point with nonnegative objective; its rational output is feasible and minimizes the objective against every such real point.
theorem optimize_rational_attainment (n : ℕ) (R : List (Row (n+1))) (H : ∃ y : Fin (n+1) → ℝ, 0 ≤ objective y ∧ Satisfies R y) : ∃ x : Fin (n+1) → ℚ, optimize n R = some x ∧ 0 ≤ objective x ∧ Satisfies R x ∧ ∀ y : Fin (n+1) → ℝ, 0 ≤ objective y → Satisfies R y → ((objective x : ℚ) : ℝ) ≤ objective y := by …Mentions: OAI.UniformKServer.FourierMotzkin.Row, OAI.UniformKServer.FourierMotzkin.objective, OAI.UniformKServer.FourierMotzkin.Satisfies, OAI.UniformKServer.FourierMotzkin.optimize