#### D.7.3.10 MinimalDecomposition

Procedure from library `rinvar.lib` (see rinvar_lib).

Usage:
  MinimalDecomposition(f,a,b); poly f; int a, b.

Purpose:
  decompose f as a sum M[1,1]*M[2,1] + ... + M[1,r]*M[2,r] where M[1,i] contains only s(1..a), M[2,i] contains only t(1...b) s.t. r is minimal

Assume:
  f polynomial in K[s(1..a),t(1..b)], K = Q or K = Q(a) and minpoly != 0

Return:
  2 x r matrix M s.t. f = M[1,1]*M[2,1] + ... + M[1,r]*M[2,r]

Example:

    LIB "rinvar.lib";
    ring R = 0, (s(1..2), t(1..2)), dp;
    poly h = s(1)*(t(1) + t(1)^2) +  (t(2) + t(2)^2)*(s(1)^2 + s(2));
    matrix M = MinimalDecomposition(h, 2, 2);
    M;
    ==> M[1,1]=s(1)^2+s(2)
    ==> M[1,2]=s(1)
    ==> M[2,1]=t(2)^2+t(2)
    ==> M[2,2]=t(1)^2+t(1)
    M[1,1]*M[2,1] + M[1,2]*M[2,2] - h;
    ==> 0

User manual for Singular version 4-0-3, 2016, generated by texi2html.