fact: Definition Strassen_xO {p : positive} Strassen_p := fun A B => if p <= K then A *m B else let A := castmx (addpp p,addpp p) A in let B := castmx (addpp p,addpp p) B in castmx (esym (addpp p), esym (addpp p)) (Strassen_step A B Strassen_p).
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