fact: Fixpoint bareiss_rec m (a : {poly R}) : 'M[{poly R}]_(1 + m, 1 + m) -> {poly R} := if m is p.+1 then fun M => let d := M 0 0 in let l := ursubmx M in let c := dlsubmx M in let N := drsubmx M in let M' := d *: N - c *m l in let M'' := map_mx (fun x => rdivp x a) M' in bareiss_rec d M'' else fun M => M 0 0.
imports: mathcomp(ssreflect ssrfun ssrbool eqtype ssrnat div seq path ssralg) mathcomp(fintype perm choice matrix bigop zmodp poly polydiv mxpoly) CoqEAL(ssrcomplements minor dvdring) polydvd