Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

17 Precompilation
 17.1 Precompiling the category of finite quivers
 17.2 Precompiling the category of finite reflexive quivers
 17.3 Precompiling the presheaf category of an algebroid from data tables with values in a category of rows
 17.4 Precompiling the presheaf category of an algebroid with values in a category of rows
 17.5 Precompiling the category of presheaves with values in SkeletalFinSets

17 Precompilation

17.1 Precompiling the category of finite quivers

#@if ValueOption( "no_precompiled_code" ) <> true
gap> LoadPackage( "FunctorCategories", false );
true
gap> LoadPackage( "CompilerForCAP", ">= 2024.07-09", false );
true
gap> ReadPackageOnce( "FinSetsForCAP", "gap/CompilerLogic.gi" );
true
gap> ReadPackageOnce( "Algebroids", "gap/CompilerLogic.gi" );
true
gap> ReadPackageOnce( "FunctorCategories", "gap/CompilerLogic.gi" );
true
gap> category_constructor := { } -> CategoryOfBouquetsEnrichedOver( SkeletalCategoryOfFiniteSets( : FinalizeCategory := true ) );;
gap> given_arguments := [ ];;
gap> compiled_category_name := "FinBouquetsPrecompiled";;
gap> package_name := "FunctorCategories";;
gap> CapJitPrecompileCategoryAndCompareResult(
>     category_constructor,
>     given_arguments,
>     package_name,
>     compiled_category_name
>    : operations := [ "InitialObject",
>                      "Coproduct",
>                      "InjectionOfCofactorOfCoproductWithGivenCoproduct",
>                      "UniversalMorphismFromCoproductWithGivenCoproduct",
>                      #"CoproductOnMorphismsWithGivenCoproducts", # <- derived and leads to an error
>                      #"CoproductFunctorialWithGivenCoproducts", # <- derived
>                      "DistinguishedObjectOfHomomorphismStructure",
>                      "HomomorphismStructureOnObjects",
>                      #"HomomorphismStructureOnMorphismsWithGivenObjects",
>                      "InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism",
>                      "MorphismsOfExternalHom",
>                      ]
> );;
gap> FinBouquetsPrecompiled( );
CategoryOfBouquetsEnrichedOver( SkeletalFinSets )
gap> cat := CategoryOfBouquetsEnrichedOver( SkeletalFinSets );
FinBouquets
gap> cat!.precompiled_functions_added;
true
#@fi
#@if ValueOption( "no_precompiled_code" ) <> true
gap> LoadPackage( "FunctorCategories", false );
true
gap> LoadPackage( "CompilerForCAP", ">= 2024.07-09", false );
true
gap> ReadPackageOnce( "FinSetsForCAP", "gap/CompilerLogic.gi" );
true
gap> ReadPackageOnce( "Algebroids", "gap/CompilerLogic.gi" );
true
gap> ReadPackageOnce( "FunctorCategories", "gap/CompilerLogic.gi" );
true
gap> category_constructor := { } -> CategoryOfQuiversEnrichedOver( SkeletalCategoryOfFiniteSets( : FinalizeCategory := true ) );;
gap> given_arguments := [ ];;
gap> compiled_category_name := "FinQuiversPrecompiled";;
gap> package_name := "FunctorCategories";;
gap> CapJitPrecompileCategoryAndCompareResult(
>     category_constructor,
>     given_arguments,
>     package_name,
>     compiled_category_name
>    : operations := [ "InitialObject",
>                      "Coproduct",
>                      #"InjectionOfCofactorOfCoproductWithGivenCoproduct",
>                      #"UniversalMorphismFromCoproductWithGivenCoproduct",
>                      #"CoproductOnMorphismsWithGivenCoproducts", # <- derived and leads to an error
>                      #"CoproductFunctorialWithGivenCoproducts", # <- derived
>                      "DistinguishedObjectOfHomomorphismStructure",
>                      "HomomorphismStructureOnObjects",
>                      #"HomomorphismStructureOnMorphismsWithGivenObjects",
>                      "InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism",
>                      "MorphismsOfExternalHom",
>                      ]
> );;
gap> FinQuiversPrecompiled( );
CategoryOfQuiversEnrichedOver( SkeletalFinSets )
gap> cat := CategoryOfQuiversEnrichedOver( SkeletalFinSets );
FinQuivers
gap> cat!.precompiled_functions_added;
true
#@fi

17.2 Precompiling the category of finite reflexive quivers

#@if ValueOption( "no_precompiled_code" ) <> true
gap> LoadPackage( "FunctorCategories", false );
true
gap> LoadPackage( "CompilerForCAP", ">= 2024.07-09", false );
true
gap> ReadPackageOnce( "FinSetsForCAP", "gap/CompilerLogic.gi" );
true
gap> ReadPackageOnce( "Algebroids", "gap/CompilerLogic.gi" );
true
gap> ReadPackageOnce( "FunctorCategories", "gap/CompilerLogic.gi" );
true
gap> category_constructor := { } -> CategoryOfReflexiveQuiversEnrichedOver( SkeletalCategoryOfFiniteSets( : FinalizeCategory := true ) );;
gap> given_arguments := [ ];;
gap> compiled_category_name := "FinReflexiveQuiversPrecompiled";;
gap> package_name := "FunctorCategories";;
gap> CapJitPrecompileCategoryAndCompareResult(
>     category_constructor,
>     given_arguments,
>     package_name,
>     compiled_category_name
>    : operations := [ "InitialObject",
>                      "Coproduct",
>                      #"InjectionOfCofactorOfCoproductWithGivenCoproduct",
>                      #"UniversalMorphismFromCoproductWithGivenCoproduct",
>                      #"CoproductOnMorphismsWithGivenCoproducts", # <- derived and leads to an error
>                      #"CoproductFunctorialWithGivenCoproducts", # <- derived
>                      "DistinguishedObjectOfHomomorphismStructure",
>                      "HomomorphismStructureOnObjects",
>                      #"HomomorphismStructureOnMorphismsWithGivenObjects",
>                      "InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism",
>                      "MorphismsOfExternalHom",
>                      ]
> );;
gap> FinReflexiveQuiversPrecompiled( );
CategoryOfReflexiveQuiversEnrichedOver( SkeletalFinSets )
gap> cat := CategoryOfReflexiveQuiversEnrichedOver( SkeletalFinSets );
FinReflexiveQuivers
gap> cat!.precompiled_functions_added;
true
#@fi

17.3 Precompiling the presheaf category of an algebroid from data tables with values in a category of rows

#@if ValueOption( "no_precompiled_code" ) <> true
gap> LoadPackage( "FunctorCategories", false );
true
gap> LoadPackage( "CompilerForCAP", ">= 2022.09-20", false );
true
gap> ReadPackageOnce( "FreydCategoriesForCAP", "gap/CategoryOfRows_as_AdditiveClosure_RingAsCategory_CompilerLogic.gi" );
true
gap> ReadPackageOnce( "FinSetsForCAP", "gap/CompilerLogic.gi" );
true
gap> ReadPackageOnce( "Algebroids", "gap/CompilerLogic.gi" );
true
gap> ReadPackageOnce( "FunctorCategories", "gap/CompilerLogic.gi" );
true
gap> k := HomalgFieldOfRationalsInSingular( );;
gap> quiver := RightQuiver( "q(3)[a:1->2,b:2->3]" );;
gap> kF := k[FreeCategory( quiver )];;
gap> A := AlgebroidFromDataTables( kF / [ kF.ab ] );;
gap> category_constructor := A -> PreSheaves( A, CategoryOfRows( CommutativeRingOfLinearCategory( A ) : FinalizeCategory := true, no_precompiled_code := false ) );;
gap> precompile_PreSheavesOfAlgebroidFromDataTablesInCategoryOfRows :=
>   function( A, compiled_category_name )
>     CapJitPrecompileCategoryAndCompareResult(
>             category_constructor,
>             [ A ],
>             "FunctorCategories",
>             compiled_category_name
>             : operations :=
>             Difference( Concatenation(
>                     ListPrimitivelyInstalledOperationsOfCategory( category_constructor( A : no_precompiled_code := true ) ),
>                     [ "InverseForMorphisms",
>                       "CokernelColiftWithGivenCokernelObject",
>                       "KernelLiftWithGivenKernelObject",
>                       ] ),
>                     [ "IsZeroForObjects",
>                       "IsZeroForMorphisms",
>                       "IsEpimorphism",
>                       "IsMonomorphism",
>                       "IsIsomorphism",
>                       "IsEqualForMorphisms",
>                       "IsWellDefinedForObjects",
>                       "IsProjective",
>                       "IsInjective",
>                       "EpimorphismFromSomeProjectiveObject",
>                       "MonomorphismIntoSomeInjectiveObject",
>                       "ProjectiveLift",
>                       "InjectiveColift",
>                       "EpimorphismFromProjectiveCoverObject",
>                       "MonomorphismIntoInjectiveEnvelopeObject",
>                       "IndecomposableProjectiveObjects",
>                       "IndecomposableInjectiveObjects",
>                       "IsReflexive",
>                       ] ) ); end;;
gap> precompile_PreSheavesOfAlgebroidFromDataTablesInCategoryOfRows( A, "PreSheavesOfAlgebroidFromDataTablesInCategoryOfRowsPrecompiled" );
gap> cat := PreSheavesOfAlgebroidFromDataTablesInCategoryOfRowsPrecompiled( A );;
gap> cat!.precompiled_functions_added;
true
#@fi

17.4 Precompiling the presheaf category of an algebroid with values in a category of rows

#@if ValueOption( "no_precompiled_code" ) <> true
gap> LoadPackage( "FunctorCategories", false );
true
gap> LoadPackage( "CompilerForCAP", ">= 2023.12-20", false );
true
gap> ReadPackageOnce( "FreydCategoriesForCAP", "gap/CategoryOfRows_as_AdditiveClosure_RingAsCategory_CompilerLogic.gi" );
true
gap> ReadPackageOnce( "FinSetsForCAP", "gap/CompilerLogic.gi" );
true
gap> ReadPackageOnce( "Algebroids", "gap/CompilerLogic.gi" );
true
gap> ReadPackageOnce( "FunctorCategories", "gap/CompilerLogic.gi" );
true
gap> QQ := HomalgFieldOfRationals( );;
gap> quiver := RightQuiver( "q(3)[a:1->2,b:2->3]" );;
gap> A := QQ[FreeCategory( quiver )];;
gap> A_bar := A / [ A.ab ];;
gap> category_constructor := A -> PreSheaves( A, CategoryOfRows( CommutativeRingOfLinearCategory( A ) : FinalizeCategory := true, no_precompiled_code := false ) );;
gap> precompile_PreSheavesOfAlgebroidInCategoryOfRows :=
>   function( A, compiled_category_name )
>     CapJitPrecompileCategoryAndCompareResult(
>             category_constructor,
>             [ A ],
>             "FunctorCategories",
>             compiled_category_name
>             : operations :=
>             Difference( Concatenation(
>                     ListPrimitivelyInstalledOperationsOfCategory( category_constructor( A : no_precompiled_code := true ) ),
>                     [ "InverseForMorphisms",
>                       "CokernelColiftWithGivenCokernelObject",
>                       "KernelLiftWithGivenKernelObject",
>                       ] ),
>                     [ "IsZeroForObjects",
>                       "IsZeroForMorphisms",
>                       "IsEpimorphism",
>                       "IsMonomorphism",
>                       "IsIsomorphism",
>                       "IsEqualForMorphisms",
>                       "IsWellDefinedForObjects",
>                       "IsProjective",
>                       "IsInjective",
>                       "EpimorphismFromSomeProjectiveObject",
>                       "MonomorphismIntoSomeInjectiveObject",
>                       "ProjectiveLift",
>                       "InjectiveColift",
>                       "EpimorphismFromProjectiveCoverObject",
>                       "MonomorphismIntoInjectiveEnvelopeObject",
>                       "IndecomposableProjectiveObjects",
>                       "IndecomposableInjectiveObjects",
>                       "IsReflexive",
>                       "CoefficientsOfMorphism",
>                       ] ) ); end;;
gap> precompile_PreSheavesOfAlgebroidInCategoryOfRows( A, "PreSheavesOfFreeAlgebroidInCategoryOfRowsPrecompiled" );
gap> precompile_PreSheavesOfAlgebroidInCategoryOfRows( A_bar, "PreSheavesOfAlgebroidWithRelationsInCategoryOfRowsPrecompiled" );
gap> PreSheavesOfFreeAlgebroidInCategoryOfRowsPrecompiled( A );
PreSheaves( Algebroid( Q, FreeCategory(
RightQuiver( "q(3)[a:1->2,b:2->3]" ) ) ),
Rows( Q ) )
gap> cat := PreSheavesOfAlgebroidWithRelationsInCategoryOfRowsPrecompiled( A_bar );
PreSheaves( Algebroid( Q, FreeCategory(
RightQuiver( "q(3)[a:1->2,b:2->3]" ) ) ) / relations,
Rows( Q ) )
gap> cat!.precompiled_functions_added;
true
#@fi

17.5 Precompiling the category of presheaves with values in SkeletalFinSets

#@if ValueOption( "no_precompiled_code" ) <> true
gap> LoadPackage( "FunctorCategories", false );
true
gap> LoadPackage( "CompilerForCAP", ">= 2024.07-09", false );
true
gap> ReadPackageOnce( "FinSetsForCAP", "gap/CompilerLogic.gi" );
true
gap> ReadPackageOnce( "Algebroids", "gap/CompilerLogic.gi" );
true
gap> ReadPackageOnce( "FunctorCategories", "gap/CompilerLogic.gi" );
true
gap> free_category_of_quiver := { quiver, sFinSets } -> CategoryFromDataTables( FreeCategory( quiver : range_of_HomStructure := sFinSets, FinalizeCategory := true ) : FinalizeCategory := true );;
gap> category_constructor :=
>   function( quiver )
>     local sFinSets; sFinSets := SkeletalCategoryOfFiniteSets( : FinalizeCategory := true, overhead := true ); return PreSheaves( CategoryFromDataTables( FreeCategory( quiver : range_of_HomStructure := sFinSets, FinalizeCategory := true ) : FinalizeCategory := true ), sFinSets ); end;;
gap> given_arguments := [ RightQuiver( "q(2)[m:1->2]" ) ];;
gap> compiled_category_name := "PreSheavesOfCategoryFromDataTablesInSkeletalFinSetsPrecompiled";;
gap> package_name := "FunctorCategories";;
gap> CapJitPrecompileCategoryAndCompareResult(
>     category_constructor,
>     given_arguments,
>     package_name,
>     compiled_category_name
>    : operations := [ "InitialObject",
>                      "Coproduct",
>                      "InjectionOfCofactorOfCoproductWithGivenCoproduct",
>                      "UniversalMorphismFromCoproductWithGivenCoproduct",
>                      #"CoproductOnMorphismsWithGivenCoproducts", # <- derived and leads to an error
>                      #"CoproductFunctorialWithGivenCoproducts", # <- derived
>                      "HomomorphismStructureOnObjects",
>                      "HomomorphismStructureOnMorphismsWithGivenObjects",
>                      "InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism",
>                      "MorphismsOfExternalHom",
>                      #"ExponentialOnObjects",
>                      ]
> );;
gap> PreSheavesOfCategoryFromDataTablesInSkeletalFinSetsPrecompiled( given_arguments[1] );
PreSheaves( FreeCategory( RightQuiver( "q(2)[m:1->2]" ) ), SkeletalFinSets )
gap> cat := PreSheaves( free_category_of_quiver( given_arguments[1], SkeletalFinSets ) );
PreSheaves( FreeCategory( RightQuiver( "q(2)[m:1->2]" ) ), SkeletalFinSets )
gap> cat!.precompiled_functions_added;
true
#@fi
#@if ValueOption( "no_precompiled_code" ) <> true
gap> LoadPackage( "FunctorCategories", false );
true
gap> LoadPackage( "CompilerForCAP", ">= 2024.07-09", false );
true
gap> ReadPackageOnce( "FinSetsForCAP", "gap/CompilerLogic.gi" );
true
gap> ReadPackageOnce( "Algebroids", "gap/CompilerLogic.gi" );
true
gap> ReadPackageOnce( "FunctorCategories", "gap/CompilerLogic.gi" );
true
gap> free_category_of_quiver := { quiver, sFinSets } -> FreeCategory( quiver : range_of_HomStructure := sFinSets, FinalizeCategory := true );;
gap> category_constructor :=
>   function( quiver )
>     local sFinSets; sFinSets := SkeletalCategoryOfFiniteSets( : FinalizeCategory := true, overhead := true ); return PreSheaves( FreeCategory( quiver : range_of_HomStructure := sFinSets, FinalizeCategory := true ), sFinSets ); end;;
gap> given_arguments := [ RightQuiver( "q(2)[m:1->2]" ) ];;
gap> compiled_category_name := "PreSheavesOfFpCategoryInSkeletalFinSetsPrecompiled";;
gap> package_name := "FunctorCategories";;
gap> CapJitPrecompileCategoryAndCompareResult(
>     category_constructor,
>     given_arguments,
>     package_name,
>     compiled_category_name
>    : operations := [ "InitialObject",
>                      "Coproduct",
>                      "InjectionOfCofactorOfCoproductWithGivenCoproduct",
>                      "UniversalMorphismFromCoproductWithGivenCoproduct",
>                      #"CoproductOnMorphismsWithGivenCoproducts", # <- derived and leads to an error
>                      #"CoproductFunctorialWithGivenCoproducts", # <- derived
>                      "HomomorphismStructureOnObjects",
>                      "HomomorphismStructureOnMorphismsWithGivenObjects",
>                      "InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism",
>                      "MorphismsOfExternalHom",
>                      #"ExponentialOnObjects",
>                      ]
> );;
gap> PreSheavesOfFpCategoryInSkeletalFinSetsPrecompiled( given_arguments[1] );
PreSheaves( FreeCategory( RightQuiver( "q(2)[m:1->2]" ) ), SkeletalFinSets )
gap> cat := PreSheaves( free_category_of_quiver( given_arguments[1], SkeletalFinSets ) );
PreSheaves( FreeCategory( RightQuiver( "q(2)[m:1->2]" ) ), SkeletalFinSets )
gap> cat!.precompiled_functions_added;
true
#@fi
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Ind

generated by GAPDoc2HTML