Skip to content

Commit a91c7e1

Browse files
authored
Merge pull request #687 from zickgraf/QuiverRows_Hom_structure
Use Object/MorphismConstructor to simplify hom structure in QuiverRows
2 parents 0663c50 + b5fa99f commit a91c7e1

File tree

2 files changed

+30
-56
lines changed

2 files changed

+30
-56
lines changed

FreydCategoriesForCAP/PackageInfo.g

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ SetPackageInfo( rec(
1010

1111
PackageName := "FreydCategoriesForCAP",
1212
Subtitle := "Freyd categories - Formal (co)kernels for additive categories",
13-
Version := "2021.08-02",
13+
Version := "2021.08-03",
1414
Date := Concatenation( "01/", ~.Version{[ 6, 7 ]}, "/", ~.Version{[ 1 .. 4 ]} ),
1515
License := "GPL-2.0-or-later",
1616

FreydCategoriesForCAP/gap/QuiverRows.gi

Lines changed: 29 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -469,8 +469,8 @@ InstallGlobalFunction( INSTALL_FUNCTIONS_FOR_QUIVER_ROWS,
469469
function( category, over_Z )
470470
local algebra, quiver, zero, IDENTITY_MATRIX_QUIVER_ROWS, ZERO_MATRIX_QUIVER_ROWS,
471471
vertices, basis, basis_paths_by_vertex_index, path, MATRIX_FOR_ALGEBROID_HOMSTRUCTURE, hom_structure_algebroid,
472-
object_constructor, ring, morphism_constructor, hom_structure_range_category, hom_structure_on_morphisms_for_pure_components,
473-
distinguished_object, representative_func;
472+
ring, default_range_of_HomStructure, hom_structure_range_category, hom_structure_on_morphisms_for_pure_components,
473+
representative_func;
474474

475475
algebra := UnderlyingQuiverAlgebra( category );
476476

@@ -566,61 +566,18 @@ InstallGlobalFunction( INSTALL_FUNCTIONS_FOR_QUIVER_ROWS,
566566
)
567567
);
568568

569-
## object constructor for hom structure
570-
571569
if over_Z then
572570

573-
hom_structure_range_category := CategoryOfRows( ring );
574-
575-
##
576-
object_constructor := function( n )
577-
578-
return CategoryOfRowsObject( n, hom_structure_range_category );
579-
580-
end;
581-
582-
##
583-
morphism_constructor := function( source, mat, range )
584-
local matrix;
585-
586-
if IsEmpty( mat ) then
587-
588-
matrix := HomalgZeroMatrix( RankOfObject( source ), RankOfObject( range ), ring );
589-
590-
else
591-
592-
matrix := HomalgMatrix( mat, RankOfObject( source ), RankOfObject( range ), ring );
593-
594-
fi;
595-
596-
return CategoryOfRowsMorphism( source, matrix, range );
597-
598-
end;
599-
600-
distinguished_object := CategoryOfRowsObject( 1, hom_structure_range_category );
571+
default_range_of_HomStructure := CategoryOfRows( ring );
601572

602573
else
603574

604-
hom_structure_range_category := MatrixCategory( ring );
605-
606-
##
607-
object_constructor := function( n )
608-
609-
return VectorSpaceObject( n, ring );
610-
611-
end;
612-
613-
##
614-
morphism_constructor := function( source, mat, range )
615-
616-
return VectorSpaceMorphism( source, mat, range );
617-
618-
end;
619-
620-
distinguished_object := TensorUnit( hom_structure_range_category );
575+
default_range_of_HomStructure := MatrixCategory( ring );
621576

622577
fi;
623578

579+
hom_structure_range_category := CAP_INTERNAL_RETURN_OPTION_OR_DEFAULT( "range_of_HomStructure", default_range_of_HomStructure );
580+
624581
SetRangeCategoryOfHomomorphismStructure( category, hom_structure_range_category );
625582

626583
##
@@ -1083,6 +1040,7 @@ InstallGlobalFunction( INSTALL_FUNCTIONS_FOR_QUIVER_ROWS,
10831040

10841041
end );
10851042

1043+
##
10861044
AddHomomorphismStructureOnObjects( category,
10871045
function( A, B )
10881046
local listA, listB, rank, a, b;
@@ -1103,7 +1061,7 @@ InstallGlobalFunction( INSTALL_FUNCTIONS_FOR_QUIVER_ROWS,
11031061

11041062
od;
11051063

1106-
return object_constructor( rank );
1064+
return ObjectConstructor( hom_structure_range_category, rank );
11071065

11081066
end );
11091067

@@ -1288,21 +1246,29 @@ InstallGlobalFunction( INSTALL_FUNCTIONS_FOR_QUIVER_ROWS,
12881246
row_counts, mat, col_counts
12891247
);
12901248

1291-
return morphism_constructor( hom_source, mat, hom_range );
1249+
if IsEmpty( mat ) then
1250+
1251+
return ZeroMorphism( hom_structure_range_category, hom_source, hom_range );
1252+
1253+
else
1254+
1255+
return MorphismConstructor( hom_structure_range_category, hom_source, HomalgMatrix( mat, RankOfObject( hom_source ), RankOfObject( hom_range ), ring ), hom_range );
1256+
1257+
fi;
12921258

12931259
end );
12941260

12951261
##
12961262
AddDistinguishedObjectOfHomomorphismStructure( category,
12971263
function( )
12981264

1299-
return distinguished_object;
1265+
return ObjectConstructor( hom_structure_range_category, 1 );
13001266

13011267
end );
13021268

13031269
##
1304-
AddInterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure( category,
1305-
function( alpha )
1270+
AddInterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects( category,
1271+
function( source, alpha, range )
13061272
local listlist, lists, listr, row, i, j, submat, basis, c, a;
13071273

13081274
listlist := AsListListOfMatrices( alpha );
@@ -1335,7 +1301,15 @@ InstallGlobalFunction( INSTALL_FUNCTIONS_FOR_QUIVER_ROWS,
13351301

13361302
od;
13371303

1338-
return morphism_constructor( distinguished_object, row, object_constructor( Size( row ) ) );
1304+
if IsEmpty( row ) then
1305+
1306+
return ZeroMorphism( hom_structure_range_category, source, range );
1307+
1308+
else
1309+
1310+
return MorphismConstructor( hom_structure_range_category, source, HomalgMatrix( row, 1, Size( row ), ring ), range );
1311+
1312+
fi;
13391313

13401314
end );
13411315

0 commit comments

Comments
 (0)