GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
#############################################################################
##
## SetsOfGenerators.gi homalg package Mohamed Barakat
##
## Copyright 2007-2008 Lehrstuhl B für Mathematik, RWTH Aachen
##
## Declaration stuff for sets of generators.
##
#############################################################################
####################################
#
# representations:
#
####################################
# a new representation for the GAP-category IsSetsOfGenerators:
DeclareRepresentation( "IsSetsOfGeneratorsRep",
IsSetsOfGenerators,
[ "ListOfPositionsOfKnownSetsOfGenerators" ] );
####################################
#
# families and types:
#
####################################
# a new family:
BindGlobal( "TheFamilyOfHomalgSetsOfGenerators",
NewFamily( "TheFamilyOfHomalgSetsOfGenerators" ) );
# a new type:
BindGlobal( "TheTypeHomalgSetsOfGenerators",
NewType( TheFamilyOfHomalgSetsOfGenerators,
IsSetsOfGeneratorsRep ) );
####################################
#
# methods for operations:
#
####################################
InstallMethod( PositionOfLastStoredSetOfGenerators,
"for sets of generators",
[ IsSetsOfGeneratorsRep ],
function( gens )
return Length( gens!.ListOfPositionsOfKnownSetsOfGenerators );
end );
####################################
#
# constructor functions and methods:
#
####################################
InstallGlobalFunction( CreateSetsOfGeneratorsForLeftModule,
function( arg )
local nargs, generators;
nargs := Length( arg );
generators := rec( ListOfPositionsOfKnownSetsOfGenerators := [ 1 ] );
if IsGeneratorsOfFinitelyGeneratedModuleRep( arg[1] )
and IsHomalgGeneratorsOfLeftModule( arg[1] ) then
generators.1 := arg[1];
elif IsString( arg[1] ) and Length( arg[1] ) > 2 and LowercaseString( arg[1]{[1..3]} ) = "unk" then
generators.1 := "unknown generators";
else
generators.1 := CallFuncList( HomalgGeneratorsForLeftModule, arg );
fi;
## Objectify:
Objectify( TheTypeHomalgSetsOfGenerators, generators );
return generators;
end );
InstallGlobalFunction( CreateSetsOfGeneratorsForRightModule,
function( arg )
local generators;
generators := rec( ListOfPositionsOfKnownSetsOfGenerators := [ 1 ] );
if IsGeneratorsOfFinitelyGeneratedModuleRep( arg[1] )
and IsHomalgGeneratorsOfRightModule( arg[1] ) then
generators.1 := arg[1];
elif IsString( arg[1] ) and Length( arg[1] ) > 2 and LowercaseString( arg[1]{[1..3]} ) = "unk" then
generators.1 := "unknown generators";
else
generators.1 := CallFuncList( HomalgGeneratorsForRightModule, arg );
fi;
## Objectify:
Objectify( TheTypeHomalgSetsOfGenerators, generators );
return generators;
end );
####################################
#
# View, Print, and Display methods:
#
####################################
InstallMethod( ViewObj,
"for sets of generators",
[ IsSetsOfGeneratorsRep ],
function( o )
local l;
l := Length( o!.ListOfPositionsOfKnownSetsOfGenerators );
Print( "<A set containing " );
if l = 1 then
Print( "a single set " );
else
Print( l, " sets " );
fi;
Print( "of generators of a homalg module>" );
end );