Reference · Vectors
rainbow.math.linear.vector.row-sum-lipschitz
Nonnegative row-sum Lipschitz bounds for signed dot products. `vector/sum` specializes the existing polymorphic signed map-sum to a signed vector. Componentwise nonnegativity makes that mass nonnegative. Combining the component multiplication-distance bound with the maximum component distance and distributivity proves dot-distance-sum(row,x,y) <= sum(row) * sup-distance(x,y). The previously established dot-distance theorem then yields the same bound for the actual dot products. Equal input shape is explicit because dot and sup distance both truncate lists. Native, kernel-checked, and axiom-free on D63.
vector/sum
vector/sum : (x₁ : List ℚ) → ℚ
List = data/Listℚ = signed/SignedRational
vector/sum-nonnegative
vector/sum-nonnegative : (values : List ℚ) (positive : vector/at-most (vector/zero-like values) values) → 0 ≤ vector/sum values
0 = signed/zeroList = data/Listℚ = signed/SignedRational≤ = signed/at-most
vector/dot-distance-sum-bounded-by-row-sum
vector/dot-distance-sum-bounded-by-row-sum : (weights left right : List ℚ) (weights-positive : vector/at-most (vector/zero-like weights) weights) (shape : vector/same-shape left right) → vector/dot-distance-sum weights left right ≤ vector/sum weights · vector/sup-distance left right
List = data/List· = signed/multiplyℚ = signed/SignedRational≤ = signed/at-most
vector/dot-distance-bounded-by-row-sum
vector/dot-distance-bounded-by-row-sum : (weights left right : List ℚ) (weights-positive : vector/at-most (vector/zero-like weights) weights) (shape : vector/same-shape left right) → signed/distance (vector/dot weights left) (vector/dot weights right) ≤ vector/sum weights · vector/sup-distance left right
List = data/List· = signed/multiplyℚ = signed/SignedRational≤ = signed/at-most