From cb040d1c89956f73121164dd47746147e1460711 Mon Sep 17 00:00:00 2001 From: Mohamed Barakat Date: Sun, 10 Nov 2024 14:50:29 +0100 Subject: [PATCH] equip Add-methods for CategoryConstructor with operation weight --- CatReps/PackageInfo.g | 4 +- CatReps/README.md | 2 +- CatReps/examples/CategoryOfRepresentations.g | 2 +- .../notebooks/CategoryOfRepresentations.ipynb | 2 +- FiniteCocompletions/PackageInfo.g | 2 +- ...nalCategory_as_FiniteCoproductCompletion.g | 2 +- ...minalCategory_as_FiniteProductCompletion.g | 2 +- FunctorCategories/PackageInfo.g | 6 +- ...fAlgebroidFromDataTablesInCategoryOfRows.g | 5 +- ...ilePreSheavesOfAlgebroidInCategoryOfRows.g | 5 +- FunctorCategories/examples/TerminalCategory.g | 2 +- FunctorCategories/gap/PreSheaves.gi | 36 +-- ...omDataTablesInCategoryOfRowsPrecompiled.gi | 12 +- ...ithRelationsInCategoryOfRowsPrecompiled.gi | 12 +- ...reeAlgebroidInCategoryOfRowsPrecompiled.gi | 12 +- IntrinsicCategories/PackageInfo.g | 4 +- .../gap/IntrinsicCategories.gi | 15 +- LazyCategories/PackageInfo.g | 4 +- LazyCategories/gap/LazyCategory.gi | 71 +++--- Locales/PackageInfo.g | 4 +- Locales/gap/ProsetOfCategory.gi | 1 + PreSheaves/PackageInfo.g | 4 +- PreSheaves/gap/PreSheaves.gi | 227 +++++++++++------- PreSheaves/gap/PreSheavesWithBounds.gi | 40 ++- QuotientCategories/PackageInfo.g | 4 +- QuotientCategories/gap/QuotientCategories.gi | 41 ++-- SubcategoriesForCAP/PackageInfo.g | 4 +- SubcategoriesForCAP/gap/SliceCategory.gi | 61 +++-- SubcategoriesForCAP/gap/Subcategory.gi | 17 +- ...RingOfIntegersOverTensorUnitPrecompiled.gi | 34 +-- 30 files changed, 365 insertions(+), 272 deletions(-) diff --git a/CatReps/PackageInfo.g b/CatReps/PackageInfo.g index e60298197..28b955d20 100644 --- a/CatReps/PackageInfo.g +++ b/CatReps/PackageInfo.g @@ -10,7 +10,7 @@ SetPackageInfo( rec( PackageName := "CatReps", Subtitle := "Representations and cohomology of finite categories", -Version := "2024.11-02", +Version := "2024.11-03", Date := ~.Version{[ 1 .. 10 ]}, 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)( ), @@ -109,7 +109,7 @@ Dependencies := rec( [ "MatricesForHomalg", ">= 2020.02.02" ], [ "Toposes", ">= 2022.05-07" ], [ "Algebroids", ">= 2024.02-02" ], - [ "FunctorCategories", ">= 2024.11-03" ], + [ "FunctorCategories", ">= 2024.11-04" ], ], SuggestedOtherPackages := [ ], ExternalConditions := [ ], diff --git a/CatReps/README.md b/CatReps/README.md index f0e31d343..0130b01e8 100644 --- a/CatReps/README.md +++ b/CatReps/README.md @@ -58,7 +58,7 @@ The supported categorical doctrine of the category of representations is ```gap gap> Display( CatReps ); -70 primitive operations were used to derive 360 operations for this category +68 primitive operations were used to derive 360 operations for this category which constructively * IsCategoryWithDecidableColifts * IsCategoryWithDecidableLifts diff --git a/CatReps/examples/CategoryOfRepresentations.g b/CatReps/examples/CategoryOfRepresentations.g index 731ae1f7c..e1bca9a75 100644 --- a/CatReps/examples/CategoryOfRepresentations.g +++ b/CatReps/examples/CategoryOfRepresentations.g @@ -38,7 +38,7 @@ Display( CatReps ); #! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations, #! Category of matrices over GF(3) ): #! -#! 70 primitive operations were used to derive 360 operations for this category +#! 68 primitive operations were used to derive 360 operations for this category #! which algorithmically #! * IsCategoryWithDecidableColifts #! * IsCategoryWithDecidableLifts diff --git a/CatReps/examples/notebooks/CategoryOfRepresentations.ipynb b/CatReps/examples/notebooks/CategoryOfRepresentations.ipynb index f0012bcec..689c14eef 100644 --- a/CatReps/examples/notebooks/CategoryOfRepresentations.ipynb +++ b/CatReps/examples/notebooks/CategoryOfRepresentations.ipynb @@ -509,7 +509,7 @@ "text": [ "A CAP category with name FunctorCategory( Algebroid( GF(3), FreeCategory( RightQuiver( \"q(2)[a:1->1,b:1->2,c:2->2]\" ) ) ) / relations, Category of matrices over GF(3) ):\n", "\n", - "70 primitive operations were used to derive 360 operations for this category which algorithmically\n", + "68 primitive operations were used to derive 360 operations for this category which algorithmically\n", "* IsCategoryWithDecidableColifts\n", "* IsCategoryWithDecidableLifts\n", "* IsEquippedWithHomomorphismStructure\n", diff --git a/FiniteCocompletions/PackageInfo.g b/FiniteCocompletions/PackageInfo.g index 82188024b..a7d6b5837 100644 --- a/FiniteCocompletions/PackageInfo.g +++ b/FiniteCocompletions/PackageInfo.g @@ -10,7 +10,7 @@ SetPackageInfo( rec( PackageName := "FiniteCocompletions", Subtitle := "Finite (co)product/(co)limit (co)completions", -Version := "2024.11-03", +Version := "2024.11-04", Date := ~.Version{[ 1 .. 10 ]}, 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/FiniteCocompletions/examples/TerminalCategory_as_FiniteCoproductCompletion.g b/FiniteCocompletions/examples/TerminalCategory_as_FiniteCoproductCompletion.g index da4ca5d6e..bf702daff 100644 --- a/FiniteCocompletions/examples/TerminalCategory_as_FiniteCoproductCompletion.g +++ b/FiniteCocompletions/examples/TerminalCategory_as_FiniteCoproductCompletion.g @@ -8,7 +8,7 @@ T := FiniteStrictCoproductCompletion( InitialCategory( ) ); Display( T ); #! A CAP category with name FiniteStrictCoproductCompletion( InitialCategory( ) ): #! -#! 112 primitive operations were used to derive 669 operations for this category +#! 113 primitive operations were used to derive 669 operations for this category #! which algorithmically #! * IsCategoryWithDecidableColifts #! * IsCategoryWithDecidableLifts diff --git a/FiniteCocompletions/examples/TerminalCategory_as_FiniteProductCompletion.g b/FiniteCocompletions/examples/TerminalCategory_as_FiniteProductCompletion.g index 80585db82..28fef2b87 100644 --- a/FiniteCocompletions/examples/TerminalCategory_as_FiniteProductCompletion.g +++ b/FiniteCocompletions/examples/TerminalCategory_as_FiniteProductCompletion.g @@ -8,7 +8,7 @@ T := FiniteStrictProductCompletion( InitialCategory( ) ); Display( T ); #! A CAP category with name FiniteStrictProductCompletion( InitialCategory( ) ): #! -#! 117 primitive operations were used to derive 609 operations for this category +#! 118 primitive operations were used to derive 609 operations for this category #! which algorithmically #! * IsCategoryWithDecidableColifts #! * IsCategoryWithDecidableLifts diff --git a/FunctorCategories/PackageInfo.g b/FunctorCategories/PackageInfo.g index 1643598b5..2e75744ff 100644 --- a/FunctorCategories/PackageInfo.g +++ b/FunctorCategories/PackageInfo.g @@ -10,7 +10,7 @@ SetPackageInfo( rec( PackageName := "FunctorCategories", Subtitle := "Categories of functors", -Version := "2024.11-03", +Version := "2024.11-04", Date := ~.Version{[ 1 .. 10 ]}, 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)( ), @@ -89,14 +89,14 @@ Dependencies := rec( NeededOtherPackages := [ [ "GAPDoc", ">= 1.5" ], [ "ToolsForHomalg", ">= 2022.12-01" ], - [ "CAP", ">= 2024.09-12" ], + [ "CAP", ">= 2024.11-01" ], [ "MonoidalCategories", ">= 2024.06-02" ], [ "CartesianCategories", ">= 2024.06-03" ], [ "ToolsForCategoricalTowers", ">= 2024.11-01" ], [ "FpCategories", ">= 2024.09-06" ], [ "Algebroids", ">= 2024.09-04" ], [ "FiniteCocompletions", ">= 2024.03-12" ], - [ "PreSheaves", ">= 2024.11-02" ], + [ "PreSheaves", ">= 2024.11-03" ], [ "RingsForHomalg", ">= 2020.02.04" ], [ "LinearAlgebraForCAP", ">= 2024.08-07" ], [ "FreydCategoriesForCAP", ">= 2024.08-07" ], diff --git a/FunctorCategories/examples/PrecompilePreSheavesOfAlgebroidFromDataTablesInCategoryOfRows.g b/FunctorCategories/examples/PrecompilePreSheavesOfAlgebroidFromDataTablesInCategoryOfRows.g index 5612bc41c..1ac28f3e8 100644 --- a/FunctorCategories/examples/PrecompilePreSheavesOfAlgebroidFromDataTablesInCategoryOfRows.g +++ b/FunctorCategories/examples/PrecompilePreSheavesOfAlgebroidFromDataTablesInCategoryOfRows.g @@ -41,7 +41,10 @@ precompile_PreSheavesOfAlgebroidFromDataTablesInCategoryOfRows := : operations := Difference( Concatenation( ListPrimitivelyInstalledOperationsOfCategory( category_constructor( A : no_precompiled_code := true ) ), - [ "InverseForMorphisms" ] ), + [ "InverseForMorphisms", + "CokernelColiftWithGivenCokernelObject", + "KernelLiftWithGivenKernelObject", + ] ), [ "IsZeroForObjects", "IsZeroForMorphisms", "IsEpimorphism", diff --git a/FunctorCategories/examples/PrecompilePreSheavesOfAlgebroidInCategoryOfRows.g b/FunctorCategories/examples/PrecompilePreSheavesOfAlgebroidInCategoryOfRows.g index 270d504b5..479da03a9 100644 --- a/FunctorCategories/examples/PrecompilePreSheavesOfAlgebroidInCategoryOfRows.g +++ b/FunctorCategories/examples/PrecompilePreSheavesOfAlgebroidInCategoryOfRows.g @@ -41,7 +41,10 @@ precompile_PreSheavesOfAlgebroidInCategoryOfRows := : operations := Difference( Concatenation( ListPrimitivelyInstalledOperationsOfCategory( category_constructor( A : no_precompiled_code := true ) ), - [ "InverseForMorphisms" ] ), + [ "InverseForMorphisms", + "CokernelColiftWithGivenCokernelObject", + "KernelLiftWithGivenKernelObject", + ] ), [ "IsZeroForObjects", "IsZeroForMorphisms", "IsEpimorphism", diff --git a/FunctorCategories/examples/TerminalCategory.g b/FunctorCategories/examples/TerminalCategory.g index 2196aab1f..ec49eaa14 100644 --- a/FunctorCategories/examples/TerminalCategory.g +++ b/FunctorCategories/examples/TerminalCategory.g @@ -14,7 +14,7 @@ IsTerminalCategory( H ); Display( T ); #! A CAP category with name FiniteCompletion( InitialCategory( ) ): #! -#! 119 primitive operations were used to derive 624 operations for this category +#! 120 primitive operations were used to derive 624 operations for this category #! which algorithmically #! * IsCategoryWithDecidableColifts #! * IsCategoryWithDecidableLifts diff --git a/FunctorCategories/gap/PreSheaves.gi b/FunctorCategories/gap/PreSheaves.gi index 4361c48a1..3b023cc38 100644 --- a/FunctorCategories/gap/PreSheaves.gi +++ b/FunctorCategories/gap/PreSheaves.gi @@ -2343,13 +2343,13 @@ InstallMethodWithCache( PreSheaves, create_func_object := function( name, PSh_I_I ) - return """ + return Pair( """ function( input_arguments... ) return ObjectConstructor( cat, Pair( [ ], [ ] ) ); end - """; + """, 1 ); end; @@ -2357,13 +2357,13 @@ InstallMethodWithCache( PreSheaves, create_func_morphism := function( name, PSh_I_I ) - return """ + return Pair( """ function( input_arguments... ) return MorphismConstructor( cat, top_source, [ ], top_range ); end - """; + """, 1 ); end; @@ -2410,7 +2410,7 @@ InstallMethodWithCache( PreSheaves, return [ InitialObject( PSh_I_I ) ]; - end ); + end, OperationWeight( PSh_I_I, "InitialObject" ) ); ## AddIsWellDefinedForObjects( PSh_I_I, @@ -2418,7 +2418,7 @@ InstallMethodWithCache( PreSheaves, return true; - end ); + end, 1 ); ## AddIsWellDefinedForMorphisms( PSh_I_I, @@ -2426,7 +2426,7 @@ InstallMethodWithCache( PreSheaves, return true; - end ); + end, 1 ); ## AddIsEqualForObjects( PSh_I_I, @@ -2434,7 +2434,7 @@ InstallMethodWithCache( PreSheaves, return true; - end ); + end, 1 ); ## AddIsEqualForMorphisms( PSh_I_I, @@ -2442,7 +2442,7 @@ InstallMethodWithCache( PreSheaves, return true; - end ); + end, 1 ); ## AddIsCongruentForMorphisms( PSh_I_I, @@ -2450,7 +2450,7 @@ InstallMethodWithCache( PreSheaves, return true; - end ); + end, 1 ); if not H = "self" then @@ -2463,7 +2463,7 @@ InstallMethodWithCache( PreSheaves, return InitialObject( H ); - end ); + end, OperationWeight( H, "InitialObject" ) ); ## AddHomomorphismStructureOnObjects( PSh_I_I, @@ -2471,7 +2471,7 @@ InstallMethodWithCache( PreSheaves, return DistinguishedObjectOfHomomorphismStructure( PSh_I_I ); - end ); + end, OperationWeight( PSh_I_I, "DistinguishedObjectOfHomomorphismStructure" ) ); ## AddHomomorphismStructureOnMorphismsWithGivenObjects( PSh_I_I, @@ -2482,7 +2482,7 @@ InstallMethodWithCache( PreSheaves, return MorphismConstructor( H, source, fail, target ); - end ); + end, 1 ); ## AddInterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects( PSh_I_I, @@ -2493,7 +2493,7 @@ InstallMethodWithCache( PreSheaves, return MorphismConstructor( H, distinguished_object, fail, target ); - end ); + end, 1 ); ## AddInterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism( PSh_I_I, @@ -2501,7 +2501,7 @@ InstallMethodWithCache( PreSheaves, return MorphismConstructor( PSh_I_I, S, fail, T ); - end ); + end, 1 ); fi; @@ -2511,7 +2511,7 @@ InstallMethodWithCache( PreSheaves, return IdentityMorphism( PSh_I_I, object1 ); - end ); + end, OperationWeight( PSh_I_I, "IdentityMorphism" ) ); ## AddBasisOfExternalHom( PSh_I_I, @@ -2519,7 +2519,7 @@ InstallMethodWithCache( PreSheaves, return [ ]; - end ); + end, 1 ); ## AddCoefficientsOfMorphism( PSh_I_I, @@ -2527,7 +2527,7 @@ InstallMethodWithCache( PreSheaves, return [ ]; - end ); + end, 1 ); Finalize( PSh_I_I ); diff --git a/FunctorCategories/gap/precompiled_categories/PreSheavesOfAlgebroidFromDataTablesInCategoryOfRowsPrecompiled.gi b/FunctorCategories/gap/precompiled_categories/PreSheavesOfAlgebroidFromDataTablesInCategoryOfRowsPrecompiled.gi index 163d786da..06666e0c7 100644 --- a/FunctorCategories/gap/precompiled_categories/PreSheavesOfAlgebroidFromDataTablesInCategoryOfRowsPrecompiled.gi +++ b/FunctorCategories/gap/precompiled_categories/PreSheavesOfAlgebroidFromDataTablesInCategoryOfRowsPrecompiled.gi @@ -365,7 +365,7 @@ function ( cat_1, alpha_1, T_1, tau_1, P_1 ) hoisted_1_1 := List( ValuesOnAllObjects( alpha_1 ), function ( logic_new_func_x_2 ) return SyzygiesOfColumns( UnderlyingMatrix( logic_new_func_x_2 ) ); end ); - return CreateCapCategoryMorphismWithAttributes( cat_1, P_1, T_1, ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) + return CreateCapCategoryMorphismWithAttributes( cat_1, P_1, Range( tau_1 ), ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) local morphism_attr_1_2; morphism_attr_1_2 := UniqueLeftDivide( hoisted_1_1[o_2], hoisted_2_1[o_2] ); return CreateCapCategoryMorphismWithAttributes( deduped_3_1, CreateCapCategoryObjectWithAttributes( deduped_3_1, RankOfObject, NumberRows( morphism_attr_1_2 ) ), hoisted_4_1[o_2], UnderlyingMatrix, morphism_attr_1_2 ); @@ -373,7 +373,7 @@ function ( cat_1, alpha_1, T_1, tau_1, P_1 ) end ######## - , 100 ); + , 201 : IsPrecompiledDerivation := true ); ## cat!.cached_precompiled_functions.CokernelColiftWithGivenCokernelObject := @@ -392,7 +392,7 @@ function ( cat_1, alpha_1, T_1, tau_1, P_1 ) hoisted_1_1 := List( deduped_6_1, function ( logic_new_func_x_2 ) return NumberColumns( SyzygiesOfColumns( UnderlyingMatrix( logic_new_func_x_2 ) ) ); end ); - return CreateCapCategoryMorphismWithAttributes( cat_1, P_1, T_1, ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) + return CreateCapCategoryMorphismWithAttributes( cat_1, P_1, Range( tau_1 ), ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) return CreateCapCategoryMorphismWithAttributes( deduped_2_1, CreateCapCategoryObjectWithAttributes( deduped_2_1, RankOfObject, hoisted_1_1[o_2] ), hoisted_3_1[o_2], UnderlyingMatrix, UniqueLeftDivide( hoisted_4_1[o_2], hoisted_5_1[o_2] ) ); end ) ); end @@ -1607,7 +1607,7 @@ function ( cat_1, alpha_1, T_1, tau_1, P_1 ) end ); hoisted_2_1 := List( deduped_5_1, UnderlyingMatrix ); hoisted_1_1 := List( deduped_5_1, Source ); - return CreateCapCategoryMorphismWithAttributes( cat_1, T_1, P_1, ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) + return CreateCapCategoryMorphismWithAttributes( cat_1, Source( tau_1 ), P_1, ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) local morphism_attr_1_2; morphism_attr_1_2 := UniqueRightDivide( hoisted_2_1[o_2], hoisted_3_1[o_2] ); return CreateCapCategoryMorphismWithAttributes( deduped_4_1, hoisted_1_1[o_2], CreateCapCategoryObjectWithAttributes( deduped_4_1, RankOfObject, NumberColumns( morphism_attr_1_2 ) ), UnderlyingMatrix, morphism_attr_1_2 ); @@ -1615,7 +1615,7 @@ function ( cat_1, alpha_1, T_1, tau_1, P_1 ) end ######## - , 100 ); + , 201 : IsPrecompiledDerivation := true ); ## cat!.cached_precompiled_functions.KernelLiftWithGivenKernelObject := @@ -1634,7 +1634,7 @@ function ( cat_1, alpha_1, T_1, tau_1, P_1 ) return NumberRows( SyzygiesOfRows( UnderlyingMatrix( logic_new_func_x_2 ) ) ); end ); hoisted_1_1 := List( deduped_6_1, Source ); - return CreateCapCategoryMorphismWithAttributes( cat_1, T_1, P_1, ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) + return CreateCapCategoryMorphismWithAttributes( cat_1, Source( tau_1 ), P_1, ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) return CreateCapCategoryMorphismWithAttributes( deduped_3_1, hoisted_1_1[o_2], CreateCapCategoryObjectWithAttributes( deduped_3_1, RankOfObject, hoisted_2_1[o_2] ), UnderlyingMatrix, UniqueRightDivide( hoisted_4_1[o_2], hoisted_5_1[o_2] ) ); end ) ); end diff --git a/FunctorCategories/gap/precompiled_categories/PreSheavesOfAlgebroidWithRelationsInCategoryOfRowsPrecompiled.gi b/FunctorCategories/gap/precompiled_categories/PreSheavesOfAlgebroidWithRelationsInCategoryOfRowsPrecompiled.gi index cf8e98ec8..3ca4cb6c4 100644 --- a/FunctorCategories/gap/precompiled_categories/PreSheavesOfAlgebroidWithRelationsInCategoryOfRowsPrecompiled.gi +++ b/FunctorCategories/gap/precompiled_categories/PreSheavesOfAlgebroidWithRelationsInCategoryOfRowsPrecompiled.gi @@ -230,7 +230,7 @@ function ( cat_1, alpha_1, T_1, tau_1, P_1 ) hoisted_1_1 := List( ValuesOnAllObjects( alpha_1 ), function ( logic_new_func_x_2 ) return SyzygiesOfColumns( UnderlyingMatrix( logic_new_func_x_2 ) ); end ); - return CreateCapCategoryMorphismWithAttributes( cat_1, P_1, T_1, ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) + return CreateCapCategoryMorphismWithAttributes( cat_1, P_1, Range( tau_1 ), ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) local morphism_attr_1_2; morphism_attr_1_2 := UniqueLeftDivide( hoisted_1_1[o_2], hoisted_2_1[o_2] ); return CreateCapCategoryMorphismWithAttributes( deduped_3_1, CreateCapCategoryObjectWithAttributes( deduped_3_1, RankOfObject, NumberRows( morphism_attr_1_2 ) ), hoisted_4_1[o_2], UnderlyingMatrix, morphism_attr_1_2 ); @@ -238,7 +238,7 @@ function ( cat_1, alpha_1, T_1, tau_1, P_1 ) end ######## - , 100 ); + , 201 : IsPrecompiledDerivation := true ); ## cat!.cached_precompiled_functions.CokernelColiftWithGivenCokernelObject := @@ -257,7 +257,7 @@ function ( cat_1, alpha_1, T_1, tau_1, P_1 ) hoisted_1_1 := List( deduped_6_1, function ( logic_new_func_x_2 ) return NumberColumns( SyzygiesOfColumns( UnderlyingMatrix( logic_new_func_x_2 ) ) ); end ); - return CreateCapCategoryMorphismWithAttributes( cat_1, P_1, T_1, ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) + return CreateCapCategoryMorphismWithAttributes( cat_1, P_1, Range( tau_1 ), ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) return CreateCapCategoryMorphismWithAttributes( deduped_2_1, CreateCapCategoryObjectWithAttributes( deduped_2_1, RankOfObject, hoisted_1_1[o_2] ), hoisted_3_1[o_2], UnderlyingMatrix, UniqueLeftDivide( hoisted_4_1[o_2], hoisted_5_1[o_2] ) ); end ) ); end @@ -1472,7 +1472,7 @@ function ( cat_1, alpha_1, T_1, tau_1, P_1 ) end ); hoisted_2_1 := List( deduped_5_1, UnderlyingMatrix ); hoisted_1_1 := List( deduped_5_1, Source ); - return CreateCapCategoryMorphismWithAttributes( cat_1, T_1, P_1, ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) + return CreateCapCategoryMorphismWithAttributes( cat_1, Source( tau_1 ), P_1, ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) local morphism_attr_1_2; morphism_attr_1_2 := UniqueRightDivide( hoisted_2_1[o_2], hoisted_3_1[o_2] ); return CreateCapCategoryMorphismWithAttributes( deduped_4_1, hoisted_1_1[o_2], CreateCapCategoryObjectWithAttributes( deduped_4_1, RankOfObject, NumberColumns( morphism_attr_1_2 ) ), UnderlyingMatrix, morphism_attr_1_2 ); @@ -1480,7 +1480,7 @@ function ( cat_1, alpha_1, T_1, tau_1, P_1 ) end ######## - , 100 ); + , 201 : IsPrecompiledDerivation := true ); ## cat!.cached_precompiled_functions.KernelLiftWithGivenKernelObject := @@ -1499,7 +1499,7 @@ function ( cat_1, alpha_1, T_1, tau_1, P_1 ) return NumberRows( SyzygiesOfRows( UnderlyingMatrix( logic_new_func_x_2 ) ) ); end ); hoisted_1_1 := List( deduped_6_1, Source ); - return CreateCapCategoryMorphismWithAttributes( cat_1, T_1, P_1, ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) + return CreateCapCategoryMorphismWithAttributes( cat_1, Source( tau_1 ), P_1, ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) return CreateCapCategoryMorphismWithAttributes( deduped_3_1, hoisted_1_1[o_2], CreateCapCategoryObjectWithAttributes( deduped_3_1, RankOfObject, hoisted_2_1[o_2] ), UnderlyingMatrix, UniqueRightDivide( hoisted_4_1[o_2], hoisted_5_1[o_2] ) ); end ) ); end diff --git a/FunctorCategories/gap/precompiled_categories/PreSheavesOfFreeAlgebroidInCategoryOfRowsPrecompiled.gi b/FunctorCategories/gap/precompiled_categories/PreSheavesOfFreeAlgebroidInCategoryOfRowsPrecompiled.gi index eed0d3554..7e8609e7b 100644 --- a/FunctorCategories/gap/precompiled_categories/PreSheavesOfFreeAlgebroidInCategoryOfRowsPrecompiled.gi +++ b/FunctorCategories/gap/precompiled_categories/PreSheavesOfFreeAlgebroidInCategoryOfRowsPrecompiled.gi @@ -328,7 +328,7 @@ function ( cat_1, alpha_1, T_1, tau_1, P_1 ) hoisted_1_1 := List( ValuesOnAllObjects( alpha_1 ), function ( logic_new_func_x_2 ) return SyzygiesOfColumns( UnderlyingMatrix( logic_new_func_x_2 ) ); end ); - return CreateCapCategoryMorphismWithAttributes( cat_1, P_1, T_1, ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) + return CreateCapCategoryMorphismWithAttributes( cat_1, P_1, Range( tau_1 ), ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) local morphism_attr_1_2; morphism_attr_1_2 := UniqueLeftDivide( hoisted_1_1[o_2], hoisted_2_1[o_2] ); return CreateCapCategoryMorphismWithAttributes( deduped_3_1, CreateCapCategoryObjectWithAttributes( deduped_3_1, RankOfObject, NumberRows( morphism_attr_1_2 ) ), hoisted_4_1[o_2], UnderlyingMatrix, morphism_attr_1_2 ); @@ -336,7 +336,7 @@ function ( cat_1, alpha_1, T_1, tau_1, P_1 ) end ######## - , 100 ); + , 201 : IsPrecompiledDerivation := true ); ## cat!.cached_precompiled_functions.CokernelColiftWithGivenCokernelObject := @@ -355,7 +355,7 @@ function ( cat_1, alpha_1, T_1, tau_1, P_1 ) hoisted_1_1 := List( deduped_6_1, function ( logic_new_func_x_2 ) return NumberColumns( SyzygiesOfColumns( UnderlyingMatrix( logic_new_func_x_2 ) ) ); end ); - return CreateCapCategoryMorphismWithAttributes( cat_1, P_1, T_1, ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) + return CreateCapCategoryMorphismWithAttributes( cat_1, P_1, Range( tau_1 ), ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) return CreateCapCategoryMorphismWithAttributes( deduped_2_1, CreateCapCategoryObjectWithAttributes( deduped_2_1, RankOfObject, hoisted_1_1[o_2] ), hoisted_3_1[o_2], UnderlyingMatrix, UniqueLeftDivide( hoisted_4_1[o_2], hoisted_5_1[o_2] ) ); end ) ); end @@ -1570,7 +1570,7 @@ function ( cat_1, alpha_1, T_1, tau_1, P_1 ) end ); hoisted_2_1 := List( deduped_5_1, UnderlyingMatrix ); hoisted_1_1 := List( deduped_5_1, Source ); - return CreateCapCategoryMorphismWithAttributes( cat_1, T_1, P_1, ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) + return CreateCapCategoryMorphismWithAttributes( cat_1, Source( tau_1 ), P_1, ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) local morphism_attr_1_2; morphism_attr_1_2 := UniqueRightDivide( hoisted_2_1[o_2], hoisted_3_1[o_2] ); return CreateCapCategoryMorphismWithAttributes( deduped_4_1, hoisted_1_1[o_2], CreateCapCategoryObjectWithAttributes( deduped_4_1, RankOfObject, NumberColumns( morphism_attr_1_2 ) ), UnderlyingMatrix, morphism_attr_1_2 ); @@ -1578,7 +1578,7 @@ function ( cat_1, alpha_1, T_1, tau_1, P_1 ) end ######## - , 100 ); + , 201 : IsPrecompiledDerivation := true ); ## cat!.cached_precompiled_functions.KernelLiftWithGivenKernelObject := @@ -1597,7 +1597,7 @@ function ( cat_1, alpha_1, T_1, tau_1, P_1 ) return NumberRows( SyzygiesOfRows( UnderlyingMatrix( logic_new_func_x_2 ) ) ); end ); hoisted_1_1 := List( deduped_6_1, Source ); - return CreateCapCategoryMorphismWithAttributes( cat_1, T_1, P_1, ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) + return CreateCapCategoryMorphismWithAttributes( cat_1, Source( tau_1 ), P_1, ValuesOnAllObjects, LazyHList( [ 1 .. DefiningTripleOfUnderlyingQuiver( Source( cat_1 ) )[1] ], function ( o_2 ) return CreateCapCategoryMorphismWithAttributes( deduped_3_1, hoisted_1_1[o_2], CreateCapCategoryObjectWithAttributes( deduped_3_1, RankOfObject, hoisted_2_1[o_2] ), UnderlyingMatrix, UniqueRightDivide( hoisted_4_1[o_2], hoisted_5_1[o_2] ) ); end ) ); end diff --git a/IntrinsicCategories/PackageInfo.g b/IntrinsicCategories/PackageInfo.g index ab7e056c0..aa5963ccb 100644 --- a/IntrinsicCategories/PackageInfo.g +++ b/IntrinsicCategories/PackageInfo.g @@ -10,7 +10,7 @@ SetPackageInfo( rec( PackageName := "IntrinsicCategories", Subtitle := "Intrinsic categories for CAP", -Version := "2024.11-01", +Version := "2024.11-02", Date := ~.Version{[ 1 .. 10 ]}, 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", @@ -71,7 +71,7 @@ Dependencies := rec( GAP := ">= 4.13.0", NeededOtherPackages := [ [ "AutoDoc", ">= 2016.02.16" ], - [ "CAP", ">= 2023.12-11" ], + [ "CAP", ">= 2024.11-01" ], [ "ToolsForHomalg", ">= 2015.09.23" ], [ "ToolsForCategoricalTowers", ">= 2024.03-02" ], [ "GAPDoc", ">= 1.1" ] diff --git a/IntrinsicCategories/gap/IntrinsicCategories.gi b/IntrinsicCategories/gap/IntrinsicCategories.gi index 195995b2e..37f6a0b62 100644 --- a/IntrinsicCategories/gap/IntrinsicCategories.gi +++ b/IntrinsicCategories/gap/IntrinsicCategories.gi @@ -1187,7 +1187,7 @@ InstallMethod( IntrinsicCategory, create_func_morphism := function( name, IC ) - return """ + return Pair( """ function( input_arguments... ) local underlying_result, result; @@ -1199,7 +1199,7 @@ InstallMethod( IntrinsicCategory, return result; - end"""; + end""", OperationWeight( C, name ) ); end; @@ -1212,6 +1212,7 @@ InstallMethod( IntrinsicCategory, list_of_operations_to_install := list_of_operations_to_install, supports_empty_limits := supports_empty_limits, underlying_category_getter_string := "UnderlyingCategory", + underlying_category := C, underlying_object_getter_string := "ActiveCell", underlying_morphism_getter_string := "ActiveCell", top_object_getter_string := "Intrinsify", @@ -1318,7 +1319,7 @@ InstallMethod( IntrinsicCategory, return Intrinsify( RangeCategoryOfHomomorphismStructure( IC ), D ); - end ); + end, OperationWeight( C, "DistinguishedObjectOfHomomorphismStructure" ) ); AddHomomorphismStructureOnObjects( IC, function( IC, object1, object2 ) @@ -1328,7 +1329,7 @@ InstallMethod( IntrinsicCategory, return Intrinsify( RangeCategoryOfHomomorphismStructure( IC ), hom ); - end ); + end, OperationWeight( C, "HomomorphismStructureOnObjects" ) ); AddHomomorphismStructureOnMorphismsWithGivenObjects( IC, function( IC, source, alpha, beta, range ) @@ -1346,7 +1347,7 @@ InstallMethod( IntrinsicCategory, return Intrinsify( hom, source, s, range, t ); - end ); + end, OperationWeight( C, "HomomorphismStructureOnMorphismsWithGivenObjects" ) ); AddInterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects( IC, function( IC, D, morphism, hom ) @@ -1362,7 +1363,7 @@ InstallMethod( IntrinsicCategory, D, PositionOfActiveCell( D ), hom, PositionOfActiveCell( hom ) ); - end ); + end, OperationWeight( C, "InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects" ) ); AddInterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism( IC, function( IC, source, range, morphism ) @@ -1381,7 +1382,7 @@ InstallMethod( IntrinsicCategory, source, s, range, t ); - end ); + end, OperationWeight( C, "InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism" ) ); fi; diff --git a/LazyCategories/PackageInfo.g b/LazyCategories/PackageInfo.g index 23ec0909f..8fcf73a9e 100644 --- a/LazyCategories/PackageInfo.g +++ b/LazyCategories/PackageInfo.g @@ -10,7 +10,7 @@ SetPackageInfo( rec( PackageName := "LazyCategories", Subtitle := "Construct an equivalent lazy category out of a CAP category", -Version := "2024.11-02", +Version := "2024.11-03", Date := ~.Version{[ 1 .. 10 ]}, 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", @@ -72,7 +72,7 @@ Dependencies := rec( NeededOtherPackages := [ [ "GAPDoc", ">= 1.5" ], [ "ToolsForHomalg", ">= 2021.12-02" ], - [ "CAP", ">= 2023.08-04" ], + [ "CAP", ">= 2024.11-01" ], [ "MonoidalCategories", ">= 2024.09-02" ], [ "ToolsForCategoricalTowers", ">= 2023.11-03" ], [ "Toposes", ">= 2022.04-19" ], diff --git a/LazyCategories/gap/LazyCategory.gi b/LazyCategories/gap/LazyCategory.gi index 58d502cd0..dca52f52b 100644 --- a/LazyCategories/gap/LazyCategory.gi +++ b/LazyCategories/gap/LazyCategory.gi @@ -415,12 +415,12 @@ InstallMethod( LazyCategory, create_func_bool := function( name, D ) - return """ + return Pair( """ function( input_arguments... ) return operation_name( underlying_arguments... ); - end"""; + end""", OperationWeight( C, name ) ); end; @@ -428,12 +428,12 @@ InstallMethod( LazyCategory, create_func_object := function( name, D ) - return """ + return Pair( """ function( input_arguments... ) return top_object_getter( cat, Pair( "operation_name", [ input_arguments... ] ) ); - end"""; + end""", OperationWeight( C, name ) ); end; @@ -441,19 +441,19 @@ InstallMethod( LazyCategory, create_func_morphism := function( name, D ) - return """ + return Pair( """ function( input_arguments... ) return top_morphism_getter( cat, top_source, Pair( "operation_name", [ input_arguments... ] ), top_range ); - end"""; + end""", OperationWeight( C, name ) ); end; create_func_list_of_objects := function( name, D ) - return """ + return Pair( """ function( input_arguments... ) local underlying_result; @@ -461,7 +461,7 @@ InstallMethod( LazyCategory, return List( underlying_result, object -> top_object_getter( cat, object ) ); - end"""; + end""", OperationWeight( C, name ) ); end; @@ -545,6 +545,7 @@ InstallMethod( LazyCategory, list_of_operations_to_install := list_of_operations_to_install, supports_empty_limits := supports_empty_limits, underlying_category_getter_string := "UnderlyingCategory", + underlying_category := C, underlying_object_getter_string := "EvaluatedCell", underlying_morphism_getter_string := "EvaluatedCell", top_object_getter_string := "ObjectConstructor", @@ -609,7 +610,7 @@ InstallMethod( LazyCategory, return MorphismConstructor( D, Source( phi ), Pair( "PreCompose", [ D, phi, psi ] ), Target( psi ) ); - end ); + end, OperationWeight( C, "PreCompose" ) ); if CanCompute( C, "DirectSum" ) then @@ -623,7 +624,7 @@ InstallMethod( LazyCategory, return ObjectConstructor( D, Pair( "DirectSum", [ D, diagram ] ) ); - end ); + end, OperationWeight( C, "DirectSum" ) ); fi; @@ -645,7 +646,7 @@ InstallMethod( LazyCategory, return ObjectConstructor( D, Pair( "FiberProduct", [ D, diagram ] ) ); - end ); + end, OperationWeight( C, "FiberProduct" ) ); fi; @@ -675,7 +676,7 @@ InstallMethod( LazyCategory, return MorphismConstructor( D, P, Pair( "ProjectionInFactorOfFiberProductWithGivenFiberProduct", [ D, diagram, k, P ] ), Source( diagram[k] ) ); - end ); + end, OperationWeight( C, "ProjectionInFactorOfFiberProductWithGivenFiberProduct" ) ); fi; @@ -697,7 +698,7 @@ InstallMethod( LazyCategory, return ObjectConstructor( D, Pair( "Pushout", [ D, diagram ] ) ); - end ); + end, OperationWeight( C, "Pushout" ) ); fi; @@ -727,7 +728,7 @@ InstallMethod( LazyCategory, return MorphismConstructor( D, Target( diagram[k] ), Pair( "InjectionOfCofactorOfPushoutWithGivenPushout", [ D, diagram, k, I ] ), I ); - end ); + end, OperationWeight( C, "InjectionOfCofactorOfPushoutWithGivenPushout" ) ); fi; @@ -800,7 +801,7 @@ InstallMethod( LazyCategory, return true; - end ); + end, OperationWeight( C, "IsWellDefinedForObjects" ) ); AddIsEqualForObjects( D, function( D, a, b ) @@ -820,7 +821,7 @@ InstallMethod( LazyCategory, return false; - end ); + end, OperationWeight( C, "IsEqualForObjects" ) ); AddIsWellDefinedForMorphisms( D, function( D, phi ) @@ -883,7 +884,7 @@ InstallMethod( LazyCategory, return true; - end ); + end, OperationWeight( C, "IsWellDefinedForMorphisms" ) ); AddIsEqualForMorphisms( D, function( D, phi, psi ) @@ -899,20 +900,20 @@ InstallMethod( LazyCategory, return false; - end ); + end, OperationWeight( C, "IsEqualForMorphisms" ) ); AddIsEqualForCacheForObjects( D, function( D, a, b ) return IsEqualForObjects( D, a, b ); - end ); + end, OperationWeight( C, "IsEqualForMorphisms" ) ); AddIsEqualForCacheForMorphisms( D, function( D, phi, psi ) - + return IsEqualForMorphismsOnMor( D, phi, psi ); - + end ); if CanCompute( C, "IsCongruentForMorphisms" ) then @@ -927,7 +928,7 @@ InstallMethod( LazyCategory, return IsCongruentForMorphisms( UnderlyingCategory( D ), EvaluatedCell( phi ), EvaluatedCell( psi ) ); - end ); + end, OperationWeight( C, "IsCongruentForMorphisms" ) ); fi; @@ -943,7 +944,7 @@ InstallMethod( LazyCategory, return MorphismConstructor( D, Source( phi ), Pair( "MultiplyWithElementOfCommutativeRingForMorphisms", [ D, r, phi ] ), Target( phi ) ); - end ); + end, OperationWeight( C, "MultiplyWithElementOfCommutativeRingForMorphisms" ) ); fi; @@ -995,7 +996,7 @@ InstallMethod( LazyCategory, return result; - end ); + end, OperationWeight( C, "BasisOfExternalHom" ) ); fi; @@ -1028,7 +1029,7 @@ InstallMethod( LazyCategory, return result; - end ); + end, OperationWeight( C, "CoefficientsOfMorphism" ) ); fi; @@ -1052,7 +1053,7 @@ InstallMethod( LazyCategory, return ObjectConstructor( HC, Pair( "DistinguishedObjectOfHomomorphismStructure", [ D ] ) ); - end ); + end, OperationWeight( C, "DistinguishedObjectOfHomomorphismStructure" ) ); fi; if CanCompute( C, "HomomorphismStructureOnObjects" ) then @@ -1061,7 +1062,7 @@ InstallMethod( LazyCategory, return ObjectConstructor( HC, Pair( "HomomorphismStructureOnObjects", [ D, a, b ] ) ); - end ); + end, OperationWeight( C, "HomomorphismStructureOnObjects" ) ); fi; if CanCompute( C, "HomomorphismStructureOnMorphismsWithGivenObjects" ) then @@ -1070,7 +1071,7 @@ InstallMethod( LazyCategory, return MorphismConstructor( HC, s, Pair( "HomomorphismStructureOnMorphismsWithGivenObjects", [ D, s, alpha, beta, r ] ), r ); - end ); + end, OperationWeight( C, "HomomorphismStructureOnMorphismsWithGivenObjects" ) ); fi; if CanCompute( C, "InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects" ) then @@ -1079,7 +1080,7 @@ InstallMethod( LazyCategory, return MorphismConstructor( HC, distinguished_object, Pair( "InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects", [ D, distinguished_object, alpha, range ] ), range ); - end ); + end, OperationWeight( C, "InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects" ) ); fi; if CanCompute( C, "InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism" ) then @@ -1088,7 +1089,7 @@ InstallMethod( LazyCategory, return MorphismConstructor( D, a, Pair( "InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism", [ D, a, b, iota ] ), b ); - end ); + end, OperationWeight( C, "InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism" ) ); fi; else @@ -1101,7 +1102,7 @@ InstallMethod( LazyCategory, return DistinguishedObjectOfHomomorphismStructure( UnderlyingCategory( D ) ); - end ); + end, OperationWeight( C, "DistinguishedObjectOfHomomorphismStructure" ) ); fi; if CanCompute( C, "HomomorphismStructureOnObjects" ) then @@ -1110,7 +1111,7 @@ InstallMethod( LazyCategory, return HomomorphismStructureOnObjects( UnderlyingCategory( D ), EvaluatedCell( a ), EvaluatedCell( b ) ); - end ); + end, OperationWeight( C, "HomomorphismStructureOnObjects" ) ); fi; if CanCompute( C, "HomomorphismStructureOnMorphismsWithGivenObjects" ) then @@ -1119,7 +1120,7 @@ InstallMethod( LazyCategory, return HomomorphismStructureOnMorphismsWithGivenObjects( UnderlyingCategory( D ), s, EvaluatedCell( alpha ), EvaluatedCell( beta ), r ); - end ); + end, OperationWeight( C, "HomomorphismStructureOnMorphismsWithGivenObjects" ) ); fi; if CanCompute( C, "InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects" ) then @@ -1128,7 +1129,7 @@ InstallMethod( LazyCategory, return InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects( UnderlyingCategory( D ), distinguished_object, EvaluatedCell( alpha ), range ); - end ); + end, OperationWeight( C, "InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects" ) ); fi; if CanCompute( C, "InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism" ) then @@ -1137,7 +1138,7 @@ InstallMethod( LazyCategory, return AsMorphismInLazyCategory( a, InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism( UnderlyingCategory( D ), EvaluatedCell( a ), EvaluatedCell( b ), iota ), b ); - end ); + end, OperationWeight( C, "InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism" ) ); fi; fi; diff --git a/Locales/PackageInfo.g b/Locales/PackageInfo.g index 0a47f1866..11b657873 100644 --- a/Locales/PackageInfo.g +++ b/Locales/PackageInfo.g @@ -10,7 +10,7 @@ SetPackageInfo( rec( PackageName := "Locales", Subtitle := "Locales, frames, coframes, meet semi-lattices of locally closed subsets, and Boolean algebras of constructible sets", -Version := "2024.11-02", +Version := "2024.11-03", Date := ~.Version{[ 1 .. 10 ]}, 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", @@ -102,7 +102,7 @@ Dependencies := rec( NeededOtherPackages := [ [ "GAPDoc", ">= 1.5" ], [ "ToolsForHomalg", ">= 2021.12-02" ], - [ "CAP", ">= 2024.09-12" ], + [ "CAP", ">= 2024.11-01" ], [ "CompilerForCAP", ">= 2022.08-10" ], [ "MonoidalCategories", ">= 2024.02-02" ], [ "CartesianCategories", ">= 2024.02-02" ], diff --git a/Locales/gap/ProsetOfCategory.gi b/Locales/gap/ProsetOfCategory.gi index 452810544..32eaeb69f 100644 --- a/Locales/gap/ProsetOfCategory.gi +++ b/Locales/gap/ProsetOfCategory.gi @@ -244,6 +244,7 @@ InstallMethod( CreateProsetOrPosetOfCategory, morphism_datum := morphism_datum, list_of_operations_to_install := list_of_operations_to_install, underlying_category_getter_string := "AmbientCategory", + underlying_category := C, underlying_object_getter_string := "ObjectDatum", underlying_morphism_getter_string := "MorphismDatum", top_object_getter_string := "ObjectConstructor", diff --git a/PreSheaves/PackageInfo.g b/PreSheaves/PackageInfo.g index f4468743a..51688d75f 100644 --- a/PreSheaves/PackageInfo.g +++ b/PreSheaves/PackageInfo.g @@ -10,7 +10,7 @@ SetPackageInfo( rec( PackageName := "PreSheaves", Subtitle := "Categories of (co)presheaves", -Version := "2024.11-02", +Version := "2024.11-03", Date := ~.Version{[ 1 .. 10 ]}, 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", @@ -88,7 +88,7 @@ Dependencies := rec( NeededOtherPackages := [ [ "GAPDoc", ">= 1.5" ], [ "MatricesForHomalg", ">= 2023.11-02" ], - [ "CAP", ">= 2024.09-05" ], + [ "CAP", ">= 2024.11-01" ], [ "MonoidalCategories", ">= 2024.06-02" ], [ "CartesianCategories", ">= 2024.06-03" ], [ "ToolsForCategoricalTowers", ">= 2024.11-01" ], diff --git a/PreSheaves/gap/PreSheaves.gi b/PreSheaves/gap/PreSheaves.gi index f18217551..76943cbe7 100644 --- a/PreSheaves/gap/PreSheaves.gi +++ b/PreSheaves/gap/PreSheaves.gi @@ -13,12 +13,13 @@ ## InstallValue( CAP_INTERNAL_METHOD_NAME_LIST_TO_ALWAYS_INSTALL_PRIMITIVELY_FOR_PRESHEAF_CATEGORY, [ - "CokernelColift", - "CokernelColiftWithGivenCokernelObject", + #"CokernelColift", + #"CokernelColiftWithGivenCokernelObject", "ColiftAlongEpimorphism", - "KernelLift", - "KernelLiftWithGivenKernelObject", + #"KernelLift", + #"KernelLiftWithGivenKernelObject", "LiftAlongMonomorphism", + #"InverseForMorphisms", #WARNING: Overwriting a function for InverseForMorphisms primitively added to "PreSheaves( SkeletalFinSets, SkeletalFinSets )" with a derivation. "IsEpimorphism", "IsIsomorphism", "IsMonomorphism", @@ -284,11 +285,11 @@ InstallMethodWithCache( PreSheaves, [ IsCapCategory, IsCapCategory ], function ( B, D ) - local B_op, name, list_of_operations, list_of_operations_to_always_install_primitively, + local B_op, name, object_constructor, object_datum, morphism_constructor, morphism_datum, create_func_bool, create_func_object, create_func_morphism, - is_computable, list_of_operations_to_install, skip, func, - supports_empty_limits, properties, category_constructor_options, + is_computable, list_of_operations, list_of_operations_to_always_install_primitively, list_of_operations_to_install, + skip, func, supports_empty_limits, properties, category_constructor_options, PSh; B_op := Opposite( B : FinalizeCategory := true ); @@ -303,14 +304,6 @@ InstallMethodWithCache( PreSheaves, is_computable := CAP_INTERNAL_RETURN_OPTION_OR_DEFAULT( "is_computable", false ); - list_of_operations := - CAP_INTERNAL_RETURN_OPTION_OR_DEFAULT( "list_of_operations", - ShallowCopy( CAP_INTERNAL_METHOD_NAME_LIST_FOR_PRESHEAF_CATEGORY ) ); - - list_of_operations_to_always_install_primitively := - CAP_INTERNAL_RETURN_OPTION_OR_DEFAULT( "list_of_operations_to_always_install_primitively", - ShallowCopy( CAP_INTERNAL_METHOD_NAME_LIST_TO_ALWAYS_INSTALL_PRIMITIVELY_FOR_PRESHEAF_CATEGORY ) ); - ## object_constructor := function( cat, pair_of_functions_of_presheaf ) @@ -352,7 +345,7 @@ InstallMethodWithCache( PreSheaves, if name in [ "TerminalObject", "InitialObject", "ZeroObject" ] then return ## a constructor for universal objects: TerminalObject - ReplacedStringViaRecord( + Pair( ReplacedStringViaRecord( """ function ( input_arguments... ) local D, objD, presheaf_on_objects, presheaf_on_morphisms; @@ -369,12 +362,24 @@ InstallMethodWithCache( PreSheaves, end """, - rec( functorial_with_given_objects := functorial.with_given_without_given_name_pair[2] ) ); + rec( functorial_with_given_objects := functorial.with_given_without_given_name_pair[2] ) ), + (function() + local weight; + + weight := 2 * OperationWeight( D, functorial.with_given_without_given_name_pair[2] ); + + if IsSubset( D!.operations.(functorial.with_given_without_given_name_pair[2]).type, "derivation" ) then + return weight - 2; + else + return weight; + fi; + + end )() ); elif name in [ "FiberProduct", "Pushout" ] then return ## a constructor for universal objects: FiberProduct - ReplacedStringViaRecord( + Pair( ReplacedStringViaRecord( """ function ( input_arguments... ) local D, i_arg, etas, presheaf_on_objects, presheaf_on_morphisms; @@ -447,12 +452,30 @@ InstallMethodWithCache( PreSheaves, end """, - rec( functorial := functorial.with_given_without_given_name_pair[2] ) ); + rec( functorial := functorial.with_given_without_given_name_pair[2] ) ), + (function() + local weight; + + weight := 2 * OperationWeight( D, name ); + + if IsSubset( D!.operations.(name).type, "derivation" ) then + weight := weight - 2; + fi; + + weight := weight + 2 * OperationWeight( D, functorial.with_given_without_given_name_pair[2] ); + + if IsSubset( D!.operations.(functorial.with_given_without_given_name_pair[2]).type, "derivation" ) then + weight := weight - 2; + fi; + + return weight; + + end )() ); elif name in [ "Equalizer", "Coequalizer" ] then return ## a constructor for universal objects: Equalizer - ReplacedStringViaRecord( + Pair( ReplacedStringViaRecord( """ function ( input_arguments... ) local D, i_arg, object, etas, presheaf_on_objects, presheaf_on_morphisms; @@ -528,12 +551,30 @@ InstallMethodWithCache( PreSheaves, end """, - rec( functorial := functorial.with_given_without_given_name_pair[2] ) ); + rec( functorial := functorial.with_given_without_given_name_pair[2] ) ), + (function() + local weight; + + weight := 2 * OperationWeight( D, name ); + + if IsSubset( D!.operations.(name).type, "derivation" ) then + weight := weight - 2; + fi; + + weight := weight + 2 * OperationWeight( D, functorial.with_given_without_given_name_pair[2] ); + + if IsSubset( D!.operations.(functorial.with_given_without_given_name_pair[2]).type, "derivation" ) then + weight := weight - 2; + fi; + + return weight; + + end )() ); elif name in [ "DirectProduct", "Coproduct", "DirectSum" ] then return ## a constructor for universal objects: DirectSum - ReplacedStringViaRecord( + Pair( ReplacedStringViaRecord( """ function ( input_arguments... ) local D, i_arg, Fs, presheaf_on_objects, presheaf_on_morphisms; @@ -561,12 +602,30 @@ InstallMethodWithCache( PreSheaves, end """, - rec( functorial := functorial.with_given_without_given_name_pair[2] ) ); + rec( functorial := functorial.with_given_without_given_name_pair[2] ) ), + (function() + local weight; + + weight := 2 * OperationWeight( D, name ); + + if IsSubset( D!.operations.(name).type, "derivation" ) then + weight := weight - 2; + fi; + + weight := weight + 2 * OperationWeight( D, functorial.with_given_without_given_name_pair[2] ); + + if IsSubset( D!.operations.(functorial.with_given_without_given_name_pair[2]).type, "derivation" ) then + weight := weight - 2; + fi; + + return weight; + + end )() ); elif name in [ "KernelObject", "CokernelObject", "ImageObject", "CoimageObject" ] then return ## a constructor for universal objects: KernelObject - ReplacedStringViaRecord( + Pair( ReplacedStringViaRecord( """ function ( input_arguments... ) local D, i_arg, eta, presheaf_on_objects, presheaf_on_morphisms; @@ -621,7 +680,25 @@ InstallMethodWithCache( PreSheaves, end """, - rec( functorial := functorial.with_given_without_given_name_pair[2] ) ); + rec( functorial := functorial.with_given_without_given_name_pair[2] ) ), + (function() + local weight; + + weight := 2 * OperationWeight( D, name ); + + if IsSubset( D!.operations.(name).type, "derivation" ) then + weight := weight - 2; + fi; + + weight := weight + 2 * OperationWeight( D, functorial.with_given_without_given_name_pair[2] ); + + if IsSubset( D!.operations.(functorial.with_given_without_given_name_pair[2]).type, "derivation" ) then + weight := weight - 2; + fi; + + return weight; + + end )() ); else @@ -639,7 +716,7 @@ InstallMethodWithCache( PreSheaves, info := CAP_INTERNAL_METHOD_NAME_RECORD.(name); return - ReplacedStringViaRecord( + Pair( ReplacedStringViaRecord( """ function ( input_arguments... ) local D, i_arg, natural_transformation_on_objects; @@ -682,10 +759,30 @@ InstallMethodWithCache( PreSheaves, Error( "cannot deal with ", type ); fi; - end ) ) ); + end ) ) ), + (function() + local weight; + + weight := 2 * OperationWeight( D, name ); + + if IsSubset( D!.operations.(name).type, "derivation" ) then + return weight - 2; + else + return weight; + fi; + + end )() ); end; + list_of_operations := + CAP_INTERNAL_RETURN_OPTION_OR_DEFAULT( "list_of_operations", + ShallowCopy( CAP_INTERNAL_METHOD_NAME_LIST_FOR_PRESHEAF_CATEGORY ) ); + + list_of_operations_to_always_install_primitively := + CAP_INTERNAL_RETURN_OPTION_OR_DEFAULT( "list_of_operations_to_always_install_primitively", + ShallowCopy( CAP_INTERNAL_METHOD_NAME_LIST_TO_ALWAYS_INSTALL_PRIMITIVELY_FOR_PRESHEAF_CATEGORY ) ); + list_of_operations_to_install := Concatenation( ListPrimitivelyInstalledOperationsOfCategory( D ), @@ -795,48 +892,6 @@ InstallMethodWithCache( PreSheaves, "OppositeOfSource", ]; - ## this code should become obsolete with following feature request: - ## https://github.com/homalg-project/CAP_project/issues/801 - if CanCompute( D, "MorphismBetweenDirectSumsWithGivenDirectSums" ) then - - ## - AddMorphismBetweenDirectSumsWithGivenDirectSums( PSh, - function ( PSh, S, diagram_S, M, diagram_T, T ) - local D, S_o, T_o, natural_transformation_on_objects; - - D := Target( PSh ); - - S_o := PairOfFunctionsOfPreSheaf( S )[1]; - T_o := PairOfFunctionsOfPreSheaf( T )[1]; - - natural_transformation_on_objects := - function ( source, objB, range ) - local S_list, T_list; - - S_list := List( diagram_S, Si -> PairOfFunctionsOfPreSheaf( Si )[1]( objB ) ); - T_list := List( diagram_T, Ti -> PairOfFunctionsOfPreSheaf( Ti )[1]( objB ) ); - - return MorphismBetweenDirectSumsWithGivenDirectSums( - D, - S_o( objB ), - S_list, - List( [ 1 .. Length( S_list ) ], i-> - List( [ 1 .. Length( T_list ) ], j -> - FunctionOfPreSheafMorphism( M[i][j] )( - S_list[i], - objB, - T_list[j] ) ) ), - T_list, - T_o( objB ) ); - - end; - - return MorphismConstructor( PSh, S, natural_transformation_on_objects, T ); - - end ); - - fi; - if HasCommutativeRingOfLinearCategory( D ) then SetCommutativeRingOfLinearCategory( PSh, CommutativeRingOfLinearCategory( D ) ); @@ -869,7 +924,7 @@ InstallMethodWithCache( PreSheaves, return MorphismConstructor( PSh, Source( eta ), natural_transformation_on_objects, Target( eta ) ); - end ); + end, 2 * OperationWeight( D, "MultiplyWithElementOfCommutativeRingForMorphisms" ) ); fi; @@ -933,13 +988,13 @@ InstallMethodWithCache( PreSheaves, create_func_object := function( name, cat ) - return """ + return Pair( """ function( input_arguments... ) return ObjectConstructor( cat, Pair( [ ], [ ] ) ); end - """; + """, 1 ); end; @@ -947,13 +1002,13 @@ InstallMethodWithCache( PreSheaves, create_func_morphism := function( name, cat ) - return """ + return Pair( """ function( input_arguments... ) return MorphismConstructor( cat, top_source, [ ], top_range ); end - """; + """, 1 ); end; @@ -1000,7 +1055,7 @@ InstallMethodWithCache( PreSheaves, return [ InitialObject( PSh_I_I ) ]; - end ); + end, 1 ); ## AddIsWellDefinedForObjects( PSh_I_I, @@ -1008,7 +1063,7 @@ InstallMethodWithCache( PreSheaves, return true; - end ); + end, 1 ); ## AddIsWellDefinedForMorphisms( PSh_I_I, @@ -1016,7 +1071,7 @@ InstallMethodWithCache( PreSheaves, return true; - end ); + end, 1 ); ## AddIsEqualForObjects( PSh_I_I, @@ -1024,7 +1079,7 @@ InstallMethodWithCache( PreSheaves, return true; - end ); + end, 1 ); ## AddIsEqualForMorphisms( PSh_I_I, @@ -1032,7 +1087,7 @@ InstallMethodWithCache( PreSheaves, return true; - end ); + end, 1 ); ## AddIsCongruentForMorphisms( PSh_I_I, @@ -1040,7 +1095,7 @@ InstallMethodWithCache( PreSheaves, return true; - end ); + end, 1 ); if not H = "self" then @@ -1053,7 +1108,7 @@ InstallMethodWithCache( PreSheaves, return InitialObject( H ); - end ); + end, OperationWeight( H, "InitialObject" ) ); ## AddHomomorphismStructureOnObjects( PSh_I_I, @@ -1061,7 +1116,7 @@ InstallMethodWithCache( PreSheaves, return DistinguishedObjectOfHomomorphismStructure( PSh_I_I ); - end ); + end, OperationWeight( PSh_I_I, "DistinguishedObjectOfHomomorphismStructure" ) ); ## AddHomomorphismStructureOnMorphismsWithGivenObjects( PSh_I_I, @@ -1072,7 +1127,7 @@ InstallMethodWithCache( PreSheaves, return MorphismConstructor( H, source, fail, target ); - end ); + end, 1 ); ## AddInterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects( PSh_I_I, @@ -1083,7 +1138,7 @@ InstallMethodWithCache( PreSheaves, return MorphismConstructor( H, distinguished_object, fail, target ); - end ); + end, 1 ); ## AddInterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism( PSh_I_I, @@ -1091,7 +1146,7 @@ InstallMethodWithCache( PreSheaves, return MorphismConstructor( PSh_I_I, S, fail, T ); - end ); + end, 1 ); fi; @@ -1101,7 +1156,7 @@ InstallMethodWithCache( PreSheaves, return IdentityMorphism( PSh_I_I, object1 ); - end ); + end, OperationWeight( PSh_I_I, "IdentityMorphism" ) ); Finalize( PSh_I_I ); diff --git a/PreSheaves/gap/PreSheavesWithBounds.gi b/PreSheaves/gap/PreSheavesWithBounds.gi index 993cffebc..0ea3bb018 100644 --- a/PreSheaves/gap/PreSheavesWithBounds.gi +++ b/PreSheaves/gap/PreSheavesWithBounds.gi @@ -14,7 +14,7 @@ InstallMethod( PreSheavesWithBounds, object_datum_type, morphism_datum_type, commutative_ring_of_linear_category, additional_properties, properties, object_constructor, object_datum, morphism_constructor, morphism_datum, - union_of_supports, list_of_operations_to_install, + union_of_supports, list_of_operations, list_of_operations_to_always_install_primitively, list_of_operations_to_install, create_func_bool, create_func_object, create_func_morphism, supports_empty_limits, xPSh; @@ -98,9 +98,25 @@ InstallMethod( PreSheavesWithBounds, end; + list_of_operations := + CAP_INTERNAL_RETURN_OPTION_OR_DEFAULT( "list_of_operations", + ShallowCopy( CAP_INTERNAL_METHOD_NAME_LIST_FOR_PRESHEAF_CATEGORY ) ); + + list_of_operations_to_always_install_primitively := + CAP_INTERNAL_RETURN_OPTION_OR_DEFAULT( "list_of_operations_to_always_install_primitively", + ShallowCopy( CAP_INTERNAL_METHOD_NAME_LIST_TO_ALWAYS_INSTALL_PRIMITIVELY_FOR_PRESHEAF_CATEGORY ) ); + + list_of_operations_to_install := + Concatenation( + ListPrimitivelyInstalledOperationsOfCategory( D ), + Intersection( list_of_operations_to_always_install_primitively, ListInstalledOperationsOfCategory( D ) ) ); + list_of_operations_to_install := - Filtered( ListPrimitivelyInstalledOperationsOfCategoryWhereMorphismOperationsAreReplacedWithCorrespondingObjectAndWithGivenOperations( PSh ), name -> - CAP_INTERNAL_METHOD_NAME_RECORD.(name).return_type <> "bool" ); + Concatenation( List( list_of_operations_to_install, name -> CAP_INTERNAL_CORRESPONDING_WITH_GIVEN_OBJECTS_METHOD( name, list_of_operations_to_install ) ) ); + + list_of_operations_to_install := Intersection( list_of_operations_to_install, list_of_operations ); + + list_of_operations_to_install := Filtered( list_of_operations_to_install, name -> CAP_INTERNAL_METHOD_NAME_RECORD.(name).return_type <> "bool" ); create_func_bool := "default"; # this function will never be used @@ -111,7 +127,7 @@ InstallMethod( PreSheavesWithBounds, info := CAP_INTERNAL_METHOD_NAME_RECORD.(name); return - ReplacedStringViaRecord( + Pair( ReplacedStringViaRecord( """ function( input_arguments... ) local PSh, i_arg; @@ -166,7 +182,7 @@ InstallMethod( PreSheavesWithBounds, Error( "can only deal with \"object\", \"morphism\", \"list_of_objects\", \"list_of_morphisms\"" ); fi; - end)( ) ) ); + end)( ) ) ), OperationWeight( PSh, name ) ); end; @@ -177,7 +193,7 @@ InstallMethod( PreSheavesWithBounds, info := CAP_INTERNAL_METHOD_NAME_RECORD.(name); return - ReplacedStringViaRecord( + Pair( ReplacedStringViaRecord( """ function ( input_arguments... ) local PSh, i_arg; @@ -217,7 +233,7 @@ InstallMethod( PreSheavesWithBounds, Error( "can only deal with \"integer\", \"object\", \"morphism\", \"list_of_objects\", \"list_of_morphisms\", \"pair_of_morphisms\"" ); fi; - end ) ) ); + end ) ) ), OperationWeight( PSh, name ) ); end; @@ -284,7 +300,7 @@ InstallMethod( PreSheavesWithBounds, return ForAll( [ Minimum( F_datum[2][1], G_datum[2][1] ) .. Maximum( F_datum[2][2], G_datum[2][2] ) ], func ); - end ); + end, OperationWeight( D, "IsEqualForObjects" ) ); AddIsEqualForMorphisms( xPSh, function( xPSh, phi, psi ) @@ -324,7 +340,7 @@ InstallMethod( PreSheavesWithBounds, return ForAll( [ Minimum( F_datum[2][1], G_datum[2][1] ) .. Maximum( F_datum[2][2], G_datum[2][2] ) ], func ); - end ); + end, OperationWeight( D, "IsEqualForMorphisms" ) ); AddIsCongruentForMorphisms( xPSh, function( xPSh, phi, psi ) @@ -364,7 +380,7 @@ InstallMethod( PreSheavesWithBounds, return ForAll( [ Minimum( F_datum[2][1], G_datum[2][1] ) .. Maximum( F_datum[2][2], G_datum[2][2] ) ], func ); - end ); + end, OperationWeight( D, "IsCongruentForMorphisms" ) ); else @@ -376,14 +392,14 @@ InstallMethod( PreSheavesWithBounds, return IsIdenticalObj( F, G ); - end ); + end, 1 ); AddIsEqualForMorphisms( xPSh, function( xPSh, phi, psi ) return IsIdenticalObj( phi, psi ); - end ); + end, 1 ); fi; diff --git a/QuotientCategories/PackageInfo.g b/QuotientCategories/PackageInfo.g index ad55beab4..38646685a 100644 --- a/QuotientCategories/PackageInfo.g +++ b/QuotientCategories/PackageInfo.g @@ -10,7 +10,7 @@ SetPackageInfo( rec( PackageName := "QuotientCategories", Subtitle := "Quotient categories", -Version := "2024.11-01", +Version := "2024.11-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", @@ -73,7 +73,7 @@ Dependencies := rec( NeededOtherPackages := [ [ "AutoDoc", ">=2018.02.14" ], [ "MatricesForHomalg", ">= 2023.11-02" ], - [ "CAP", ">= 2023.12-09" ], + [ "CAP", ">= 2024.11-01" ], [ "ToolsForCategoricalTowers", ">= 2024.02-03" ] ], SuggestedOtherPackages := [ ], diff --git a/QuotientCategories/gap/QuotientCategories.gi b/QuotientCategories/gap/QuotientCategories.gi index 9973ef99d..4d77b6138 100644 --- a/QuotientCategories/gap/QuotientCategories.gi +++ b/QuotientCategories/gap/QuotientCategories.gi @@ -174,13 +174,13 @@ InstallMethod( QuotientCategory, create_func_bool := function ( name, quotient_cat ) return - """ + Pair( """ function( input_arguments... ) return CallFuncList( operation_name, List( NTuple( number_of_arguments, input_arguments... ){[2 .. number_of_arguments]}, UnderlyingCell ) ); end - """; + """, OperationWeight( ambient_cat, name ) ); end; create_func_object := @@ -188,18 +188,18 @@ InstallMethod( QuotientCategory, if name in [ "TerminalObject", "InitialObject", "ZeroObject" ] then return - """ + Pair( """ function( input_arguments... ) return ObjectConstructor( cat, operation_name( UnderlyingCategory( cat ) ) ); end - """; + """, OperationWeight( ambient_cat, name ) ); elif name in [ "DirectProduct", "Coproduct", "DirectSum" ] then return ## a constructor for universal objects: DirectSum - """ + Pair( """ function ( input_arguments... ) local i_arg; @@ -208,7 +208,7 @@ InstallMethod( QuotientCategory, return ObjectConstructor( cat, operation_name( UnderlyingCategory( cat ), List( i_arg[2], UnderlyingCell ) ) ); end - """; + """, OperationWeight( ambient_cat, name ) ); else @@ -226,7 +226,7 @@ InstallMethod( QuotientCategory, info := CAP_INTERNAL_METHOD_NAME_RECORD.(name); return - ReplacedStringViaRecord( + Pair( ReplacedStringViaRecord( """ function ( input_arguments... ) local underlying_cat, i_arg; @@ -258,7 +258,7 @@ InstallMethod( QuotientCategory, Error( "can only deal with \"integer\", \"object\", \"morphism\", \"list_of_objects\", \"list_of_morphisms\"" ); fi; - end ) ) ); + end ) ) ), OperationWeight( ambient_cat, name ) ); end; @@ -281,6 +281,7 @@ InstallMethod( QuotientCategory, morphism_constructor := morphism_constructor, morphism_datum := morphism_datum, underlying_category_getter_string := "UnderlyingCategory", + underlying_category := ambient_cat, list_of_operations_to_install := list_of_operations_to_install, supports_empty_limits := supports_empty_limits, create_func_bool := create_func_bool, @@ -302,7 +303,7 @@ InstallMethod( QuotientCategory, return List( objects, o -> ObjectConstructor( quotient_cat, o ) ); - end ); + end, OperationWeight( ambient_cat, "SetOfObjectsOfCategory" ) ); fi; @@ -327,7 +328,7 @@ InstallMethod( QuotientCategory, return MorphismConstructor( quotient_cat, Source( phi ), MultiplyWithElementOfCommutativeRingForMorphisms( UnderlyingCategory( quotient_cat ), r, UnderlyingCell( phi ) ), Target( phi ) ); - end ); + end, OperationWeight( ambient_cat, "MultiplyWithElementOfCommutativeRingForMorphisms" ) ); fi; @@ -351,7 +352,7 @@ InstallGlobalFunction( ADD_FUNCTIONS_OF_RANDOM_METHODS_TO_QUOTIENT_CATEGORY, AddRandomObjectByInteger( quotient_cat, function( quotient_cat, i ) return ObjectConstructor( quotient_cat, RandomObjectByInteger( UnderlyingCategory( quotient_cat ), i ) ); - end ); + end, OperationWeight( ambient_cat, "RandomObjectByInteger" ) ); fi; @@ -362,7 +363,7 @@ InstallGlobalFunction( ADD_FUNCTIONS_OF_RANDOM_METHODS_TO_QUOTIENT_CATEGORY, local alpha; alpha := RandomMorphismWithFixedSourceAndRangeByInteger( UnderlyingCategory( quotient_cat ), UnderlyingCell( S ), UnderlyingCell( R ), i ); return MorphismConstructor( quotient_cat, ObjectConstructor( quotient_cat, Source( alpha ) ), alpha, ObjectConstructor( quotient_cat, Target( alpha ) ) ); - end ); + end, OperationWeight( ambient_cat, "RandomMorphismWithFixedSourceAndRangeByInteger" ) ); fi; @@ -373,7 +374,7 @@ InstallGlobalFunction( ADD_FUNCTIONS_OF_RANDOM_METHODS_TO_QUOTIENT_CATEGORY, local alpha; alpha := RandomMorphismWithFixedSourceByInteger( UnderlyingCategory( quotient_cat ), UnderlyingCell( S ), i ); return MorphismConstructor( quotient_cat, S, alpha, ObjectConstructor( quotient_cat, Target( alpha ) ) ); - end ); + end, OperationWeight( ambient_cat, "RandomMorphismWithFixedSourceByInteger" ) ); fi; @@ -384,7 +385,7 @@ InstallGlobalFunction( ADD_FUNCTIONS_OF_RANDOM_METHODS_TO_QUOTIENT_CATEGORY, local alpha; alpha := RandomMorphismWithFixedRangeByInteger( UnderlyingCategory( quotient_cat ), UnderlyingCell( R ), i ); return MorphismConstructor( quotient_cat, ObjectConstructor( quotient_cat, Source( alpha ) ), alpha, R ); - end ); + end, OperationWeight( ambient_cat, "RandomMorphismWithFixedRangeByInteger" ) ); fi; @@ -395,7 +396,7 @@ InstallGlobalFunction( ADD_FUNCTIONS_OF_RANDOM_METHODS_TO_QUOTIENT_CATEGORY, local alpha; alpha := RandomMorphismByInteger( UnderlyingCategory( quotient_cat ), i ); return MorphismConstructor( quotient_cat, ObjectConstructor( quotient_cat, Source( alpha ) ), alpha, ObjectConstructor( quotient_cat, Target( alpha ) ) ); - end ); + end, OperationWeight( ambient_cat, "RandomMorphismByInteger" ) ); fi; if CanCompute( ambient_cat, "RandomObjectByList" ) then @@ -403,7 +404,7 @@ InstallGlobalFunction( ADD_FUNCTIONS_OF_RANDOM_METHODS_TO_QUOTIENT_CATEGORY, AddRandomObjectByList( quotient_cat, function( quotient_cat, L ) return ObjectConstructor( quotient_cat, RandomObjectByList( UnderlyingCategory( quotient_cat ), L ) ); - end ); + end, OperationWeight( ambient_cat, "RandomObjectByList" ) ); fi; @@ -414,7 +415,7 @@ InstallGlobalFunction( ADD_FUNCTIONS_OF_RANDOM_METHODS_TO_QUOTIENT_CATEGORY, local alpha; alpha := RandomMorphismWithFixedSourceAndRangeByList( UnderlyingCategory( quotient_cat ), UnderlyingCell( S ), UnderlyingCell( R ), L ); return MorphismConstructor( quotient_cat, ObjectConstructor( quotient_cat, Source( alpha ) ), alpha, ObjectConstructor( quotient_cat, Target( alpha ) ) ); - end ); + end, OperationWeight( ambient_cat, "RandomMorphismWithFixedSourceAndRangeByList" ) ); fi; @@ -425,7 +426,7 @@ InstallGlobalFunction( ADD_FUNCTIONS_OF_RANDOM_METHODS_TO_QUOTIENT_CATEGORY, local alpha; alpha := RandomMorphismWithFixedSourceByList( UnderlyingCategory( quotient_cat ), UnderlyingCell( S ), L ); return MorphismConstructor( quotient_cat, S, alpha, ObjectConstructor( quotient_cat, Target( alpha ) ) ); - end ); + end, OperationWeight( ambient_cat, "RandomMorphismWithFixedSourceByList" ) ); fi; @@ -436,7 +437,7 @@ InstallGlobalFunction( ADD_FUNCTIONS_OF_RANDOM_METHODS_TO_QUOTIENT_CATEGORY, local alpha; alpha := RandomMorphismWithFixedRangeByList( UnderlyingCategory( quotient_cat ), UnderlyingCell( R ), L ); return MorphismConstructor( quotient_cat, ObjectConstructor( quotient_cat, Source( alpha ) ), alpha, R ); - end ); + end, OperationWeight( ambient_cat, "RandomMorphismWithFixedRangeByList" ) ); fi; @@ -447,7 +448,7 @@ InstallGlobalFunction( ADD_FUNCTIONS_OF_RANDOM_METHODS_TO_QUOTIENT_CATEGORY, local alpha; alpha := RandomMorphismByList( UnderlyingCategory( quotient_cat ), L ); return MorphismConstructor( quotient_cat, ObjectConstructor( quotient_cat, Source( alpha ) ), alpha, ObjectConstructor( quotient_cat, Target( alpha ) ) ); - end ); + end, OperationWeight( ambient_cat, "RandomMorphismByList" ) ); fi; diff --git a/SubcategoriesForCAP/PackageInfo.g b/SubcategoriesForCAP/PackageInfo.g index c415adf9a..b1e3276d9 100644 --- a/SubcategoriesForCAP/PackageInfo.g +++ b/SubcategoriesForCAP/PackageInfo.g @@ -10,7 +10,7 @@ SetPackageInfo( rec( PackageName := "SubcategoriesForCAP", Subtitle := "Subcategory and other related constructors for CAP categories", -Version := "2024.10-02", +Version := "2024.11-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", @@ -98,7 +98,7 @@ Dependencies := rec( GAP := ">= 4.13.0", NeededOtherPackages := [ [ "GAPDoc", ">= 1.5" ], - [ "CAP", ">= 2024.09-05" ], + [ "CAP", ">= 2024.11-01" ], [ "MonoidalCategories", ">= 2024.06-02" ], [ "CartesianCategories", ">= 2024.06-03" ], [ "ToolsForCategoricalTowers", ">= 2024.03-02" ], diff --git a/SubcategoriesForCAP/gap/SliceCategory.gi b/SubcategoriesForCAP/gap/SliceCategory.gi index 7b8db86e0..b6d75affa 100644 --- a/SubcategoriesForCAP/gap/SliceCategory.gi +++ b/SubcategoriesForCAP/gap/SliceCategory.gi @@ -238,6 +238,7 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", create_func_bool := "default", create_func_morphism := "default", underlying_category_getter_string := "AmbientCategory", + underlying_category := C, # UnderlyingMorphism is an attribute in the eager case but a proper operation in the lazy case underlying_object_getter_string := "SourceOfUnderlyingMorphism", underlying_morphism_getter_string := "MorphismDatum", @@ -265,7 +266,7 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", return IsEqualForObjects( C, Target( m ), BaseObject( cat ) ) and IsWellDefinedForMorphisms( C, m ); - end ); + end, OperationWeight( C, "IsEqualForObjects" ) + OperationWeight( C, "IsWellDefinedForMorphisms" ) ); AddIsWellDefinedForMorphisms( Slice_over_B, function( cat, phi ) @@ -283,7 +284,11 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", IsWellDefinedForMorphisms( C, phi_underlying ) and IsCongruentForMorphisms( C, mS, PreCompose( C, phi_underlying, mT ) ); - end ); + end, + 2 * OperationWeight( C, "IsEqualForObjects" ) + + OperationWeight( C, "IsWellDefinedForMorphisms" ) + + OperationWeight( C, "PreCompose" ) + + OperationWeight( C, "IsCongruentForMorphisms" ) ); AddIsEqualForObjects( Slice_over_B, function( cat, a, b ) @@ -296,21 +301,21 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", return IsEqualForObjects( C, Source( a_underlying ), Source( b_underlying ) ) and IsEqualForMorphisms( C, a_underlying, b_underlying ); - end ); + end, OperationWeight( C, "IsEqualForObjects" ) + OperationWeight( C, "IsEqualForMorphisms" ) ); AddIsEqualForMorphisms( Slice_over_B, function( cat, phi, psi ) return IsEqualForMorphisms( AmbientCategory( cat ), UnderlyingCell( psi ), UnderlyingCell( phi ) ); - end ); + end, OperationWeight( C, "IsEqualForMorphisms" ) ); AddIsCongruentForMorphisms( Slice_over_B, function( cat, phi, psi ) return IsCongruentForMorphisms( AmbientCategory( cat ), UnderlyingCell( psi ), UnderlyingCell( phi ) ); - end ); + end, OperationWeight( C, "IsCongruentForMorphisms" ) ); if CanCompute( C, "IsEqualForCacheForMorphisms" ) then @@ -335,28 +340,28 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", return ObjectConstructor( cat, UniversalMorphismFromInitialObject( AmbientCategory( cat ), BaseObject( cat ) ) ); - end ); + end, OperationWeight( C, "UniversalMorphismFromInitialObject" ) ); AddTerminalObject( Slice_over_B, function( cat ) return ObjectConstructor( cat, IdentityMorphism( AmbientCategory( cat ), BaseObject( cat ) ) ); - end ); + end, OperationWeight( C, "IdentityMorphism" ) ); AddIsTerminal( Slice_over_B, function( cat, M ) return IsIsomorphism( AmbientCategory( cat ), UnderlyingMorphism( M ) ); - end ); + end, OperationWeight( C, "IsIsomorphism" ) ); AddUniversalMorphismIntoTerminalObject( Slice_over_B, function( cat, M ) return MorphismConstructor( cat, M, UnderlyingMorphism( M ), TerminalObject( cat ) ); - end ); + end, OperationWeight( Slice_over_B, "TerminalObject" ) ); if CanCompute( C, "ZeroObject" ) and CanCompute( C, "IsZeroForMorphisms" ) then @@ -365,7 +370,7 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", return IsZeroForMorphisms( AmbientCategory( cat ), UnderlyingMorphism( M ) ); - end ); + end, OperationWeight( C, "IsZeroForMorphisms" ) ); fi; @@ -376,7 +381,7 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", return IsLiftable( AmbientCategory( cat ), UnderlyingMorphism( M ), UnderlyingMorphism( N ) ); - end ); + end, OperationWeight( C, "IsLiftable" ) ); fi; @@ -398,7 +403,7 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", SourceOfUnderlyingMorphism( cat, P ) ), L[k] ); - end ); + end, OperationWeight( C, "ProjectionInFactorOfFiberProductWithGivenFiberProduct" ) ); ## AddUniversalMorphismIntoDirectProductWithGivenDirectProduct( Slice_over_B, @@ -413,7 +418,7 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", SourceOfUnderlyingMorphism( cat, P ) ), P ); - end ); + end, OperationWeight( C, "UniversalMorphismIntoFiberProductWithGivenFiberProduct" ) ); fi; @@ -434,7 +439,7 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", SourceOfUnderlyingMorphism( cat, I ) ), I ); - end ); + end, OperationWeight( C, "InjectionOfCofactorOfCoproductWithGivenCoproduct" ) ); ## AddUniversalMorphismFromCoproductWithGivenCoproduct( Slice_over_B, @@ -449,7 +454,7 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", SourceOfUnderlyingMorphism( cat, I ) ), T ); - end ); + end, OperationWeight( C, "UniversalMorphismFromCoproductWithGivenCoproduct" ) ); fi; @@ -478,7 +483,7 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", emb, A ); - end ); + end, OperationWeight( C, "EmbeddingOfEqualizer" ) + OperationWeight( C, "PreCompose" ) ); fi; @@ -498,7 +503,7 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", SourceOfUnderlyingMorphism( cat, E ) ), E ); - end ); + end, OperationWeight( C, "UniversalMorphismIntoEqualizerWithGivenEqualizer" ) ); fi; @@ -527,7 +532,7 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", prj, E ); - end ); + end, OperationWeight( C, "ProjectionOntoCoequalizer" ) + OperationWeight( C, "ColiftAlongEpimorphism" ) ); fi; @@ -547,7 +552,7 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", SourceOfUnderlyingMorphism( cat, E ) ), T ); - end ); + end, OperationWeight( C, "UniversalMorphismFromCoequalizerWithGivenCoequalizer" ) ); fi; @@ -575,7 +580,7 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", emb, range ); - end ); + end, OperationWeight( C, "ImageEmbedding" ) + OperationWeight( C, "PreCompose" ) ); fi; @@ -612,7 +617,7 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", Source( N_mor ) ); mors_slice := Filtered( mors, m -> - IsEqualForMorphisms( C, + IsCongruentForMorphisms( C, PreCompose( C, m, N_mor ), @@ -624,7 +629,10 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", mor, N ) ); - end ); + end, + OperationWeight( C, "MorphismsOfExternalHom" ) + + 2 * OperationWeight( C, "IsCongruentForMorphisms" ) + + 2 * OperationWeight( C, "PreCompose" ) ); fi; @@ -643,7 +651,7 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", [ SubobjectClassifier( C ), BaseObject( cat ) ], 2 ) ); - end ); + end, OperationWeight( C, "ProjectionInFactorOfDirectProduct" ) + OperationWeight( C, "SubobjectClassifier" ) ); fi; @@ -675,7 +683,10 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", SourceOfUnderlyingMorphism( cat, Omega ) ), Omega ); - end ); + end, + OperationWeight( C, "SubobjectClassifier" ) + + OperationWeight( C, "ClassifyingMorphismOfSubobjectWithGivenSubobjectClassifier" ) + + OperationWeight( C, "UniversalMorphismIntoDirectProductWithGivenDirectProduct" ) ); fi; @@ -920,7 +931,7 @@ BindGlobal( "CAP_INTERNAL_SLICE_CATEGORY", return ObjectConstructor( cat, IdentityMorphism( AmbientCategory( cat ), BaseObject( cat ) ) ); - end ); + end, OperationWeight( C, "IdentityMorphism" ) ); TensorProductOnObjectsInSliceOverTensorUnit := function( cat, I, J ) local C; diff --git a/SubcategoriesForCAP/gap/Subcategory.gi b/SubcategoriesForCAP/gap/Subcategory.gi index f6dec3861..3cb93085a 100644 --- a/SubcategoriesForCAP/gap/Subcategory.gi +++ b/SubcategoriesForCAP/gap/Subcategory.gi @@ -94,18 +94,19 @@ InstallMethod( Subcategory, category_constructor_options := rec( name := name, - create_func_bool := "default", - create_func_object := "default", - create_func_morphism := "default", object_constructor := { cat, obj } -> AsSubcategoryCell( cat, obj ), object_datum := { cat, obj } -> UnderlyingCell( obj ), morphism_constructor := { cat, source, mor, range } -> AsSubcategoryCell( source, mor, range ), morphism_datum := { cat, mor } -> UnderlyingCell( mor ), underlying_category_getter_string := "AmbientCategory", + underlying_category := C, underlying_object_getter_string := "ObjectDatum", underlying_morphism_getter_string := "MorphismDatum", top_object_getter_string := "ObjectConstructor", top_morphism_getter_string := "MorphismConstructor", + create_func_bool := "default", + create_func_object := "default", + create_func_morphism := "default", ); ## list_of_operations_to_install @@ -195,9 +196,9 @@ InstallMethod( Subcategory, AddSetOfObjectsOfCategory( D, function( D ) - return List( Filtered( SetOfObjects( AmbientCategory( D ) ), D!.ObjectMembershipFunction ), object -> ObjectConstructor( D, object ) ); + return List( Filtered( SetOfObjectsOfCategory( AmbientCategory( D ) ), D!.ObjectMembershipFunction ), object -> ObjectConstructor( D, object ) ); - end ); + end, OperationWeight( C, "SetOfObjectsOfCategory" ) ); fi; @@ -214,7 +215,7 @@ InstallMethod( Subcategory, ObjectDatum( D, target ) ), target ); - end ); + end, OperationWeight( C, "UniqueMorphism" ) ); fi; @@ -264,7 +265,7 @@ InstallGlobalFunction( SubcategoryGeneratedByListOfMorphisms, return ForAny( L, obj -> IsEqualForObjects( obj, UnderlyingCell( a ) ) ); - end ); + end, 2 * OperationWeight( C, "IsEqualForObjects" ) ); if CanCompute( C, "IsWellDefinedForMorphisms" ) then @@ -275,7 +276,7 @@ InstallGlobalFunction( SubcategoryGeneratedByListOfMorphisms, IsWellDefinedForObjects( cat, Target( phi ) ) and IsWellDefinedForMorphisms( AmbientCategory( cat ), UnderlyingCell( phi ) ); - end ); + end, 2 * OperationWeight( C, "IsEqualForObjects" ) + OperationWeight( C, "IsWellDefinedForMorphisms" ) ); fi; diff --git a/SubcategoriesForCAP/gap/precompiled_categories/SliceCategoryOfCategoryOfRowsOfRingOfIntegersOverTensorUnitPrecompiled.gi b/SubcategoriesForCAP/gap/precompiled_categories/SliceCategoryOfCategoryOfRowsOfRingOfIntegersOverTensorUnitPrecompiled.gi index 564a67510..7a62bc4c9 100644 --- a/SubcategoriesForCAP/gap/precompiled_categories/SliceCategoryOfCategoryOfRowsOfRingOfIntegersOverTensorUnitPrecompiled.gi +++ b/SubcategoriesForCAP/gap/precompiled_categories/SliceCategoryOfCategoryOfRowsOfRingOfIntegersOverTensorUnitPrecompiled.gi @@ -99,7 +99,7 @@ function ( cat_1 ) end ######## - , 100 ); + , 303 ); ## AddInjectionOfCofactorOfCoproductWithGivenCoproduct( cat, @@ -119,7 +119,7 @@ function ( cat_1, objects_1, k_1, P_1 ) end ######## - , 100 ); + , 505 ); ## cat!.cached_precompiled_functions.InjectionOfCofactorOfCoproductWithGivenCoproduct := @@ -154,7 +154,7 @@ function ( cat_1, alpha_1 ) end ######## - , 100 ); + , 201 ); ## AddIsAutomorphism( cat, @@ -171,7 +171,7 @@ function ( cat_1, arg2_1 ) end ######## - , 100 ); + , 505 ); ## AddIsColiftableAlongEpimorphism( cat, @@ -182,7 +182,7 @@ function ( cat_1, arg2_1, arg3_1 ) end ######## - , 100 ); + , 101 ); ## AddIsCongruentForMorphisms( cat, @@ -218,7 +218,7 @@ function ( cat_1, arg2_1, arg3_1 ) end ######## - , 100 ); + , 200 ); ## AddIsHomSetInhabited( cat, @@ -240,7 +240,7 @@ function ( cat_1, arg2_1 ) end ######## - , 100 ); + , 101 ); ## AddIsIsomorphism( cat, @@ -255,7 +255,7 @@ function ( cat_1, arg2_1 ) end ######## - , 100 ); + , 403 ); ## AddIsLiftable( cat, @@ -277,7 +277,7 @@ function ( cat_1, arg2_1, arg3_1 ) end ######## - , 100 ); + , 101 ); ## AddIsOne( cat, @@ -290,7 +290,7 @@ function ( cat_1, arg2_1 ) end ######## - , 100 ); + , 201 ); ## AddIsSplitEpimorphism( cat, @@ -303,7 +303,7 @@ function ( cat_1, arg2_1 ) end ######## - , 100 ); + , 201 ); ## AddIsTerminal( cat, @@ -318,7 +318,7 @@ function ( cat_1, arg2_1 ) end ######## - , 100 ); + , 403 ); ## AddIsWeakInitial( cat, @@ -371,7 +371,7 @@ function ( cat_1, alpha_1 ) end ######## - , 100 ); + , 500 ); ## AddIsWellDefinedForObjects( cat, @@ -397,7 +397,7 @@ function ( cat_1, arg2_1 ) end ######## - , 100 ); + , 200 ); ## AddLift( cat, @@ -483,7 +483,7 @@ function ( cat_1, beta_1, alpha_1 ) end ######## - , 100 ); + , 101 ); ## AddPreCompose( cat, @@ -528,7 +528,7 @@ function ( cat_1, objects_1, T_1, tau_1, P_1 ) end ######## - , 100 ); + , 505 ); ## cat!.cached_precompiled_functions.UniversalMorphismFromCoproductWithGivenCoproduct := @@ -561,7 +561,7 @@ function ( cat_1, T_1, P_1 ) end ######## - , 100 ); + , 101 ); ## AddUniversalMorphismIntoTerminalObject( cat,