diff --git a/CAP/PackageInfo.g b/CAP/PackageInfo.g index 5e48a31270..cbdfb4f511 100644 --- a/CAP/PackageInfo.g +++ b/CAP/PackageInfo.g @@ -10,7 +10,7 @@ SetPackageInfo( rec( PackageName := "CAP", Subtitle := "Categories, Algorithms, Programming", -Version := "2023.10-01", +Version := "2023.10-02", Date := (function ( ) if IsBound( GAPInfo.SystemEnvironment.GAP_PKG_RELEASE_DATE ) then return GAPInfo.SystemEnvironment.GAP_PKG_RELEASE_DATE; else return Concatenation( ~.Version{[ 1 .. 4 ]}, "-", ~.Version{[ 6, 7 ]}, "-01" ); fi; end)( ), License := "GPL-2.0-or-later", diff --git a/CAP/gap/DerivedMethods.autogen.gi b/CAP/gap/DerivedMethods.autogen.gi index 3b9a2c5c49..2613f2696d 100644 --- a/CAP/gap/DerivedMethods.autogen.gi +++ b/CAP/gap/DerivedMethods.autogen.gi @@ -1048,6 +1048,21 @@ end : CategoryFilter := IsCapCategory, Weight := 1, is_autogenerated_by_CompilerForCAP := true ); +## +AddDerivationToCAP( MorphismFromCoimageToImageWithGivenObjects, + "dualizing the derivation of MorphismFromCoimageToImageWithGivenObjects by MorphismFromCoimageToImageWithGivenObjects using that the image embedding lifts the coimage astriction", + [ + [ CoimageProjectionWithGivenCoimageObject, 1 ], + [ CoastrictionToImageWithGivenImageObject, 1 ], + [ ColiftAlongEpimorphism, 1 ], + ], + + function ( cat_1, C_1, alpha_1, I_1 ) + return ColiftAlongEpimorphism( cat_1, CoimageProjectionWithGivenCoimageObject( cat_1, alpha_1, C_1 ), CoastrictionToImageWithGivenImageObject( cat_1, alpha_1, I_1 ) ); +end : CategoryFilter := IsCapCategory, + Weight := 1, + is_autogenerated_by_CompilerForCAP := true ); + ## AddDerivationToCAP( MorphismFromCoimageToImageWithGivenObjects, "dualizing the derivation of MorphismFromCoimageToImageWithGivenObjects by MorphismFromCoimageToImageWithGivenObjects using that images are given by kernels of cokernels", diff --git a/CAP/gap/DerivedMethods.gi b/CAP/gap/DerivedMethods.gi index 4cfed3824e..be7ec909fe 100644 --- a/CAP/gap/DerivedMethods.gi +++ b/CAP/gap/DerivedMethods.gi @@ -2907,6 +2907,21 @@ AddFinalDerivationBundle( "IsomorphismFromImageObjectToKernelOfCokernel as the i end, ] : CategoryFilter := IsAbelianCategory ); +## +AddDerivationToCAP( MorphismFromCoimageToImageWithGivenObjects, + "MorphismFromCoimageToImageWithGivenObjects using that the image embedding lifts the coimage astriction", + [ [ ImageEmbeddingWithGivenImageObject, 1 ], + [ AstrictionToCoimageWithGivenCoimageObject, 1 ], + [ LiftAlongMonomorphism, 1 ] ], + + function( cat, coimage, morphism, image ) + + return LiftAlongMonomorphism( cat, + ImageEmbeddingWithGivenImageObject( cat, morphism, image ), + AstrictionToCoimageWithGivenCoimageObject( cat, morphism, coimage ) ); + +end ); + ## AddDerivationToCAP( MorphismFromCoimageToImageWithGivenObjects, "MorphismFromCoimageToImageWithGivenObjects using that images are given by kernels of cokernels", diff --git a/LinearAlgebraForCAP/PackageInfo.g b/LinearAlgebraForCAP/PackageInfo.g index 2207edf36b..95d8625240 100644 --- a/LinearAlgebraForCAP/PackageInfo.g +++ b/LinearAlgebraForCAP/PackageInfo.g @@ -10,7 +10,7 @@ SetPackageInfo( rec( PackageName := "LinearAlgebraForCAP", Subtitle := "Category of Matrices over a Field for CAP", -Version := "2023.09-03", +Version := "2023.10-01", Date := (function ( ) if IsBound( GAPInfo.SystemEnvironment.GAP_PKG_RELEASE_DATE ) then return GAPInfo.SystemEnvironment.GAP_PKG_RELEASE_DATE; else return Concatenation( ~.Version{[ 1 .. 4 ]}, "-", ~.Version{[ 6, 7 ]}, "-01" ); fi; end)( ), License := "GPL-2.0-or-later", @@ -89,7 +89,7 @@ Dependencies := rec( NeededOtherPackages := [ [ "ToolsForHomalg", ">= 2015.09.18" ], [ "MatricesForHomalg", ">= 2023.01-01" ], [ "GaussForHomalg", ">= 2021.04-02" ], - [ "CAP", ">= 2023.08-16" ], + [ "CAP", ">= 2023.10-02" ], [ "MonoidalCategories", ">= 2023.08-11" ], ], SuggestedOtherPackages := [ diff --git a/LinearAlgebraForCAP/gap/precompiled_categories/MatrixCategoryPrecompiled.gi b/LinearAlgebraForCAP/gap/precompiled_categories/MatrixCategoryPrecompiled.gi index 5a33bb1a17..52d35241be 100644 --- a/LinearAlgebraForCAP/gap/precompiled_categories/MatrixCategoryPrecompiled.gi +++ b/LinearAlgebraForCAP/gap/precompiled_categories/MatrixCategoryPrecompiled.gi @@ -2108,16 +2108,13 @@ end ######## function ( cat_1, C_1, alpha_1, I_1 ) - local morphism_attr_1_1, deduped_2_1, deduped_3_1, deduped_4_1; - deduped_4_1 := UnderlyingRing( cat_1 ); - deduped_3_1 := UnderlyingMatrix( alpha_1 ); - deduped_2_1 := SyzygiesOfRows( SyzygiesOfColumns( deduped_3_1 ) ); - morphism_attr_1_1 := UniqueRightDivide( HomalgIdentityMatrix( RowRankOfMatrix( deduped_3_1 ), deduped_4_1 ), UniqueRightDivide( UniqueLeftDivide( BasisOfColumns( deduped_3_1 ), deduped_3_1 ), deduped_2_1 ) * UniqueRightDivide( HomalgIdentityMatrix( NumberRows( deduped_2_1 ), deduped_4_1 ), UniqueRightDivide( BasisOfRows( deduped_3_1 ), deduped_2_1 ) ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, Dimension, NumberRows( morphism_attr_1_1 ) ), C_1, UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := UnderlyingMatrix( alpha_1 ); + return CreateCapCategoryMorphismWithAttributes( cat_1, I_1, C_1, UnderlyingMatrix, UniqueRightDivide( HomalgIdentityMatrix( Dimension( I_1 ), UnderlyingRing( cat_1 ) ), UniqueRightDivide( UniqueLeftDivide( BasisOfColumns( deduped_1_1 ), deduped_1_1 ), BasisOfRows( deduped_1_1 ) ) ) ); end ######## - , 1610 : IsPrecompiledDerivation := true ); + , 604 : IsPrecompiledDerivation := true ); ## AddIsAutomorphism( cat, @@ -4039,15 +4036,13 @@ end ######## function ( cat_1, C_1, alpha_1, I_1 ) - local morphism_attr_1_1, deduped_2_1, deduped_3_1; - deduped_3_1 := UnderlyingMatrix( alpha_1 ); - deduped_2_1 := SyzygiesOfRows( SyzygiesOfColumns( deduped_3_1 ) ); - morphism_attr_1_1 := UniqueRightDivide( UniqueLeftDivide( BasisOfColumns( deduped_3_1 ), deduped_3_1 ), deduped_2_1 ) * UniqueRightDivide( HomalgIdentityMatrix( NumberRows( deduped_2_1 ), UnderlyingRing( cat_1 ) ), UniqueRightDivide( BasisOfRows( deduped_3_1 ), deduped_2_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, C_1, CreateCapCategoryObjectWithAttributes( cat_1, Dimension, NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := UnderlyingMatrix( alpha_1 ); + return CreateCapCategoryMorphismWithAttributes( cat_1, C_1, I_1, UnderlyingMatrix, UniqueRightDivide( UniqueLeftDivide( BasisOfColumns( deduped_1_1 ), deduped_1_1 ), BasisOfRows( deduped_1_1 ) ) ); end ######## - , 1408 : IsPrecompiledDerivation := true ); + , 402 : IsPrecompiledDerivation := true ); ## AddMorphismFromEqualizerToSink( cat,