‣ BasisOfRowModule( M ) | ( function ) |
Returns: a homalg matrix over the ambient ring
BasisOfRowModule :=
function( M )
local Mrel;
Mrel := UnionOfRowsOp( M );
Mrel := HomalgResidueClassMatrix(
BasisOfRowModule( Mrel ), HomalgRing( M ) );
return GetRidOfObsoleteRows( Mrel );
end,
‣ BasisOfColumnModule( M ) | ( function ) |
Returns: a homalg matrix over the ambient ring
BasisOfColumnModule :=
function( M )
local Mrel;
Mrel := UnionOfColumnsOp( M );
Mrel := HomalgResidueClassMatrix(
BasisOfColumnModule( Mrel ), HomalgRing( M ) );
return GetRidOfObsoleteColumns( Mrel );
end,
‣ DecideZeroRows( A, B ) | ( function ) |
Returns: a homalg matrix over the ambient ring
DecideZeroRows :=
function( A, B )
local Brel;
Brel := UnionOfRowsOp( B );
Brel := BasisOfRowModule( Brel );
return HomalgResidueClassMatrix(
DecideZeroRows( Eval( A ), Brel ), HomalgRing( A ) );
end,
‣ DecideZeroColumns( A, B ) | ( function ) |
Returns: a homalg matrix over the ambient ring
DecideZeroColumns :=
function( A, B )
local Brel;
Brel := UnionOfColumnsOp( B );
Brel := BasisOfColumnModule( Brel );
return HomalgResidueClassMatrix(
DecideZeroColumns( Eval( A ), Brel ), HomalgRing( A ) );
end,
‣ SyzygiesGeneratorsOfRows( M ) | ( function ) |
Returns: a homalg matrix over the ambient ring
SyzygiesGeneratorsOfRows :=
function( M )
local R, ring_rel, rel, S;
R := HomalgRing( M );
ring_rel := RingRelations( R );
rel := MatrixOfRelations( ring_rel );
if IsHomalgRingRelationsAsGeneratorsOfRightIdeal( ring_rel ) then
rel := Involution( rel );
fi;
rel := DiagMat( ListWithIdenticalEntries( NrColumns( M ), rel ) );
S := SyzygiesGeneratorsOfRows( Eval( M ), rel );
S := HomalgResidueClassMatrix( S, R );
S := GetRidOfObsoleteRows( S );
if IsZero( S ) then
SetIsLeftRegular( M, true );
fi;
return S;
end,
‣ SyzygiesGeneratorsOfColumns( M ) | ( function ) |
Returns: a homalg matrix over the ambient ring
SyzygiesGeneratorsOfColumns :=
function( M )
local R, ring_rel, rel, S;
R := HomalgRing( M );
ring_rel := RingRelations( R );
rel := MatrixOfRelations( ring_rel );
if IsHomalgRingRelationsAsGeneratorsOfLeftIdeal( ring_rel ) then
rel := Involution( rel );
fi;
rel := DiagMat( ListWithIdenticalEntries( NrRows( M ), rel ) );
S := SyzygiesGeneratorsOfColumns( Eval( M ), rel );
S := HomalgResidueClassMatrix( S, R );
S := GetRidOfObsoleteColumns( S );
if IsZero( S ) then
SetIsRightRegular( M, true );
fi;
return S;
end,
‣ BasisOfRowsCoeff( M, T ) | ( function ) |
Returns: a homalg matrix over the ambient ring
BasisOfRowsCoeff :=
function( M, T )
local Mrel, TT, bas, nz;
Mrel := UnionOfRowsOp( M );
TT := HomalgVoidMatrix( HomalgRing( Mrel ) );
bas := BasisOfRowsCoeff( Mrel, TT );
bas := HomalgResidueClassMatrix( bas, HomalgRing( M ) );
nz := NonZeroRows( bas );
SetEval( T, CertainRows( CertainColumns( TT, [ 1 .. NrRows( M ) ] ), nz ) );
ResetFilterObj( T, IsVoidMatrix );
## the generic BasisOfRowsCoeff will assume that
## ( NrRows( B ) = 0 ) = IsZero( B )
return CertainRows( bas, nz );
end,
‣ BasisOfColumnsCoeff( M, T ) | ( function ) |
Returns: a homalg matrix over the ambient ring
BasisOfColumnsCoeff :=
function( M, T )
local Mrel, TT, bas, nz;
Mrel := UnionOfColumnsOp( M );
TT := HomalgVoidMatrix( HomalgRing( Mrel ) );
bas := BasisOfColumnsCoeff( Mrel, TT );
bas := HomalgResidueClassMatrix( bas, HomalgRing( M ) );
nz := NonZeroColumns( bas );
SetEval( T, CertainColumns( CertainRows( TT, [ 1 .. NrColumns( M ) ] ), nz ) );
ResetFilterObj( T, IsVoidMatrix );
## the generic BasisOfColumnsCoeff will assume that
## ( NrColumns( B ) = 0 ) = IsZero( B )
return CertainColumns( bas, nz );
end,
‣ DecideZeroRowsEffectively( A, B, T ) | ( function ) |
Returns: a homalg matrix over the ambient ring
DecideZeroRowsEffectively :=
function( A, B, T )
local Brel, TT, red;
Brel := UnionOfRowsOp( B );
TT := HomalgVoidMatrix( HomalgRing( Brel ) );
red := DecideZeroRowsEffectively( Eval( A ), Brel, TT );
SetEval( T, CertainColumns( TT, [ 1 .. NrRows( B ) ] ) );
ResetFilterObj( T, IsVoidMatrix );
return HomalgResidueClassMatrix( red, HomalgRing( A ) );
end,
‣ DecideZeroColumnsEffectively( A, B, T ) | ( function ) |
Returns: a homalg matrix over the ambient ring
DecideZeroColumnsEffectively :=
function( A, B, T )
local Brel, TT, red;
Brel := UnionOfColumnsOp( B );
TT := HomalgVoidMatrix( HomalgRing( Brel ) );
red := DecideZeroColumnsEffectively( Eval( A ), Brel, TT );
SetEval( T, CertainRows( TT, [ 1 .. NrColumns( B ) ] ) );
ResetFilterObj( T, IsVoidMatrix );
return HomalgResidueClassMatrix( red, HomalgRing( A ) );
end,
‣ RelativeSyzygiesGeneratorsOfRows( M, M2 ) | ( function ) |
Returns: a homalg matrix over the ambient ring
RelativeSyzygiesGeneratorsOfRows :=
function( M, M2 )
local M2rel, S;
M2rel := UnionOfRowsOp( M2 );
S := SyzygiesGeneratorsOfRows( Eval( M ), M2rel );
S := HomalgResidueClassMatrix( S, HomalgRing( M ) );
S := GetRidOfObsoleteRows( S );
if IsZero( S ) then
SetIsLeftRegular( M, true );
fi;
return S;
end,
‣ RelativeSyzygiesGeneratorsOfColumns( M, M2 ) | ( function ) |
Returns: a homalg matrix over the ambient ring
RelativeSyzygiesGeneratorsOfColumns :=
function( M, M2 )
local M2rel, S;
M2rel := UnionOfColumnsOp( M2 );
S := SyzygiesGeneratorsOfColumns( Eval( M ), M2rel );
S := HomalgResidueClassMatrix( S, HomalgRing( M ) );
S := GetRidOfObsoleteColumns( S );
if IsZero( S ) then
SetIsRightRegular( M, true );
fi;
return S;
end,
Here we list those matrix operations for which homalg provides no fallback method.
‣ InitialMatrix( ) | ( function ) |
Returns: a homalg matrix over the ambient ring
(--> InitialMatrix (B.1-1))
InitialMatrix := C -> HomalgInitialMatrix(
NrRows( C ), NrColumns( C ), AmbientRing( HomalgRing( C ) ) ),
‣ InitialIdentityMatrix( ) | ( function ) |
Returns: a homalg matrix over the ambient ring
(--> InitialIdentityMatrix (B.1-2))
InitialIdentityMatrix := C -> HomalgInitialIdentityMatrix(
NrRows( C ), AmbientRing( HomalgRing( C ) ) ),
‣ ZeroMatrix( ) | ( function ) |
Returns: a homalg matrix over the ambient ring
(--> ZeroMatrix (B.1-3))
ZeroMatrix := C -> HomalgZeroMatrix(
NrRows( C ), NrColumns( C ), AmbientRing( HomalgRing( C ) ) ),
‣ IdentityMatrix( ) | ( function ) |
Returns: a homalg matrix over the ambient ring
(--> IdentityMatrix (B.1-4))
IdentityMatrix := C -> HomalgIdentityMatrix(
NrRows( C ), AmbientRing( HomalgRing( C ) ) ),
‣ Involution( ) | ( function ) |
Returns: a homalg matrix over the ambient ring
(--> Involution (B.1-5))
Involution :=
function( M )
local N, R;
N := Involution( Eval( M ) );
R := HomalgRing( N );
if not ( HasIsCommutative( R ) and IsCommutative( R ) and
HasIsReducedModuloRingRelations( M ) and
IsReducedModuloRingRelations( M ) ) then
## reduce the matrix N w.r.t. the ring relations
N := DecideZero( N, HomalgRing( M ) );
fi;
return N;
end,
‣ TransposedMatrix( ) | ( function ) |
Returns: a homalg matrix over the ambient ring
(--> TransposedMatrix (B.1-6))
TransposedMatrix :=
function( M )
local N, R;
N := TransposedMatrix( Eval( M ) );
R := HomalgRing( N );
if not ( HasIsCommutative( R ) and IsCommutative( R ) and
HasIsReducedModuloRingRelations( M ) and
IsReducedModuloRingRelations( M ) ) then
## reduce the matrix N w.r.t. the ring relations
N := DecideZero( N, HomalgRing( M ) );
fi;
return N;
end,
‣ CertainRows( ) | ( function ) |
Returns: a homalg matrix over the ambient ring
(--> CertainRows (B.1-7))
CertainRows :=
function( M, plist )
local N;
N := CertainRows( Eval( M ), plist );
if not ( HasIsReducedModuloRingRelations( M ) and
IsReducedModuloRingRelations( M ) ) then
## reduce the matrix N w.r.t. the ring relations
N := DecideZero( N, HomalgRing( M ) );
fi;
return N;
end,
‣ CertainColumns( ) | ( function ) |
Returns: a homalg matrix over the ambient ring
(--> CertainColumns (B.1-8))
CertainColumns :=
function( M, plist )
local N;
N := CertainColumns( Eval( M ), plist );
if not ( HasIsReducedModuloRingRelations( M ) and
IsReducedModuloRingRelations( M ) ) then
## reduce the matrix N w.r.t. the ring relations
N := DecideZero( N, HomalgRing( M ) );
fi;
return N;
end,
‣ UnionOfRows( ) | ( function ) |
Returns: a homalg matrix over the ambient ring
(--> UnionOfRows (B.1-9))
UnionOfRows :=
function( A, B )
local N;
N := UnionOfRowsOp( Eval( A ), Eval( B ) );
if not ForAll( [ A, B ], HasIsReducedModuloRingRelations and
IsReducedModuloRingRelations ) then
## reduce the matrix N w.r.t. the ring relations
N := DecideZero( N, HomalgRing( A ) );
fi;
return N;
end,
‣ UnionOfColumns( ) | ( function ) |
Returns: a homalg matrix over the ambient ring
(--> UnionOfColumns (B.1-10))
UnionOfColumns :=
function( A, B )
local N;
N := UnionOfColumnsOp( Eval( A ), Eval( B ) );
if not ForAll( [ A, B ], HasIsReducedModuloRingRelations and
IsReducedModuloRingRelations ) then
## reduce the matrix N w.r.t. the ring relations
N := DecideZero( N, HomalgRing( A ) );
fi;
return N;
end,
‣ DiagMat( ) | ( function ) |
Returns: a homalg matrix over the ambient ring
(--> DiagMat (B.1-11))
DiagMat :=
function( e )
local N;
N := DiagMat( List( e, Eval ) );
if not ForAll( e, HasIsReducedModuloRingRelations and
IsReducedModuloRingRelations ) then
## reduce the matrix N w.r.t. the ring relations
N := DecideZero( N, HomalgRing( e[1] ) );
fi;
return N;
end,
‣ KroneckerMat( ) | ( function ) |
Returns: a homalg matrix over the ambient ring
(--> KroneckerMat (B.1-12))
KroneckerMat :=
function( A, B )
local N;
N := KroneckerMat( Eval( A ), Eval( B ) );
if not ForAll( [ A, B ], HasIsReducedModuloRingRelations and
IsReducedModuloRingRelations ) then
## reduce the matrix N w.r.t. the ring relations
N := DecideZero( N, HomalgRing( A ) );
fi;
return N;
end,
‣ MulMat( ) | ( function ) |
Returns: a homalg matrix over the ambient ring
(--> MulMat (B.1-13))
MulMat :=
function( a, A )
return DecideZero( EvalRingElement( a ) * Eval( A ), HomalgRing( A ) );
end,
MulMatRight :=
function( A, a )
return DecideZero( Eval( A ) * EvalRingElement( a ), HomalgRing( A ) );
end,
‣ AddMat( ) | ( function ) |
Returns: a homalg matrix over the ambient ring
(--> AddMat (B.1-14))
AddMat :=
function( A, B )
return DecideZero( Eval( A ) + Eval( B ), HomalgRing( A ) );
end,
‣ SubMat( ) | ( function ) |
Returns: a homalg matrix over the ambient ring
(--> SubMat (B.1-15))
SubMat :=
function( A, B )
return DecideZero( Eval( A ) - Eval( B ), HomalgRing( A ) );
end,
‣ Compose( ) | ( function ) |
Returns: a homalg matrix over the ambient ring
(--> Compose (B.1-16))
Compose :=
function( A, B )
return DecideZero( Eval( A ) * Eval( B ), HomalgRing( A ) );
end,
‣ IsZeroMatrix( M ) | ( function ) |
Returns: true or false
(--> IsZeroMatrix (B.1-17))
IsZeroMatrix := M -> IsZero( DecideZero( Eval( M ), HomalgRing( M ) ) ),
‣ NrRows( C ) | ( function ) |
Returns: a nonnegative integer
(--> NrRows (B.1-18))
NrRows := C -> NrRows( Eval( C ) ),
‣ NrColumns( C ) | ( function ) |
Returns: a nonnegative integer
(--> NrColumns (B.1-19))
NrColumns := C -> NrColumns( Eval( C ) ),
‣ Determinant( C ) | ( function ) |
Returns: an element of ambient homalg ring
(--> Determinant (B.1-20))
Determinant := C -> DecideZero( Determinant( Eval( C ) ), HomalgRing( C ) ),
Here we list those matrix operations for which homalg does provide a fallback method. But specifying the below homalgTable functions increases the performance by replacing the fallback method.
‣ AreEqualMatrices( A, B ) | ( function ) |
Returns: true or false
(--> AreEqualMatrices (B.2-1))
AreEqualMatrices :=
function( A, B )
return IsZero( DecideZero( Eval( A ) - Eval( B ), HomalgRing( A ) ) );
end,
‣ IsOne( M ) | ( function ) |
Returns: true or false
(--> IsIdentityMatrix (B.2-2))
IsIdentityMatrix := M ->
IsOne( DecideZero( Eval( M ), HomalgRing( M ) ) ),
‣ IsDiagonalMatrix( M ) | ( function ) |
Returns: true or false
(--> IsDiagonalMatrix (B.2-3))
IsDiagonalMatrix := M ->
IsDiagonalMatrix( DecideZero( Eval( M ), HomalgRing( M ) ) ),
‣ ZeroRows( C ) | ( function ) |
Returns: a homalg matrix over the ambient ring
(--> ZeroRows (B.2-4))
ZeroRows := C -> ZeroRows( DecideZero( Eval( C ), HomalgRing( C ) ) ),
‣ ZeroColumns( C ) | ( function ) |
Returns: a homalg matrix over the ambient ring
(--> ZeroColumns (B.2-5))
ZeroColumns := C -> ZeroColumns( DecideZero( Eval( C ), HomalgRing( C ) ) ),
generated by GAPDoc2HTML