Goto Chapter: Top 1 2 Bib Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

2 Tools
 2.1 Tools for matrices
 2.2 Tools for rows
 2.3 Tools for columns

2 Tools

2.1 Tools for matrices

2.1-1 EliminateIfRowObsoleteForUnimodularityAsRightInverse
‣ EliminateIfRowObsoleteForUnimodularityAsRightInverse( row )( operation )

Returns: a list

For the given row row, check whether all but one elements in the right inverse generate the unit ideal. It returns a list [ V, VI ] such that row * V = [ 1 0 0 ... 0 ] and the first row of VI is the given row.

2.1-2 EliminateUnitInAColumnAsRightInverse
‣ EliminateUnitInAColumnAsRightInverse( row )( operation )

Returns: a list

For the given row row, check whether the right inverse contains a unit. It returns a list [ V, VI ] such that row * V = [ 1 0 0 ... 0 ] and the first row of VI is the given row.

2.1-3 EliminateUnimodularPairPositionPerColumnAsRightInverse
‣ EliminateUnimodularPairPositionPerColumnAsRightInverse( row )( operation )

Returns: a list

For the given row row, check whether any two elements in the right inverse are coprime. It returns a list [ V, VI ] such that row * V = [ 1 0 0 ... 0 ] and the first row of VI is the given row.

2.2 Tools for rows

2.2-1 GetFirstMonicOfSmallestDegreeInRow
‣ GetFirstMonicOfSmallestDegreeInRow( row, o )( operation )

Returns: a positive integer

Checks whether there is any other monic of smaller degree than o-th position element. If found, returns the position of new monic, else returns o. It returns the position of the monic.

2.2-2 CleanRowUsingMonicUptoUnit
‣ CleanRowUsingMonicUptoUnit( row, o )( operation )

Returns: a list

Cleans row using a monic at o-th position. It returns a list with the modified row and the transformation matrices.

2.2-3 GetObsoleteColumnForUnimodularity
‣ GetObsoleteColumnForUnimodularity( row, unclean_cols )( operation )

Returns: a list

Checks whether any \((n-1)\) elements among the \(n\) unclean_cols positions of row generate a unit ideal. It returns a list [ j, r, h ] where

2.2-4 GetObsoleteColumnForUnimodularity
‣ GetObsoleteColumnForUnimodularity( M, unclean_rows, unclean_cols )( operation )

Returns: a list

Checks whether any \((n-1)\) elements among the \(n\) unclean_cols positions of one of the rows among unclean_rows generate a unit ideal. It returns a list [ j, r, h, i ] where

2.2-5 GetObsoleteColumnForUnimodularity
‣ GetObsoleteColumnForUnimodularity( M )( operation )

Returns: a list

Checks whether any \((n-1)\) elements of some row of M generate a unit ideal. It returns a list [ j, r, h, i ] where

2.2-6 EliminateIfColumnObsoleteForUnimodularity
‣ EliminateIfColumnObsoleteForUnimodularity( row )( operation )

Returns: a list

If any \((n-1)\) elements of the row generate \(1\), then this function cleans the row and returns the transformation matrix and its inverse. It returns a list of two matrices V and VI such that row * V = [ 1 0 0 ... 0 ] and the first row of VI is the given row.

gap> Q := HomalgFieldOfRationalsInSingular( );;
gap> R := Q * "x1..5";
Q[x1,x2,x3,x4,x5]
gap> row := HomalgMatrix( "[ \
>   120*x1^2-96*x1*x2+12*x2^2-96*x1*x3+60*x2*x3+18*x3^2+176*x1*x4\
>     -32*x2*x4-108*x3*x4+20*x4^2-128*x1*x5+80*x2*x5+48*x3*x5-144*x4*x5\
>     +32*x5^2+40*x1-4*x2+20*x4+15,\
>   -48*x1^2+24*x1*x2-12*x2^2+60*x1*x3-24*x2*x3-18*x3^2-32*x1*x4\
>     +32*x2*x4+36*x3*x4-20*x4^2+80*x1*x5\-32*x2*x5-48*x3*x5+48*x4*x5\
>     -32*x5^2-4*x1-14*x2+22*x4+1,\
>   -48*x1^2+60*x1*x2-12*x2^2+36*x1*x3-36*x2*x3-108*x1*x4+36*x2*x4\
>     +72*x3*x4-24*x4^2+48*x1*x5-48*x2*x5+96*x4*x5-2,\
>   88*x1^2-32*x1*x2+16*x2^2-108*x1*x3+36*x2*x3+36*x3^2+40*x1*x4\
>     -40*x2*x4-48*x3*x4+24*x4^2-144*x1*x5+48*x2*x5+96*x3*x5-64*x4*x5\
>     +64*x5^2+20*x1+22*x2-30*x4+7,\
>   -64*x1^2+80*x1*x2-16*x2^2+48*x1*x3-48*x2*x3-144*x1*x4+48*x2*x4\
>     +96*x3*x4-32*x4^2+64*x1*x5-64*x2*x5+128*x4*x5-2\
>   ]", 1, 5, R );
<A 1 x 5 matrix over an external ring>
gap> EliminateIfColumnObsoleteForUnimodularity( row );
[ <An unevaluated 5 x 5 matrix over an external ring>, 
  <An unevaluated 5 x 5 matrix over an external ring> ]
gap> n := NrColumns( row );;
gap> Assert( 4, row * l[1] = CertainRows( HomalgIdentityMatrix( n, R ), [ 1 ] ) );
gap> Assert( 4, CertainRows( l[2], [ 1 ] ) = row );

2.2-7 GetUnimodularPairPositionPerRow
‣ GetUnimodularPairPositionPerRow( row )( operation )

Returns: a list

Checks whether any two elements of row are coprime. It returns a list [ l, [ i, j ] ] where

2.2-8 EliminateUnimodularPairPositionPerRow
‣ EliminateUnimodularPairPositionPerRow( row )( operation )

Returns: a list

If any two elements of row are coprime, then this function cleans the row and returns the transformation matrix and its inverse. It returns a list of two matrices V and VI such that row * V = [ 1 0 0 ... 0 ] and the first row of VI is the given row.

gap> Q := HomalgFieldOfRationalsInSingular( );;
gap> R := Q * "x1..5";
Q[x1,x2,x3,x4,x5]
gap> row := HomalgMatrix( "[ \
>            4*x1+4*x2-8*x3-8*x4-4*x5+17, 4*x1+4*x2-8*x3-8*x4-4*x5+12, \
>            -8*x1-8*x2+16*x3+16*x4+8*x5-27, -8*x1-8*x2+16*x3+16*x4+8*x5-28,\
>            -4*x1-4*x2+8*x3+8*x4+4*x5-16 \
>            ]", 1, 5, R );
<A 1 x 5 matrix over an external ring>
gap> l := EliminateUnimodularPairPositionPerRow( row );
[ <An unevaluated 5 x 5 matrix over an external ring>, 
  <An unevaluated 5 x 5 matrix over an external ring> ]
gap> n := NrColumns( row );;
gap> Assert( 4, row * l[1] = CertainRows( HomalgIdentityMatrix( n, R ), [ 1 ] ) );
gap> Assert( 4, CertainRows( l[2], [ 1 ] ) = row );

2.2-9 EliminateUnitInARow
‣ EliminateUnitInARow( row )( operation )

Returns: a list

The row contains a unit, then this function cleans the row using this unit and return the transformation matrices. It returns a list of two matrices V and VI such that row * V = [ 1 0 0 ... 0 ] and the first row of VI is the given row.

2.3 Tools for columns

2.3-1 GetFirstMonicOfSmallestDegreeInColumn
‣ GetFirstMonicOfSmallestDegreeInColumn( col, o )( operation )

Returns: a positive integer

Checks whether there is any other monic of smaller degree than o-th position element. If found, returns the position of new monic, else returns o. It returns the position of the monic.

2.3-2 CleanColumnUsingMonicUptoUnit
‣ CleanColumnUsingMonicUptoUnit( col, o )( operation )

Returns: a list

Cleans col using a monic at o-th position. It returns a list with the modified column and transformation matrices.

2.3-3 GetObsoleteRowForUnimodularity
‣ GetObsoleteRowForUnimodularity( col, unclean_rows )( operation )

Returns: a list

Checks whether any \((n-1)\) elements among the \(n\) unclean_rows positions of col generate a unit ideal. It returns a list [ j, r, h ] where

2.3-4 GetObsoleteRowForUnimodularity
‣ GetObsoleteRowForUnimodularity( M, unclean_cols, unclean_rows )( operation )

Returns: a list

Checks whether any \((n-1)\) elements among the \(n\) unclean_rows positions of one of the columns among unclean_cols generate a unit ideal. It returns a list [ j, r, h, i ] where

2.3-5 GetObsoleteRowForUnimodularity
‣ GetObsoleteRowForUnimodularity( M )( operation )

Returns: a list

Checks whether any \((n-1)\) elements of some column of M generate a unit ideal. It returns a list [ j, r, h, i ] where

2.3-6 EliminateIfRowObsoleteForUnimodularity
‣ EliminateIfRowObsoleteForUnimodularity( col )( operation )

Returns: a list

If any \((n-1)\) elements of the column generate \(1\), then this function cleans the col and returns the transformation matrix and its inverse. It returns a list of two matrices U and UI such that U * col = Column( [ 1 0 0 ... 0 ] ) and the first column of UI is the given column.

gap> Q := HomalgFieldOfRationalsInSingular( );;
gap> R := Q * "x1..5";
Q[x1,x2,x3,x4,x5]
gap> col := HomalgMatrix( "[ \
>   120*x1^2-96*x1*x2+12*x2^2-96*x1*x3+60*x2*x3+18*x3^2+176*x1*x4\
>     -32*x2*x4-108*x3*x4+20*x4^2-128*x1*x5+80*x2*x5+48*x3*x5-144*x4*x5\
>     +32*x5^2+40*x1-4*x2+20*x4+15,\
>   -48*x1^2+24*x1*x2-12*x2^2+60*x1*x3-24*x2*x3-18*x3^2-32*x1*x4\
>     +32*x2*x4+36*x3*x4-20*x4^2+80*x1*x5\-32*x2*x5-48*x3*x5+48*x4*x5\
>     -32*x5^2-4*x1-14*x2+22*x4+1,\
>   -48*x1^2+60*x1*x2-12*x2^2+36*x1*x3-36*x2*x3-108*x1*x4+36*x2*x4\
>     +72*x3*x4-24*x4^2+48*x1*x5-48*x2*x5+96*x4*x5-2,\
>   88*x1^2-32*x1*x2+16*x2^2-108*x1*x3+36*x2*x3+36*x3^2+40*x1*x4\
>     -40*x2*x4-48*x3*x4+24*x4^2-144*x1*x5+48*x2*x5+96*x3*x5-64*x4*x5\
>     +64*x5^2+20*x1+22*x2-30*x4+7,\
>   -64*x1^2+80*x1*x2-16*x2^2+48*x1*x3-48*x2*x3-144*x1*x4+48*x2*x4\
>     +96*x3*x4-32*x4^2+64*x1*x5-64*x2*x5+128*x4*x5-2\
>   ]", 5, 1, R );
<A 5 x 1 matrix over an external ring>
gap> l := EliminateIfRowObsoleteForUnimodularity( col );
[ <An unevaluated 5 x 5 matrix over an external ring>, 
  <An unevaluated 5 x 5 matrix over an external ring> ]
gap> n := NrRows( col );;
gap> Assert( 4, l[1] * col = CertainColumns( HomalgIdentityMatrix( n, R ), [ 1 ] ) );
gap> Assert( 4, CertainColumns( l[2], [ 1 ] ) = col );

2.3-7 GetUnimodularPairPositionPerColumn
‣ GetUnimodularPairPositionPerColumn( col )( operation )

Returns: a list

Checks whether any two elements of col are coprime. It returns a list [ l, [ i, j ] ] where

2.3-8 EliminateUnimodularPairPositionPerColumn
‣ EliminateUnimodularPairPositionPerColumn( col )( operation )

Returns: a list

If any two elements of col are coprime, then this function cleans the col and returns the transformation matrix and its inverse. It returns a list of two matrices U and UI such that U * col = Column( [ 1 0 0 ... 0 ] ) and the first column of UI is the given column.

gap> Q := HomalgFieldOfRationalsInSingular( );;
gap> R := Q * "x1..5";
Q[x1,x2,x3,x4,x5]
gap> col := HomalgMatrix( "[ \
>            4*x1+4*x2-8*x3-8*x4-4*x5+17, 4*x1+4*x2-8*x3-8*x4-4*x5+12, \
>            -8*x1-8*x2+16*x3+16*x4+8*x5-27, -8*x1-8*x2+16*x3+16*x4+8*x5-28,\
>            -4*x1-4*x2+8*x3+8*x4+4*x5-16 \
>            ]", 5, 1, R );
<A 5 x 1 matrix over an external ring>
gap> l := EliminateUnimodularPairPositionPerColumn( col );
[ <An unevaluated 5 x 5 matrix over an external ring>, 
  <An unevaluated 5 x 5 matrix over an external ring> ]
gap> n := NrRows( col );;
gap> Assert( 4, l[1] * col = CertainColumns( HomalgIdentityMatrix( n, R ), [ 1 ] ) );
gap> Assert( 4, CertainColumns( l[2], [ 1 ] ) = col );

2.3-9 EliminateUnitInAColumn
‣ EliminateUnitInAColumn( col )( operation )

Returns: a list

The col contains a unit, then this function cleans the col using this unit and return the transformation matrices. It returns a list of two matrices U and UI such that U * col = Column( [ 1 0 0 ... 0 ] ) and the first column of UI is the given column.

 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 Bib Ind

generated by GAPDoc2HTML