# Matrix elements in terms of Minors?

Is there a simple way to rewrite a rectangular $m \times n$ matrix in terms of its maximal minors?

For a few small cases, $(m,n)$ = $(2,3),(2,4),(3,4)$ I can brute force by explicitly solving:

m = 2; n = 3;
mat = Array[c, {m, n}];
subs = Subsets[Range[n], {m}]
dets = det[Sequence @@ #] - Det[Transpose[mat][[#]]] & /@ subs;
nzs = det[Sequence @@ #] != 0 & /@ subs;
eqns = And[And @@ (# == 0 & /@ dets), And @@ nzs];
red = Reduce[eqns, Flatten[mat]];
final = mat //. {ToRules[red]}[[1]] // Together;
Simplify[Minors[final, m]]


In the (2,3) case:

Minors[final, m]
(* {{det[1, 2], det[1, 3], det[2, 3]}} *)


In the (3,4) case:

Minors[final, m]
(* {{det[1, 2, 3], det[1, 2, 4], det[1, 3, 4], det[2, 3, 4]}} *)


In the (2,4) case:

Minors[final, m]
(* {{(-det[1, 4] det[2, 3] + det[1, 3] det[2, 4])/det[3, 4], det[1, 3], det[1, 4], det[2, 3], det[2, 4], det[3, 4]}} *)


In this last case the weird first entry is secretly det[1,2] as expected:

Simplify[Minors[final, m][[1, 1]] //. det[i_, j_] :> Det[Transpose[mat][[{i, j}]]]]
(*-c[1, 2] c[2, 1] + c[1, 1] c[2, 2]*)


I don't mind that det[1,2] doesn't show up explicitly, I just want the matrix rexpressed in terms of as many det[_,_]'s as necessary.

Using Reduce quickly becomes intractable. I'm looking for an answer that can easily get up to $m \sim 5$, $n \sim 10$.

Edit

I'm not wedded to using Reduce or explicitly solving. I toyed around with the ideas of:

1) Trying to match each element of the matrix to an explicit determinant.

2) Using PolynomialReduce to write c[_,_]'s in terms of the explicit determinants, but the problem isn't quite amenable to that since the c[_,_]'s would necessarily be rational in det[_,_]'s unfixed c[_,_]'s.

• At the very least, you're computing Subsets[Range[n], {m}] twice. Nov 10, 2017 at 4:03
• Noted and corrected. That's not the bottleneck though, Reduce is. Nov 10, 2017 at 4:23
• Yes, hence "at the very least". Reduce[] is indeed the bigger problem here. Nov 10, 2017 at 4:29
• What would that be good for? Nov 10, 2017 at 7:37
• If there is another dMat=Array[d,{m,n}], I want to express the $2m \times 2m$ maximal minors of cdMAt=Join[mat,dMat] in terms of the minors of mat. Nov 10, 2017 at 14:28