Reference · Lemmas behind operations-research checks
rainbow.math.lemmas.ncyc-infeasible
General lemmas: ncyc infeasible. The mathematical facts the corresponding checks rest on, each checked by the kernel.
signed/ncyc-term-split
signed/ncyc-term-split : (b w pu pv : ℚ) → b · (w + (pu + signed/negate pv)) = b · w + (pu · b + signed/negate (b · pv))
+ = signed/add= = signed/equivalent: equality of rational values· = signed/multiplyℚ = signed/SignedRational
signed/ncyc-outer-split
signed/ncyc-outer-split : (a w pu qb : ℚ) → a · (w + (pu + signed/negate qb)) = a · w + (a · pu + signed/negate (a · qb))
+ = signed/add= = signed/equivalent: equality of rational values· = signed/multiplyℚ = signed/SignedRational
signed/ncyc-rearrange
signed/ncyc-rearrange : (w qa qb : ℚ) (h : 0 ≤ w + (qa + signed/negate qb)) → qb + signed/negate qa ≤ w
+ = signed/add0 = signed/zeroℚ = signed/SignedRational≤ = signed/at-most
signed/ncyc-edge-slack
signed/ncyc-edge-slack : (pu pv w : ℚ) (h : pv ≤ pu + w) → 0 ≤ w + (pu + signed/negate pv)
+ = signed/add0 = signed/zeroℚ = signed/SignedRational≤ = signed/at-most
signed/expr-sum-value-telescope
signed/expr-sum-value-telescope : (q : ℕ → ℚ) (L : ℕ) → signed/expr-sum-value (fun tq => q (data/succ tq) + signed/negate (q tq)) L = q L + signed/negate (q 0)
+ = signed/add= = signed/equivalent: equality of rational valuesℕ = data/Natℚ = signed/SignedRational
signed/one-hot-step-potential-bound
signed/one-hot-step-potential-bound : (a b : ℕ → ℚ) (W E : ℕ → ℕ → ℚ) (p : ℕ → ℚ) (n : ℕ) (ha0 : ∀ (idx : ℕ), ∀ (bound : nat/strict-below idx n), 0 ≤ a idx) (hb0 : ∀ (idx : ℕ), ∀ (bound : nat/strict-below idx n), 0 ≤ b idx) (ha1 : signed/expr-sum-value (fun sa => a sa) n = 1) (hb1 : signed/expr-sum-value (fun sb => b sb) n = 1) (hE : ∀ (eu : ℕ), ∀ (eu-lt : nat/strict-below eu n), ∀ (ev : ℕ), ∀ (ev-lt : nat/strict-below ev n), E eu ev · (1 + signed/negate (E eu ev)) = 0) (hstep : signed/expr-sum-value (fun su => a su · signed/expr-sum-value (fun sv => b sv · E su sv) n) n = 1) (hpot : ∀ (pu : ℕ), ∀ (pu-lt : nat/strict-below pu n), ∀ (pv : ℕ), ∀ (pv-lt : nat/strict-below pv n), ∀ (pe : E pu pv = 1), p pv ≤ p pu + W pu pv) → signed/expr-sum-value (fun qu => b qu · p qu) n + signed/negate (signed/expr-sum-value (fun qu => a qu · p qu) n) ≤ signed/expr-sum-value (fun su => a su · signed/expr-sum-value (fun sv => b sv · W su sv) n) n
+ = signed/add0 = signed/zero1 = signed/one= = signed/equivalent: equality of rational values· = signed/multiplyℕ = data/Natℚ = signed/SignedRational≤ = signed/at-most
signed/closed-walk-potential-nonnegative
signed/closed-walk-potential-nonnegative : (P W E : ℕ → ℕ → ℚ) (p : ℕ → ℚ) (n L : ℕ) (hP0 : ∀ (ht : ℕ), ∀ (ht-lt : nat/strict-below ht (data/succ L)), ∀ (hu : ℕ), ∀ (hu-lt : nat/strict-below hu n), 0 ≤ P ht hu) (hrow : ∀ (idx : ℕ), ∀ (bound : nat/strict-below idx (data/succ L)), signed/expr-sum-value (fun rw => P idx rw) n = 1) (hclose : ∀ (idx : ℕ), ∀ (bound : nat/strict-below idx n), P L idx = P 0 idx) (hE : ∀ (eu : ℕ), ∀ (eu-lt : nat/strict-below eu n), ∀ (ev : ℕ), ∀ (ev-lt : nat/strict-below ev n), E eu ev · (1 + signed/negate (E eu ev)) = 0) (hstep : ∀ (idx : ℕ), ∀ (bound : nat/strict-below idx L), signed/expr-sum-value (fun su => (fun rw => P idx rw) su · signed/expr-sum-value (fun sv => (fun rw => P (data/succ idx) rw) sv · E su sv) n) n = 1) (hpot : ∀ (pu : ℕ), ∀ (pu-lt : nat/strict-below pu n), ∀ (pv : ℕ), ∀ (pv-lt : nat/strict-below pv n), ∀ (pe : E pu pv = 1), p pv ≤ p pu + W pu pv) → 0 ≤ signed/expr-sum-value (fun wt => signed/expr-sum-value (fun su => (fun rw => P wt rw) su · signed/expr-sum-value (fun sv => (fun rw => P (data/succ wt) rw) sv · W su sv) n) n) L
+ = signed/add0 = signed/zero1 = signed/one= = signed/equivalent: equality of rational values· = signed/multiplyℕ = data/Natℚ = signed/SignedRational≤ = signed/at-most