Reference · Matrices
rainbow.math.linear.matrix.transpose-multiply-reverse
Transpose reverses native matrix multiplication at positive width. A rectangular matrix with an explicitly nonempty first row is recovered by double transpose. Mapping its action over columns is therefore equivalent to multiplying those columns by its transpose; composing that fact with the nonempty-left transpose/product bridge yields transpose (B*C) ~ transpose C * transpose B. No premise on C is required. Native and axiom-free on D63.
matrix/column-action-to-transpose-product
matrix/column-action-to-transpose-product : (head : ℚ) (row-tail : List ℚ) (tail columns : List (List ℚ)) (rows-rectangular : matrix/rectangular (data/cons (List ℚ) (data/cons ℚ head row-tail) tail)) → matrix/equivalent (action) (multiply) where action := matrix/column-action (data/cons (List ℚ) (data/cons ℚ head row-tail) tail) columns where multiply := matrix/multiply columns (matrix/transpose (data/cons (List ℚ) (data/cons ℚ head row-tail) tail))
List = data/Listℚ = signed/SignedRational
matrix/transpose-multiply-reverses-positive-width
matrix/transpose-multiply-reverses-positive-width : (head : ℚ) (row-tail : List ℚ) (tail right : List (List ℚ)) (rows-rectangular : matrix/rectangular (data/cons (List ℚ) (data/cons ℚ head row-tail) tail)) → matrix/equivalent (matrix/transpose (multiply₁)) (multiply) where multiply := matrix/multiply (matrix/transpose right) (matrix/transpose (data/cons (List ℚ) (data/cons ℚ head row-tail) tail)) where multiply₁ := matrix/multiply (data/cons (List ℚ) (data/cons ℚ head row-tail) tail) right
List = data/Listℚ = signed/SignedRational