Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
| Download
GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
Project: cocalc-sagemath-dev-slelievre
Views: 418346############################################################################# ## ## CAP package ## ## Copyright 2014, Sebastian Gutsche, TU Kaiserslautern ## Sebastian Posur, RWTH Aachen ## ############################################################################# ##################################### ## ## Reps for object and morphism ## ##################################### DeclareRepresentation( "IsCapTerminalCategoryObjectRep", IsAttributeStoringRep and IsCapCategoryObjectRep, [ ] ); DeclareRepresentation( "IsCapTerminalCategoryMorphismRep", IsAttributeStoringRep and IsCapCategoryMorphismRep, [ ] ); BindGlobal( "TheTypeOfCapTerminalCategoryObject", NewType( TheFamilyOfCapCategoryObjects, IsCapTerminalCategoryObjectRep ) ); BindGlobal( "TheTypeOfCapTerminalCategoryMorphism", NewType( TheFamilyOfCapCategoryMorphisms, IsCapTerminalCategoryMorphismRep ) ); ##################################### ## ## Constructor ## ##################################### InstallValue( CAP_INTERNAL_TERMINAL_CATEGORY, CreateCapCategory( "TerminalCategory" ) ); SetFilterObj( CAP_INTERNAL_TERMINAL_CATEGORY, IsTerminalCategory ); InstallValue( CAP_INTERNAL_TERMINAL_CATEGORY_AS_CAT_OBJECT, AsCatObject( CAP_INTERNAL_TERMINAL_CATEGORY ) ); ## InstallMethod( UniqueObject, [ IsCapCategory and IsTerminalCategory ], function( category ) local object; object := rec( ); ObjectifyWithAttributes( object, TheTypeOfCapTerminalCategoryObject, IsZero, true ); Add( CAP_INTERNAL_TERMINAL_CATEGORY, object ); SetIsWellDefined( object, true ); SetIsZero( object, true ); return object; end ); ## InstallMethod( UniqueMorphism, [ IsCapCategory and IsTerminalCategory ], function( category ) local morphism, object; morphism := rec( ); object := UniqueObject( CAP_INTERNAL_TERMINAL_CATEGORY ); ObjectifyWithAttributes( morphism, TheTypeOfCapTerminalCategoryMorphism, Source, object, Range, object, IsOne, true ); Add( CAP_INTERNAL_TERMINAL_CATEGORY, morphism ); SetIsWellDefined( morphism, true ); return morphism; end ); ################################ ## ## Category functions ## ################################ ## BindGlobal( "INSTALL_TERMINAL_CATEGORY_FUNCTIONS", function( ) local obj_function_list, obj_func, morphism_function_list, morphism_function, i; obj_function_list := [ AddZeroObject, AddKernelObject, AddCokernelObject, AddDirectProduct ]; obj_func := function( arg ) return UniqueObject( CAP_INTERNAL_TERMINAL_CATEGORY ); end; for i in obj_function_list do i( CAP_INTERNAL_TERMINAL_CATEGORY, obj_func ); od; morphism_function_list := [ AddIdentityMorphism, AddPreCompose, AddLiftAlongMonomorphism, AddColiftAlongEpimorphism, AddInverse, AddKernelEmbedding, AddKernelEmbeddingWithGivenKernelObject, AddKernelLiftWithGivenKernelObject, AddCokernelProjection, AddCokernelProjectionWithGivenCokernelObject, AddCokernelColift, AddCokernelColiftWithGivenCokernelObject, AddProjectionInFactorOfDirectProduct, AddProjectionInFactorOfDirectProductWithGivenDirectProduct, AddUniversalMorphismIntoDirectProduct, AddUniversalMorphismIntoDirectProductWithGivenDirectProduct ]; morphism_function := function( arg ) return UniqueMorphism( CAP_INTERNAL_TERMINAL_CATEGORY ); end; for i in morphism_function_list do i( CAP_INTERNAL_TERMINAL_CATEGORY, morphism_function ); od; end ); INSTALL_TERMINAL_CATEGORY_FUNCTIONS( ); ################################ ## ## Functor constructors ## ################################ ## InstallMethod( FunctorFromTerminalCategory, [ IsCapCategoryObject ], function( object ) local functor; functor := CapFunctor( Concatenation( "InjectionInto", Name( CapCategory( object ) ) ), CAP_INTERNAL_TERMINAL_CATEGORY, CapCategory( object ) ); functor!.terminal_object_functor_object := object; AddObjectFunction( functor, function( arg ) return functor!.terminal_object_functor_object; end ); AddMorphismFunction( functor, function( arg ) return IdentityMorphism( functor!.terminal_object_functor_object ); end ); return functor; end ); ## InstallMethod( FunctorFromTerminalCategory, [ IsCapCategoryMorphism and IsOne ], morphism -> FunctorFromTerminalCategory( Source( morphism ) ) ); Finalize( CAP_INTERNAL_TERMINAL_CATEGORY );