Reference · Matrices
rainbow.math.linear.matrix.mixed-sign-action
Mixed-sign laws for signed dot products and native matrix action. Addition preserves upper and lower zero bounds. A nonpositive factor times a nonnegative factor is nonpositive, while two nonpositive factors have a nonnegative product. Structural dot lifts cover the three remaining sign combinations, and rowwise lifting gives the corresponding matrix-vector action laws. Theorem-only, kernel-checked, and axiom-free on D63.
signed/add-preserves-nonnegative-order
signed/add-preserves-nonnegative-order : (left right : ℚ) (left-positive : 0 ≤ left) (right-positive : 0 ≤ right) → 0 ≤ left + right
+ = signed/add0 = signed/zeroℚ = signed/SignedRational≤ = signed/at-most
signed/add-preserves-nonpositive-order
signed/add-preserves-nonpositive-order : (left right : ℚ) (left-negative : left ≤ 0) (right-negative : right ≤ 0) → left + right ≤ 0
+ = signed/add0 = signed/zeroℚ = signed/SignedRational≤ = signed/at-most
signed/multiply-nonpositive-nonnegative-order
signed/multiply-nonpositive-nonnegative-order : (left right : ℚ) (left-negative : left ≤ 0) (right-positive : 0 ≤ right) → left · right ≤ 0
0 = signed/zero· = signed/multiplyℚ = signed/SignedRational≤ = signed/at-most
signed/multiply-nonpositive-nonpositive-order
signed/multiply-nonpositive-nonpositive-order : (left right : ℚ) (left-negative : left ≤ 0) (right-negative : right ≤ 0) → 0 ≤ left · right
0 = signed/zero· = signed/multiplyℚ = signed/SignedRational≤ = signed/at-most
vector/dot-nonpositive-left
vector/dot-nonpositive-left : (left right : List ℚ) (left-negative : vector/at-most left (vector/zero-like left)) (right-positive : vector/at-most (vector/zero-like right) right) → vector/dot left right ≤ 0
0 = signed/zeroList = data/Listℚ = signed/SignedRational≤ = signed/at-most
vector/dot-nonpositive-right
vector/dot-nonpositive-right : (left right : List ℚ) (left-positive : vector/at-most (vector/zero-like left) left) (right-negative : vector/at-most right (vector/zero-like right)) → vector/dot left right ≤ 0
0 = signed/zeroList = data/Listℚ = signed/SignedRational≤ = signed/at-most
vector/dot-nonnegative-both-nonpositive
vector/dot-nonnegative-both-nonpositive : (left right : List ℚ) (left-negative : vector/at-most left (vector/zero-like left)) (right-negative : vector/at-most right (vector/zero-like right)) → 0 ≤ vector/dot left right
0 = signed/zeroList = data/Listℚ = signed/SignedRational≤ = signed/at-most
matrix/vector-multiply-nonpositive-rows
matrix/vector-multiply-nonpositive-rows : (rows : List (List ℚ)) (values : List ℚ) (rows-negative : matrix/at-most rows (matrix/zero-like rows)) (values-positive : vector/at-most (vector/zero-like values) values) → vector/at-most (matrix/vector-multiply rows values) (vector/zero-like (matrix/vector-multiply rows values))
List = data/Listℚ = signed/SignedRational
matrix/vector-multiply-nonpositive-values
matrix/vector-multiply-nonpositive-values : (rows : List (List ℚ)) (values : List ℚ) (rows-positive : matrix/at-most (matrix/zero-like rows) rows) (values-negative : vector/at-most values (vector/zero-like values)) → vector/at-most (matrix/vector-multiply rows values) (vector/zero-like (matrix/vector-multiply rows values))
List = data/Listℚ = signed/SignedRational
matrix/vector-multiply-nonnegative-both-nonpositive
matrix/vector-multiply-nonnegative-both-nonpositive : (rows : List (List ℚ)) (values : List ℚ) (rows-negative : matrix/at-most rows (matrix/zero-like rows)) (values-negative : vector/at-most values (vector/zero-like values)) → vector/at-most (vector/zero-like (matrix/vector-multiply rows values)) (matrix/vector-multiply rows values)
List = data/Listℚ = signed/SignedRational