Skip to content

Commit 0880c2a

Browse files
authored
Merge pull request #729 from zickgraf/ConvertMatrixToRow
Use ConvertMatrixToRow/Column in MatrixCategory and CategoryOfRows/Columns
2 parents 0342ca4 + 592397a commit 0880c2a

7 files changed

+30
-62
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.10-02",
13+
Version := "2021.10-03",
1414
Date := Concatenation( "01/", ~.Version{[ 6, 7 ]}, "/", ~.Version{[ 1 .. 4 ]} ),
1515
License := "GPL-2.0-or-later",
1616

FreydCategoriesForCAP/gap/CategoryOfColumnsAsOppositeOfCategoryOfRows.gi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ InstallGlobalFunction( INSTALL_FUNCTIONS_FOR_CATEGORY_OF_COLUMNS_AS_OPPOSITE_OF_
286286
id := HomalgIdentityMatrix( rank, ring );
287287

288288
return CategoryOfColumnsMorphism( cat, tensor_object,
289-
UnionOfColumns( List( [ 1 .. rank ], i -> CertainRows( id, [i] ) ) ),
289+
ConvertMatrixToRow( id ),
290290
unit );
291291

292292
end );
@@ -308,7 +308,7 @@ InstallGlobalFunction( INSTALL_FUNCTIONS_FOR_CATEGORY_OF_COLUMNS_AS_OPPOSITE_OF_
308308
id := HomalgIdentityMatrix( rank, ring );
309309

310310
return CategoryOfColumnsMorphism( cat, unit,
311-
UnionOfRows( List( [ 1 .. rank ], i -> CertainColumns( id, [i] ) ) ),
311+
ConvertMatrixToColumn( id ),
312312
tensor_object );
313313

314314
end );

FreydCategoriesForCAP/gap/CategoryOfRows.gi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -953,7 +953,7 @@ InstallGlobalFunction( INSTALL_FUNCTIONS_FOR_CATEGORY_OF_ROWS,
953953
id := HomalgIdentityMatrix( rank, ring );
954954

955955
return CategoryOfRowsMorphism( cat, tensor_object,
956-
UnionOfRows( List( [ 1 .. rank ], i -> CertainColumns( id, [i] ) ) ),
956+
ConvertMatrixToColumn( id ),
957957
unit );
958958

959959
end );
@@ -975,7 +975,7 @@ InstallGlobalFunction( INSTALL_FUNCTIONS_FOR_CATEGORY_OF_ROWS,
975975
id := HomalgIdentityMatrix( rank, ring );
976976

977977
return CategoryOfRowsMorphism( cat, unit,
978-
UnionOfColumns( List( [ 1 .. rank ], i -> CertainRows( id, [i] ) ) ),
978+
ConvertMatrixToRow( id ),
979979
tensor_object );
980980

981981
end );

FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumnsAsOppositeOfCategoryOfRowsOfCommutativeRingPrecompiled.gi

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,18 +54,15 @@ end
5454

5555
########
5656
function ( cat_1, s_1, a_1, r_1 )
57-
local cap_jit_hoisted_expression_1_1, cap_jit_deduplicated_expression_1_1, cap_jit_deduplicated_expression_2_1;
57+
local cap_jit_deduplicated_expression_1_1, cap_jit_deduplicated_expression_2_1;
5858
cap_jit_deduplicated_expression_1_1 := RankOfObject( a_1 );
5959
cap_jit_deduplicated_expression_2_1 := UnderlyingRing( cat_1 );
6060
if cap_jit_deduplicated_expression_1_1 = 0 then
6161
return ObjectifyMorphismWithSourceAndRangeForCAPWithAttributes( rec(
6262
), cat_1, s_1, r_1, UnderlyingMatrix, HomalgZeroMatrix( RankOfObject( r_1 ), RankOfObject( s_1 ), cap_jit_deduplicated_expression_2_1 ) );
6363
else
64-
cap_jit_hoisted_expression_1_1 := HomalgIdentityMatrix( cap_jit_deduplicated_expression_1_1, cap_jit_deduplicated_expression_2_1 );
6564
return ObjectifyMorphismWithSourceAndRangeForCAPWithAttributes( rec(
66-
), cat_1, s_1, r_1, UnderlyingMatrix, UnionOfRows( List( [ 1 .. cap_jit_deduplicated_expression_1_1 ], function ( i_2 )
67-
return CertainColumns( cap_jit_hoisted_expression_1_1, [ i_2 ] );
68-
end ) ) );
65+
), cat_1, s_1, r_1, UnderlyingMatrix, ConvertMatrixToColumn( HomalgIdentityMatrix( cap_jit_deduplicated_expression_1_1, cap_jit_deduplicated_expression_2_1 ) ) );
6966
fi;
7067
return;
7168
end
@@ -187,18 +184,15 @@ end
187184

188185
########
189186
function ( cat_1, s_1, a_1, r_1 )
190-
local cap_jit_hoisted_expression_1_1, cap_jit_deduplicated_expression_1_1, cap_jit_deduplicated_expression_2_1;
187+
local cap_jit_deduplicated_expression_1_1, cap_jit_deduplicated_expression_2_1;
191188
cap_jit_deduplicated_expression_1_1 := RankOfObject( a_1 );
192189
cap_jit_deduplicated_expression_2_1 := UnderlyingRing( cat_1 );
193190
if cap_jit_deduplicated_expression_1_1 = 0 then
194191
return ObjectifyMorphismWithSourceAndRangeForCAPWithAttributes( rec(
195192
), cat_1, s_1, r_1, UnderlyingMatrix, HomalgZeroMatrix( RankOfObject( r_1 ), RankOfObject( s_1 ), cap_jit_deduplicated_expression_2_1 ) );
196193
else
197-
cap_jit_hoisted_expression_1_1 := HomalgIdentityMatrix( cap_jit_deduplicated_expression_1_1, cap_jit_deduplicated_expression_2_1 );
198194
return ObjectifyMorphismWithSourceAndRangeForCAPWithAttributes( rec(
199-
), cat_1, s_1, r_1, UnderlyingMatrix, UnionOfColumns( List( [ 1 .. cap_jit_deduplicated_expression_1_1 ], function ( i_2 )
200-
return CertainRows( cap_jit_hoisted_expression_1_1, [ i_2 ] );
201-
end ) ) );
195+
), cat_1, s_1, r_1, UnderlyingMatrix, ConvertMatrixToRow( HomalgIdentityMatrix( cap_jit_deduplicated_expression_1_1, cap_jit_deduplicated_expression_2_1 ) ) );
202196
fi;
203197
return;
204198
end

FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumnsAsOppositeOfCategoryOfRowsOfFieldPrecompiled.gi

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,18 +90,15 @@ end
9090

9191
########
9292
function ( cat_1, s_1, a_1, r_1 )
93-
local cap_jit_hoisted_expression_1_1, cap_jit_deduplicated_expression_1_1, cap_jit_deduplicated_expression_2_1;
93+
local cap_jit_deduplicated_expression_1_1, cap_jit_deduplicated_expression_2_1;
9494
cap_jit_deduplicated_expression_1_1 := RankOfObject( a_1 );
9595
cap_jit_deduplicated_expression_2_1 := UnderlyingRing( cat_1 );
9696
if cap_jit_deduplicated_expression_1_1 = 0 then
9797
return ObjectifyMorphismWithSourceAndRangeForCAPWithAttributes( rec(
9898
), cat_1, s_1, r_1, UnderlyingMatrix, HomalgZeroMatrix( RankOfObject( r_1 ), RankOfObject( s_1 ), cap_jit_deduplicated_expression_2_1 ) );
9999
else
100-
cap_jit_hoisted_expression_1_1 := HomalgIdentityMatrix( cap_jit_deduplicated_expression_1_1, cap_jit_deduplicated_expression_2_1 );
101100
return ObjectifyMorphismWithSourceAndRangeForCAPWithAttributes( rec(
102-
), cat_1, s_1, r_1, UnderlyingMatrix, UnionOfRows( List( [ 1 .. cap_jit_deduplicated_expression_1_1 ], function ( i_2 )
103-
return CertainColumns( cap_jit_hoisted_expression_1_1, [ i_2 ] );
104-
end ) ) );
101+
), cat_1, s_1, r_1, UnderlyingMatrix, ConvertMatrixToColumn( HomalgIdentityMatrix( cap_jit_deduplicated_expression_1_1, cap_jit_deduplicated_expression_2_1 ) ) );
105102
fi;
106103
return;
107104
end
@@ -252,18 +249,15 @@ end
252249

253250
########
254251
function ( cat_1, s_1, a_1, r_1 )
255-
local cap_jit_hoisted_expression_1_1, cap_jit_deduplicated_expression_1_1, cap_jit_deduplicated_expression_2_1;
252+
local cap_jit_deduplicated_expression_1_1, cap_jit_deduplicated_expression_2_1;
256253
cap_jit_deduplicated_expression_1_1 := RankOfObject( a_1 );
257254
cap_jit_deduplicated_expression_2_1 := UnderlyingRing( cat_1 );
258255
if cap_jit_deduplicated_expression_1_1 = 0 then
259256
return ObjectifyMorphismWithSourceAndRangeForCAPWithAttributes( rec(
260257
), cat_1, s_1, r_1, UnderlyingMatrix, HomalgZeroMatrix( RankOfObject( r_1 ), RankOfObject( s_1 ), cap_jit_deduplicated_expression_2_1 ) );
261258
else
262-
cap_jit_hoisted_expression_1_1 := HomalgIdentityMatrix( cap_jit_deduplicated_expression_1_1, cap_jit_deduplicated_expression_2_1 );
263259
return ObjectifyMorphismWithSourceAndRangeForCAPWithAttributes( rec(
264-
), cat_1, s_1, r_1, UnderlyingMatrix, UnionOfColumns( List( [ 1 .. cap_jit_deduplicated_expression_1_1 ], function ( i_2 )
265-
return CertainRows( cap_jit_hoisted_expression_1_1, [ i_2 ] );
266-
end ) ) );
260+
), cat_1, s_1, r_1, UnderlyingMatrix, ConvertMatrixToRow( HomalgIdentityMatrix( cap_jit_deduplicated_expression_1_1, cap_jit_deduplicated_expression_2_1 ) ) );
267261
fi;
268262
return;
269263
end

LinearAlgebraForCAP/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 := "LinearAlgebraForCAP",
1212
Subtitle := "Category of Matrices over a Field for CAP",
13-
Version := "2021.09-02",
13+
Version := "2021.10-01",
1414
Date := Concatenation( "01/", ~.Version{[ 6, 7 ]}, "/", ~.Version{[ 1 .. 4 ]} ),
1515
License := "GPL-2.0-or-later",
1616

LinearAlgebraForCAP/gap/LinearAlgebraForCAP.gi

Lines changed: 16 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -769,30 +769,20 @@ InstallGlobalFunction( INSTALL_FUNCTIONS_FOR_MATRIX_CATEGORY,
769769
##
770770
AddEvaluationForDualWithGivenTensorProduct( category,
771771
function( cat, tensor_object, object, unit )
772-
local dimension, column, zero_column, i;
772+
local dimension, id;
773773

774774
dimension := Dimension( object );
775775

776-
column := [ ];
777-
778-
zero_column := List( [ 1 .. dimension ], i -> 0 );
779-
780-
for i in [ 1 .. dimension - 1 ] do
781-
782-
Add( column, 1 );
783-
784-
Append( column, zero_column );
785-
786-
od;
787-
788-
if dimension > 0 then
789-
790-
Add( column, 1 );
791-
776+
if dimension = 0 then
777+
778+
return ZeroMorphism( cat, tensor_object, unit );
779+
792780
fi;
793781

782+
id := HomalgIdentityMatrix( dimension, homalg_field );
783+
794784
return VectorSpaceMorphism( cat, tensor_object,
795-
HomalgMatrix( column, Dimension( tensor_object ), 1, homalg_field ),
785+
ConvertMatrixToColumn( id ),
796786
unit );
797787

798788
end );
@@ -801,30 +791,20 @@ InstallGlobalFunction( INSTALL_FUNCTIONS_FOR_MATRIX_CATEGORY,
801791
AddCoevaluationForDualWithGivenTensorProduct( category,
802792

803793
function( cat, unit, object, tensor_object )
804-
local dimension, row, zero_row, i;
794+
local dimension, id;
805795

806796
dimension := Dimension( object );
807797

808-
row := [ ];
809-
810-
zero_row := List( [ 1 .. dimension ], i -> 0 );
811-
812-
for i in [ 1 .. dimension - 1 ] do
813-
814-
Add( row, 1 );
815-
816-
Append( row, zero_row );
817-
818-
od;
819-
820-
if dimension > 0 then
821-
822-
Add( row, 1 );
823-
798+
if dimension = 0 then
799+
800+
return ZeroMorphism( cat, unit, tensor_object );
801+
824802
fi;
825803

804+
id := HomalgIdentityMatrix( dimension, homalg_field );
805+
826806
return VectorSpaceMorphism( cat, unit,
827-
HomalgMatrix( row, 1, Dimension( tensor_object ), homalg_field ),
807+
ConvertMatrixToRow( id ),
828808
tensor_object );
829809

830810
end );

0 commit comments

Comments
 (0)