1 CAP Categories Categories are the main GAP objects in CAP. They are used to associate GAP objects which represent objects and morphisms with their category. By associating a GAP object to the category, one of two filters belonging to the category (ObjectFilter/MorphismFilter) are set to true. Via Add methods, functions for specific existential quantifiers can be associated to the category and after that can be applied to GAP objects in the category. A GAP category object also knows which constructions are currently possible in this category. 1.1 Categories 1.1-1 IsCapCategory IsCapCategory( object )  filter Returns: true or false The GAP category of CAP categories. Objects of this type handle the CAP category information, the caching, and filters for objects in the CAP category. Please note that the object itself is not related to methods, you only need it as a handler and a presentation of the CAP category. 1.1-2 IsCapCategoryCell IsCapCategoryCell( object )  filter Returns: true or false The GAP category of CAP category cells. Every object, morphism, and 2-cell of a CAP category lies in this GAP category. 1.1-3 IsCapCategoryObject IsCapCategoryObject( object )  filter Returns: true or false The GAP category of CAP category objects. Every object of a CAP category lies in this GAP category. 1.1-4 IsCapCategoryMorphism IsCapCategoryMorphism( object )  filter Returns: true or false The GAP category of CAP category morphisms. Every morphism of a CAP category lies in this GAP category. 1.1-5 IsCapCategoryTwoCell IsCapCategoryTwoCell( object )  filter Returns: true or false The GAP category of CAP category 2-cells. Every 2-cell of a CAP category lies in this GAP category. 1.2 Constructor 1.2-1 CreateCapCategory CreateCapCategory( )  operation Returns: a category Creates a new CAP category from scratch. It gets a generic name. 1.2-2 CreateCapCategory CreateCapCategory( s )  operation Returns: a category The argument is a string s. This operation creates a new CAP category from scratch. Its name is set to s. 1.3 Internal Attributes Each category C stores various filters. They are used to apply the right functions in the method selection. 1.3-1 CategoryFilter CategoryFilter( C )  attribute Returns: a filter The argument is a cateogry C. The output is a filter in which C lies. 1.3-2 CellFilter CellFilter( C )  attribute Returns: a filter The argument is a cateogry C. The output is a filter in which all cells of C shall lie. 1.3-3 ObjectFilter ObjectFilter( C )  attribute Returns: a filter The argument is a cateogry C. The output is a filter in which all objects of C shall lie. 1.3-4 MorphismFilter MorphismFilter( C )  attribute Returns: a filter The argument is a cateogry C. The output is a filter in which all morphisms of C shall lie. 1.3-5 TwoCellFilter TwoCellFilter( C )  attribute Returns: a filter The argument is a cateogry C. The output is a filter in which all 2-cells of C shall lie. 1.4 Logic switcher 1.4-1 CapCategorySwitchLogicOn CapCategorySwitchLogicOn( C )  function Activates the predicate implication logic for the category C. 1.4-2 CapCategorySwitchLogicOff CapCategorySwitchLogicOff( C )  function Deactivates the predicate implication logic for the category C. 1.5 Tool functions 1.5-1 CanCompute CanCompute( C, s )  operation Returns: true or false The argument is a category C and a string s, which should be the name of a primitive operation, e.g., PreCompose. If applying this method is possible in C, the method returns true, false otherwise. If the string is not the name of a primitive operation, an error is raised. 1.5-2 CheckConstructivenessOfCategory CheckConstructivenessOfCategory( C, s )  operation Returns: a list The arguments are a category C and a string s. If s is a categorical property (e.g. "IsAbelianCategory"), the output is a list of strings with basic operations which are missing in C to have the categorical property constructively. If s is not a categorical property, an error is raised. 1.6 Well-Definedness of Cells 1.6-1 IsWellDefined IsWellDefined( c )  property Returns: a boolean The argument is a cell c. The output is true if c is well-defined, otherwise the output is false. 1.7 Type check 1.7-1 DisableBasicOperationTypeCheck DisableBasicOperationTypeCheck( category )  function EnableBasicOperationTypeCheck( arg )  function Most basic operations have a prefunction, which does a (sometimes partial) typecheck at the beginning of the operation. These functions enable or disable this check for a category. (Enabled by default)