# SPDX-License-Identifier: GPL-2.0-or-later # GradedModules: A homalg based package for the Abelian category of finitely presented graded modules over computable graded rings # # Implementations #
## implementation stuff for degrees of sets of generators.
# a new representation for the GAP-category IsSetsOfGenerators:
DeclareRepresentation( "IsSetOfDegreesOfGeneratorsRep",
IsSetOfDegreesOfGenerators,
[ "ListOfPositionsOfKnownDegrees" ] );
#################################### # # families and types: # ####################################
# a new family:
BindGlobal( "TheFamilyOfHomalgSetOfDegreesOfGenerators",
NewFamily( "TheFamilyOfHomalgSetOfDegreesOfGenerators" ) );
# a new type:
BindGlobal( "TheTypeHomalgSetOfDegreesOfGenerators",
NewType( TheFamilyOfHomalgSetOfDegreesOfGenerators,
IsSetOfDegreesOfGeneratorsRep ) );
#################################### # # methods for operations: # ####################################
##
InstallMethod( AddDegreesOfGenerators, "for a set of degrees of generators",
[ IsSetOfDegreesOfGeneratorsRep, IsInt, IsList ], function( gens, pos, degrees )
function( M, pos )
local degrees, l_deg, l_rel, T;
degrees := GetDegreesOfGenerators( SetOfDegreesOfGenerators( M ), pos );
if degrees = fail then
l_deg := ListOfPositionsOfKnownDegreesOfGenerators( SetOfDegreesOfGenerators( M ) );
l_rel := ListOfPositionsOfKnownSetsOfRelations( M ); if not pos in l_rel then
return fail; fi; #use a heuristic here to find a smaller/better/faster-to-compute transition matrix? if IsHomalgLeftObjectOrMorphismOfLeftObjects( M ) then
T := TransitionMatrix( M, pos, l_deg[1] );
degrees := NonTrivialDegreePerRow( T, DegreesOfGenerators( M, l_deg[1] ) ); else
T := TransitionMatrix( M, l_deg[1], pos );
degrees := NonTrivialDegreePerColumn( T, DegreesOfGenerators( M, l_deg[1] ) ); fi;
AddDegreesOfGenerators( SetOfDegreesOfGenerators( M ), pos, degrees ); fi;
return DegreesOfGenerators( Source( MorphismHavingSubobjectAsItsImage( M ) ) );
end );
#################################### # # View, Print, and Display methods: # ####################################
InstallMethod( ViewObj, "for set of degrees of generators",
[ IsSetOfDegreesOfGeneratorsRep ],
function( o )
local l;
l := Length( o!.ListOfPositionsOfKnownDegreesOfGenerators );
Print( "<A set containing " );
if l = 1then
Print( "a single list " ); else
Print( l, " lists " ); fi;
Print( "of degrees of generators of a graded homalg module>" );
end );
##
InstallMethod( Display, "for set of degrees of generators",
[ IsSetOfDegreesOfGeneratorsRep ], ## since we don't use the filter IsHomalgLeftObjectOrMorphismOfLeftObjects we need to set the ranks high
function( o )
ViewObj( o );
end );
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.16 Sekunden
(vorverarbeitet am 2026-10-11)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.