GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
#############################################################################
##
## MapleHomalgJanet.gi RingsForHomalg package Mohamed Barakat
##
## Copyright 2007-2008 Lehrstuhl B für Mathematik, RWTH Aachen
##
## Implementations for the rings provided by the Maple package Janet
## accessed via the Maple implementation of homalg.
##
#############################################################################
####################################
#
# constructor functions and methods:
#
####################################
InstallMethod( CreateHomalgTable,
"for homalg rings provided by the maple package Janet",
[ IsHomalgExternalRingObjectInMapleUsingJanetRep ],
function( ext_ring_obj )
local RP, RP_Basic, RP_General, RP_specific, component;
RP := ShallowCopy( CommonHomalgTableForMapleHomalgTools );
RP_General := ShallowCopy( CommonHomalgTableForRings );
RP_Basic := ShallowCopy( CommonHomalgTableForMapleHomalgBasic );
RP_specific :=
rec(
## Must only then be provided by the RingPackage in case the default
## "service" function does not match the Ring
MinusOne := HomalgExternalRingElement( "-1", "Maple" ), ## FIXME: sounds ridiculous but we have no other choice at the moment: the Janet package uses jmulmat which comes from the jets package's mulmat and is only meant to multiply a matrix differential operator by a scalar e.g. "-1" and not "[[-1,[]]]"
## Can optionally be provided by the RingPackage
## (homalg functions check if these functions are defined or not)
## (homalgTable gives no default value)
RingName := R -> Concatenation( "B(", homalgSendBlocking( [ "op(", R, "[1])" ], HOMALG_IO.Pictograms.variables, "need_output" ), ")" ),
AreEqualMatrices :=
function( A, B )
local R;
R := HomalgRing( A );
return homalgSendBlocking( [ "`homalg/AreEqualMatrices`(", A, B, R, ")" ] , HOMALG_IO.Pictograms.AreEqualMatrices, "need_output" ) = "true";
end,
IsZeroMatrix :=
function( M )
local R;
R := HomalgRing( M );
return homalgSendBlocking( [ "`homalg/IsZeroMatrix`(", M, R, ")" ], HOMALG_IO.Pictograms.IsZeroMatrix, "need_output" ) = "true";
end,
);
for component in NamesOfComponents( RP_General ) do
RP.(component) := RP_General.(component);
od;
for component in NamesOfComponents( RP_Basic ) do
RP.(component) := RP_Basic.(component);
od;
for component in NamesOfComponents( RP_specific ) do
RP.(component) := RP_specific.(component);
od;
Objectify( TheTypeHomalgTable, RP );
return RP;
end );