  
  [1X3 [33X[0;0YThe Ring Table[133X[101X
  
  
  [1X3.1 [33X[0;0YAn Example for a Ring Table - Singular[133X[101X
  
  [33X[0;0Ytodo:  introductory text, mention: transposed matrices, the macros, refer to
  the philosophy[133X
  
  [1X3.1-1 BasisOfRowModule[101X
  
  [33X[1;0Y[29X[2XBasisOfRowModule[102X( [3XM[103X ) [32X function[133X
  
  [33X[0;0YThis  is  the entry of the [5Xhomalg[105X table, which calls the corresponding macro
  [2XBasisOfRowModule[102X ([14X3.1-2[114X) inside the computer algebra system.[133X
  
  [4X[32X  Code  [32X[104X
    [4XBasisOfRowModule :=[104X
    [4X  function( M )[104X
    [4X    local N;[104X
    [4X    [104X
    [4X    N := HomalgVoidMatrix([104X
    [4X      "unknown_number_of_rows",[104X
    [4X      NrColumns( M ),[104X
    [4X      HomalgRing( M )[104X
    [4X    );[104X
    [4X    [104X
    [4X    homalgSendBlocking( [104X
    [4X      [ "matrix ", N, " = BasisOfRowModule(", M, ")" ],[104X
    [4X      "need_command",[104X
    [4X      "BasisOfModule"[104X
    [4X    );[104X
    [4X    [104X
    [4X    return N;[104X
    [4X    [104X
    [4X  end,[104X
  [4X[32X[104X
  
  [1X3.1-2 BasisOfRowModule[101X
  
  [33X[1;0Y[29X[2XBasisOfRowModule[102X( [3XM[103X ) [32X function[133X
  
  [4X[32X  Code  [32X[104X
    [4X    BasisOfRowModule := "\n\[104X
    [4Xproc BasisOfRowModule (matrix M)\n\[104X
    [4X{\n\[104X
    [4X  return(std(M));\n\[104X
    [4X}\n\n",[104X
  [4X[32X[104X
  
  [1X3.1-3 BasisOfColumnModule[101X
  
  [33X[1;0Y[29X[2XBasisOfColumnModule[102X( [3XM[103X ) [32X function[133X
  
  [33X[0;0YThis  is  the entry of the [5Xhomalg[105X table, which calls the corresponding macro
  [2XBasisOfColumnModule[102X ([14X3.1-4[114X) inside the computer algebra system.[133X
  
  [4X[32X  Code  [32X[104X
    [4XBasisOfColumnModule :=[104X
    [4X  function( M )[104X
    [4X    local N;[104X
    [4X    [104X
    [4X    N := HomalgVoidMatrix([104X
    [4X      NrRows( M ),[104X
    [4X      "unknown_number_of_columns",[104X
    [4X      HomalgRing( M )[104X
    [4X    );[104X
    [4X    [104X
    [4X    homalgSendBlocking([104X
    [4X      [ "matrix ", N, " = BasisOfColumnModule(", M, ")" ],[104X
    [4X      "need_command",[104X
    [4X      "BasisOfModule"[104X
    [4X    );[104X
    [4X    [104X
    [4X    return N;[104X
    [4X    [104X
    [4X  end,[104X
  [4X[32X[104X
  
  [1X3.1-4 BasisOfColumnModule[101X
  
  [33X[1;0Y[29X[2XBasisOfColumnModule[102X( [3XM[103X ) [32X function[133X
  
  [4X[32X  Code  [32X[104X
    [4X    BasisOfColumnModule := "\n\[104X
    [4Xproc BasisOfColumnModule (matrix M)\n\[104X
    [4X{\n\[104X
    [4X  return(Involution(BasisOfRowModule(Involution(M))));\n\[104X
    [4X}\n\n",[104X
  [4X[32X[104X
  
  [1X3.1-5 DecideZeroRows[101X
  
  [33X[1;0Y[29X[2XDecideZeroRows[102X( [3XA[103X, [3XB[103X ) [32X function[133X
  
  [33X[0;0YThis  is  the entry of the [5Xhomalg[105X table, which calls the corresponding macro
  [2XDecideZeroRows[102X  ([14X3.1-6[114X)  inside  the  computer algebra system. The rows of [3XB[103X
  must form a basis (see [2XBasisOfRowModule[102X ([14X3.1-1[114X)).[133X
  
  [4X[32X  Code  [32X[104X
    [4XDecideZeroRows :=[104X
    [4X  function( A, B )[104X
    [4X    local N;[104X
    [4X    [104X
    [4X    N := HomalgVoidMatrix([104X
    [4X      NrRows( A ),[104X
    [4X      NrColumns( A ),[104X
    [4X      HomalgRing( A )[104X
    [4X    );[104X
    [4X    [104X
    [4X    homalgSendBlocking( [104X
    [4X      [ "matrix ", N, " = DecideZeroRows(", A, B, ")" ],[104X
    [4X      "need_command",[104X
    [4X      "DecideZero"[104X
    [4X    );[104X
    [4X    [104X
    [4X    return N;[104X
    [4X    [104X
    [4X  end,[104X
  [4X[32X[104X
  
  [1X3.1-6 DecideZeroRows[101X
  
  [33X[1;0Y[29X[2XDecideZeroRows[102X( [3XA[103X, [3XB[103X ) [32X function[133X
  
  [4X[32X  Code  [32X[104X
    [4X    DecideZeroRows := "\n\[104X
    [4Xproc DecideZeroRows (matrix A, module B)\n\[104X
    [4X{\n\[104X
    [4X  attrib(B,\"isSB\",1);\n\[104X
    [4X  return(reduce(A,B));\n\[104X
    [4X}\n\n",[104X
  [4X[32X[104X
  
  [1X3.1-7 DecideZeroColumns[101X
  
  [33X[1;0Y[29X[2XDecideZeroColumns[102X( [3XA[103X, [3XB[103X ) [32X function[133X
  
  [33X[0;0YThis  is  the entry of the [5Xhomalg[105X table, which calls the corresponding macro
  [2XDecideZeroColumns[102X ([14X3.1-8[114X) inside the computer algebra system. The columns of
  [3XB[103X must form a basis (see [2XBasisOfColumnModule[102X ([14X3.1-3[114X)).[133X
  
  [4X[32X  Code  [32X[104X
    [4XDecideZeroColumns :=[104X
    [4X  function( A, B )[104X
    [4X    local N;[104X
    [4X    [104X
    [4X    N := HomalgVoidMatrix([104X
    [4X      NrRows( A ),[104X
    [4X      NrColumns( A ),[104X
    [4X      HomalgRing( A )[104X
    [4X    );[104X
    [4X    [104X
    [4X    homalgSendBlocking([104X
    [4X      [ "matrix ", N, " = DecideZeroColumns(", A, B, ")" ],[104X
    [4X      "need_command",[104X
    [4X      "DecideZero"[104X
    [4X    );[104X
    [4X    [104X
    [4X    return N;[104X
    [4X    [104X
    [4X  end,[104X
  [4X[32X[104X
  
  [1X3.1-8 DecideZeroColumns[101X
  
  [33X[1;0Y[29X[2XDecideZeroColumns[102X( [3XA[103X, [3XB[103X ) [32X function[133X
  
  [4X[32X  Code  [32X[104X
    [4X    DecideZeroColumns := "\n\[104X
    [4Xproc DecideZeroColumns (matrix A, matrix B)\n\[104X
    [4X{\n\[104X
    [4X  return(Involution(DecideZeroRows(Involution(A),Involution(B))));\n\[104X
    [4X}\n\n",[104X
  [4X[32X[104X
  
  [1X3.1-9 SyzygiesGeneratorsOfRows[101X
  
  [33X[1;0Y[29X[2XSyzygiesGeneratorsOfRows[102X( [3XM[103X ) [32X function[133X
  
  [33X[0;0YThis  is  the entry of the [5Xhomalg[105X table, which calls the corresponding macro
  [2XSyzygiesGeneratorsOfRows[102X ([14X3.1-10[114X) inside the computer algebra system.[133X
  
  [4X[32X  Code  [32X[104X
    [4XSyzygiesGeneratorsOfRows :=[104X
    [4X  function( M )[104X
    [4X    local N;[104X
    [4X    [104X
    [4X    N := HomalgVoidMatrix([104X
    [4X      "unknown_number_of_rows",[104X
    [4X      NrRows( M ),[104X
    [4X      HomalgRing( M )[104X
    [4X    );[104X
    [4X    [104X
    [4X    homalgSendBlocking([104X
    [4X      [ "matrix ", N, " = SyzygiesGeneratorsOfRows(", M, ")" ],[104X
    [4X      "need_command",[104X
    [4X      "SyzygiesGenerators"[104X
    [4X    );[104X
    [4X    [104X
    [4X    return N;[104X
    [4X    [104X
    [4X  end,[104X
  [4X[32X[104X
  
  [1X3.1-10 SyzygiesGeneratorsOfRows[101X
  
  [33X[1;0Y[29X[2XSyzygiesGeneratorsOfRows[102X( [3XM[103X ) [32X function[133X
  
  [4X[32X  Code  [32X[104X
    [4X    SyzygiesGeneratorsOfRows := "\n\[104X
    [4Xproc SyzygiesGeneratorsOfRows (matrix M)\n\[104X
    [4X{\n\[104X
    [4X  return(SyzForHomalg(M));\n\[104X
    [4X}\n\n",[104X
  [4X[32X[104X
  
  [1X3.1-11 SyzygiesGeneratorsOfColumns[101X
  
  [33X[1;0Y[29X[2XSyzygiesGeneratorsOfColumns[102X( [3XM[103X ) [32X function[133X
  
  [33X[0;0YThis  is  the entry of the [5Xhomalg[105X table, which calls the corresponding macro
  [2XSyzygiesGeneratorsOfColumns[102X ([14X3.1-12[114X) inside the computer algebra system.[133X
  
  [4X[32X  Code  [32X[104X
    [4XSyzygiesGeneratorsOfColumns :=[104X
    [4X  function( M )[104X
    [4X    local N;[104X
    [4X    [104X
    [4X    N := HomalgVoidMatrix([104X
    [4X      NrColumns( M ),[104X
    [4X      "unknown_number_of_columns",[104X
    [4X      HomalgRing( M )[104X
    [4X    );[104X
    [4X    [104X
    [4X    homalgSendBlocking([104X
    [4X      [ "matrix ", N, " = SyzygiesGeneratorsOfColumns(", M, ")" ],[104X
    [4X      "need_command",[104X
    [4X      "SyzygiesGenerators"[104X
    [4X    );[104X
    [4X    [104X
    [4X    return N;[104X
    [4X    [104X
    [4X  end,[104X
  [4X[32X[104X
  
  [1X3.1-12 SyzygiesGeneratorsOfColumns[101X
  
  [33X[1;0Y[29X[2XSyzygiesGeneratorsOfColumns[102X( [3XM[103X ) [32X function[133X
  
  [4X[32X  Code  [32X[104X
    [4X    SyzygiesGeneratorsOfColumns := "\n\[104X
    [4Xproc SyzygiesGeneratorsOfColumns (matrix M)\n\[104X
    [4X{\n\[104X
    [4X  return(Involution(SyzForHomalg(Involution(M))));\n\[104X
    [4X}\n\n",[104X
  [4X[32X[104X
  
  [1X3.1-13 BasisOfRowsCoeff[101X
  
  [33X[1;0Y[29X[2XBasisOfRowsCoeff[102X( [3XM[103X, [3XT[103X ) [32X function[133X
  
  [33X[0;0YThis  is  the entry of the [5Xhomalg[105X table, which calls the corresponding macro
  [2XBasisOfRowsCoeff[102X ([14X3.1-14[114X) inside the computer algebra system.[133X
  
  [4X[32X  Code  [32X[104X
    [4XBasisOfRowsCoeff :=[104X
    [4X  function( M, T )[104X
    [4X    local v, N;[104X
    [4X    [104X
    [4X    v := homalgStream( HomalgRing( M ) )!.variable_name;[104X
    [4X    [104X
    [4X    N := HomalgVoidMatrix([104X
    [4X      "unknown_number_of_rows",[104X
    [4X      NrColumns( M ),[104X
    [4X      HomalgRing( M )[104X
    [4X    );[104X
    [4X    [104X
    [4X    homalgSendBlocking([104X
    [4X      [ "matrix ", N, T, " = BasisOfRowsCoeff(", M, ")" ],[104X
    [4X      "need_command",[104X
    [4X      "BasisCoeff"[104X
    [4X    );[104X
    [4X    [104X
    [4X    return N;[104X
    [4X    [104X
    [4X  end,[104X
  [4X[32X[104X
  
  [1X3.1-14 BasisOfRowsCoeff[101X
  
  [33X[1;0Y[29X[2XBasisOfRowsCoeff[102X( [3XM[103X, [3XT[103X ) [32X function[133X
  
  [4X[32X  Code  [32X[104X
    [4X    BasisOfRowsCoeff := """[104X
    [4Xproc BasisOfRowsCoeff (matrix M)[104X
    [4X{[104X
    [4X  matrix B = BasisOfRowModule(M);[104X
    [4X  option(noredSB);[104X
    [4X  matrix T = lift(M,B);[104X
    [4X  option(redSB);[104X
    [4X  return(B,T);[104X
    [4X}[104X
    [4X[104X
    [4X """,[104X
  [4X[32X[104X
  
  [1X3.1-15 BasisOfColumnsCoeff[101X
  
  [33X[1;0Y[29X[2XBasisOfColumnsCoeff[102X( [3XM[103X, [3XT[103X ) [32X function[133X
  
  [33X[0;0YThis  is  the entry of the [5Xhomalg[105X table, which calls the corresponding macro
  [2XBasisOfColumnsCoeff[102X ([14X3.1-16[114X) inside the computer algebra system.[133X
  
  [4X[32X  Code  [32X[104X
    [4XBasisOfColumnsCoeff :=[104X
    [4X  function( M, T )[104X
    [4X    local v, N;[104X
    [4X    [104X
    [4X    v := homalgStream( HomalgRing( M ) )!.variable_name;[104X
    [4X    [104X
    [4X    N := HomalgVoidMatrix([104X
    [4X      NrRows( M ),[104X
    [4X      "unknown_number_of_columns",[104X
    [4X      HomalgRing( M )[104X
    [4X    );[104X
    [4X    [104X
    [4X    homalgSendBlocking( [104X
    [4X      [ "matrix ", N, T, " = BasisOfColumnsCoeff(", M, ")" ],[104X
    [4X      "need_command",[104X
    [4X      "BasisCoeff"[104X
    [4X    );[104X
    [4X    [104X
    [4X    return N;[104X
    [4X    [104X
    [4X  end,[104X
  [4X[32X[104X
  
  [1X3.1-16 BasisOfColumnsCoeff[101X
  
  [33X[1;0Y[29X[2XBasisOfColumnsCoeff[102X( [3XM[103X, [3XT[103X ) [32X function[133X
  
  [4X[32X  Code  [32X[104X
    [4X    BasisOfColumnsCoeff := """[104X
    [4Xproc BasisOfColumnsCoeff (matrix M)[104X
    [4X{[104X
    [4X  matrix B,T = BasisOfRowsCoeff(Involution(M));[104X
    [4X  return(Involution(B),Involution(T));[104X
    [4X}[104X
    [4X[104X
    [4X """,[104X
  [4X[32X[104X
  
  [1X3.1-17 DecideZeroRowsEffectively[101X
  
  [33X[1;0Y[29X[2XDecideZeroRowsEffectively[102X( [3XA[103X, [3XB[103X, [3XT[103X ) [32X function[133X
  
  [33X[0;0YThis  is  the entry of the [5Xhomalg[105X table, which calls the corresponding macro
  [2XDecideZeroRowsEffectively[102X  ([14X3.1-18[114X)  inside the computer algebra system. The
  rows of [3XB[103X must form a basis (see [2XBasisOfRowModule[102X ([14X3.1-1[114X)).[133X
  
  [4X[32X  Code  [32X[104X
    [4XDecideZeroRowsEffectively :=[104X
    [4X  function( A, B, T )[104X
    [4X    local v, N;[104X
    [4X    [104X
    [4X    v := homalgStream( HomalgRing( A ) )!.variable_name;[104X
    [4X    [104X
    [4X    N := HomalgVoidMatrix([104X
    [4X      NrRows( A ),[104X
    [4X      NrColumns( A ),[104X
    [4X      HomalgRing( A )[104X
    [4X    );[104X
    [4X    [104X
    [4X    homalgSendBlocking([104X
    [4X      [ "matrix ", N, T, " = DecideZeroRowsEffectively(", A, B, ")" ],[104X
    [4X      "need_command",[104X
    [4X      "DecideZeroEffectively"[104X
    [4X    );[104X
    [4X    [104X
    [4X    return N;[104X
    [4X    [104X
    [4X  end,[104X
  [4X[32X[104X
  
  [1X3.1-18 DecideZeroRowsEffectively[101X
  
  [33X[1;0Y[29X[2XDecideZeroRowsEffectively[102X( [3XA[103X, [3XB[103X, [3XT[103X ) [32X function[133X
  
  [4X[32X  Code  [32X[104X
    [4X    DecideZeroRowsEffectively := """[104X
    [4Xproc DecideZeroRowsEffectively (matrix A, module B)[104X
    [4X{[104X
    [4X  attrib(B,"isSB",1);[104X
    [4X  matrix M = reduce(A,B);[104X
    [4X  matrix T = lift(B,M-A);[104X
    [4X  return(M,T);[104X
    [4X}[104X
    [4X[104X
    [4X """,[104X
  [4X[32X[104X
  
  [1X3.1-19 DecideZeroColumnsEffectively[101X
  
  [33X[1;0Y[29X[2XDecideZeroColumnsEffectively[102X( [3XA[103X, [3XB[103X, [3XT[103X ) [32X function[133X
  
  [33X[0;0YThis  is  the entry of the [5Xhomalg[105X table, which calls the corresponding macro
  [2XDecideZeroColumnsEffectively[102X  ([14X3.1-20[114X)  inside  the computer algebra system.
  The columns of [3XB[103X must form a basis (see [2XBasisOfColumnModule[102X ([14X3.1-3[114X)).[133X
  
  [4X[32X  Code  [32X[104X
    [4XDecideZeroColumnsEffectively :=[104X
    [4X  function( A, B, T )[104X
    [4X    local v, N;[104X
    [4X    [104X
    [4X    v := homalgStream( HomalgRing( A ) )!.variable_name;[104X
    [4X    [104X
    [4X    N := HomalgVoidMatrix([104X
    [4X      NrRows( A ),[104X
    [4X      NrColumns( A ),[104X
    [4X      HomalgRing( A )[104X
    [4X    );[104X
    [4X    [104X
    [4X    homalgSendBlocking([104X
    [4X      [ "matrix ", N, T, " = DecideZeroColumnsEffectively(", A, B, ")" ],[104X
    [4X      "need_command",[104X
    [4X      "DecideZeroEffectively"[104X
    [4X    );[104X
    [4X    [104X
    [4X    return N;[104X
    [4X    [104X
    [4X  end,[104X
  [4X[32X[104X
  
  [1X3.1-20 DecideZeroColumnsEffectively[101X
  
  [33X[1;0Y[29X[2XDecideZeroColumnsEffectively[102X( [3XA[103X, [3XB[103X, [3XT[103X ) [32X function[133X
  
  [4X[32X  Code  [32X[104X
    [4X    DecideZeroColumnsEffectively := """[104X
    [4Xproc DecideZeroColumnsEffectively (matrix A, matrix B)[104X
    [4X{[104X
    [4X  matrix M,T = DecideZeroRowsEffectively(Involution(A),Involution(B));[104X
    [4X  return(Involution(M),Involution(T));[104X
    [4X}[104X
    [4X[104X
    [4X """,[104X
  [4X[32X[104X
  
  [1X3.1-21 RelativeSyzygiesGeneratorsOfRows[101X
  
  [33X[1;0Y[29X[2XRelativeSyzygiesGeneratorsOfRows[102X( [3XM[103X, [3XM2[103X ) [32X function[133X
  
  [33X[0;0YThis  is  the entry of the [5Xhomalg[105X table, which calls the corresponding macro
  [2XRelativeSyzygiesGeneratorsOfRows[102X   ([14X3.1-22[114X)   inside  the  computer  algebra
  system.[133X
  
  [4X[32X  Code  [32X[104X
    [4XRelativeSyzygiesGeneratorsOfRows :=[104X
    [4X  function( M, M2 )[104X
    [4X    local N;[104X
    [4X    [104X
    [4X    N := HomalgVoidMatrix([104X
    [4X      "unknown_number_of_rows",[104X
    [4X      NrRows( M ),[104X
    [4X      HomalgRing( M )[104X
    [4X    );[104X
    [4X    [104X
    [4X    homalgSendBlocking([104X
    [4X      [ "matrix ", N, " = RelativeSyzygiesGeneratorsOfRows(", M, M2, ")" ],[104X
    [4X      "need_command",[104X
    [4X      "SyzygiesGenerators"[104X
    [4X    );[104X
    [4X    [104X
    [4X    return N;[104X
    [4X    [104X
    [4X  end,[104X
  [4X[32X[104X
  
  [1X3.1-22 RelativeSyzygiesGeneratorsOfRows[101X
  
  [33X[1;0Y[29X[2XRelativeSyzygiesGeneratorsOfRows[102X( [3XM[103X, [3XM2[103X ) [32X function[133X
  
  [4X[32X  Code  [32X[104X
    [4X    RelativeSyzygiesGeneratorsOfRows := "\n\[104X
    [4Xproc RelativeSyzygiesGeneratorsOfRows (matrix M1, matrix M2)\n\[104X
    [4X{\n\[104X
    [4X  return(BasisOfRowModule(modulo(M1, M2)));\n\[104X
    [4X}\n\n",[104X
  [4X[32X[104X
  
  [1X3.1-23 RelativeSyzygiesGeneratorsOfColumns[101X
  
  [33X[1;0Y[29X[2XRelativeSyzygiesGeneratorsOfColumns[102X( [3XM[103X, [3XM2[103X ) [32X function[133X
  
  [33X[0;0YThis  is  the entry of the [5Xhomalg[105X table, which calls the corresponding macro
  [2XRelativeSyzygiesGeneratorsOfColumns[102X  ([14X3.1-24[114X)  inside  the  computer algebra
  system.[133X
  
  [4X[32X  Code  [32X[104X
    [4XRelativeSyzygiesGeneratorsOfColumns :=[104X
    [4X  function( M, M2 )[104X
    [4X    local N;[104X
    [4X    [104X
    [4X    N := HomalgVoidMatrix([104X
    [4X      NrColumns( M ),[104X
    [4X      "unknown_number_of_columns",[104X
    [4X      HomalgRing( M )[104X
    [4X    );[104X
    [4X    [104X
    [4X    homalgSendBlocking([104X
    [4X      [ "matrix ", N, " = RelativeSyzygiesGeneratorsOfColumns(", M, M2, ")" ],[104X
    [4X      "need_command",[104X
    [4X      "SyzygiesGenerators"[104X
    [4X    );[104X
    [4X    [104X
    [4X    return N;[104X
    [4X    [104X
    [4X  end,[104X
  [4X[32X[104X
  
  [1X3.1-24 RelativeSyzygiesGeneratorsOfColumns[101X
  
  [33X[1;0Y[29X[2XRelativeSyzygiesGeneratorsOfColumns[102X( [3XM[103X, [3XM2[103X ) [32X function[133X
  
  [4X[32X  Code  [32X[104X
    [4X    RelativeSyzygiesGeneratorsOfColumns := "\n\[104X
    [4Xproc RelativeSyzygiesGeneratorsOfColumns (matrix M1, matrix M2)\n\[104X
    [4X{\n\[104X
    [4X  return(Involution(RelativeSyzygiesGeneratorsOfRows(Involution(M1),Involution(M2))));\n\[104X
    [4X}\n\n",[104X
  [4X[32X[104X
  
  [1X3.1-25 ReducedSyzygiesGeneratorsOfRows[101X
  
  [33X[1;0Y[29X[2XReducedSyzygiesGeneratorsOfRows[102X( [3XM[103X ) [32X function[133X
  
  [33X[0;0YThis  is  the entry of the [5Xhomalg[105X table, which calls the corresponding macro
  [2XReducedSyzygiesGeneratorsOfRows[102X ([14X3.1-26[114X) inside the computer algebra system.[133X
  
  [4X[32X  Code  [32X[104X
    [4XReducedSyzygiesGeneratorsOfRows :=[104X
    [4X  function( M )[104X
    [4X    local N;[104X
    [4X    [104X
    [4X    N := HomalgVoidMatrix([104X
    [4X      "unknown_number_of_rows",[104X
    [4X      NrRows( M ),[104X
    [4X      HomalgRing( M )[104X
    [4X    );[104X
    [4X    [104X
    [4X    homalgSendBlocking([104X
    [4X      [ "matrix ", N, " = ReducedSyzygiesGeneratorsOfRows(", M, ")" ],[104X
    [4X      "need_command",[104X
    [4X      "SyzygiesGenerators"[104X
    [4X    );[104X
    [4X    [104X
    [4X    return N;[104X
    [4X    [104X
    [4X  end,[104X
  [4X[32X[104X
  
  [1X3.1-26 ReducedSyzygiesGeneratorsOfRows[101X
  
  [33X[1;0Y[29X[2XReducedSyzygiesGeneratorsOfRows[102X( [3XM[103X ) [32X function[133X
  
  [4X[32X  Code  [32X[104X
    [4X    ReducedSyzForHomalg := "\n\[104X
    [4Xproc ReducedSyzForHomalg (matrix M)\n\[104X
    [4X{\n\[104X
    [4X  return(matrix(nres(M,2)[2]));\n\[104X
    [4X}\n\n",[104X
    [4X    ReducedSyzygiesGeneratorsOfRows := "\n\[104X
    [4Xproc ReducedSyzygiesGeneratorsOfRows (matrix M)\n\[104X
    [4X{\n\[104X
    [4X  return(ReducedSyzForHomalg(M));\n\[104X
    [4X}\n\n",[104X
  [4X[32X[104X
  
  [1X3.1-27 ReducedSyzygiesGeneratorsOfColumns[101X
  
  [33X[1;0Y[29X[2XReducedSyzygiesGeneratorsOfColumns[102X( [3XM[103X ) [32X function[133X
  
  [33X[0;0YThis  is  the entry of the [5Xhomalg[105X table, which calls the corresponding macro
  [2XReducedSyzygiesGeneratorsOfColumns[102X  ([14X3.1-28[114X)  inside  the  computer  algebra
  system.[133X
  
  [4X[32X  Code  [32X[104X
    [4XReducedSyzygiesGeneratorsOfColumns :=[104X
    [4X  function( M )[104X
    [4X    local N;[104X
    [4X    [104X
    [4X    N := HomalgVoidMatrix([104X
    [4X      NrColumns( M ),[104X
    [4X      "unknown_number_of_columns",[104X
    [4X      HomalgRing( M )[104X
    [4X    );[104X
    [4X    [104X
    [4X    homalgSendBlocking([104X
    [4X      [ "matrix ", N, " = ReducedSyzygiesGeneratorsOfColumns(", M, ")" ],[104X
    [4X      "need_command",[104X
    [4X      "SyzygiesGenerators"[104X
    [4X    );[104X
    [4X    [104X
    [4X    return N;[104X
    [4X    [104X
    [4X  end,[104X
  [4X[32X[104X
  
  [1X3.1-28 ReducedSyzygiesGeneratorsOfColumns[101X
  
  [33X[1;0Y[29X[2XReducedSyzygiesGeneratorsOfColumns[102X( [3XM[103X ) [32X function[133X
  
  [4X[32X  Code  [32X[104X
    [4X    ReducedSyzygiesGeneratorsOfColumns := "\n\[104X
    [4Xproc ReducedSyzygiesGeneratorsOfColumns (matrix M)\n\[104X
    [4X{\n\[104X
    [4X  return(Involution(ReducedSyzForHomalg(Involution(M))));\n\[104X
    [4X}\n\n",[104X
  [4X[32X[104X
  
