Skip to content

Commit 8c109da

Browse files
installed derivations for Abelian categories
* IsomorphismFromKernelOfCokernelToImageObject * IsomorphismFromCoimageToCokernelOfKernel
1 parent 95ca8cb commit 8c109da

File tree

4 files changed

+54
-16
lines changed

4 files changed

+54
-16
lines changed

CAP/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 := "CAP",
1212
Subtitle := "Categories, Algorithms, Programming",
13-
Version := "2022.12-15",
13+
Version := "2022.12-16",
1414
Date := Concatenation( "01/", ~.Version{[ 6, 7 ]}, "/", ~.Version{[ 1 .. 4 ]} ),
1515
License := "GPL-2.0-or-later",
1616

CAP/gap/DerivedMethods.gi

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1820,6 +1820,26 @@ AddDerivationToCAP( IsomorphismFromKernelOfCokernelToImageObject,
18201820

18211821
end : Description := "IsomorphismFromKernelOfCokernelToImageObject as the inverse of IsomorphismFromImageObjectToKernelOfCokernel" );
18221822

1823+
##
1824+
AddDerivationToCAP( IsomorphismFromKernelOfCokernelToImageObject,
1825+
[ [ ImageEmbedding, 1 ],
1826+
[ CokernelProjection, 1 ],
1827+
[ KernelEmbedding, 1 ],
1828+
[ LiftAlongMonomorphism, 1 ] ],
1829+
1830+
function( cat, mor )
1831+
local image_embedding, ker_of_coker_embedding;
1832+
1833+
image_embedding := ImageEmbedding( cat, mor );
1834+
1835+
ker_of_coker_embedding := KernelEmbedding( cat, CokernelProjection( cat, mor ) );
1836+
1837+
return LiftAlongMonomorphism( cat, image_embedding, ker_of_coker_embedding );
1838+
1839+
end : CategoryFilter := IsAbelianCategory, ##FIXME: PreAbelian?
1840+
Description := "IsomorphismFromKernelOfCokernelToImageObject as the unique lift of the kernel of the cokernel along the image embedding"
1841+
);
1842+
18231843
##
18241844
AddDerivationToCAP( IsomorphismFromImageObjectToKernelOfCokernel,
18251845

@@ -1875,6 +1895,26 @@ AddDerivationToCAP( IsomorphismFromCoimageToCokernelOfKernel,
18751895

18761896
end : Description := "IsomorphismFromCoimageToCokernelOfKernel as the inverse of IsomorphismFromCokernelOfKernelToCoimage" );
18771897

1898+
##
1899+
AddDerivationToCAP( IsomorphismFromCoimageToCokernelOfKernel,
1900+
[ [ CoimageProjection, 1 ],
1901+
[ KernelEmbedding, 1 ],
1902+
[ CokernelProjection, 1 ],
1903+
[ ColiftAlongEpimorphism, 1 ] ],
1904+
1905+
function( cat, mor )
1906+
local coimage_projection, coker_of_ker_projection;
1907+
1908+
coimage_projection := CoimageProjection( cat, mor );
1909+
1910+
coker_of_ker_projection := CokernelProjection( cat, KernelEmbedding( cat, mor ) );
1911+
1912+
return ColiftAlongEpimorphism( cat, coimage_projection, coker_of_ker_projection );
1913+
1914+
end : CategoryFilter := IsAbelianCategory, ##FIXME: PreAbelian?
1915+
Description := "IsomorphismFromCoimageToCokernelOfKernel as the unique colift of the cokernel of the kernel along the coimage projection"
1916+
);
1917+
18781918
##
18791919
AddDerivationToCAP( IsomorphismFromFiberProductToKernelOfDiagonalDifference,
18801920

LinearAlgebraForCAP/PackageInfo.g

Lines changed: 2 additions & 2 deletions
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 := "2022.12-04",
13+
Version := "2022.12-05",
1414
Date := Concatenation( "01/", ~.Version{[ 6, 7 ]}, "/", ~.Version{[ 1 .. 4 ]} ),
1515
License := "GPL-2.0-or-later",
1616

@@ -89,7 +89,7 @@ Dependencies := rec(
8989
NeededOtherPackages := [ [ "ToolsForHomalg", ">=2015.09.18" ],
9090
[ "MatricesForHomalg", ">= 2021.12-01" ],
9191
[ "GaussForHomalg", ">= 2021.04-02" ],
92-
[ "CAP", ">= 2022.12-07" ],
92+
[ "CAP", ">= 2022.12-16" ],
9393
[ "MonoidalCategories", ">= 2022.06-01" ],
9494
],
9595
SuggestedOtherPackages := [

LinearAlgebraForCAP/gap/precompiled_categories/MatrixCategoryPrecompiled.gi

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2165,16 +2165,15 @@ end
21652165

21662166
########
21672167
function ( cat_1, C_1, alpha_1, I_1 )
2168-
local morphism_attr_1_1, deduped_2_1, deduped_3_1, deduped_4_1;
2169-
deduped_4_1 := UnderlyingRing( cat_1 );
2168+
local morphism_attr_1_1, deduped_2_1, deduped_3_1;
21702169
deduped_3_1 := UnderlyingMatrix( alpha_1 );
21712170
deduped_2_1 := SyzygiesOfRows( SyzygiesOfColumns( deduped_3_1 ) );
2172-
morphism_attr_1_1 := RightDivide( HomalgIdentityMatrix( RowRankOfMatrix( deduped_3_1 ), deduped_4_1 ), RightDivide( LeftDivide( BasisOfColumns( deduped_3_1 ), deduped_3_1 ), deduped_2_1 ) * RightDivide( HomalgIdentityMatrix( NumberRows( deduped_2_1 ), deduped_4_1 ), RightDivide( BasisOfRows( deduped_3_1 ), deduped_2_1 ) ) );
2171+
morphism_attr_1_1 := RightDivide( HomalgIdentityMatrix( RowRankOfMatrix( deduped_3_1 ), UnderlyingRing( cat_1 ) ), RightDivide( LeftDivide( BasisOfColumns( deduped_3_1 ), deduped_3_1 ), deduped_2_1 ) * RightDivide( deduped_2_1, BasisOfRows( deduped_3_1 ) ) );
21732172
return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, Dimension, NumberRows( morphism_attr_1_1 ) ), C_1, UnderlyingMatrix, morphism_attr_1_1 );
21742173
end
21752174
########
21762175

2177-
, 1817 : IsPrecompiledDerivation := true );
2176+
, 1512 : IsPrecompiledDerivation := true );
21782177

21792178
##
21802179
AddIsAutomorphism( cat,
@@ -2603,12 +2602,12 @@ end
26032602
function ( cat_1, alpha_1 )
26042603
local morphism_attr_1_1, deduped_2_1;
26052604
deduped_2_1 := UnderlyingMatrix( alpha_1 );
2606-
morphism_attr_1_1 := RightDivide( HomalgIdentityMatrix( ColumnRankOfMatrix( deduped_2_1 ), UnderlyingRing( cat_1 ) ), LeftDivide( SyzygiesOfColumns( SyzygiesOfRows( deduped_2_1 ) ), BasisOfColumns( deduped_2_1 ) ) );
2605+
morphism_attr_1_1 := LeftDivide( BasisOfColumns( deduped_2_1 ), SyzygiesOfColumns( SyzygiesOfRows( deduped_2_1 ) ) );
26072606
return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, Dimension, NumberRows( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, Dimension, NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 );
26082607
end
26092608
########
26102609

2611-
, 808 : IsPrecompiledDerivation := true );
2610+
, 503 : IsPrecompiledDerivation := true );
26122611

26132612
##
26142613
AddIsomorphismFromCokernelOfDiagonalDifferenceToPushout( cat,
@@ -2984,15 +2983,14 @@ end
29842983

29852984
########
29862985
function ( cat_1, alpha_1 )
2987-
local morphism_attr_1_1, deduped_2_1, deduped_3_1;
2988-
deduped_3_1 := UnderlyingMatrix( alpha_1 );
2989-
deduped_2_1 := SyzygiesOfRows( SyzygiesOfColumns( deduped_3_1 ) );
2990-
morphism_attr_1_1 := RightDivide( HomalgIdentityMatrix( NumberRows( deduped_2_1 ), UnderlyingRing( cat_1 ) ), RightDivide( BasisOfRows( deduped_3_1 ), deduped_2_1 ) );
2986+
local morphism_attr_1_1, deduped_2_1;
2987+
deduped_2_1 := UnderlyingMatrix( alpha_1 );
2988+
morphism_attr_1_1 := RightDivide( SyzygiesOfRows( SyzygiesOfColumns( deduped_2_1 ) ), BasisOfRows( deduped_2_1 ) );
29912989
return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, Dimension, NumberRows( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, Dimension, NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 );
29922990
end
29932991
########
29942992

2995-
, 808 : IsPrecompiledDerivation := true );
2993+
, 503 : IsPrecompiledDerivation := true );
29962994

29972995
##
29982996
AddIsomorphismFromKernelOfDiagonalDifferenceToFiberProduct( cat,
@@ -4142,12 +4140,12 @@ function ( cat_1, C_1, alpha_1, I_1 )
41424140
local morphism_attr_1_1, deduped_2_1, deduped_3_1;
41434141
deduped_3_1 := UnderlyingMatrix( alpha_1 );
41444142
deduped_2_1 := SyzygiesOfRows( SyzygiesOfColumns( deduped_3_1 ) );
4145-
morphism_attr_1_1 := RightDivide( LeftDivide( BasisOfColumns( deduped_3_1 ), deduped_3_1 ), deduped_2_1 ) * RightDivide( HomalgIdentityMatrix( NumberRows( deduped_2_1 ), UnderlyingRing( cat_1 ) ), RightDivide( BasisOfRows( deduped_3_1 ), deduped_2_1 ) );
4143+
morphism_attr_1_1 := RightDivide( LeftDivide( BasisOfColumns( deduped_3_1 ), deduped_3_1 ), deduped_2_1 ) * RightDivide( deduped_2_1, BasisOfRows( deduped_3_1 ) );
41464144
return CreateCapCategoryMorphismWithAttributes( cat_1, C_1, CreateCapCategoryObjectWithAttributes( cat_1, Dimension, NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 );
41474145
end
41484146
########
41494147

4150-
, 1614 : IsPrecompiledDerivation := true );
4148+
, 1309 : IsPrecompiledDerivation := true );
41514149

41524150
##
41534151
AddMorphismFromFiberProductToSink( cat,

0 commit comments

Comments
 (0)