Reference · Non-negative rationals
rainbow.math.rational.nnrat.farkas-elim-list
List-sized one-variable Fourier--Motzkin elimination over nnrat bounds. Lower bounds are folded from zero with max, while the non-empty upper family is represented by a head and a list tail. The reduced system says that the folded lower bound satisfies every upper bound. Constructively, this is equivalent to existence of a value satisfying every lower and upper bound. All definitions and proofs are native proof data and axiom-free.
nnrat/ge-all
nnrat/ge-all : (x₁ : List ℚ≥0) (x₂ : ℚ≥0) → Prop
List = data/Listℚ≥0 = nnrat/NonnegativeRational
nnrat/le-all
nnrat/le-all : (x₁ : ℚ≥0) (x₂ : List ℚ≥0) (x₃ : ℚ≥0) → Prop
List = data/Listℚ≥0 = nnrat/NonnegativeRational
nnrat/max-lb
nnrat/max-lb : (x₁ : List ℚ≥0) → ℚ≥0
List = data/Listℚ≥0 = nnrat/NonnegativeRational
nnrat/min-ub
nnrat/min-ub : (x₁ : ℚ≥0) (x₂ : List ℚ≥0) → ℚ≥0
List = data/Listℚ≥0 = nnrat/NonnegativeRational
nnrat/farkas-elim-list-reduced
nnrat/farkas-elim-list-reduced : (x₁ : List ℚ≥0) (x₂ : ℚ≥0) (x₃ : List ℚ≥0) → Prop
List = data/Listℚ≥0 = nnrat/NonnegativeRational
nnrat/farkas-elim-list-solvable
nnrat/farkas-elim-list-solvable : (x₁ : List ℚ≥0) (x₂ : ℚ≥0) (x₃ : List ℚ≥0) → Prop
List = data/Listℚ≥0 = nnrat/NonnegativeRational
nnrat/zero-at-most
nnrat/zero-at-most : (value : ℚ≥0) → 0 ≤ value
0 = nnrat/zeroℚ≥0 = nnrat/NonnegativeRational≤ = nnrat/at-most
nnrat/max-lb-is-upper
nnrat/max-lb-is-upper : (lowers : List ℚ≥0) → nnrat/ge-all lowers (nnrat/max-lb lowers)
List = data/Listℚ≥0 = nnrat/NonnegativeRational
nnrat/max-lb-least
nnrat/max-lb-least : (lowers : List ℚ≥0) (value : ℚ≥0) (all : nnrat/ge-all lowers value) → nnrat/max-lb lowers ≤ value
List = data/Listℚ≥0 = nnrat/NonnegativeRational≤ = nnrat/at-most
nnrat/le-all-antitone
nnrat/le-all-antitone : (u0 : ℚ≥0) (urest : List ℚ≥0) (a b : ℚ≥0) (a-b : a ≤ b) (all-b : nnrat/le-all u0 urest b) → nnrat/le-all u0 urest a
List = data/Listℚ≥0 = nnrat/NonnegativeRational≤ = nnrat/at-most
nnrat/min-ub-is-lower
nnrat/min-ub-is-lower : (u0 : ℚ≥0) (urest : List ℚ≥0) → nnrat/le-all u0 urest (nnrat/min-ub u0 urest)
List = data/Listℚ≥0 = nnrat/NonnegativeRational
nnrat/min-ub-greatest
nnrat/min-ub-greatest : (u0 : ℚ≥0) (urest : List ℚ≥0) (value : ℚ≥0) (all : nnrat/le-all u0 urest value) → value ≤ nnrat/min-ub u0 urest
List = data/Listℚ≥0 = nnrat/NonnegativeRational≤ = nnrat/at-most
nnrat/farkas-elim-list-extends
nnrat/farkas-elim-list-extends : (lowers : List ℚ≥0) (u0 : ℚ≥0) (urest : List ℚ≥0) (reduced-feasible : nnrat/farkas-elim-list-reduced lowers u0 urest) → nnrat/farkas-elim-list-solvable lowers u0 urest
List = data/Listℚ≥0 = nnrat/NonnegativeRational
nnrat/farkas-elim-list-projects
nnrat/farkas-elim-list-projects : (lowers : List ℚ≥0) (u0 : ℚ≥0) (urest : List ℚ≥0) (solution : nnrat/farkas-elim-list-solvable lowers u0 urest) → nnrat/farkas-elim-list-reduced lowers u0 urest
List = data/Listℚ≥0 = nnrat/NonnegativeRational
nnrat/farkas-elim-list-solvable-iff
nnrat/farkas-elim-list-solvable-iff : (lowers : List ℚ≥0) (u0 : ℚ≥0) (urest : List ℚ≥0) → proposition/conjunction (reduced → solvable) (solvable → reduced) where reduced := nnrat/farkas-elim-list-reduced lowers u0 urest where solvable := nnrat/farkas-elim-list-solvable lowers u0 urest
List = data/Listℚ≥0 = nnrat/NonnegativeRational