Reference · Finite sums
rainbow.math.sums.flow-cut
General lemmas: flow cut. The mathematical facts the corresponding checks rest on, each checked by the kernel.
signed/expr-sum-value-rectangular
signed/expr-sum-value-rectangular : (F : ℕ → ℚ) (n m : ℕ) → signed/expr-sum-value F (nat/multiply m n) = signed/expr-sum-value (fun i => signed/expr-sum-value (fun j => F (algebra/nat-add j (nat/multiply i n))) n) m
= = signed/equivalent: equality of rational valuesℕ = data/Natℚ = signed/SignedRational
signed/expr-sum-value-head-tail
signed/expr-sum-value-head-tail : (F : ℕ → ℚ) (n : ℕ) → signed/expr-sum-value F (data/succ n) = F 0 + signed/expr-sum-value (fun i => F (data/succ i)) n
+ = signed/add= = signed/equivalent: equality of rational valuesℕ = data/Natℚ = signed/SignedRational
signed/zero-one-of-boolean-polynomial
signed/zero-one-of-boolean-polynomial : (x : ℚ) (boolean : x · (1 + signed/negate x) = 0) → proposition/disjunction (x = 0) (x = 1)
+ = signed/add0 = signed/zero1 = signed/one= = signed/equivalent: equality of rational values· = signed/multiplyℚ = signed/SignedRational
signed/expr-sum-value-subtract
signed/expr-sum-value-subtract : (F G : ℕ → ℚ) (n : ℕ) → signed/expr-sum-value (fun i => F i + signed/negate (G i)) n = signed/expr-sum-value F n + signed/negate (signed/expr-sum-value G n)
+ = signed/add= = signed/equivalent: equality of rational valuesℕ = data/Natℚ = signed/SignedRational
signed/expr-sum-weighted-divergence
signed/expr-sum-weighted-divergence : (F : ℕ → ℕ → ℚ) (S : ℕ → ℚ) (n : ℕ) → signed/expr-sum-value (fun i => S i · (signed/expr-sum-value (fun column-index => F i column-index) n + signed/negate (signed/expr-sum-value (fun row-index => F row-index i) n))) n = signed/expr-sum-value (fun i => signed/expr-sum-value (fun column-index => (fun i₁ => fun j => (S i₁ + signed/negate (S j)) · F i₁ j) i column-index) n) n
+ = signed/add= = signed/equivalent: equality of rational values· = signed/multiplyℕ = data/Natℚ = signed/SignedRational
signed/expr-sum-conservation-boundary
signed/expr-sum-conservation-boundary : (S D : ℕ → ℚ) (m : ℕ) (source : S 0 = 1) (sink : S (data/succ m) = 0) (internal : ∀ (idx : ℕ), ∀ (bound : nat/strict-below idx m), D (data/succ idx) = 0) → signed/expr-sum-value (fun i => S i · D i) (data/succ (data/succ m)) = D 0
0 = signed/zero1 = signed/one= = signed/equivalent: equality of rational values· = signed/multiplyℕ = data/Natℚ = signed/SignedRational
signed/flow-cut-edge-bound
signed/flow-cut-edge-bound : (a b flow capacity : ℚ) (a-bit : a · (1 + signed/negate a) = 0) (b-bit : b · (1 + signed/negate b) = 0) (nonnegative : 0 ≤ flow) (capacity-bound : flow ≤ capacity) → (a + signed/negate b) · flow ≤ a · (1 + signed/negate b) · capacity
+ = signed/add0 = signed/zero1 = signed/one= = signed/equivalent: equality of rational values· = signed/multiplyℚ = signed/SignedRational≤ = signed/at-most
signed/expr-sum-flow-cut-weak-duality
signed/expr-sum-flow-cut-weak-duality : (F C : ℕ → ℕ → ℚ) (S : ℕ → ℚ) (m : ℕ) (nonnegative : ∀ (u : ℕ), ∀ (hu : nat/strict-below u (data/succ (data/succ m))), ∀ (v : ℕ), ∀ (hv : nat/strict-below v (data/succ (data/succ m))), 0 ≤ F u v) (capacity : ∀ (u : ℕ), ∀ (hu : nat/strict-below u (data/succ (data/succ m))), ∀ (v : ℕ), ∀ (hv : nat/strict-below v (data/succ (data/succ m))), F u v ≤ C u v) (conservation : ∀ (idx : ℕ), ∀ (bound : nat/strict-below idx m), signed/expr-sum-value (fun column-index => F (data/succ idx) column-index) (data/succ (data/succ m)) + signed/negate (signed/expr-sum-value (fun row-index => F row-index (data/succ idx)) (data/succ (data/succ m))) = 0) (bits : ∀ (idx : ℕ), ∀ (bound : nat/strict-below idx (data/succ (data/succ m))), S idx · (1 + signed/negate (S idx)) = 0) (source : S 0 = 1) (sink : S (data/succ m) = 0) → signed/expr-sum-value (fun column-index => F 0 column-index) (data/succ (data/succ m)) + signed/negate (signed/expr-sum-value (fun row-index => F row-index 0) (data/succ (data/succ m))) ≤ signed/expr-sum-value (fun i => signed/expr-sum-value (fun column-index => (fun i₁ => fun j => S i₁ · (1 + signed/negate (S j)) · C i₁ j) i column-index) (data/succ (data/succ m))) (data/succ (data/succ m))
+ = signed/add0 = signed/zero1 = signed/one= = signed/equivalent: equality of rational values· = signed/multiplyℕ = data/Natℚ = signed/SignedRational≤ = signed/at-most
signed/expr-sum-flat-cut-as-matrix
signed/expr-sum-flat-cut-as-matrix : (C S : ℕ → ℚ) (n : ℕ) → signed/expr-sum-value (fun e => S (nat/row-of n e) · (1 + signed/negate (S (nat/col-of n e))) · C e) (nat/multiply n n) = signed/expr-sum-value (fun i => signed/expr-sum-value (fun column-index => (fun i₁ => fun j => S i₁ · (1 + signed/negate (S j)) · (fun i₂ => fun j₁ => C (algebra/nat-add j₁ (…⟨1⟩ …⟨1⟩ …⟨1⟩))) i₁ j) i column-index) n) n
+ = signed/add1 = signed/one= = signed/equivalent: equality of rational values· = signed/multiplyℕ = data/Natℚ = signed/SignedRational