Reference · Signed rationals
rainbow.math.rational.signed.lp-certificate-reflect
LP optimality certificates by reflection over finite row and column lists. The Boolean checker decides primal feasibility, dual feasibility, both nonnegativity conditions and the signed-equivalence objective gap. Its native, axiom-free soundness theorem applies the existing list-quantified LP theorem. A concrete certificate needs one theorem application and a true-reflexivity witness; the kernel computes the checker on the supplied data. The application still contains that data, so total proof size is not independent of the input.
lp/all-at-most-decide
lp/all-at-most-decide.{u} :
(A : Type u) (f g : A → ℚ) (x₁ : List A)
→ data/BoolList = data/Listℚ = signed/SignedRational
lp/certificate-check
lp/certificate-check.{u} :
(A B : Type u) (M : A → B → ℚ) (b : A → ℚ) (c x : B → ℚ) (y : A → ℚ) (rows : List A)
(cols : List B)
→ data/BoolList = data/Listℚ = signed/SignedRational
lp/all-at-most-decide-sound
lp/all-at-most-decide-sound.{u} :
(A : Type u) (f g : A → ℚ) (xs : List A)
(h₁ : lp/all-at-most-decide A f g xs = data/true)
→ ∀ i ∈ xs, f i ≤ g i= = equality/EqList = data/Listℚ = signed/SignedRational∀ i ∈ xs, f i ≤ g i = signed/all-at-most: the bound at every listed index
lp/certificate-check-sound
lp/certificate-check-sound.{u} :
(A B : Type u) (M : A → B → ℚ) (b : A → ℚ) (c x : B → ℚ) (y : A → ℚ) (rows : List A)
(cols : List B)
(checked : lp/certificate-check A B M b c x y rows cols = data/true)
(candidate : B → ℚ)
(candidate-feasible : ∀ i ∈ rows, Σ j∈cols, M i j · candidate j ≤ b i)
(candidate-nonnegative : ∀ i ∈ cols, 0 ≤ candidate i)
→ Σ j∈cols, c j · candidate j ≤ Σ j∈cols, c j · x j0 = signed/zero= = equality/EqList = data/List· = signed/multiplyΣ = signed/map-sum: sum over the listed indicesℚ = signed/SignedRational∀ i ∈ xs, f i ≤ g i = signed/all-at-most: the bound at every listed index≤ = signed/at-most