GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
############################################################################# ## ## GAPHomalgBasic.gi RingsForHomalg package Mohamed Barakat ## ## Copyright 2007-2008 Lehrstuhl B für Mathematik, RWTH Aachen ## ## Implementations for the external rings provided by the GAP package homalg. ## ############################################################################# #################################### # # global variables: # #################################### InstallValue( CommonHomalgTableForGAPHomalgBasic, rec( ## Must only then be provided by the RingPackage in case the default ## "service" function does not match the Ring BasisOfRowModule := function( M ) local N; N := HomalgVoidMatrix( "unknown_number_of_rows", NrColumns( M ), HomalgRing( M ) ); homalgSendBlocking( [ N, " := BasisOfRowModule(", M, ")" ], "need_command", HOMALG_IO.Pictograms.BasisOfModule ); return N; end, BasisOfColumnModule := function( M ) local N; N := HomalgVoidMatrix( NrRows( M ), "unknown_number_of_columns", HomalgRing( M ) ); homalgSendBlocking( [ N, " := BasisOfColumnModule(", M, ")" ], "need_command", HOMALG_IO.Pictograms.BasisOfModule ); return N; end, BasisOfRowsCoeff := function( M, T ) local R, N; R := HomalgRing( M ); N := HomalgVoidMatrix( "unknown_number_of_rows", NrColumns( M ), R ); homalgSendBlocking( [ T, " := HomalgVoidMatrix(", R, ");; ", N, " := BasisOfRowsCoeff(", M, T, ")" ], "need_command", HOMALG_IO.Pictograms.BasisCoeff ); return N; end, BasisOfColumnsCoeff := function( M, T ) local R, N; R := HomalgRing( M ); N := HomalgVoidMatrix( NrRows( M ), "unknown_number_of_columns", R ); homalgSendBlocking( [ T, " := HomalgVoidMatrix(", R, ");; ", N, " := BasisOfColumnsCoeff(", M, T, ")" ], "need_command", HOMALG_IO.Pictograms.BasisCoeff ); return N; end, DecideZeroRows := function( A, B ) local N; N := HomalgVoidMatrix( NrRows( A ), NrColumns( A ), HomalgRing( A ) ); homalgSendBlocking( [ N, " := DecideZeroRows(", A, B, ")" ], "need_command", HOMALG_IO.Pictograms.DecideZero ); return N; end, DecideZeroColumns := function( A, B ) local N; N := HomalgVoidMatrix( NrRows( A ), NrColumns( A ), HomalgRing( A ) ); homalgSendBlocking( [ N, " := DecideZeroColumns(", A, B, ")" ], "need_command", HOMALG_IO.Pictograms.DecideZero ); return N; end, DecideZeroRowsEffectively := function( A, B, T ) local R, N; R := HomalgRing( A ); N := HomalgVoidMatrix( NrRows( A ), NrColumns( A ), R ); homalgSendBlocking( [ T, " := HomalgVoidMatrix(", R, ");; ", N, " := DecideZeroRowsEffectively(", A, B, T, ")" ], "need_command", HOMALG_IO.Pictograms.DecideZeroEffectively ); return N; end, DecideZeroColumnsEffectively := function( A, B, T ) local R, N; R := HomalgRing( A ); N := HomalgVoidMatrix( NrRows( A ), NrColumns( A ), R ); homalgSendBlocking( [ T, " := HomalgVoidMatrix(", R, ");; ", N, " := DecideZeroColumnsEffectively(", A, B, T, ")" ], "need_command", HOMALG_IO.Pictograms.DecideZeroEffectively ); return N; end, SyzygiesGeneratorsOfRows := function( M ) local N; N := HomalgVoidMatrix( "unknown_number_of_rows", NrRows( M ), HomalgRing( M ) ); homalgSendBlocking( [ N, " := SyzygiesGeneratorsOfRows(", M, ")" ], "need_command", HOMALG_IO.Pictograms.SyzygiesGenerators ); return N; end, SyzygiesGeneratorsOfColumns := function( M ) local N; N := HomalgVoidMatrix( NrColumns( M ), "unknown_number_of_columns", HomalgRing( M ) ); homalgSendBlocking( [ N, " := SyzygiesGeneratorsOfColumns(", M, ")" ], "need_command", HOMALG_IO.Pictograms.SyzygiesGenerators ); return N; end, RelativeSyzygiesGeneratorsOfRows := function( M, M2 ) local N; N := HomalgVoidMatrix( "unknown_number_of_rows", NrRows( M ), HomalgRing( M ) ); homalgSendBlocking( [ N, " := SyzygiesGeneratorsOfRows(", M, M2, ")" ], "need_command", HOMALG_IO.Pictograms.SyzygiesGenerators ); return N; end, RelativeSyzygiesGeneratorsOfColumns := function( M, M2 ) local N; N := HomalgVoidMatrix( NrColumns( M ), "unknown_number_of_columns", HomalgRing( M ) ); homalgSendBlocking( [ N, " := SyzygiesGeneratorsOfColumns(", M, M2, ")" ], "need_command", HOMALG_IO.Pictograms.SyzygiesGenerators ); return N; end, ReducedBasisOfRowModule := function( M ) local N; N := HomalgVoidMatrix( "unknown_number_of_rows", NrColumns( M ), HomalgRing( M ) ); homalgSendBlocking( [ N, " := ReducedBasisOfRowModule(", M, ")" ], "need_command", HOMALG_IO.Pictograms.ReducedBasisOfModule ); return N; end, ReducedBasisOfColumnModule := function( M ) local N; N := HomalgVoidMatrix( NrRows( M ), "unknown_number_of_columns", HomalgRing( M ) ); homalgSendBlocking( [ N, " := ReducedBasisOfColumnModule(", M, ")" ], "need_command", HOMALG_IO.Pictograms.ReducedBasisOfModule ); return N; end, ReducedSyzygiesGeneratorsOfRows := function( M ) local N; N := HomalgVoidMatrix( "unknown_number_of_rows", NrRows( M ), HomalgRing( M ) ); homalgSendBlocking( [ N, " := ReducedSyzygiesGeneratorsOfRows(", M, ")" ], "need_command", HOMALG_IO.Pictograms.ReducedSyzygiesGenerators ); return N; end, ReducedSyzygiesGeneratorsOfColumns := function( M ) local N; N := HomalgVoidMatrix( NrColumns( M ), "unknown_number_of_columns", HomalgRing( M ) ); homalgSendBlocking( [ N, " := ReducedSyzygiesGeneratorsOfColumns(", M, ")" ], "need_command", HOMALG_IO.Pictograms.ReducedSyzygiesGenerators ); return N; end, ) );