fact: Definition Strassen_step {p : positive} (A B : 'M[R]_(p + p, p + p)) (f : 'M[R]_(p, p) -> 'M_(p, p) -> 'M[R]_(p, p)) : 'M_(p + p, p + p) := let A11 := ulsubmx A in let A12 := ursubmx A in let A21 := dlsubmx A in let A22 := drsubmx A in let B11 := ulsubmx B in let B12 := ursubmx B in let B21 := dlsubmx B in let B22 := drsubmx B in let X := A11 - A21 in let Y := B22 - B12 in let C21 := f X Y in let X := A21 + A22 in let Y := B12 - B11 in let C22 := f X Y in let X := X - A11 in let Y := B22 - Y in let C12 := f X Y in let X := A12 - X in let C11 := f X B22 in let X := f A11 B11 in let C12 := X + C12 in let C21 := C12 + C21 in let C12 := C12 + C22 in let C22 := C21 + C22 in let C12 := C12 + C11 in let Y := Y - B21 in let C11 := f A22 Y in let C21 := C21 - C11 in let C11 := f A12 B21 in let C11 := X + C11 in block_mx C11 C12 C21 C22.
imports: ZArith Ncring Ncring_tac mathcomp(ssreflect ssrbool ssrfun eqtype ssrnat seq choice fintype) mathcomp(div finfun bigop prime binomial ssralg finset fingroup finalg) mathcomp(perm zmodp matrix) ssralg_ring_tac