Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quellcode-Bibliothek MethodRecordInstallations.autogen.gi   Sprache: unbekannt

 
Spracherkennung für: .gi vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

# SPDX-License-Identifier: GPL-2.0-or-later
# CAP: Categories, Algorithms, Programming
#
# Implementations
#
# THIS FILE IS AUTOMATICALLY GENERATED, SEE CAP_project/CAP/gap/MethodRecordTools.gi

## AdditionForMorphisms
InstallMethod( AddAdditionForMorphisms,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "AdditionForMorphisms", category, func, -1 );
    
end );

InstallMethod( AddAdditionForMorphisms,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "AdditionForMorphisms", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## AdditiveGenerators
InstallMethod( AddAdditiveGenerators,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "AdditiveGenerators", category, func, -1 );
    
end );

InstallMethod( AddAdditiveGenerators,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "AdditiveGenerators", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## AdditiveInverseForMorphisms
InstallMethod( AddAdditiveInverseForMorphisms,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "AdditiveInverseForMorphisms", category, func, -1 );
    
end );

InstallMethod( AddAdditiveInverseForMorphisms,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "AdditiveInverseForMorphisms", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## AstrictionToCoimage
InstallMethod( AddAstrictionToCoimage,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "AstrictionToCoimage", category, func, -1 );
    
end );

InstallMethod( AddAstrictionToCoimage,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "AstrictionToCoimage", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## AstrictionToCoimageWithGivenCoimageObject
InstallMethod( AddAstrictionToCoimageWithGivenCoimageObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "AstrictionToCoimageWithGivenCoimageObject", category, func, -1 );
    
end );

InstallMethod( AddAstrictionToCoimageWithGivenCoimageObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "AstrictionToCoimageWithGivenCoimageObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( AstrictionToCoimageWithGivenCoimageObject,
                    "AstrictionToCoimageWithGivenCoimageObject by calling AstrictionToCoimage with the WithGiven argument(s) dropped",
                    [
                        [ AstrictionToCoimage, 1 ],
                    ],
  function( cat, alpha, C )
    
    return AstrictionToCoimage( cat, alpha );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( AstrictionToCoimage,
                    "AstrictionToCoimage by calling AstrictionToCoimageWithGivenCoimageObject with the WithGiven object(s)",
                    [
                        [ AstrictionToCoimageWithGivenCoimageObject, 1 ],
                        [ CoimageObject, 1 ],
                    ],
  function( cat, alpha )
    
    return AstrictionToCoimageWithGivenCoimageObject( cat, alpha, CoimageObject( cat, alpha ) );
    
end : is_with_given_derivation := true );

## BasisOfExternalHom
InstallMethod( AddBasisOfExternalHom,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "BasisOfExternalHom", category, func, -1 );
    
end );

InstallMethod( AddBasisOfExternalHom,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "BasisOfExternalHom", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## BasisOfSolutionsOfHomogeneousDoubleLinearSystemInLinearCategory
InstallMethod( AddBasisOfSolutionsOfHomogeneousDoubleLinearSystemInLinearCategory,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "BasisOfSolutionsOfHomogeneousDoubleLinearSystemInLinearCategory", category, func, -1 );
    
end );

InstallMethod( AddBasisOfSolutionsOfHomogeneousDoubleLinearSystemInLinearCategory,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "BasisOfSolutionsOfHomogeneousDoubleLinearSystemInLinearCategory", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## BasisOfSolutionsOfHomogeneousLinearSystemInLinearCategory
InstallMethod( AddBasisOfSolutionsOfHomogeneousLinearSystemInLinearCategory,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "BasisOfSolutionsOfHomogeneousLinearSystemInLinearCategory", category, func, -1 );
    
end );

InstallMethod( AddBasisOfSolutionsOfHomogeneousLinearSystemInLinearCategory,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "BasisOfSolutionsOfHomogeneousLinearSystemInLinearCategory", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## CoastrictionToImage
InstallMethod( AddCoastrictionToImage,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "CoastrictionToImage", category, func, -1 );
    
end );

InstallMethod( AddCoastrictionToImage,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "CoastrictionToImage", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## CoastrictionToImageWithGivenImageObject
InstallMethod( AddCoastrictionToImageWithGivenImageObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "CoastrictionToImageWithGivenImageObject", category, func, -1 );
    
end );

InstallMethod( AddCoastrictionToImageWithGivenImageObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "CoastrictionToImageWithGivenImageObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( CoastrictionToImageWithGivenImageObject,
                    "CoastrictionToImageWithGivenImageObject by calling CoastrictionToImage with the WithGiven argument(s) dropped",
                    [
                        [ CoastrictionToImage, 1 ],
                    ],
  function( cat, alpha, I )
    
    return CoastrictionToImage( cat, alpha );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( CoastrictionToImage,
                    "CoastrictionToImage by calling CoastrictionToImageWithGivenImageObject with the WithGiven object(s)",
                    [
                        [ CoastrictionToImageWithGivenImageObject, 1 ],
                        [ ImageObject, 1 ],
                    ],
  function( cat, alpha )
    
    return CoastrictionToImageWithGivenImageObject( cat, alpha, ImageObject( cat, alpha ) );
    
end : is_with_given_derivation := true );

## CoefficientsOfMorphism
InstallMethod( AddCoefficientsOfMorphism,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "CoefficientsOfMorphism", category, func, -1 );
    
end );

InstallMethod( AddCoefficientsOfMorphism,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "CoefficientsOfMorphism", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## Coequalizer
InstallMethod( AddCoequalizer,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "Coequalizer", category, func, -1 );
    
end );

InstallMethod( AddCoequalizer,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "Coequalizer", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## CoequalizerFunctorial
InstallMethod( AddCoequalizerFunctorial,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "CoequalizerFunctorial", category, func, -1 );
    
end );

InstallMethod( AddCoequalizerFunctorial,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "CoequalizerFunctorial", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## CoequalizerFunctorialWithGivenCoequalizers
InstallMethod( AddCoequalizerFunctorialWithGivenCoequalizers,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "CoequalizerFunctorialWithGivenCoequalizers", category, func, -1 );
    
end );

InstallMethod( AddCoequalizerFunctorialWithGivenCoequalizers,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "CoequalizerFunctorialWithGivenCoequalizers", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( CoequalizerFunctorialWithGivenCoequalizers,
                    "CoequalizerFunctorialWithGivenCoequalizers by calling CoequalizerFunctorial with the WithGiven argument(s) dropped",
                    [
                        [ CoequalizerFunctorial, 1 ],
                    ],
  function( cat, P, morphisms, mu, morphismsp, Pp )
    
    return CoequalizerFunctorial( cat, morphisms, mu, morphismsp );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( CoequalizerFunctorial,
                    "CoequalizerFunctorial by calling CoequalizerFunctorialWithGivenCoequalizers with the WithGiven object(s)",
                    [
                        [ CoequalizerFunctorialWithGivenCoequalizers, 1 ],
                        [ Coequalizer, 2 ],
                    ],
  function( cat, morphisms, mu, morphismsp )
    
    return CoequalizerFunctorialWithGivenCoequalizers( cat, Coequalizer( cat, Source( mu ), morphisms ), morphisms, mu, morphismsp, Coequalizer( cat, Range( mu ), morphismsp ) );
    
end : is_with_given_derivation := true );

## CoimageObject
InstallMethod( AddCoimageObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "CoimageObject", category, func, -1 );
    
end );

InstallMethod( AddCoimageObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "CoimageObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## CoimageObjectFunctorial
InstallMethod( AddCoimageObjectFunctorial,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "CoimageObjectFunctorial", category, func, -1 );
    
end );

InstallMethod( AddCoimageObjectFunctorial,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "CoimageObjectFunctorial", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## CoimageObjectFunctorialWithGivenCoimageObjects
InstallMethod( AddCoimageObjectFunctorialWithGivenCoimageObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "CoimageObjectFunctorialWithGivenCoimageObjects", category, func, -1 );
    
end );

InstallMethod( AddCoimageObjectFunctorialWithGivenCoimageObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "CoimageObjectFunctorialWithGivenCoimageObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( CoimageObjectFunctorialWithGivenCoimageObjects,
                    "CoimageObjectFunctorialWithGivenCoimageObjects by calling CoimageObjectFunctorial with the WithGiven argument(s) dropped",
                    [
                        [ CoimageObjectFunctorial, 1 ],
                    ],
  function( cat, C, alpha, mu, alphap, Cp )
    
    return CoimageObjectFunctorial( cat, alpha, mu, alphap );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( CoimageObjectFunctorial,
                    "CoimageObjectFunctorial by calling CoimageObjectFunctorialWithGivenCoimageObjects with the WithGiven object(s)",
                    [
                        [ CoimageObjectFunctorialWithGivenCoimageObjects, 1 ],
                        [ CoimageObject, 2 ],
                    ],
  function( cat, alpha, mu, alphap )
    
    return CoimageObjectFunctorialWithGivenCoimageObjects( cat, CoimageObject( cat, alpha ), alpha, mu, alphap, CoimageObject( cat, alphap ) );
    
end : is_with_given_derivation := true );

## CoimageProjection
InstallMethod( AddCoimageProjection,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "CoimageProjection", category, func, -1 );
    
end );

InstallMethod( AddCoimageProjection,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "CoimageProjection", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## CoimageProjectionWithGivenCoimageObject
InstallMethod( AddCoimageProjectionWithGivenCoimageObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "CoimageProjectionWithGivenCoimageObject", category, func, -1 );
    
end );

InstallMethod( AddCoimageProjectionWithGivenCoimageObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "CoimageProjectionWithGivenCoimageObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( CoimageProjectionWithGivenCoimageObject,
                    "CoimageProjectionWithGivenCoimageObject by calling CoimageProjection with the WithGiven argument(s) dropped",
                    [
                        [ CoimageProjection, 1 ],
                    ],
  function( cat, alpha, C )
    
    return CoimageProjection( cat, alpha );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( CoimageProjection,
                    "CoimageProjection by calling CoimageProjectionWithGivenCoimageObject with the WithGiven object(s)",
                    [
                        [ CoimageProjectionWithGivenCoimageObject, 1 ],
                        [ CoimageObject, 1 ],
                    ],
  function( cat, alpha )
    
    return CoimageProjectionWithGivenCoimageObject( cat, alpha, CoimageObject( cat, alpha ) );
    
end : is_with_given_derivation := true );

## CokernelColift
InstallMethod( AddCokernelColift,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "CokernelColift", category, func, -1 );
    
end );

InstallMethod( AddCokernelColift,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "CokernelColift", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## CokernelColiftWithGivenCokernelObject
InstallMethod( AddCokernelColiftWithGivenCokernelObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "CokernelColiftWithGivenCokernelObject", category, func, -1 );
    
end );

InstallMethod( AddCokernelColiftWithGivenCokernelObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "CokernelColiftWithGivenCokernelObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( CokernelColiftWithGivenCokernelObject,
                    "CokernelColiftWithGivenCokernelObject by calling CokernelColift with the WithGiven argument(s) dropped",
                    [
                        [ CokernelColift, 1 ],
                    ],
  function( cat, alpha, T, tau, P )
    
    return CokernelColift( cat, alpha, T, tau );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( CokernelColift,
                    "CokernelColift by calling CokernelColiftWithGivenCokernelObject with the WithGiven object(s)",
                    [
                        [ CokernelColiftWithGivenCokernelObject, 1 ],
                        [ CokernelObject, 1 ],
                    ],
  function( cat, alpha, T, tau )
    
    return CokernelColiftWithGivenCokernelObject( cat, alpha, T, tau, CokernelObject( cat, alpha ) );
    
end : is_with_given_derivation := true );

## CokernelObject
InstallMethod( AddCokernelObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "CokernelObject", category, func, -1 );
    
end );

InstallMethod( AddCokernelObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "CokernelObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## CokernelObjectFunctorial
InstallMethod( AddCokernelObjectFunctorial,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "CokernelObjectFunctorial", category, func, -1 );
    
end );

InstallMethod( AddCokernelObjectFunctorial,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "CokernelObjectFunctorial", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## CokernelObjectFunctorialWithGivenCokernelObjects
InstallMethod( AddCokernelObjectFunctorialWithGivenCokernelObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "CokernelObjectFunctorialWithGivenCokernelObjects", category, func, -1 );
    
end );

InstallMethod( AddCokernelObjectFunctorialWithGivenCokernelObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "CokernelObjectFunctorialWithGivenCokernelObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( CokernelObjectFunctorialWithGivenCokernelObjects,
                    "CokernelObjectFunctorialWithGivenCokernelObjects by calling CokernelObjectFunctorial with the WithGiven argument(s) dropped",
                    [
                        [ CokernelObjectFunctorial, 1 ],
                    ],
  function( cat, P, alpha, mu, alphap, Pp )
    
    return CokernelObjectFunctorial( cat, alpha, mu, alphap );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( CokernelObjectFunctorial,
                    "CokernelObjectFunctorial by calling CokernelObjectFunctorialWithGivenCokernelObjects with the WithGiven object(s)",
                    [
                        [ CokernelObjectFunctorialWithGivenCokernelObjects, 1 ],
                        [ CokernelObject, 2 ],
                    ],
  function( cat, alpha, mu, alphap )
    
    return CokernelObjectFunctorialWithGivenCokernelObjects( cat, CokernelObject( cat, alpha ), alpha, mu, alphap, CokernelObject( cat, alphap ) );
    
end : is_with_given_derivation := true );

## CokernelProjection
InstallMethod( AddCokernelProjection,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "CokernelProjection", category, func, -1 );
    
end );

InstallMethod( AddCokernelProjection,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "CokernelProjection", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## CokernelProjectionWithGivenCokernelObject
InstallMethod( AddCokernelProjectionWithGivenCokernelObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "CokernelProjectionWithGivenCokernelObject", category, func, -1 );
    
end );

InstallMethod( AddCokernelProjectionWithGivenCokernelObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "CokernelProjectionWithGivenCokernelObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( CokernelProjectionWithGivenCokernelObject,
                    "CokernelProjectionWithGivenCokernelObject by calling CokernelProjection with the WithGiven argument(s) dropped",
                    [
                        [ CokernelProjection, 1 ],
                    ],
  function( cat, alpha, P )
    
    return CokernelProjection( cat, alpha );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( CokernelProjection,
                    "CokernelProjection by calling CokernelProjectionWithGivenCokernelObject with the WithGiven object(s)",
                    [
                        [ CokernelProjectionWithGivenCokernelObject, 1 ],
                        [ CokernelObject, 1 ],
                    ],
  function( cat, alpha )
    
    return CokernelProjectionWithGivenCokernelObject( cat, alpha, CokernelObject( cat, alpha ) );
    
end : is_with_given_derivation := true );

## Colift
InstallMethod( AddColift,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "Colift", category, func, -1 );
    
end );

InstallMethod( AddColift,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "Colift", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ColiftAlongEpimorphism
InstallMethod( AddColiftAlongEpimorphism,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ColiftAlongEpimorphism", category, func, -1 );
    
end );

InstallMethod( AddColiftAlongEpimorphism,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ColiftAlongEpimorphism", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ComponentOfMorphismFromCoproduct
InstallMethod( AddComponentOfMorphismFromCoproduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ComponentOfMorphismFromCoproduct", category, func, -1 );
    
end );

InstallMethod( AddComponentOfMorphismFromCoproduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ComponentOfMorphismFromCoproduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ComponentOfMorphismFromDirectSum
InstallMethod( AddComponentOfMorphismFromDirectSum,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ComponentOfMorphismFromDirectSum", category, func, -1 );
    
end );

InstallMethod( AddComponentOfMorphismFromDirectSum,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ComponentOfMorphismFromDirectSum", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ComponentOfMorphismIntoDirectProduct
InstallMethod( AddComponentOfMorphismIntoDirectProduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ComponentOfMorphismIntoDirectProduct", category, func, -1 );
    
end );

InstallMethod( AddComponentOfMorphismIntoDirectProduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ComponentOfMorphismIntoDirectProduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ComponentOfMorphismIntoDirectSum
InstallMethod( AddComponentOfMorphismIntoDirectSum,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ComponentOfMorphismIntoDirectSum", category, func, -1 );
    
end );

InstallMethod( AddComponentOfMorphismIntoDirectSum,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ComponentOfMorphismIntoDirectSum", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## Coproduct
InstallMethod( AddCoproduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "Coproduct", category, func, -1 );
    
end );

InstallMethod( AddCoproduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "Coproduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## CoproductFunctorial
InstallMethod( AddCoproductFunctorial,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "CoproductFunctorial", category, func, -1 );
    
end );

InstallMethod( AddCoproductFunctorial,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "CoproductFunctorial", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## CoproductFunctorialWithGivenCoproducts
InstallMethod( AddCoproductFunctorialWithGivenCoproducts,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "CoproductFunctorialWithGivenCoproducts", category, func, -1 );
    
end );

InstallMethod( AddCoproductFunctorialWithGivenCoproducts,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "CoproductFunctorialWithGivenCoproducts", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( CoproductFunctorialWithGivenCoproducts,
                    "CoproductFunctorialWithGivenCoproducts by calling CoproductFunctorial with the WithGiven argument(s) dropped",
                    [
                        [ CoproductFunctorial, 1 ],
                    ],
  function( cat, P, objects, L, objectsp, Pp )
    
    return CoproductFunctorial( cat, objects, L, objectsp );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( CoproductFunctorial,
                    "CoproductFunctorial by calling CoproductFunctorialWithGivenCoproducts with the WithGiven object(s)",
                    [
                        [ CoproductFunctorialWithGivenCoproducts, 1 ],
                        [ Coproduct, 2 ],
                    ],
  function( cat, objects, L, objectsp )
    
    return CoproductFunctorialWithGivenCoproducts( cat, Coproduct( cat, objects ), objects, L, objectsp, Coproduct( cat, objectsp ) );
    
end : is_with_given_derivation := true );

## DirectProduct
InstallMethod( AddDirectProduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "DirectProduct", category, func, -1 );
    
end );

InstallMethod( AddDirectProduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "DirectProduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## DirectProductFunctorial
InstallMethod( AddDirectProductFunctorial,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "DirectProductFunctorial", category, func, -1 );
    
end );

InstallMethod( AddDirectProductFunctorial,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "DirectProductFunctorial", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## DirectProductFunctorialWithGivenDirectProducts
InstallMethod( AddDirectProductFunctorialWithGivenDirectProducts,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "DirectProductFunctorialWithGivenDirectProducts", category, func, -1 );
    
end );

InstallMethod( AddDirectProductFunctorialWithGivenDirectProducts,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "DirectProductFunctorialWithGivenDirectProducts", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( DirectProductFunctorialWithGivenDirectProducts,
                    "DirectProductFunctorialWithGivenDirectProducts by calling DirectProductFunctorial with the WithGiven argument(s) dropped",
                    [
                        [ DirectProductFunctorial, 1 ],
                    ],
  function( cat, P, objects, L, objectsp, Pp )
    
    return DirectProductFunctorial( cat, objects, L, objectsp );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( DirectProductFunctorial,
                    "DirectProductFunctorial by calling DirectProductFunctorialWithGivenDirectProducts with the WithGiven object(s)",
                    [
                        [ DirectProductFunctorialWithGivenDirectProducts, 1 ],
                        [ DirectProduct, 2 ],
                    ],
  function( cat, objects, L, objectsp )
    
    return DirectProductFunctorialWithGivenDirectProducts( cat, DirectProduct( cat, objects ), objects, L, objectsp, DirectProduct( cat, objectsp ) );
    
end : is_with_given_derivation := true );

## DirectSum
InstallMethod( AddDirectSum,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "DirectSum", category, func, -1 );
    
end );

InstallMethod( AddDirectSum,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "DirectSum", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## DirectSumFunctorial
InstallMethod( AddDirectSumFunctorial,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "DirectSumFunctorial", category, func, -1 );
    
end );

InstallMethod( AddDirectSumFunctorial,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "DirectSumFunctorial", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## DirectSumFunctorialWithGivenDirectSums
InstallMethod( AddDirectSumFunctorialWithGivenDirectSums,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "DirectSumFunctorialWithGivenDirectSums", category, func, -1 );
    
end );

InstallMethod( AddDirectSumFunctorialWithGivenDirectSums,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "DirectSumFunctorialWithGivenDirectSums", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( DirectSumFunctorialWithGivenDirectSums,
                    "DirectSumFunctorialWithGivenDirectSums by calling DirectSumFunctorial with the WithGiven argument(s) dropped",
                    [
                        [ DirectSumFunctorial, 1 ],
                    ],
  function( cat, P, objects, L, objectsp, Pp )
    
    return DirectSumFunctorial( cat, objects, L, objectsp );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( DirectSumFunctorial,
                    "DirectSumFunctorial by calling DirectSumFunctorialWithGivenDirectSums with the WithGiven object(s)",
                    [
                        [ DirectSumFunctorialWithGivenDirectSums, 1 ],
                        [ DirectSum, 2 ],
                    ],
  function( cat, objects, L, objectsp )
    
    return DirectSumFunctorialWithGivenDirectSums( cat, DirectSum( cat, objects ), objects, L, objectsp, DirectSum( cat, objectsp ) );
    
end : is_with_given_derivation := true );

## DistinguishedObjectOfHomomorphismStructure
InstallMethod( AddDistinguishedObjectOfHomomorphismStructure,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "DistinguishedObjectOfHomomorphismStructure", category, func, -1 );
    
end );

InstallMethod( AddDistinguishedObjectOfHomomorphismStructure,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "DistinguishedObjectOfHomomorphismStructure", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## EmbeddingOfEqualizer
InstallMethod( AddEmbeddingOfEqualizer,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "EmbeddingOfEqualizer", category, func, -1 );
    
end );

InstallMethod( AddEmbeddingOfEqualizer,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "EmbeddingOfEqualizer", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## EmbeddingOfEqualizerWithGivenEqualizer
InstallMethod( AddEmbeddingOfEqualizerWithGivenEqualizer,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "EmbeddingOfEqualizerWithGivenEqualizer", category, func, -1 );
    
end );

InstallMethod( AddEmbeddingOfEqualizerWithGivenEqualizer,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "EmbeddingOfEqualizerWithGivenEqualizer", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( EmbeddingOfEqualizerWithGivenEqualizer,
                    "EmbeddingOfEqualizerWithGivenEqualizer by calling EmbeddingOfEqualizer with the WithGiven argument(s) dropped",
                    [
                        [ EmbeddingOfEqualizer, 1 ],
                    ],
  function( cat, Y, morphisms, P )
    
    return EmbeddingOfEqualizer( cat, Y, morphisms );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( EmbeddingOfEqualizer,
                    "EmbeddingOfEqualizer by calling EmbeddingOfEqualizerWithGivenEqualizer with the WithGiven object(s)",
                    [
                        [ EmbeddingOfEqualizerWithGivenEqualizer, 1 ],
                        [ Equalizer, 1 ],
                    ],
  function( cat, Y, morphisms )
    
    return EmbeddingOfEqualizerWithGivenEqualizer( cat, Y, morphisms, Equalizer( cat, Y, morphisms ) );
    
end : is_with_given_derivation := true );

## EpimorphismFromProjectiveCoverObject
InstallMethod( AddEpimorphismFromProjectiveCoverObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "EpimorphismFromProjectiveCoverObject", category, func, -1 );
    
end );

InstallMethod( AddEpimorphismFromProjectiveCoverObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "EpimorphismFromProjectiveCoverObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## EpimorphismFromProjectiveCoverObjectWithGivenProjectiveCoverObject
InstallMethod( AddEpimorphismFromProjectiveCoverObjectWithGivenProjectiveCoverObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "EpimorphismFromProjectiveCoverObjectWithGivenProjectiveCoverObject", category, func, -1 );
    
end );

InstallMethod( AddEpimorphismFromProjectiveCoverObjectWithGivenProjectiveCoverObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "EpimorphismFromProjectiveCoverObjectWithGivenProjectiveCoverObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( EpimorphismFromProjectiveCoverObjectWithGivenProjectiveCoverObject,
                    "EpimorphismFromProjectiveCoverObjectWithGivenProjectiveCoverObject by calling EpimorphismFromProjectiveCoverObject with the WithGiven argument(s) dropped",
                    [
                        [ EpimorphismFromProjectiveCoverObject, 1 ],
                    ],
  function( cat, A, P )
    
    return EpimorphismFromProjectiveCoverObject( cat, A );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( EpimorphismFromProjectiveCoverObject,
                    "EpimorphismFromProjectiveCoverObject by calling EpimorphismFromProjectiveCoverObjectWithGivenProjectiveCoverObject with the WithGiven object(s)",
                    [
                        [ EpimorphismFromProjectiveCoverObjectWithGivenProjectiveCoverObject, 1 ],
                        [ ProjectiveCoverObject, 1 ],
                    ],
  function( cat, A )
    
    return EpimorphismFromProjectiveCoverObjectWithGivenProjectiveCoverObject( cat, A, ProjectiveCoverObject( cat, A ) );
    
end : is_with_given_derivation := true );

## EpimorphismFromSomeProjectiveObject
InstallMethod( AddEpimorphismFromSomeProjectiveObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "EpimorphismFromSomeProjectiveObject", category, func, -1 );
    
end );

InstallMethod( AddEpimorphismFromSomeProjectiveObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "EpimorphismFromSomeProjectiveObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## EpimorphismFromSomeProjectiveObjectWithGivenSomeProjectiveObject
InstallMethod( AddEpimorphismFromSomeProjectiveObjectWithGivenSomeProjectiveObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "EpimorphismFromSomeProjectiveObjectWithGivenSomeProjectiveObject", category, func, -1 );
    
end );

InstallMethod( AddEpimorphismFromSomeProjectiveObjectWithGivenSomeProjectiveObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "EpimorphismFromSomeProjectiveObjectWithGivenSomeProjectiveObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( EpimorphismFromSomeProjectiveObjectWithGivenSomeProjectiveObject,
                    "EpimorphismFromSomeProjectiveObjectWithGivenSomeProjectiveObject by calling EpimorphismFromSomeProjectiveObject with the WithGiven argument(s) dropped",
                    [
                        [ EpimorphismFromSomeProjectiveObject, 1 ],
                    ],
  function( cat, A, P )
    
    return EpimorphismFromSomeProjectiveObject( cat, A );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( EpimorphismFromSomeProjectiveObject,
                    "EpimorphismFromSomeProjectiveObject by calling EpimorphismFromSomeProjectiveObjectWithGivenSomeProjectiveObject with the WithGiven object(s)",
                    [
                        [ EpimorphismFromSomeProjectiveObjectWithGivenSomeProjectiveObject, 1 ],
                        [ SomeProjectiveObject, 1 ],
                    ],
  function( cat, A )
    
    return EpimorphismFromSomeProjectiveObjectWithGivenSomeProjectiveObject( cat, A, SomeProjectiveObject( cat, A ) );
    
end : is_with_given_derivation := true );

## Equalizer
InstallMethod( AddEqualizer,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "Equalizer", category, func, -1 );
    
end );

InstallMethod( AddEqualizer,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "Equalizer", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## EqualizerFunctorial
InstallMethod( AddEqualizerFunctorial,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "EqualizerFunctorial", category, func, -1 );
    
end );

InstallMethod( AddEqualizerFunctorial,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "EqualizerFunctorial", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## EqualizerFunctorialWithGivenEqualizers
InstallMethod( AddEqualizerFunctorialWithGivenEqualizers,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "EqualizerFunctorialWithGivenEqualizers", category, func, -1 );
    
end );

InstallMethod( AddEqualizerFunctorialWithGivenEqualizers,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "EqualizerFunctorialWithGivenEqualizers", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( EqualizerFunctorialWithGivenEqualizers,
                    "EqualizerFunctorialWithGivenEqualizers by calling EqualizerFunctorial with the WithGiven argument(s) dropped",
                    [
                        [ EqualizerFunctorial, 1 ],
                    ],
  function( cat, P, morphisms, mu, morphismsp, Pp )
    
    return EqualizerFunctorial( cat, morphisms, mu, morphismsp );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( EqualizerFunctorial,
                    "EqualizerFunctorial by calling EqualizerFunctorialWithGivenEqualizers with the WithGiven object(s)",
                    [
                        [ EqualizerFunctorialWithGivenEqualizers, 1 ],
                        [ Equalizer, 2 ],
                    ],
  function( cat, morphisms, mu, morphismsp )
    
    return EqualizerFunctorialWithGivenEqualizers( cat, Equalizer( cat, Source( mu ), morphisms ), morphisms, mu, morphismsp, Equalizer( cat, Range( mu ), morphismsp ) );
    
end : is_with_given_derivation := true );

## FiberProduct
InstallMethod( AddFiberProduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "FiberProduct", category, func, -1 );
    
end );

InstallMethod( AddFiberProduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "FiberProduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## FiberProductFunctorial
InstallMethod( AddFiberProductFunctorial,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "FiberProductFunctorial", category, func, -1 );
    
end );

InstallMethod( AddFiberProductFunctorial,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "FiberProductFunctorial", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## FiberProductFunctorialWithGivenFiberProducts
InstallMethod( AddFiberProductFunctorialWithGivenFiberProducts,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "FiberProductFunctorialWithGivenFiberProducts", category, func, -1 );
    
end );

InstallMethod( AddFiberProductFunctorialWithGivenFiberProducts,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "FiberProductFunctorialWithGivenFiberProducts", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( FiberProductFunctorialWithGivenFiberProducts,
                    "FiberProductFunctorialWithGivenFiberProducts by calling FiberProductFunctorial with the WithGiven argument(s) dropped",
                    [
                        [ FiberProductFunctorial, 1 ],
                    ],
  function( cat, P, morphisms, L, morphismsp, Pp )
    
    return FiberProductFunctorial( cat, morphisms, L, morphismsp );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( FiberProductFunctorial,
                    "FiberProductFunctorial by calling FiberProductFunctorialWithGivenFiberProducts with the WithGiven object(s)",
                    [
                        [ FiberProductFunctorialWithGivenFiberProducts, 1 ],
                        [ FiberProduct, 2 ],
                    ],
  function( cat, morphisms, L, morphismsp )
    
    return FiberProductFunctorialWithGivenFiberProducts( cat, FiberProduct( cat, morphisms ), morphisms, L, morphismsp, FiberProduct( cat, morphismsp ) );
    
end : is_with_given_derivation := true );

## HomologyObject
InstallMethod( AddHomologyObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "HomologyObject", category, func, -1 );
    
end );

InstallMethod( AddHomologyObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "HomologyObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## HomologyObjectFunctorialWithGivenHomologyObjects
InstallMethod( AddHomologyObjectFunctorialWithGivenHomologyObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "HomologyObjectFunctorialWithGivenHomologyObjects", category, func, -1 );
    
end );

InstallMethod( AddHomologyObjectFunctorialWithGivenHomologyObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "HomologyObjectFunctorialWithGivenHomologyObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## HomomorphismStructureOnMorphisms
InstallMethod( AddHomomorphismStructureOnMorphisms,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "HomomorphismStructureOnMorphisms", category, func, -1 );
    
end );

InstallMethod( AddHomomorphismStructureOnMorphisms,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "HomomorphismStructureOnMorphisms", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## HomomorphismStructureOnMorphismsWithGivenObjects
InstallMethod( AddHomomorphismStructureOnMorphismsWithGivenObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "HomomorphismStructureOnMorphismsWithGivenObjects", category, func, -1 );
    
end );

InstallMethod( AddHomomorphismStructureOnMorphismsWithGivenObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "HomomorphismStructureOnMorphismsWithGivenObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( HomomorphismStructureOnMorphismsWithGivenObjects,
                    "HomomorphismStructureOnMorphismsWithGivenObjects by calling HomomorphismStructureOnMorphisms with the WithGiven argument(s) dropped",
                    [
                        [ HomomorphismStructureOnMorphisms, 1 ],
                    ],
  function( cat, source, alpha, beta, range )
    
    return HomomorphismStructureOnMorphisms( cat, alpha, beta );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( HomomorphismStructureOnMorphisms,
                    "HomomorphismStructureOnMorphisms by calling HomomorphismStructureOnMorphismsWithGivenObjects with the WithGiven object(s)",
                    [
                        [ HomomorphismStructureOnMorphismsWithGivenObjects, 1 ],
                        [ HomomorphismStructureOnObjects, 2 ],
                    ],
  function( cat, alpha, beta )
    
    return HomomorphismStructureOnMorphismsWithGivenObjects( cat, HomomorphismStructureOnObjects( cat, Range( alpha ), Source( beta ) ), alpha, beta, HomomorphismStructureOnObjects( cat, Source( alpha ), Range( beta ) ) );
    
end : is_with_given_derivation := true );

## HomomorphismStructureOnObjects
InstallMethod( AddHomomorphismStructureOnObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "HomomorphismStructureOnObjects", category, func, -1 );
    
end );

InstallMethod( AddHomomorphismStructureOnObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "HomomorphismStructureOnObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## HorizontalPostCompose
InstallMethod( AddHorizontalPostCompose,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "HorizontalPostCompose", category, func, -1 );
    
end );

InstallMethod( AddHorizontalPostCompose,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "HorizontalPostCompose", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## HorizontalPreCompose
InstallMethod( AddHorizontalPreCompose,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "HorizontalPreCompose", category, func, -1 );
    
end );

InstallMethod( AddHorizontalPreCompose,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "HorizontalPreCompose", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IdentityMorphism
InstallMethod( AddIdentityMorphism,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IdentityMorphism", category, func, -1 );
    
end );

InstallMethod( AddIdentityMorphism,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IdentityMorphism", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IdentityTwoCell
InstallMethod( AddIdentityTwoCell,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IdentityTwoCell", category, func, -1 );
    
end );

InstallMethod( AddIdentityTwoCell,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IdentityTwoCell", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ImageEmbedding
InstallMethod( AddImageEmbedding,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ImageEmbedding", category, func, -1 );
    
end );

InstallMethod( AddImageEmbedding,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ImageEmbedding", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ImageEmbeddingWithGivenImageObject
InstallMethod( AddImageEmbeddingWithGivenImageObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ImageEmbeddingWithGivenImageObject", category, func, -1 );
    
end );

InstallMethod( AddImageEmbeddingWithGivenImageObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ImageEmbeddingWithGivenImageObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( ImageEmbeddingWithGivenImageObject,
                    "ImageEmbeddingWithGivenImageObject by calling ImageEmbedding with the WithGiven argument(s) dropped",
                    [
                        [ ImageEmbedding, 1 ],
                    ],
  function( cat, alpha, I )
    
    return ImageEmbedding( cat, alpha );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( ImageEmbedding,
                    "ImageEmbedding by calling ImageEmbeddingWithGivenImageObject with the WithGiven object(s)",
                    [
                        [ ImageEmbeddingWithGivenImageObject, 1 ],
                        [ ImageObject, 1 ],
                    ],
  function( cat, alpha )
    
    return ImageEmbeddingWithGivenImageObject( cat, alpha, ImageObject( cat, alpha ) );
    
end : is_with_given_derivation := true );

## ImageObject
InstallMethod( AddImageObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ImageObject", category, func, -1 );
    
end );

InstallMethod( AddImageObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ImageObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ImageObjectFunctorial
InstallMethod( AddImageObjectFunctorial,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ImageObjectFunctorial", category, func, -1 );
    
end );

InstallMethod( AddImageObjectFunctorial,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ImageObjectFunctorial", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ImageObjectFunctorialWithGivenImageObjects
InstallMethod( AddImageObjectFunctorialWithGivenImageObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ImageObjectFunctorialWithGivenImageObjects", category, func, -1 );
    
end );

InstallMethod( AddImageObjectFunctorialWithGivenImageObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ImageObjectFunctorialWithGivenImageObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( ImageObjectFunctorialWithGivenImageObjects,
                    "ImageObjectFunctorialWithGivenImageObjects by calling ImageObjectFunctorial with the WithGiven argument(s) dropped",
                    [
                        [ ImageObjectFunctorial, 1 ],
                    ],
  function( cat, I, alpha, nu, alphap, Ip )
    
    return ImageObjectFunctorial( cat, alpha, nu, alphap );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( ImageObjectFunctorial,
                    "ImageObjectFunctorial by calling ImageObjectFunctorialWithGivenImageObjects with the WithGiven object(s)",
                    [
                        [ ImageObjectFunctorialWithGivenImageObjects, 1 ],
                        [ ImageObject, 2 ],
                    ],
  function( cat, alpha, nu, alphap )
    
    return ImageObjectFunctorialWithGivenImageObjects( cat, ImageObject( cat, alpha ), alpha, nu, alphap, ImageObject( cat, alphap ) );
    
end : is_with_given_derivation := true );

## IndecomposableInjectiveObjects
InstallMethod( AddIndecomposableInjectiveObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IndecomposableInjectiveObjects", category, func, -1 );
    
end );

InstallMethod( AddIndecomposableInjectiveObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IndecomposableInjectiveObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IndecomposableProjectiveObjects
InstallMethod( AddIndecomposableProjectiveObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IndecomposableProjectiveObjects", category, func, -1 );
    
end );

InstallMethod( AddIndecomposableProjectiveObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IndecomposableProjectiveObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## InitialObject
InstallMethod( AddInitialObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "InitialObject", category, func, -1 );
    
end );

InstallMethod( AddInitialObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "InitialObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## InitialObjectFunctorial
InstallMethod( AddInitialObjectFunctorial,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "InitialObjectFunctorial", category, func, -1 );
    
end );

InstallMethod( AddInitialObjectFunctorial,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "InitialObjectFunctorial", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## InitialObjectFunctorialWithGivenInitialObjects
InstallMethod( AddInitialObjectFunctorialWithGivenInitialObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "InitialObjectFunctorialWithGivenInitialObjects", category, func, -1 );
    
end );

InstallMethod( AddInitialObjectFunctorialWithGivenInitialObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "InitialObjectFunctorialWithGivenInitialObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( InitialObjectFunctorialWithGivenInitialObjects,
                    "InitialObjectFunctorialWithGivenInitialObjects by calling InitialObjectFunctorial with the WithGiven argument(s) dropped",
                    [
                        [ InitialObjectFunctorial, 1 ],
                    ],
  function( cat, P, Pp )
    
    return InitialObjectFunctorial( cat );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( InitialObjectFunctorial,
                    "InitialObjectFunctorial by calling InitialObjectFunctorialWithGivenInitialObjects with the WithGiven object(s)",
                    [
                        [ InitialObjectFunctorialWithGivenInitialObjects, 1 ],
                        [ InitialObject, 2 ],
                    ],
  function( cat )
    
    return InitialObjectFunctorialWithGivenInitialObjects( cat, InitialObject( cat ), InitialObject( cat ) );
    
end : is_with_given_derivation := true );

## InjectionOfCofactorOfCoproduct
InstallMethod( AddInjectionOfCofactorOfCoproduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "InjectionOfCofactorOfCoproduct", category, func, -1 );
    
end );

InstallMethod( AddInjectionOfCofactorOfCoproduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "InjectionOfCofactorOfCoproduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## InjectionOfCofactorOfCoproductWithGivenCoproduct
InstallMethod( AddInjectionOfCofactorOfCoproductWithGivenCoproduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "InjectionOfCofactorOfCoproductWithGivenCoproduct", category, func, -1 );
    
end );

InstallMethod( AddInjectionOfCofactorOfCoproductWithGivenCoproduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "InjectionOfCofactorOfCoproductWithGivenCoproduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( InjectionOfCofactorOfCoproductWithGivenCoproduct,
                    "InjectionOfCofactorOfCoproductWithGivenCoproduct by calling InjectionOfCofactorOfCoproduct with the WithGiven argument(s) dropped",
                    [
                        [ InjectionOfCofactorOfCoproduct, 1 ],
                    ],
  function( cat, objects, k, P )
    
    return InjectionOfCofactorOfCoproduct( cat, objects, k );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( InjectionOfCofactorOfCoproduct,
                    "InjectionOfCofactorOfCoproduct by calling InjectionOfCofactorOfCoproductWithGivenCoproduct with the WithGiven object(s)",
                    [
                        [ InjectionOfCofactorOfCoproductWithGivenCoproduct, 1 ],
                        [ Coproduct, 1 ],
                    ],
  function( cat, objects, k )
    
    return InjectionOfCofactorOfCoproductWithGivenCoproduct( cat, objects, k, Coproduct( cat, objects ) );
    
end : is_with_given_derivation := true );

## InjectionOfCofactorOfDirectSum
InstallMethod( AddInjectionOfCofactorOfDirectSum,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "InjectionOfCofactorOfDirectSum", category, func, -1 );
    
end );

InstallMethod( AddInjectionOfCofactorOfDirectSum,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "InjectionOfCofactorOfDirectSum", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## InjectionOfCofactorOfDirectSumWithGivenDirectSum
InstallMethod( AddInjectionOfCofactorOfDirectSumWithGivenDirectSum,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "InjectionOfCofactorOfDirectSumWithGivenDirectSum", category, func, -1 );
    
end );

InstallMethod( AddInjectionOfCofactorOfDirectSumWithGivenDirectSum,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "InjectionOfCofactorOfDirectSumWithGivenDirectSum", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( InjectionOfCofactorOfDirectSumWithGivenDirectSum,
                    "InjectionOfCofactorOfDirectSumWithGivenDirectSum by calling InjectionOfCofactorOfDirectSum with the WithGiven argument(s) dropped",
                    [
                        [ InjectionOfCofactorOfDirectSum, 1 ],
                    ],
  function( cat, objects, k, P )
    
    return InjectionOfCofactorOfDirectSum( cat, objects, k );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( InjectionOfCofactorOfDirectSum,
                    "InjectionOfCofactorOfDirectSum by calling InjectionOfCofactorOfDirectSumWithGivenDirectSum with the WithGiven object(s)",
                    [
                        [ InjectionOfCofactorOfDirectSumWithGivenDirectSum, 1 ],
                        [ DirectSum, 1 ],
                    ],
  function( cat, objects, k )
    
    return InjectionOfCofactorOfDirectSumWithGivenDirectSum( cat, objects, k, DirectSum( cat, objects ) );
    
end : is_with_given_derivation := true );

## InjectionOfCofactorOfPushout
InstallMethod( AddInjectionOfCofactorOfPushout,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "InjectionOfCofactorOfPushout", category, func, -1 );
    
end );

InstallMethod( AddInjectionOfCofactorOfPushout,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "InjectionOfCofactorOfPushout", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## InjectionOfCofactorOfPushoutWithGivenPushout
InstallMethod( AddInjectionOfCofactorOfPushoutWithGivenPushout,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "InjectionOfCofactorOfPushoutWithGivenPushout", category, func, -1 );
    
end );

InstallMethod( AddInjectionOfCofactorOfPushoutWithGivenPushout,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "InjectionOfCofactorOfPushoutWithGivenPushout", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( InjectionOfCofactorOfPushoutWithGivenPushout,
                    "InjectionOfCofactorOfPushoutWithGivenPushout by calling InjectionOfCofactorOfPushout with the WithGiven argument(s) dropped",
                    [
                        [ InjectionOfCofactorOfPushout, 1 ],
                    ],
  function( cat, morphisms, k, P )
    
    return InjectionOfCofactorOfPushout( cat, morphisms, k );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( InjectionOfCofactorOfPushout,
                    "InjectionOfCofactorOfPushout by calling InjectionOfCofactorOfPushoutWithGivenPushout with the WithGiven object(s)",
                    [
                        [ InjectionOfCofactorOfPushoutWithGivenPushout, 1 ],
                        [ Pushout, 1 ],
                    ],
  function( cat, morphisms, k )
    
    return InjectionOfCofactorOfPushoutWithGivenPushout( cat, morphisms, k, Pushout( cat, morphisms ) );
    
end : is_with_given_derivation := true );

## InjectiveColift
InstallMethod( AddInjectiveColift,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "InjectiveColift", category, func, -1 );
    
end );

InstallMethod( AddInjectiveColift,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "InjectiveColift", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## InjectiveDimension
InstallMethod( AddInjectiveDimension,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "InjectiveDimension", category, func, -1 );
    
end );

InstallMethod( AddInjectiveDimension,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "InjectiveDimension", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## InjectiveEnvelopeObject
InstallMethod( AddInjectiveEnvelopeObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "InjectiveEnvelopeObject", category, func, -1 );
    
end );

InstallMethod( AddInjectiveEnvelopeObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "InjectiveEnvelopeObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure
InstallMethod( AddInterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure", category, func, -1 );
    
end );

InstallMethod( AddInterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects
InstallMethod( AddInterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects", category, func, -1 );
    
end );

InstallMethod( AddInterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects,
                    "InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects by calling InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure with the WithGiven argument(s) dropped",
                    [
                        [ InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure, 1 ],
                    ],
  function( cat, source, alpha, range )
    
    return InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure( cat, alpha );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure,
                    "InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure by calling InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects with the WithGiven object(s)",
                    [
                        [ InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects, 1 ],
                        [ DistinguishedObjectOfHomomorphismStructure, 1 ],
                        [ HomomorphismStructureOnObjects, 1 ],
                    ],
  function( cat, alpha )
    
    return InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects( cat, DistinguishedObjectOfHomomorphismStructure( cat ), alpha, HomomorphismStructureOnObjects( cat, Source( alpha ), Range( alpha ) ) );
    
end : is_with_given_derivation := true );

## InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism
InstallMethod( AddInterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism", category, func, -1 );
    
end );

InstallMethod( AddInterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## InverseForMorphisms
InstallMethod( AddInverseForMorphisms,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "InverseForMorphisms", category, func, -1 );
    
end );

InstallMethod( AddInverseForMorphisms,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "InverseForMorphisms", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## InverseOfMorphismFromCoimageToImage
InstallMethod( AddInverseOfMorphismFromCoimageToImage,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "InverseOfMorphismFromCoimageToImage", category, func, -1 );
    
end );

InstallMethod( AddInverseOfMorphismFromCoimageToImage,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "InverseOfMorphismFromCoimageToImage", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## InverseOfMorphismFromCoimageToImageWithGivenObjects
InstallMethod( AddInverseOfMorphismFromCoimageToImageWithGivenObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "InverseOfMorphismFromCoimageToImageWithGivenObjects", category, func, -1 );
    
end );

InstallMethod( AddInverseOfMorphismFromCoimageToImageWithGivenObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "InverseOfMorphismFromCoimageToImageWithGivenObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( InverseOfMorphismFromCoimageToImageWithGivenObjects,
                    "InverseOfMorphismFromCoimageToImageWithGivenObjects by calling InverseOfMorphismFromCoimageToImage with the WithGiven argument(s) dropped",
                    [
                        [ InverseOfMorphismFromCoimageToImage, 1 ],
                    ],
  function( cat, I, alpha, C )
    
    return InverseOfMorphismFromCoimageToImage( cat, alpha );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( InverseOfMorphismFromCoimageToImage,
                    "InverseOfMorphismFromCoimageToImage by calling InverseOfMorphismFromCoimageToImageWithGivenObjects with the WithGiven object(s)",
                    [
                        [ InverseOfMorphismFromCoimageToImageWithGivenObjects, 1 ],
                        [ ImageObject, 1 ],
                        [ CoimageObject, 1 ],
                    ],
  function( cat, alpha )
    
    return InverseOfMorphismFromCoimageToImageWithGivenObjects( cat, ImageObject( cat, alpha ), alpha, CoimageObject( cat, alpha ) );
    
end : is_with_given_derivation := true );

## IsAutomorphism
InstallMethod( AddIsAutomorphism,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsAutomorphism", category, func, -1 );
    
end );

InstallMethod( AddIsAutomorphism,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsAutomorphism", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsBijectiveObject
InstallMethod( AddIsBijectiveObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsBijectiveObject", category, func, -1 );
    
end );

InstallMethod( AddIsBijectiveObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsBijectiveObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsCodominating
InstallMethod( AddIsCodominating,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsCodominating", category, func, -1 );
    
end );

InstallMethod( AddIsCodominating,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsCodominating", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsColiftable
InstallMethod( AddIsColiftable,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsColiftable", category, func, -1 );
    
end );

InstallMethod( AddIsColiftable,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsColiftable", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsColiftableAlongEpimorphism
InstallMethod( AddIsColiftableAlongEpimorphism,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsColiftableAlongEpimorphism", category, func, -1 );
    
end );

InstallMethod( AddIsColiftableAlongEpimorphism,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsColiftableAlongEpimorphism", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsCongruentForMorphisms
InstallMethod( AddIsCongruentForMorphisms,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsCongruentForMorphisms", category, func, -1 );
    
end );

InstallMethod( AddIsCongruentForMorphisms,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsCongruentForMorphisms", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsDominating
InstallMethod( AddIsDominating,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsDominating", category, func, -1 );
    
end );

InstallMethod( AddIsDominating,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsDominating", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsEndomorphism
InstallMethod( AddIsEndomorphism,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsEndomorphism", category, func, -1 );
    
end );

InstallMethod( AddIsEndomorphism,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsEndomorphism", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsEpimorphism
InstallMethod( AddIsEpimorphism,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsEpimorphism", category, func, -1 );
    
end );

InstallMethod( AddIsEpimorphism,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsEpimorphism", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsEqualAsFactorobjects
InstallMethod( AddIsEqualAsFactorobjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsEqualAsFactorobjects", category, func, -1 );
    
end );

InstallMethod( AddIsEqualAsFactorobjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsEqualAsFactorobjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsEqualAsSubobjects
InstallMethod( AddIsEqualAsSubobjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsEqualAsSubobjects", category, func, -1 );
    
end );

InstallMethod( AddIsEqualAsSubobjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsEqualAsSubobjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsEqualForCacheForMorphisms
InstallMethod( AddIsEqualForCacheForMorphisms,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsEqualForCacheForMorphisms", category, func, -1 );
    
end );

InstallMethod( AddIsEqualForCacheForMorphisms,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsEqualForCacheForMorphisms", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsEqualForCacheForObjects
InstallMethod( AddIsEqualForCacheForObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsEqualForCacheForObjects", category, func, -1 );
    
end );

InstallMethod( AddIsEqualForCacheForObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsEqualForCacheForObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsEqualForMorphisms
InstallMethod( AddIsEqualForMorphisms,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsEqualForMorphisms", category, func, -1 );
    
end );

InstallMethod( AddIsEqualForMorphisms,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsEqualForMorphisms", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsEqualForMorphismsOnMor
InstallMethod( AddIsEqualForMorphismsOnMor,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsEqualForMorphismsOnMor", category, func, -1 );
    
end );

InstallMethod( AddIsEqualForMorphismsOnMor,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsEqualForMorphismsOnMor", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsEqualForObjects
InstallMethod( AddIsEqualForObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsEqualForObjects", category, func, -1 );
    
end );

InstallMethod( AddIsEqualForObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsEqualForObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsEqualToIdentityMorphism
InstallMethod( AddIsEqualToIdentityMorphism,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsEqualToIdentityMorphism", category, func, -1 );
    
end );

InstallMethod( AddIsEqualToIdentityMorphism,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsEqualToIdentityMorphism", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsEqualToZeroMorphism
InstallMethod( AddIsEqualToZeroMorphism,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsEqualToZeroMorphism", category, func, -1 );
    
end );

InstallMethod( AddIsEqualToZeroMorphism,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsEqualToZeroMorphism", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsHomSetInhabited
InstallMethod( AddIsHomSetInhabited,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsHomSetInhabited", category, func, -1 );
    
end );

InstallMethod( AddIsHomSetInhabited,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsHomSetInhabited", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsIdempotent
InstallMethod( AddIsIdempotent,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsIdempotent", category, func, -1 );
    
end );

InstallMethod( AddIsIdempotent,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsIdempotent", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsInitial
InstallMethod( AddIsInitial,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsInitial", category, func, -1 );
    
end );

InstallMethod( AddIsInitial,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsInitial", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsInjective
InstallMethod( AddIsInjective,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsInjective", category, func, -1 );
    
end );

InstallMethod( AddIsInjective,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsInjective", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsIsomorphicForObjects
InstallMethod( AddIsIsomorphicForObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsIsomorphicForObjects", category, func, -1 );
    
end );

InstallMethod( AddIsIsomorphicForObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsIsomorphicForObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsIsomorphism
InstallMethod( AddIsIsomorphism,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsIsomorphism", category, func, -1 );
    
end );

InstallMethod( AddIsIsomorphism,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsIsomorphism", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsLiftable
InstallMethod( AddIsLiftable,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsLiftable", category, func, -1 );
    
end );

InstallMethod( AddIsLiftable,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsLiftable", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsLiftableAlongMonomorphism
InstallMethod( AddIsLiftableAlongMonomorphism,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsLiftableAlongMonomorphism", category, func, -1 );
    
end );

InstallMethod( AddIsLiftableAlongMonomorphism,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsLiftableAlongMonomorphism", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsMonomorphism
InstallMethod( AddIsMonomorphism,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsMonomorphism", category, func, -1 );
    
end );

InstallMethod( AddIsMonomorphism,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsMonomorphism", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsOne
InstallMethod( AddIsOne,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsOne", category, func, -1 );
    
end );

InstallMethod( AddIsOne,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsOne", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsProjective
InstallMethod( AddIsProjective,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsProjective", category, func, -1 );
    
end );

InstallMethod( AddIsProjective,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsProjective", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsSplitEpimorphism
InstallMethod( AddIsSplitEpimorphism,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsSplitEpimorphism", category, func, -1 );
    
end );

InstallMethod( AddIsSplitEpimorphism,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsSplitEpimorphism", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsSplitMonomorphism
InstallMethod( AddIsSplitMonomorphism,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsSplitMonomorphism", category, func, -1 );
    
end );

InstallMethod( AddIsSplitMonomorphism,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsSplitMonomorphism", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsTerminal
InstallMethod( AddIsTerminal,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsTerminal", category, func, -1 );
    
end );

InstallMethod( AddIsTerminal,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsTerminal", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsWellDefinedForMorphisms
InstallMethod( AddIsWellDefinedForMorphisms,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsWellDefinedForMorphisms", category, func, -1 );
    
end );

InstallMethod( AddIsWellDefinedForMorphisms,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsWellDefinedForMorphisms", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsWellDefinedForMorphismsWithGivenSourceAndRange
InstallMethod( AddIsWellDefinedForMorphismsWithGivenSourceAndRange,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsWellDefinedForMorphismsWithGivenSourceAndRange", category, func, -1 );
    
end );

InstallMethod( AddIsWellDefinedForMorphismsWithGivenSourceAndRange,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsWellDefinedForMorphismsWithGivenSourceAndRange", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsWellDefinedForObjects
InstallMethod( AddIsWellDefinedForObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsWellDefinedForObjects", category, func, -1 );
    
end );

InstallMethod( AddIsWellDefinedForObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsWellDefinedForObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsWellDefinedForTwoCells
InstallMethod( AddIsWellDefinedForTwoCells,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsWellDefinedForTwoCells", category, func, -1 );
    
end );

InstallMethod( AddIsWellDefinedForTwoCells,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsWellDefinedForTwoCells", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsZeroForMorphisms
InstallMethod( AddIsZeroForMorphisms,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsZeroForMorphisms", category, func, -1 );
    
end );

InstallMethod( AddIsZeroForMorphisms,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsZeroForMorphisms", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsZeroForObjects
InstallMethod( AddIsZeroForObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsZeroForObjects", category, func, -1 );
    
end );

InstallMethod( AddIsZeroForObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsZeroForObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromCoequalizerOfCoproductDiagramToPushout
InstallMethod( AddIsomorphismFromCoequalizerOfCoproductDiagramToPushout,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromCoequalizerOfCoproductDiagramToPushout", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromCoequalizerOfCoproductDiagramToPushout,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromCoequalizerOfCoproductDiagramToPushout", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromCoequalizerToCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproduct
InstallMethod( AddIsomorphismFromCoequalizerToCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromCoequalizerToCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproduct", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromCoequalizerToCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromCoequalizerToCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromCoimageToCokernelOfKernel
InstallMethod( AddIsomorphismFromCoimageToCokernelOfKernel,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromCoimageToCokernelOfKernel", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromCoimageToCokernelOfKernel,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromCoimageToCokernelOfKernel", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproductToCoequalizer
InstallMethod( AddIsomorphismFromCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproductToCoequalizer,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproductToCoequalizer", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproductToCoequalizer,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproductToCoequalizer", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromCokernelOfKernelToCoimage
InstallMethod( AddIsomorphismFromCokernelOfKernelToCoimage,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromCokernelOfKernelToCoimage", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromCokernelOfKernelToCoimage,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromCokernelOfKernelToCoimage", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromCoproductToDirectSum
InstallMethod( AddIsomorphismFromCoproductToDirectSum,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromCoproductToDirectSum", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromCoproductToDirectSum,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromCoproductToDirectSum", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromDirectProductToDirectSum
InstallMethod( AddIsomorphismFromDirectProductToDirectSum,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromDirectProductToDirectSum", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromDirectProductToDirectSum,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromDirectProductToDirectSum", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromDirectSumToCoproduct
InstallMethod( AddIsomorphismFromDirectSumToCoproduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromDirectSumToCoproduct", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromDirectSumToCoproduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromDirectSumToCoproduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromDirectSumToDirectProduct
InstallMethod( AddIsomorphismFromDirectSumToDirectProduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromDirectSumToDirectProduct", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromDirectSumToDirectProduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromDirectSumToDirectProduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct
InstallMethod( AddIsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromEqualizerToKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProduct
InstallMethod( AddIsomorphismFromEqualizerToKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromEqualizerToKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProduct", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromEqualizerToKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromEqualizerToKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram
InstallMethod( AddIsomorphismFromFiberProductToEqualizerOfDirectProductDiagram,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromFiberProductToEqualizerOfDirectProductDiagram,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromHomologyObjectToItsConstructionAsAnImageObject
InstallMethod( AddIsomorphismFromHomologyObjectToItsConstructionAsAnImageObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromHomologyObjectToItsConstructionAsAnImageObject", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromHomologyObjectToItsConstructionAsAnImageObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromHomologyObjectToItsConstructionAsAnImageObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromImageObjectToKernelOfCokernel
InstallMethod( AddIsomorphismFromImageObjectToKernelOfCokernel,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromImageObjectToKernelOfCokernel", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromImageObjectToKernelOfCokernel,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromImageObjectToKernelOfCokernel", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromInitialObjectToZeroObject
InstallMethod( AddIsomorphismFromInitialObjectToZeroObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromInitialObjectToZeroObject", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromInitialObjectToZeroObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromInitialObjectToZeroObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromItsConstructionAsAnImageObjectToHomologyObject
InstallMethod( AddIsomorphismFromItsConstructionAsAnImageObjectToHomologyObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromItsConstructionAsAnImageObjectToHomologyObject", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromItsConstructionAsAnImageObjectToHomologyObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromItsConstructionAsAnImageObjectToHomologyObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromKernelOfCokernelToImageObject
InstallMethod( AddIsomorphismFromKernelOfCokernelToImageObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromKernelOfCokernelToImageObject", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromKernelOfCokernelToImageObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromKernelOfCokernelToImageObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProductToEqualizer
InstallMethod( AddIsomorphismFromKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProductToEqualizer,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProductToEqualizer", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProductToEqualizer,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProductToEqualizer", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromPushoutToCoequalizerOfCoproductDiagram
InstallMethod( AddIsomorphismFromPushoutToCoequalizerOfCoproductDiagram,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromPushoutToCoequalizerOfCoproductDiagram", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromPushoutToCoequalizerOfCoproductDiagram,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromPushoutToCoequalizerOfCoproductDiagram", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromTerminalObjectToZeroObject
InstallMethod( AddIsomorphismFromTerminalObjectToZeroObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromTerminalObjectToZeroObject", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromTerminalObjectToZeroObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromTerminalObjectToZeroObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromZeroObjectToInitialObject
InstallMethod( AddIsomorphismFromZeroObjectToInitialObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromZeroObjectToInitialObject", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromZeroObjectToInitialObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromZeroObjectToInitialObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## IsomorphismFromZeroObjectToTerminalObject
InstallMethod( AddIsomorphismFromZeroObjectToTerminalObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "IsomorphismFromZeroObjectToTerminalObject", category, func, -1 );
    
end );

InstallMethod( AddIsomorphismFromZeroObjectToTerminalObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "IsomorphismFromZeroObjectToTerminalObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## JointPairwiseDifferencesOfMorphismsFromCoproduct
InstallMethod( AddJointPairwiseDifferencesOfMorphismsFromCoproduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "JointPairwiseDifferencesOfMorphismsFromCoproduct", category, func, -1 );
    
end );

InstallMethod( AddJointPairwiseDifferencesOfMorphismsFromCoproduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "JointPairwiseDifferencesOfMorphismsFromCoproduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## JointPairwiseDifferencesOfMorphismsIntoDirectProduct
InstallMethod( AddJointPairwiseDifferencesOfMorphismsIntoDirectProduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "JointPairwiseDifferencesOfMorphismsIntoDirectProduct", category, func, -1 );
    
end );

InstallMethod( AddJointPairwiseDifferencesOfMorphismsIntoDirectProduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "JointPairwiseDifferencesOfMorphismsIntoDirectProduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## KernelEmbedding
InstallMethod( AddKernelEmbedding,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "KernelEmbedding", category, func, -1 );
    
end );

InstallMethod( AddKernelEmbedding,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "KernelEmbedding", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## KernelEmbeddingWithGivenKernelObject
InstallMethod( AddKernelEmbeddingWithGivenKernelObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "KernelEmbeddingWithGivenKernelObject", category, func, -1 );
    
end );

InstallMethod( AddKernelEmbeddingWithGivenKernelObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "KernelEmbeddingWithGivenKernelObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( KernelEmbeddingWithGivenKernelObject,
                    "KernelEmbeddingWithGivenKernelObject by calling KernelEmbedding with the WithGiven argument(s) dropped",
                    [
                        [ KernelEmbedding, 1 ],
                    ],
  function( cat, alpha, P )
    
    return KernelEmbedding( cat, alpha );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( KernelEmbedding,
                    "KernelEmbedding by calling KernelEmbeddingWithGivenKernelObject with the WithGiven object(s)",
                    [
                        [ KernelEmbeddingWithGivenKernelObject, 1 ],
                        [ KernelObject, 1 ],
                    ],
  function( cat, alpha )
    
    return KernelEmbeddingWithGivenKernelObject( cat, alpha, KernelObject( cat, alpha ) );
    
end : is_with_given_derivation := true );

## KernelLift
InstallMethod( AddKernelLift,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "KernelLift", category, func, -1 );
    
end );

InstallMethod( AddKernelLift,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "KernelLift", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## KernelLiftWithGivenKernelObject
InstallMethod( AddKernelLiftWithGivenKernelObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "KernelLiftWithGivenKernelObject", category, func, -1 );
    
end );

InstallMethod( AddKernelLiftWithGivenKernelObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "KernelLiftWithGivenKernelObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( KernelLiftWithGivenKernelObject,
                    "KernelLiftWithGivenKernelObject by calling KernelLift with the WithGiven argument(s) dropped",
                    [
                        [ KernelLift, 1 ],
                    ],
  function( cat, alpha, T, tau, P )
    
    return KernelLift( cat, alpha, T, tau );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( KernelLift,
                    "KernelLift by calling KernelLiftWithGivenKernelObject with the WithGiven object(s)",
                    [
                        [ KernelLiftWithGivenKernelObject, 1 ],
                        [ KernelObject, 1 ],
                    ],
  function( cat, alpha, T, tau )
    
    return KernelLiftWithGivenKernelObject( cat, alpha, T, tau, KernelObject( cat, alpha ) );
    
end : is_with_given_derivation := true );

## KernelObject
InstallMethod( AddKernelObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "KernelObject", category, func, -1 );
    
end );

InstallMethod( AddKernelObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "KernelObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## KernelObjectFunctorial
InstallMethod( AddKernelObjectFunctorial,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "KernelObjectFunctorial", category, func, -1 );
    
end );

InstallMethod( AddKernelObjectFunctorial,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "KernelObjectFunctorial", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## KernelObjectFunctorialWithGivenKernelObjects
InstallMethod( AddKernelObjectFunctorialWithGivenKernelObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "KernelObjectFunctorialWithGivenKernelObjects", category, func, -1 );
    
end );

InstallMethod( AddKernelObjectFunctorialWithGivenKernelObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "KernelObjectFunctorialWithGivenKernelObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( KernelObjectFunctorialWithGivenKernelObjects,
                    "KernelObjectFunctorialWithGivenKernelObjects by calling KernelObjectFunctorial with the WithGiven argument(s) dropped",
                    [
                        [ KernelObjectFunctorial, 1 ],
                    ],
  function( cat, P, alpha, mu, alphap, Pp )
    
    return KernelObjectFunctorial( cat, alpha, mu, alphap );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( KernelObjectFunctorial,
                    "KernelObjectFunctorial by calling KernelObjectFunctorialWithGivenKernelObjects with the WithGiven object(s)",
                    [
                        [ KernelObjectFunctorialWithGivenKernelObjects, 1 ],
                        [ KernelObject, 2 ],
                    ],
  function( cat, alpha, mu, alphap )
    
    return KernelObjectFunctorialWithGivenKernelObjects( cat, KernelObject( cat, alpha ), alpha, mu, alphap, KernelObject( cat, alphap ) );
    
end : is_with_given_derivation := true );

## Lift
InstallMethod( AddLift,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "Lift", category, func, -1 );
    
end );

InstallMethod( AddLift,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "Lift", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## LiftAlongMonomorphism
InstallMethod( AddLiftAlongMonomorphism,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "LiftAlongMonomorphism", category, func, -1 );
    
end );

InstallMethod( AddLiftAlongMonomorphism,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "LiftAlongMonomorphism", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## LinearCombinationOfMorphisms
InstallMethod( AddLinearCombinationOfMorphisms,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "LinearCombinationOfMorphisms", category, func, -1 );
    
end );

InstallMethod( AddLinearCombinationOfMorphisms,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "LinearCombinationOfMorphisms", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## MereExistenceOfSolutionOfLinearSystemInAbCategory
InstallMethod( AddMereExistenceOfSolutionOfLinearSystemInAbCategory,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MereExistenceOfSolutionOfLinearSystemInAbCategory", category, func, -1 );
    
end );

InstallMethod( AddMereExistenceOfSolutionOfLinearSystemInAbCategory,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MereExistenceOfSolutionOfLinearSystemInAbCategory", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## MereExistenceOfUniqueSolutionOfHomogeneousLinearSystemInAbCategory
InstallMethod( AddMereExistenceOfUniqueSolutionOfHomogeneousLinearSystemInAbCategory,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MereExistenceOfUniqueSolutionOfHomogeneousLinearSystemInAbCategory", category, func, -1 );
    
end );

InstallMethod( AddMereExistenceOfUniqueSolutionOfHomogeneousLinearSystemInAbCategory,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MereExistenceOfUniqueSolutionOfHomogeneousLinearSystemInAbCategory", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## MereExistenceOfUniqueSolutionOfLinearSystemInAbCategory
InstallMethod( AddMereExistenceOfUniqueSolutionOfLinearSystemInAbCategory,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MereExistenceOfUniqueSolutionOfLinearSystemInAbCategory", category, func, -1 );
    
end );

InstallMethod( AddMereExistenceOfUniqueSolutionOfLinearSystemInAbCategory,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MereExistenceOfUniqueSolutionOfLinearSystemInAbCategory", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## MonomorphismIntoInjectiveEnvelopeObject
InstallMethod( AddMonomorphismIntoInjectiveEnvelopeObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MonomorphismIntoInjectiveEnvelopeObject", category, func, -1 );
    
end );

InstallMethod( AddMonomorphismIntoInjectiveEnvelopeObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MonomorphismIntoInjectiveEnvelopeObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## MonomorphismIntoInjectiveEnvelopeObjectWithGivenInjectiveEnvelopeObject
InstallMethod( AddMonomorphismIntoInjectiveEnvelopeObjectWithGivenInjectiveEnvelopeObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MonomorphismIntoInjectiveEnvelopeObjectWithGivenInjectiveEnvelopeObject", category, func, -1 );
    
end );

InstallMethod( AddMonomorphismIntoInjectiveEnvelopeObjectWithGivenInjectiveEnvelopeObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MonomorphismIntoInjectiveEnvelopeObjectWithGivenInjectiveEnvelopeObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( MonomorphismIntoInjectiveEnvelopeObjectWithGivenInjectiveEnvelopeObject,
                    "MonomorphismIntoInjectiveEnvelopeObjectWithGivenInjectiveEnvelopeObject by calling MonomorphismIntoInjectiveEnvelopeObject with the WithGiven argument(s) dropped",
                    [
                        [ MonomorphismIntoInjectiveEnvelopeObject, 1 ],
                    ],
  function( cat, A, I )
    
    return MonomorphismIntoInjectiveEnvelopeObject( cat, A );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( MonomorphismIntoInjectiveEnvelopeObject,
                    "MonomorphismIntoInjectiveEnvelopeObject by calling MonomorphismIntoInjectiveEnvelopeObjectWithGivenInjectiveEnvelopeObject with the WithGiven object(s)",
                    [
                        [ MonomorphismIntoInjectiveEnvelopeObjectWithGivenInjectiveEnvelopeObject, 1 ],
                        [ InjectiveEnvelopeObject, 1 ],
                    ],
  function( cat, A )
    
    return MonomorphismIntoInjectiveEnvelopeObjectWithGivenInjectiveEnvelopeObject( cat, A, InjectiveEnvelopeObject( cat, A ) );
    
end : is_with_given_derivation := true );

## MonomorphismIntoSomeInjectiveObject
InstallMethod( AddMonomorphismIntoSomeInjectiveObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MonomorphismIntoSomeInjectiveObject", category, func, -1 );
    
end );

InstallMethod( AddMonomorphismIntoSomeInjectiveObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MonomorphismIntoSomeInjectiveObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## MonomorphismIntoSomeInjectiveObjectWithGivenSomeInjectiveObject
InstallMethod( AddMonomorphismIntoSomeInjectiveObjectWithGivenSomeInjectiveObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MonomorphismIntoSomeInjectiveObjectWithGivenSomeInjectiveObject", category, func, -1 );
    
end );

InstallMethod( AddMonomorphismIntoSomeInjectiveObjectWithGivenSomeInjectiveObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MonomorphismIntoSomeInjectiveObjectWithGivenSomeInjectiveObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( MonomorphismIntoSomeInjectiveObjectWithGivenSomeInjectiveObject,
                    "MonomorphismIntoSomeInjectiveObjectWithGivenSomeInjectiveObject by calling MonomorphismIntoSomeInjectiveObject with the WithGiven argument(s) dropped",
                    [
                        [ MonomorphismIntoSomeInjectiveObject, 1 ],
                    ],
  function( cat, A, I )
    
    return MonomorphismIntoSomeInjectiveObject( cat, A );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( MonomorphismIntoSomeInjectiveObject,
                    "MonomorphismIntoSomeInjectiveObject by calling MonomorphismIntoSomeInjectiveObjectWithGivenSomeInjectiveObject with the WithGiven object(s)",
                    [
                        [ MonomorphismIntoSomeInjectiveObjectWithGivenSomeInjectiveObject, 1 ],
                        [ SomeInjectiveObject, 1 ],
                    ],
  function( cat, A )
    
    return MonomorphismIntoSomeInjectiveObjectWithGivenSomeInjectiveObject( cat, A, SomeInjectiveObject( cat, A ) );
    
end : is_with_given_derivation := true );

## MorphismBetweenDirectSums
InstallMethod( AddMorphismBetweenDirectSums,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MorphismBetweenDirectSums", category, func, -1 );
    
end );

InstallMethod( AddMorphismBetweenDirectSums,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MorphismBetweenDirectSums", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## MorphismBetweenDirectSumsWithGivenDirectSums
InstallMethod( AddMorphismBetweenDirectSumsWithGivenDirectSums,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MorphismBetweenDirectSumsWithGivenDirectSums", category, func, -1 );
    
end );

InstallMethod( AddMorphismBetweenDirectSumsWithGivenDirectSums,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MorphismBetweenDirectSumsWithGivenDirectSums", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( MorphismBetweenDirectSumsWithGivenDirectSums,
                    "MorphismBetweenDirectSumsWithGivenDirectSums by calling MorphismBetweenDirectSums with the WithGiven argument(s) dropped",
                    [
                        [ MorphismBetweenDirectSums, 1 ],
                    ],
  function( cat, S, source_diagram, mat, range_diagram, T )
    
    return MorphismBetweenDirectSums( cat, source_diagram, mat, range_diagram );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( MorphismBetweenDirectSums,
                    "MorphismBetweenDirectSums by calling MorphismBetweenDirectSumsWithGivenDirectSums with the WithGiven object(s)",
                    [
                        [ MorphismBetweenDirectSumsWithGivenDirectSums, 1 ],
                        [ DirectSum, 2 ],
                    ],
  function( cat, source_diagram, mat, range_diagram )
    
    return MorphismBetweenDirectSumsWithGivenDirectSums( cat, DirectSum( cat, source_diagram ), source_diagram, mat, range_diagram, DirectSum( cat, range_diagram ) );
    
end : is_with_given_derivation := true );

## MorphismConstructor
InstallMethod( AddMorphismConstructor,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MorphismConstructor", category, func, -1 );
    
end );

InstallMethod( AddMorphismConstructor,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MorphismConstructor", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## MorphismDatum
InstallMethod( AddMorphismDatum,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MorphismDatum", category, func, -1 );
    
end );

InstallMethod( AddMorphismDatum,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MorphismDatum", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## MorphismFromCoimageToImage
InstallMethod( AddMorphismFromCoimageToImage,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MorphismFromCoimageToImage", category, func, -1 );
    
end );

InstallMethod( AddMorphismFromCoimageToImage,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MorphismFromCoimageToImage", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## MorphismFromCoimageToImageWithGivenObjects
InstallMethod( AddMorphismFromCoimageToImageWithGivenObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MorphismFromCoimageToImageWithGivenObjects", category, func, -1 );
    
end );

InstallMethod( AddMorphismFromCoimageToImageWithGivenObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MorphismFromCoimageToImageWithGivenObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( MorphismFromCoimageToImageWithGivenObjects,
                    "MorphismFromCoimageToImageWithGivenObjects by calling MorphismFromCoimageToImage with the WithGiven argument(s) dropped",
                    [
                        [ MorphismFromCoimageToImage, 1 ],
                    ],
  function( cat, C, alpha, I )
    
    return MorphismFromCoimageToImage( cat, alpha );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( MorphismFromCoimageToImage,
                    "MorphismFromCoimageToImage by calling MorphismFromCoimageToImageWithGivenObjects with the WithGiven object(s)",
                    [
                        [ MorphismFromCoimageToImageWithGivenObjects, 1 ],
                        [ CoimageObject, 1 ],
                        [ ImageObject, 1 ],
                    ],
  function( cat, alpha )
    
    return MorphismFromCoimageToImageWithGivenObjects( cat, CoimageObject( cat, alpha ), alpha, ImageObject( cat, alpha ) );
    
end : is_with_given_derivation := true );

## MorphismFromEqualizerToSink
InstallMethod( AddMorphismFromEqualizerToSink,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MorphismFromEqualizerToSink", category, func, -1 );
    
end );

InstallMethod( AddMorphismFromEqualizerToSink,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MorphismFromEqualizerToSink", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## MorphismFromEqualizerToSinkWithGivenEqualizer
InstallMethod( AddMorphismFromEqualizerToSinkWithGivenEqualizer,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MorphismFromEqualizerToSinkWithGivenEqualizer", category, func, -1 );
    
end );

InstallMethod( AddMorphismFromEqualizerToSinkWithGivenEqualizer,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MorphismFromEqualizerToSinkWithGivenEqualizer", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( MorphismFromEqualizerToSinkWithGivenEqualizer,
                    "MorphismFromEqualizerToSinkWithGivenEqualizer by calling MorphismFromEqualizerToSink with the WithGiven argument(s) dropped",
                    [
                        [ MorphismFromEqualizerToSink, 1 ],
                    ],
  function( cat, Y, morphisms, P )
    
    return MorphismFromEqualizerToSink( cat, Y, morphisms );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( MorphismFromEqualizerToSink,
                    "MorphismFromEqualizerToSink by calling MorphismFromEqualizerToSinkWithGivenEqualizer with the WithGiven object(s)",
                    [
                        [ MorphismFromEqualizerToSinkWithGivenEqualizer, 1 ],
                        [ Equalizer, 1 ],
                    ],
  function( cat, Y, morphisms )
    
    return MorphismFromEqualizerToSinkWithGivenEqualizer( cat, Y, morphisms, Equalizer( cat, Y, morphisms ) );
    
end : is_with_given_derivation := true );

## MorphismFromFiberProductToSink
InstallMethod( AddMorphismFromFiberProductToSink,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MorphismFromFiberProductToSink", category, func, -1 );
    
end );

InstallMethod( AddMorphismFromFiberProductToSink,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MorphismFromFiberProductToSink", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## MorphismFromFiberProductToSinkWithGivenFiberProduct
InstallMethod( AddMorphismFromFiberProductToSinkWithGivenFiberProduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MorphismFromFiberProductToSinkWithGivenFiberProduct", category, func, -1 );
    
end );

InstallMethod( AddMorphismFromFiberProductToSinkWithGivenFiberProduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MorphismFromFiberProductToSinkWithGivenFiberProduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( MorphismFromFiberProductToSinkWithGivenFiberProduct,
                    "MorphismFromFiberProductToSinkWithGivenFiberProduct by calling MorphismFromFiberProductToSink with the WithGiven argument(s) dropped",
                    [
                        [ MorphismFromFiberProductToSink, 1 ],
                    ],
  function( cat, morphisms, P )
    
    return MorphismFromFiberProductToSink( cat, morphisms );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( MorphismFromFiberProductToSink,
                    "MorphismFromFiberProductToSink by calling MorphismFromFiberProductToSinkWithGivenFiberProduct with the WithGiven object(s)",
                    [
                        [ MorphismFromFiberProductToSinkWithGivenFiberProduct, 1 ],
                        [ FiberProduct, 1 ],
                    ],
  function( cat, morphisms )
    
    return MorphismFromFiberProductToSinkWithGivenFiberProduct( cat, morphisms, FiberProduct( cat, morphisms ) );
    
end : is_with_given_derivation := true );

## MorphismFromKernelObjectToSink
InstallMethod( AddMorphismFromKernelObjectToSink,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MorphismFromKernelObjectToSink", category, func, -1 );
    
end );

InstallMethod( AddMorphismFromKernelObjectToSink,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MorphismFromKernelObjectToSink", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## MorphismFromKernelObjectToSinkWithGivenKernelObject
InstallMethod( AddMorphismFromKernelObjectToSinkWithGivenKernelObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MorphismFromKernelObjectToSinkWithGivenKernelObject", category, func, -1 );
    
end );

InstallMethod( AddMorphismFromKernelObjectToSinkWithGivenKernelObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MorphismFromKernelObjectToSinkWithGivenKernelObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( MorphismFromKernelObjectToSinkWithGivenKernelObject,
                    "MorphismFromKernelObjectToSinkWithGivenKernelObject by calling MorphismFromKernelObjectToSink with the WithGiven argument(s) dropped",
                    [
                        [ MorphismFromKernelObjectToSink, 1 ],
                    ],
  function( cat, alpha, P )
    
    return MorphismFromKernelObjectToSink( cat, alpha );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( MorphismFromKernelObjectToSink,
                    "MorphismFromKernelObjectToSink by calling MorphismFromKernelObjectToSinkWithGivenKernelObject with the WithGiven object(s)",
                    [
                        [ MorphismFromKernelObjectToSinkWithGivenKernelObject, 1 ],
                        [ KernelObject, 1 ],
                    ],
  function( cat, alpha )
    
    return MorphismFromKernelObjectToSinkWithGivenKernelObject( cat, alpha, KernelObject( cat, alpha ) );
    
end : is_with_given_derivation := true );

## MorphismFromSourceToCoequalizer
InstallMethod( AddMorphismFromSourceToCoequalizer,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MorphismFromSourceToCoequalizer", category, func, -1 );
    
end );

InstallMethod( AddMorphismFromSourceToCoequalizer,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MorphismFromSourceToCoequalizer", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## MorphismFromSourceToCoequalizerWithGivenCoequalizer
InstallMethod( AddMorphismFromSourceToCoequalizerWithGivenCoequalizer,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MorphismFromSourceToCoequalizerWithGivenCoequalizer", category, func, -1 );
    
end );

InstallMethod( AddMorphismFromSourceToCoequalizerWithGivenCoequalizer,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MorphismFromSourceToCoequalizerWithGivenCoequalizer", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( MorphismFromSourceToCoequalizerWithGivenCoequalizer,
                    "MorphismFromSourceToCoequalizerWithGivenCoequalizer by calling MorphismFromSourceToCoequalizer with the WithGiven argument(s) dropped",
                    [
                        [ MorphismFromSourceToCoequalizer, 1 ],
                    ],
  function( cat, Y, morphisms, P )
    
    return MorphismFromSourceToCoequalizer( cat, Y, morphisms );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( MorphismFromSourceToCoequalizer,
                    "MorphismFromSourceToCoequalizer by calling MorphismFromSourceToCoequalizerWithGivenCoequalizer with the WithGiven object(s)",
                    [
                        [ MorphismFromSourceToCoequalizerWithGivenCoequalizer, 1 ],
                        [ Coequalizer, 1 ],
                    ],
  function( cat, Y, morphisms )
    
    return MorphismFromSourceToCoequalizerWithGivenCoequalizer( cat, Y, morphisms, Coequalizer( cat, Y, morphisms ) );
    
end : is_with_given_derivation := true );

## MorphismFromSourceToCokernelObject
InstallMethod( AddMorphismFromSourceToCokernelObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MorphismFromSourceToCokernelObject", category, func, -1 );
    
end );

InstallMethod( AddMorphismFromSourceToCokernelObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MorphismFromSourceToCokernelObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## MorphismFromSourceToCokernelObjectWithGivenCokernelObject
InstallMethod( AddMorphismFromSourceToCokernelObjectWithGivenCokernelObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MorphismFromSourceToCokernelObjectWithGivenCokernelObject", category, func, -1 );
    
end );

InstallMethod( AddMorphismFromSourceToCokernelObjectWithGivenCokernelObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MorphismFromSourceToCokernelObjectWithGivenCokernelObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( MorphismFromSourceToCokernelObjectWithGivenCokernelObject,
                    "MorphismFromSourceToCokernelObjectWithGivenCokernelObject by calling MorphismFromSourceToCokernelObject with the WithGiven argument(s) dropped",
                    [
                        [ MorphismFromSourceToCokernelObject, 1 ],
                    ],
  function( cat, alpha, P )
    
    return MorphismFromSourceToCokernelObject( cat, alpha );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( MorphismFromSourceToCokernelObject,
                    "MorphismFromSourceToCokernelObject by calling MorphismFromSourceToCokernelObjectWithGivenCokernelObject with the WithGiven object(s)",
                    [
                        [ MorphismFromSourceToCokernelObjectWithGivenCokernelObject, 1 ],
                        [ CokernelObject, 1 ],
                    ],
  function( cat, alpha )
    
    return MorphismFromSourceToCokernelObjectWithGivenCokernelObject( cat, alpha, CokernelObject( cat, alpha ) );
    
end : is_with_given_derivation := true );

## MorphismFromSourceToPushout
InstallMethod( AddMorphismFromSourceToPushout,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MorphismFromSourceToPushout", category, func, -1 );
    
end );

InstallMethod( AddMorphismFromSourceToPushout,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MorphismFromSourceToPushout", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## MorphismFromSourceToPushoutWithGivenPushout
InstallMethod( AddMorphismFromSourceToPushoutWithGivenPushout,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MorphismFromSourceToPushoutWithGivenPushout", category, func, -1 );
    
end );

InstallMethod( AddMorphismFromSourceToPushoutWithGivenPushout,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MorphismFromSourceToPushoutWithGivenPushout", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( MorphismFromSourceToPushoutWithGivenPushout,
                    "MorphismFromSourceToPushoutWithGivenPushout by calling MorphismFromSourceToPushout with the WithGiven argument(s) dropped",
                    [
                        [ MorphismFromSourceToPushout, 1 ],
                    ],
  function( cat, morphisms, P )
    
    return MorphismFromSourceToPushout( cat, morphisms );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( MorphismFromSourceToPushout,
                    "MorphismFromSourceToPushout by calling MorphismFromSourceToPushoutWithGivenPushout with the WithGiven object(s)",
                    [
                        [ MorphismFromSourceToPushoutWithGivenPushout, 1 ],
                        [ Pushout, 1 ],
                    ],
  function( cat, morphisms )
    
    return MorphismFromSourceToPushoutWithGivenPushout( cat, morphisms, Pushout( cat, morphisms ) );
    
end : is_with_given_derivation := true );

## MorphismsOfExternalHom
InstallMethod( AddMorphismsOfExternalHom,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MorphismsOfExternalHom", category, func, -1 );
    
end );

InstallMethod( AddMorphismsOfExternalHom,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MorphismsOfExternalHom", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## MultiplyWithElementOfCommutativeRingForMorphisms
InstallMethod( AddMultiplyWithElementOfCommutativeRingForMorphisms,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "MultiplyWithElementOfCommutativeRingForMorphisms", category, func, -1 );
    
end );

InstallMethod( AddMultiplyWithElementOfCommutativeRingForMorphisms,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "MultiplyWithElementOfCommutativeRingForMorphisms", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ObjectConstructor
InstallMethod( AddObjectConstructor,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ObjectConstructor", category, func, -1 );
    
end );

InstallMethod( AddObjectConstructor,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ObjectConstructor", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ObjectDatum
InstallMethod( AddObjectDatum,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ObjectDatum", category, func, -1 );
    
end );

InstallMethod( AddObjectDatum,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ObjectDatum", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## PostCompose
InstallMethod( AddPostCompose,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "PostCompose", category, func, -1 );
    
end );

InstallMethod( AddPostCompose,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "PostCompose", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## PostComposeList
InstallMethod( AddPostComposeList,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "PostComposeList", category, func, -1 );
    
end );

InstallMethod( AddPostComposeList,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "PostComposeList", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## PostInverseForMorphisms
InstallMethod( AddPostInverseForMorphisms,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "PostInverseForMorphisms", category, func, -1 );
    
end );

InstallMethod( AddPostInverseForMorphisms,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "PostInverseForMorphisms", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## PreCompose
InstallMethod( AddPreCompose,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "PreCompose", category, func, -1 );
    
end );

InstallMethod( AddPreCompose,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "PreCompose", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## PreComposeList
InstallMethod( AddPreComposeList,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "PreComposeList", category, func, -1 );
    
end );

InstallMethod( AddPreComposeList,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "PreComposeList", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## PreInverseForMorphisms
InstallMethod( AddPreInverseForMorphisms,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "PreInverseForMorphisms", category, func, -1 );
    
end );

InstallMethod( AddPreInverseForMorphisms,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "PreInverseForMorphisms", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ProjectionInFactorOfDirectProduct
InstallMethod( AddProjectionInFactorOfDirectProduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ProjectionInFactorOfDirectProduct", category, func, -1 );
    
end );

InstallMethod( AddProjectionInFactorOfDirectProduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ProjectionInFactorOfDirectProduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ProjectionInFactorOfDirectProductWithGivenDirectProduct
InstallMethod( AddProjectionInFactorOfDirectProductWithGivenDirectProduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ProjectionInFactorOfDirectProductWithGivenDirectProduct", category, func, -1 );
    
end );

InstallMethod( AddProjectionInFactorOfDirectProductWithGivenDirectProduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ProjectionInFactorOfDirectProductWithGivenDirectProduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( ProjectionInFactorOfDirectProductWithGivenDirectProduct,
                    "ProjectionInFactorOfDirectProductWithGivenDirectProduct by calling ProjectionInFactorOfDirectProduct with the WithGiven argument(s) dropped",
                    [
                        [ ProjectionInFactorOfDirectProduct, 1 ],
                    ],
  function( cat, objects, k, P )
    
    return ProjectionInFactorOfDirectProduct( cat, objects, k );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( ProjectionInFactorOfDirectProduct,
                    "ProjectionInFactorOfDirectProduct by calling ProjectionInFactorOfDirectProductWithGivenDirectProduct with the WithGiven object(s)",
                    [
                        [ ProjectionInFactorOfDirectProductWithGivenDirectProduct, 1 ],
                        [ DirectProduct, 1 ],
                    ],
  function( cat, objects, k )
    
    return ProjectionInFactorOfDirectProductWithGivenDirectProduct( cat, objects, k, DirectProduct( cat, objects ) );
    
end : is_with_given_derivation := true );

## ProjectionInFactorOfDirectSum
InstallMethod( AddProjectionInFactorOfDirectSum,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ProjectionInFactorOfDirectSum", category, func, -1 );
    
end );

InstallMethod( AddProjectionInFactorOfDirectSum,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ProjectionInFactorOfDirectSum", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ProjectionInFactorOfDirectSumWithGivenDirectSum
InstallMethod( AddProjectionInFactorOfDirectSumWithGivenDirectSum,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ProjectionInFactorOfDirectSumWithGivenDirectSum", category, func, -1 );
    
end );

InstallMethod( AddProjectionInFactorOfDirectSumWithGivenDirectSum,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ProjectionInFactorOfDirectSumWithGivenDirectSum", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( ProjectionInFactorOfDirectSumWithGivenDirectSum,
                    "ProjectionInFactorOfDirectSumWithGivenDirectSum by calling ProjectionInFactorOfDirectSum with the WithGiven argument(s) dropped",
                    [
                        [ ProjectionInFactorOfDirectSum, 1 ],
                    ],
  function( cat, objects, k, P )
    
    return ProjectionInFactorOfDirectSum( cat, objects, k );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( ProjectionInFactorOfDirectSum,
                    "ProjectionInFactorOfDirectSum by calling ProjectionInFactorOfDirectSumWithGivenDirectSum with the WithGiven object(s)",
                    [
                        [ ProjectionInFactorOfDirectSumWithGivenDirectSum, 1 ],
                        [ DirectSum, 1 ],
                    ],
  function( cat, objects, k )
    
    return ProjectionInFactorOfDirectSumWithGivenDirectSum( cat, objects, k, DirectSum( cat, objects ) );
    
end : is_with_given_derivation := true );

## ProjectionInFactorOfFiberProduct
InstallMethod( AddProjectionInFactorOfFiberProduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ProjectionInFactorOfFiberProduct", category, func, -1 );
    
end );

InstallMethod( AddProjectionInFactorOfFiberProduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ProjectionInFactorOfFiberProduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ProjectionInFactorOfFiberProductWithGivenFiberProduct
InstallMethod( AddProjectionInFactorOfFiberProductWithGivenFiberProduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ProjectionInFactorOfFiberProductWithGivenFiberProduct", category, func, -1 );
    
end );

InstallMethod( AddProjectionInFactorOfFiberProductWithGivenFiberProduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ProjectionInFactorOfFiberProductWithGivenFiberProduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( ProjectionInFactorOfFiberProductWithGivenFiberProduct,
                    "ProjectionInFactorOfFiberProductWithGivenFiberProduct by calling ProjectionInFactorOfFiberProduct with the WithGiven argument(s) dropped",
                    [
                        [ ProjectionInFactorOfFiberProduct, 1 ],
                    ],
  function( cat, morphisms, k, P )
    
    return ProjectionInFactorOfFiberProduct( cat, morphisms, k );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( ProjectionInFactorOfFiberProduct,
                    "ProjectionInFactorOfFiberProduct by calling ProjectionInFactorOfFiberProductWithGivenFiberProduct with the WithGiven object(s)",
                    [
                        [ ProjectionInFactorOfFiberProductWithGivenFiberProduct, 1 ],
                        [ FiberProduct, 1 ],
                    ],
  function( cat, morphisms, k )
    
    return ProjectionInFactorOfFiberProductWithGivenFiberProduct( cat, morphisms, k, FiberProduct( cat, morphisms ) );
    
end : is_with_given_derivation := true );

## ProjectionOntoCoequalizer
InstallMethod( AddProjectionOntoCoequalizer,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ProjectionOntoCoequalizer", category, func, -1 );
    
end );

InstallMethod( AddProjectionOntoCoequalizer,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ProjectionOntoCoequalizer", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ProjectionOntoCoequalizerWithGivenCoequalizer
InstallMethod( AddProjectionOntoCoequalizerWithGivenCoequalizer,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ProjectionOntoCoequalizerWithGivenCoequalizer", category, func, -1 );
    
end );

InstallMethod( AddProjectionOntoCoequalizerWithGivenCoequalizer,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ProjectionOntoCoequalizerWithGivenCoequalizer", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( ProjectionOntoCoequalizerWithGivenCoequalizer,
                    "ProjectionOntoCoequalizerWithGivenCoequalizer by calling ProjectionOntoCoequalizer with the WithGiven argument(s) dropped",
                    [
                        [ ProjectionOntoCoequalizer, 1 ],
                    ],
  function( cat, Y, morphisms, P )
    
    return ProjectionOntoCoequalizer( cat, Y, morphisms );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( ProjectionOntoCoequalizer,
                    "ProjectionOntoCoequalizer by calling ProjectionOntoCoequalizerWithGivenCoequalizer with the WithGiven object(s)",
                    [
                        [ ProjectionOntoCoequalizerWithGivenCoequalizer, 1 ],
                        [ Coequalizer, 1 ],
                    ],
  function( cat, Y, morphisms )
    
    return ProjectionOntoCoequalizerWithGivenCoequalizer( cat, Y, morphisms, Coequalizer( cat, Y, morphisms ) );
    
end : is_with_given_derivation := true );

## ProjectiveCoverObject
InstallMethod( AddProjectiveCoverObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ProjectiveCoverObject", category, func, -1 );
    
end );

InstallMethod( AddProjectiveCoverObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ProjectiveCoverObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ProjectiveDimension
InstallMethod( AddProjectiveDimension,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ProjectiveDimension", category, func, -1 );
    
end );

InstallMethod( AddProjectiveDimension,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ProjectiveDimension", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ProjectiveLift
InstallMethod( AddProjectiveLift,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ProjectiveLift", category, func, -1 );
    
end );

InstallMethod( AddProjectiveLift,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ProjectiveLift", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## Pushout
InstallMethod( AddPushout,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "Pushout", category, func, -1 );
    
end );

InstallMethod( AddPushout,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "Pushout", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## PushoutFunctorial
InstallMethod( AddPushoutFunctorial,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "PushoutFunctorial", category, func, -1 );
    
end );

InstallMethod( AddPushoutFunctorial,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "PushoutFunctorial", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## PushoutFunctorialWithGivenPushouts
InstallMethod( AddPushoutFunctorialWithGivenPushouts,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "PushoutFunctorialWithGivenPushouts", category, func, -1 );
    
end );

InstallMethod( AddPushoutFunctorialWithGivenPushouts,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "PushoutFunctorialWithGivenPushouts", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( PushoutFunctorialWithGivenPushouts,
                    "PushoutFunctorialWithGivenPushouts by calling PushoutFunctorial with the WithGiven argument(s) dropped",
                    [
                        [ PushoutFunctorial, 1 ],
                    ],
  function( cat, P, morphisms, L, morphismsp, Pp )
    
    return PushoutFunctorial( cat, morphisms, L, morphismsp );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( PushoutFunctorial,
                    "PushoutFunctorial by calling PushoutFunctorialWithGivenPushouts with the WithGiven object(s)",
                    [
                        [ PushoutFunctorialWithGivenPushouts, 1 ],
                        [ Pushout, 2 ],
                    ],
  function( cat, morphisms, L, morphismsp )
    
    return PushoutFunctorialWithGivenPushouts( cat, Pushout( cat, morphisms ), morphisms, L, morphismsp, Pushout( cat, morphismsp ) );
    
end : is_with_given_derivation := true );

## RandomMorphismByInteger
InstallMethod( AddRandomMorphismByInteger,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "RandomMorphismByInteger", category, func, -1 );
    
end );

InstallMethod( AddRandomMorphismByInteger,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "RandomMorphismByInteger", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## RandomMorphismByList
InstallMethod( AddRandomMorphismByList,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "RandomMorphismByList", category, func, -1 );
    
end );

InstallMethod( AddRandomMorphismByList,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "RandomMorphismByList", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## RandomMorphismWithFixedRangeByInteger
InstallMethod( AddRandomMorphismWithFixedRangeByInteger,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "RandomMorphismWithFixedRangeByInteger", category, func, -1 );
    
end );

InstallMethod( AddRandomMorphismWithFixedRangeByInteger,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "RandomMorphismWithFixedRangeByInteger", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## RandomMorphismWithFixedRangeByList
InstallMethod( AddRandomMorphismWithFixedRangeByList,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "RandomMorphismWithFixedRangeByList", category, func, -1 );
    
end );

InstallMethod( AddRandomMorphismWithFixedRangeByList,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "RandomMorphismWithFixedRangeByList", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## RandomMorphismWithFixedSourceAndRangeByInteger
InstallMethod( AddRandomMorphismWithFixedSourceAndRangeByInteger,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "RandomMorphismWithFixedSourceAndRangeByInteger", category, func, -1 );
    
end );

InstallMethod( AddRandomMorphismWithFixedSourceAndRangeByInteger,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "RandomMorphismWithFixedSourceAndRangeByInteger", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## RandomMorphismWithFixedSourceAndRangeByList
InstallMethod( AddRandomMorphismWithFixedSourceAndRangeByList,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "RandomMorphismWithFixedSourceAndRangeByList", category, func, -1 );
    
end );

InstallMethod( AddRandomMorphismWithFixedSourceAndRangeByList,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "RandomMorphismWithFixedSourceAndRangeByList", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## RandomMorphismWithFixedSourceByInteger
InstallMethod( AddRandomMorphismWithFixedSourceByInteger,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "RandomMorphismWithFixedSourceByInteger", category, func, -1 );
    
end );

InstallMethod( AddRandomMorphismWithFixedSourceByInteger,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "RandomMorphismWithFixedSourceByInteger", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## RandomMorphismWithFixedSourceByList
InstallMethod( AddRandomMorphismWithFixedSourceByList,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "RandomMorphismWithFixedSourceByList", category, func, -1 );
    
end );

InstallMethod( AddRandomMorphismWithFixedSourceByList,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "RandomMorphismWithFixedSourceByList", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## RandomObjectByInteger
InstallMethod( AddRandomObjectByInteger,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "RandomObjectByInteger", category, func, -1 );
    
end );

InstallMethod( AddRandomObjectByInteger,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "RandomObjectByInteger", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## RandomObjectByList
InstallMethod( AddRandomObjectByList,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "RandomObjectByList", category, func, -1 );
    
end );

InstallMethod( AddRandomObjectByList,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "RandomObjectByList", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SetOfMorphismsOfFiniteCategory
InstallMethod( AddSetOfMorphismsOfFiniteCategory,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SetOfMorphismsOfFiniteCategory", category, func, -1 );
    
end );

InstallMethod( AddSetOfMorphismsOfFiniteCategory,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SetOfMorphismsOfFiniteCategory", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SetOfObjectsOfCategory
InstallMethod( AddSetOfObjectsOfCategory,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SetOfObjectsOfCategory", category, func, -1 );
    
end );

InstallMethod( AddSetOfObjectsOfCategory,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SetOfObjectsOfCategory", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SimplifyEndo
InstallMethod( AddSimplifyEndo,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SimplifyEndo", category, func, -1 );
    
end );

InstallMethod( AddSimplifyEndo,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SimplifyEndo", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SimplifyEndo_IsoFromInputObject
InstallMethod( AddSimplifyEndo_IsoFromInputObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SimplifyEndo_IsoFromInputObject", category, func, -1 );
    
end );

InstallMethod( AddSimplifyEndo_IsoFromInputObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SimplifyEndo_IsoFromInputObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SimplifyEndo_IsoToInputObject
InstallMethod( AddSimplifyEndo_IsoToInputObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SimplifyEndo_IsoToInputObject", category, func, -1 );
    
end );

InstallMethod( AddSimplifyEndo_IsoToInputObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SimplifyEndo_IsoToInputObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SimplifyMorphism
InstallMethod( AddSimplifyMorphism,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SimplifyMorphism", category, func, -1 );
    
end );

InstallMethod( AddSimplifyMorphism,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SimplifyMorphism", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SimplifyObject
InstallMethod( AddSimplifyObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SimplifyObject", category, func, -1 );
    
end );

InstallMethod( AddSimplifyObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SimplifyObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SimplifyObject_IsoFromInputObject
InstallMethod( AddSimplifyObject_IsoFromInputObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SimplifyObject_IsoFromInputObject", category, func, -1 );
    
end );

InstallMethod( AddSimplifyObject_IsoFromInputObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SimplifyObject_IsoFromInputObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SimplifyObject_IsoToInputObject
InstallMethod( AddSimplifyObject_IsoToInputObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SimplifyObject_IsoToInputObject", category, func, -1 );
    
end );

InstallMethod( AddSimplifyObject_IsoToInputObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SimplifyObject_IsoToInputObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SimplifyRange
InstallMethod( AddSimplifyRange,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SimplifyRange", category, func, -1 );
    
end );

InstallMethod( AddSimplifyRange,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SimplifyRange", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SimplifyRange_IsoFromInputObject
InstallMethod( AddSimplifyRange_IsoFromInputObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SimplifyRange_IsoFromInputObject", category, func, -1 );
    
end );

InstallMethod( AddSimplifyRange_IsoFromInputObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SimplifyRange_IsoFromInputObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SimplifyRange_IsoToInputObject
InstallMethod( AddSimplifyRange_IsoToInputObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SimplifyRange_IsoToInputObject", category, func, -1 );
    
end );

InstallMethod( AddSimplifyRange_IsoToInputObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SimplifyRange_IsoToInputObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SimplifySource
InstallMethod( AddSimplifySource,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SimplifySource", category, func, -1 );
    
end );

InstallMethod( AddSimplifySource,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SimplifySource", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SimplifySourceAndRange
InstallMethod( AddSimplifySourceAndRange,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SimplifySourceAndRange", category, func, -1 );
    
end );

InstallMethod( AddSimplifySourceAndRange,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SimplifySourceAndRange", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SimplifySourceAndRange_IsoFromInputRange
InstallMethod( AddSimplifySourceAndRange_IsoFromInputRange,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SimplifySourceAndRange_IsoFromInputRange", category, func, -1 );
    
end );

InstallMethod( AddSimplifySourceAndRange_IsoFromInputRange,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SimplifySourceAndRange_IsoFromInputRange", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SimplifySourceAndRange_IsoFromInputSource
InstallMethod( AddSimplifySourceAndRange_IsoFromInputSource,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SimplifySourceAndRange_IsoFromInputSource", category, func, -1 );
    
end );

InstallMethod( AddSimplifySourceAndRange_IsoFromInputSource,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SimplifySourceAndRange_IsoFromInputSource", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SimplifySourceAndRange_IsoToInputRange
InstallMethod( AddSimplifySourceAndRange_IsoToInputRange,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SimplifySourceAndRange_IsoToInputRange", category, func, -1 );
    
end );

InstallMethod( AddSimplifySourceAndRange_IsoToInputRange,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SimplifySourceAndRange_IsoToInputRange", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SimplifySourceAndRange_IsoToInputSource
InstallMethod( AddSimplifySourceAndRange_IsoToInputSource,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SimplifySourceAndRange_IsoToInputSource", category, func, -1 );
    
end );

InstallMethod( AddSimplifySourceAndRange_IsoToInputSource,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SimplifySourceAndRange_IsoToInputSource", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SimplifySource_IsoFromInputObject
InstallMethod( AddSimplifySource_IsoFromInputObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SimplifySource_IsoFromInputObject", category, func, -1 );
    
end );

InstallMethod( AddSimplifySource_IsoFromInputObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SimplifySource_IsoFromInputObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SimplifySource_IsoToInputObject
InstallMethod( AddSimplifySource_IsoToInputObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SimplifySource_IsoToInputObject", category, func, -1 );
    
end );

InstallMethod( AddSimplifySource_IsoToInputObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SimplifySource_IsoToInputObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SolveLinearSystemInAbCategory
InstallMethod( AddSolveLinearSystemInAbCategory,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SolveLinearSystemInAbCategory", category, func, -1 );
    
end );

InstallMethod( AddSolveLinearSystemInAbCategory,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SolveLinearSystemInAbCategory", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SomeInjectiveObject
InstallMethod( AddSomeInjectiveObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SomeInjectiveObject", category, func, -1 );
    
end );

InstallMethod( AddSomeInjectiveObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SomeInjectiveObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SomeIsomorphismBetweenObjects
InstallMethod( AddSomeIsomorphismBetweenObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SomeIsomorphismBetweenObjects", category, func, -1 );
    
end );

InstallMethod( AddSomeIsomorphismBetweenObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SomeIsomorphismBetweenObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SomeProjectiveObject
InstallMethod( AddSomeProjectiveObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SomeProjectiveObject", category, func, -1 );
    
end );

InstallMethod( AddSomeProjectiveObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SomeProjectiveObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SomeReductionBySplitEpiSummand
InstallMethod( AddSomeReductionBySplitEpiSummand,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SomeReductionBySplitEpiSummand", category, func, -1 );
    
end );

InstallMethod( AddSomeReductionBySplitEpiSummand,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SomeReductionBySplitEpiSummand", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SomeReductionBySplitEpiSummand_MorphismFromInputRange
InstallMethod( AddSomeReductionBySplitEpiSummand_MorphismFromInputRange,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SomeReductionBySplitEpiSummand_MorphismFromInputRange", category, func, -1 );
    
end );

InstallMethod( AddSomeReductionBySplitEpiSummand_MorphismFromInputRange,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SomeReductionBySplitEpiSummand_MorphismFromInputRange", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SomeReductionBySplitEpiSummand_MorphismToInputRange
InstallMethod( AddSomeReductionBySplitEpiSummand_MorphismToInputRange,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SomeReductionBySplitEpiSummand_MorphismToInputRange", category, func, -1 );
    
end );

InstallMethod( AddSomeReductionBySplitEpiSummand_MorphismToInputRange,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SomeReductionBySplitEpiSummand_MorphismToInputRange", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SubtractionForMorphisms
InstallMethod( AddSubtractionForMorphisms,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SubtractionForMorphisms", category, func, -1 );
    
end );

InstallMethod( AddSubtractionForMorphisms,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SubtractionForMorphisms", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## SumOfMorphisms
InstallMethod( AddSumOfMorphisms,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "SumOfMorphisms", category, func, -1 );
    
end );

InstallMethod( AddSumOfMorphisms,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "SumOfMorphisms", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## TerminalObject
InstallMethod( AddTerminalObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "TerminalObject", category, func, -1 );
    
end );

InstallMethod( AddTerminalObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "TerminalObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## TerminalObjectFunctorial
InstallMethod( AddTerminalObjectFunctorial,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "TerminalObjectFunctorial", category, func, -1 );
    
end );

InstallMethod( AddTerminalObjectFunctorial,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "TerminalObjectFunctorial", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## TerminalObjectFunctorialWithGivenTerminalObjects
InstallMethod( AddTerminalObjectFunctorialWithGivenTerminalObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "TerminalObjectFunctorialWithGivenTerminalObjects", category, func, -1 );
    
end );

InstallMethod( AddTerminalObjectFunctorialWithGivenTerminalObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "TerminalObjectFunctorialWithGivenTerminalObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( TerminalObjectFunctorialWithGivenTerminalObjects,
                    "TerminalObjectFunctorialWithGivenTerminalObjects by calling TerminalObjectFunctorial with the WithGiven argument(s) dropped",
                    [
                        [ TerminalObjectFunctorial, 1 ],
                    ],
  function( cat, P, Pp )
    
    return TerminalObjectFunctorial( cat );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( TerminalObjectFunctorial,
                    "TerminalObjectFunctorial by calling TerminalObjectFunctorialWithGivenTerminalObjects with the WithGiven object(s)",
                    [
                        [ TerminalObjectFunctorialWithGivenTerminalObjects, 1 ],
                        [ TerminalObject, 2 ],
                    ],
  function( cat )
    
    return TerminalObjectFunctorialWithGivenTerminalObjects( cat, TerminalObject( cat ), TerminalObject( cat ) );
    
end : is_with_given_derivation := true );

## UniversalMorphismFromCoequalizer
InstallMethod( AddUniversalMorphismFromCoequalizer,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismFromCoequalizer", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismFromCoequalizer,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismFromCoequalizer", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## UniversalMorphismFromCoequalizerWithGivenCoequalizer
InstallMethod( AddUniversalMorphismFromCoequalizerWithGivenCoequalizer,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismFromCoequalizerWithGivenCoequalizer", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismFromCoequalizerWithGivenCoequalizer,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismFromCoequalizerWithGivenCoequalizer", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( UniversalMorphismFromCoequalizerWithGivenCoequalizer,
                    "UniversalMorphismFromCoequalizerWithGivenCoequalizer by calling UniversalMorphismFromCoequalizer with the WithGiven argument(s) dropped",
                    [
                        [ UniversalMorphismFromCoequalizer, 1 ],
                    ],
  function( cat, Y, morphisms, T, tau, P )
    
    return UniversalMorphismFromCoequalizer( cat, Y, morphisms, T, tau );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( UniversalMorphismFromCoequalizer,
                    "UniversalMorphismFromCoequalizer by calling UniversalMorphismFromCoequalizerWithGivenCoequalizer with the WithGiven object(s)",
                    [
                        [ UniversalMorphismFromCoequalizerWithGivenCoequalizer, 1 ],
                        [ Coequalizer, 1 ],
                    ],
  function( cat, Y, morphisms, T, tau )
    
    return UniversalMorphismFromCoequalizerWithGivenCoequalizer( cat, Y, morphisms, T, tau, Coequalizer( cat, Y, morphisms ) );
    
end : is_with_given_derivation := true );

## UniversalMorphismFromCoproduct
InstallMethod( AddUniversalMorphismFromCoproduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismFromCoproduct", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismFromCoproduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismFromCoproduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## UniversalMorphismFromCoproductWithGivenCoproduct
InstallMethod( AddUniversalMorphismFromCoproductWithGivenCoproduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismFromCoproductWithGivenCoproduct", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismFromCoproductWithGivenCoproduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismFromCoproductWithGivenCoproduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( UniversalMorphismFromCoproductWithGivenCoproduct,
                    "UniversalMorphismFromCoproductWithGivenCoproduct by calling UniversalMorphismFromCoproduct with the WithGiven argument(s) dropped",
                    [
                        [ UniversalMorphismFromCoproduct, 1 ],
                    ],
  function( cat, objects, T, tau, P )
    
    return UniversalMorphismFromCoproduct( cat, objects, T, tau );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( UniversalMorphismFromCoproduct,
                    "UniversalMorphismFromCoproduct by calling UniversalMorphismFromCoproductWithGivenCoproduct with the WithGiven object(s)",
                    [
                        [ UniversalMorphismFromCoproductWithGivenCoproduct, 1 ],
                        [ Coproduct, 1 ],
                    ],
  function( cat, objects, T, tau )
    
    return UniversalMorphismFromCoproductWithGivenCoproduct( cat, objects, T, tau, Coproduct( cat, objects ) );
    
end : is_with_given_derivation := true );

## UniversalMorphismFromDirectSum
InstallMethod( AddUniversalMorphismFromDirectSum,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismFromDirectSum", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismFromDirectSum,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismFromDirectSum", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## UniversalMorphismFromDirectSumWithGivenDirectSum
InstallMethod( AddUniversalMorphismFromDirectSumWithGivenDirectSum,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismFromDirectSumWithGivenDirectSum", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismFromDirectSumWithGivenDirectSum,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismFromDirectSumWithGivenDirectSum", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( UniversalMorphismFromDirectSumWithGivenDirectSum,
                    "UniversalMorphismFromDirectSumWithGivenDirectSum by calling UniversalMorphismFromDirectSum with the WithGiven argument(s) dropped",
                    [
                        [ UniversalMorphismFromDirectSum, 1 ],
                    ],
  function( cat, objects, T, tau, P )
    
    return UniversalMorphismFromDirectSum( cat, objects, T, tau );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( UniversalMorphismFromDirectSum,
                    "UniversalMorphismFromDirectSum by calling UniversalMorphismFromDirectSumWithGivenDirectSum with the WithGiven object(s)",
                    [
                        [ UniversalMorphismFromDirectSumWithGivenDirectSum, 1 ],
                        [ DirectSum, 1 ],
                    ],
  function( cat, objects, T, tau )
    
    return UniversalMorphismFromDirectSumWithGivenDirectSum( cat, objects, T, tau, DirectSum( cat, objects ) );
    
end : is_with_given_derivation := true );

## UniversalMorphismFromImage
InstallMethod( AddUniversalMorphismFromImage,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismFromImage", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismFromImage,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismFromImage", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## UniversalMorphismFromImageWithGivenImageObject
InstallMethod( AddUniversalMorphismFromImageWithGivenImageObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismFromImageWithGivenImageObject", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismFromImageWithGivenImageObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismFromImageWithGivenImageObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( UniversalMorphismFromImageWithGivenImageObject,
                    "UniversalMorphismFromImageWithGivenImageObject by calling UniversalMorphismFromImage with the WithGiven argument(s) dropped",
                    [
                        [ UniversalMorphismFromImage, 1 ],
                    ],
  function( cat, alpha, tau, I )
    
    return UniversalMorphismFromImage( cat, alpha, tau );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( UniversalMorphismFromImage,
                    "UniversalMorphismFromImage by calling UniversalMorphismFromImageWithGivenImageObject with the WithGiven object(s)",
                    [
                        [ UniversalMorphismFromImageWithGivenImageObject, 1 ],
                        [ ImageObject, 1 ],
                    ],
  function( cat, alpha, tau )
    
    return UniversalMorphismFromImageWithGivenImageObject( cat, alpha, tau, ImageObject( cat, alpha ) );
    
end : is_with_given_derivation := true );

## UniversalMorphismFromInitialObject
InstallMethod( AddUniversalMorphismFromInitialObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismFromInitialObject", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismFromInitialObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismFromInitialObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## UniversalMorphismFromInitialObjectWithGivenInitialObject
InstallMethod( AddUniversalMorphismFromInitialObjectWithGivenInitialObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismFromInitialObjectWithGivenInitialObject", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismFromInitialObjectWithGivenInitialObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismFromInitialObjectWithGivenInitialObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( UniversalMorphismFromInitialObjectWithGivenInitialObject,
                    "UniversalMorphismFromInitialObjectWithGivenInitialObject by calling UniversalMorphismFromInitialObject with the WithGiven argument(s) dropped",
                    [
                        [ UniversalMorphismFromInitialObject, 1 ],
                    ],
  function( cat, T, P )
    
    return UniversalMorphismFromInitialObject( cat, T );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( UniversalMorphismFromInitialObject,
                    "UniversalMorphismFromInitialObject by calling UniversalMorphismFromInitialObjectWithGivenInitialObject with the WithGiven object(s)",
                    [
                        [ UniversalMorphismFromInitialObjectWithGivenInitialObject, 1 ],
                        [ InitialObject, 1 ],
                    ],
  function( cat, T )
    
    return UniversalMorphismFromInitialObjectWithGivenInitialObject( cat, T, InitialObject( cat ) );
    
end : is_with_given_derivation := true );

## UniversalMorphismFromPushout
InstallMethod( AddUniversalMorphismFromPushout,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismFromPushout", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismFromPushout,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismFromPushout", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## UniversalMorphismFromPushoutWithGivenPushout
InstallMethod( AddUniversalMorphismFromPushoutWithGivenPushout,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismFromPushoutWithGivenPushout", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismFromPushoutWithGivenPushout,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismFromPushoutWithGivenPushout", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( UniversalMorphismFromPushoutWithGivenPushout,
                    "UniversalMorphismFromPushoutWithGivenPushout by calling UniversalMorphismFromPushout with the WithGiven argument(s) dropped",
                    [
                        [ UniversalMorphismFromPushout, 1 ],
                    ],
  function( cat, morphisms, T, tau, P )
    
    return UniversalMorphismFromPushout( cat, morphisms, T, tau );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( UniversalMorphismFromPushout,
                    "UniversalMorphismFromPushout by calling UniversalMorphismFromPushoutWithGivenPushout with the WithGiven object(s)",
                    [
                        [ UniversalMorphismFromPushoutWithGivenPushout, 1 ],
                        [ Pushout, 1 ],
                    ],
  function( cat, morphisms, T, tau )
    
    return UniversalMorphismFromPushoutWithGivenPushout( cat, morphisms, T, tau, Pushout( cat, morphisms ) );
    
end : is_with_given_derivation := true );

## UniversalMorphismFromZeroObject
InstallMethod( AddUniversalMorphismFromZeroObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismFromZeroObject", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismFromZeroObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismFromZeroObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## UniversalMorphismFromZeroObjectWithGivenZeroObject
InstallMethod( AddUniversalMorphismFromZeroObjectWithGivenZeroObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismFromZeroObjectWithGivenZeroObject", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismFromZeroObjectWithGivenZeroObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismFromZeroObjectWithGivenZeroObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( UniversalMorphismFromZeroObjectWithGivenZeroObject,
                    "UniversalMorphismFromZeroObjectWithGivenZeroObject by calling UniversalMorphismFromZeroObject with the WithGiven argument(s) dropped",
                    [
                        [ UniversalMorphismFromZeroObject, 1 ],
                    ],
  function( cat, T, P )
    
    return UniversalMorphismFromZeroObject( cat, T );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( UniversalMorphismFromZeroObject,
                    "UniversalMorphismFromZeroObject by calling UniversalMorphismFromZeroObjectWithGivenZeroObject with the WithGiven object(s)",
                    [
                        [ UniversalMorphismFromZeroObjectWithGivenZeroObject, 1 ],
                        [ ZeroObject, 1 ],
                    ],
  function( cat, T )
    
    return UniversalMorphismFromZeroObjectWithGivenZeroObject( cat, T, ZeroObject( cat ) );
    
end : is_with_given_derivation := true );

## UniversalMorphismIntoCoimage
InstallMethod( AddUniversalMorphismIntoCoimage,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismIntoCoimage", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismIntoCoimage,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismIntoCoimage", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## UniversalMorphismIntoCoimageWithGivenCoimageObject
InstallMethod( AddUniversalMorphismIntoCoimageWithGivenCoimageObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismIntoCoimageWithGivenCoimageObject", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismIntoCoimageWithGivenCoimageObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismIntoCoimageWithGivenCoimageObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( UniversalMorphismIntoCoimageWithGivenCoimageObject,
                    "UniversalMorphismIntoCoimageWithGivenCoimageObject by calling UniversalMorphismIntoCoimage with the WithGiven argument(s) dropped",
                    [
                        [ UniversalMorphismIntoCoimage, 1 ],
                    ],
  function( cat, alpha, tau, C )
    
    return UniversalMorphismIntoCoimage( cat, alpha, tau );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( UniversalMorphismIntoCoimage,
                    "UniversalMorphismIntoCoimage by calling UniversalMorphismIntoCoimageWithGivenCoimageObject with the WithGiven object(s)",
                    [
                        [ UniversalMorphismIntoCoimageWithGivenCoimageObject, 1 ],
                        [ CoimageObject, 1 ],
                    ],
  function( cat, alpha, tau )
    
    return UniversalMorphismIntoCoimageWithGivenCoimageObject( cat, alpha, tau, CoimageObject( cat, alpha ) );
    
end : is_with_given_derivation := true );

## UniversalMorphismIntoDirectProduct
InstallMethod( AddUniversalMorphismIntoDirectProduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismIntoDirectProduct", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismIntoDirectProduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismIntoDirectProduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## UniversalMorphismIntoDirectProductWithGivenDirectProduct
InstallMethod( AddUniversalMorphismIntoDirectProductWithGivenDirectProduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismIntoDirectProductWithGivenDirectProduct", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismIntoDirectProductWithGivenDirectProduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismIntoDirectProductWithGivenDirectProduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( UniversalMorphismIntoDirectProductWithGivenDirectProduct,
                    "UniversalMorphismIntoDirectProductWithGivenDirectProduct by calling UniversalMorphismIntoDirectProduct with the WithGiven argument(s) dropped",
                    [
                        [ UniversalMorphismIntoDirectProduct, 1 ],
                    ],
  function( cat, objects, T, tau, P )
    
    return UniversalMorphismIntoDirectProduct( cat, objects, T, tau );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( UniversalMorphismIntoDirectProduct,
                    "UniversalMorphismIntoDirectProduct by calling UniversalMorphismIntoDirectProductWithGivenDirectProduct with the WithGiven object(s)",
                    [
                        [ UniversalMorphismIntoDirectProductWithGivenDirectProduct, 1 ],
                        [ DirectProduct, 1 ],
                    ],
  function( cat, objects, T, tau )
    
    return UniversalMorphismIntoDirectProductWithGivenDirectProduct( cat, objects, T, tau, DirectProduct( cat, objects ) );
    
end : is_with_given_derivation := true );

## UniversalMorphismIntoDirectSum
InstallMethod( AddUniversalMorphismIntoDirectSum,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismIntoDirectSum", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismIntoDirectSum,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismIntoDirectSum", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## UniversalMorphismIntoDirectSumWithGivenDirectSum
InstallMethod( AddUniversalMorphismIntoDirectSumWithGivenDirectSum,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismIntoDirectSumWithGivenDirectSum", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismIntoDirectSumWithGivenDirectSum,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismIntoDirectSumWithGivenDirectSum", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( UniversalMorphismIntoDirectSumWithGivenDirectSum,
                    "UniversalMorphismIntoDirectSumWithGivenDirectSum by calling UniversalMorphismIntoDirectSum with the WithGiven argument(s) dropped",
                    [
                        [ UniversalMorphismIntoDirectSum, 1 ],
                    ],
  function( cat, objects, T, tau, P )
    
    return UniversalMorphismIntoDirectSum( cat, objects, T, tau );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( UniversalMorphismIntoDirectSum,
                    "UniversalMorphismIntoDirectSum by calling UniversalMorphismIntoDirectSumWithGivenDirectSum with the WithGiven object(s)",
                    [
                        [ UniversalMorphismIntoDirectSumWithGivenDirectSum, 1 ],
                        [ DirectSum, 1 ],
                    ],
  function( cat, objects, T, tau )
    
    return UniversalMorphismIntoDirectSumWithGivenDirectSum( cat, objects, T, tau, DirectSum( cat, objects ) );
    
end : is_with_given_derivation := true );

## UniversalMorphismIntoEqualizer
InstallMethod( AddUniversalMorphismIntoEqualizer,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismIntoEqualizer", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismIntoEqualizer,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismIntoEqualizer", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## UniversalMorphismIntoEqualizerWithGivenEqualizer
InstallMethod( AddUniversalMorphismIntoEqualizerWithGivenEqualizer,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismIntoEqualizerWithGivenEqualizer", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismIntoEqualizerWithGivenEqualizer,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismIntoEqualizerWithGivenEqualizer", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( UniversalMorphismIntoEqualizerWithGivenEqualizer,
                    "UniversalMorphismIntoEqualizerWithGivenEqualizer by calling UniversalMorphismIntoEqualizer with the WithGiven argument(s) dropped",
                    [
                        [ UniversalMorphismIntoEqualizer, 1 ],
                    ],
  function( cat, Y, morphisms, T, tau, P )
    
    return UniversalMorphismIntoEqualizer( cat, Y, morphisms, T, tau );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( UniversalMorphismIntoEqualizer,
                    "UniversalMorphismIntoEqualizer by calling UniversalMorphismIntoEqualizerWithGivenEqualizer with the WithGiven object(s)",
                    [
                        [ UniversalMorphismIntoEqualizerWithGivenEqualizer, 1 ],
                        [ Equalizer, 1 ],
                    ],
  function( cat, Y, morphisms, T, tau )
    
    return UniversalMorphismIntoEqualizerWithGivenEqualizer( cat, Y, morphisms, T, tau, Equalizer( cat, Y, morphisms ) );
    
end : is_with_given_derivation := true );

## UniversalMorphismIntoFiberProduct
InstallMethod( AddUniversalMorphismIntoFiberProduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismIntoFiberProduct", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismIntoFiberProduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismIntoFiberProduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## UniversalMorphismIntoFiberProductWithGivenFiberProduct
InstallMethod( AddUniversalMorphismIntoFiberProductWithGivenFiberProduct,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismIntoFiberProductWithGivenFiberProduct", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismIntoFiberProductWithGivenFiberProduct,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismIntoFiberProductWithGivenFiberProduct", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( UniversalMorphismIntoFiberProductWithGivenFiberProduct,
                    "UniversalMorphismIntoFiberProductWithGivenFiberProduct by calling UniversalMorphismIntoFiberProduct with the WithGiven argument(s) dropped",
                    [
                        [ UniversalMorphismIntoFiberProduct, 1 ],
                    ],
  function( cat, morphisms, T, tau, P )
    
    return UniversalMorphismIntoFiberProduct( cat, morphisms, T, tau );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( UniversalMorphismIntoFiberProduct,
                    "UniversalMorphismIntoFiberProduct by calling UniversalMorphismIntoFiberProductWithGivenFiberProduct with the WithGiven object(s)",
                    [
                        [ UniversalMorphismIntoFiberProductWithGivenFiberProduct, 1 ],
                        [ FiberProduct, 1 ],
                    ],
  function( cat, morphisms, T, tau )
    
    return UniversalMorphismIntoFiberProductWithGivenFiberProduct( cat, morphisms, T, tau, FiberProduct( cat, morphisms ) );
    
end : is_with_given_derivation := true );

## UniversalMorphismIntoTerminalObject
InstallMethod( AddUniversalMorphismIntoTerminalObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismIntoTerminalObject", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismIntoTerminalObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismIntoTerminalObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## UniversalMorphismIntoTerminalObjectWithGivenTerminalObject
InstallMethod( AddUniversalMorphismIntoTerminalObjectWithGivenTerminalObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismIntoTerminalObjectWithGivenTerminalObject", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismIntoTerminalObjectWithGivenTerminalObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismIntoTerminalObjectWithGivenTerminalObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( UniversalMorphismIntoTerminalObjectWithGivenTerminalObject,
                    "UniversalMorphismIntoTerminalObjectWithGivenTerminalObject by calling UniversalMorphismIntoTerminalObject with the WithGiven argument(s) dropped",
                    [
                        [ UniversalMorphismIntoTerminalObject, 1 ],
                    ],
  function( cat, T, P )
    
    return UniversalMorphismIntoTerminalObject( cat, T );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( UniversalMorphismIntoTerminalObject,
                    "UniversalMorphismIntoTerminalObject by calling UniversalMorphismIntoTerminalObjectWithGivenTerminalObject with the WithGiven object(s)",
                    [
                        [ UniversalMorphismIntoTerminalObjectWithGivenTerminalObject, 1 ],
                        [ TerminalObject, 1 ],
                    ],
  function( cat, T )
    
    return UniversalMorphismIntoTerminalObjectWithGivenTerminalObject( cat, T, TerminalObject( cat ) );
    
end : is_with_given_derivation := true );

## UniversalMorphismIntoZeroObject
InstallMethod( AddUniversalMorphismIntoZeroObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismIntoZeroObject", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismIntoZeroObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismIntoZeroObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## UniversalMorphismIntoZeroObjectWithGivenZeroObject
InstallMethod( AddUniversalMorphismIntoZeroObjectWithGivenZeroObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "UniversalMorphismIntoZeroObjectWithGivenZeroObject", category, func, -1 );
    
end );

InstallMethod( AddUniversalMorphismIntoZeroObjectWithGivenZeroObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "UniversalMorphismIntoZeroObjectWithGivenZeroObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( UniversalMorphismIntoZeroObjectWithGivenZeroObject,
                    "UniversalMorphismIntoZeroObjectWithGivenZeroObject by calling UniversalMorphismIntoZeroObject with the WithGiven argument(s) dropped",
                    [
                        [ UniversalMorphismIntoZeroObject, 1 ],
                    ],
  function( cat, T, P )
    
    return UniversalMorphismIntoZeroObject( cat, T );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( UniversalMorphismIntoZeroObject,
                    "UniversalMorphismIntoZeroObject by calling UniversalMorphismIntoZeroObjectWithGivenZeroObject with the WithGiven object(s)",
                    [
                        [ UniversalMorphismIntoZeroObjectWithGivenZeroObject, 1 ],
                        [ ZeroObject, 1 ],
                    ],
  function( cat, T )
    
    return UniversalMorphismIntoZeroObjectWithGivenZeroObject( cat, T, ZeroObject( cat ) );
    
end : is_with_given_derivation := true );

## VerticalPostCompose
InstallMethod( AddVerticalPostCompose,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "VerticalPostCompose", category, func, -1 );
    
end );

InstallMethod( AddVerticalPostCompose,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "VerticalPostCompose", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## VerticalPreCompose
InstallMethod( AddVerticalPreCompose,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "VerticalPreCompose", category, func, -1 );
    
end );

InstallMethod( AddVerticalPreCompose,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "VerticalPreCompose", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ZeroMorphism
InstallMethod( AddZeroMorphism,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ZeroMorphism", category, func, -1 );
    
end );

InstallMethod( AddZeroMorphism,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ZeroMorphism", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ZeroObject
InstallMethod( AddZeroObject,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ZeroObject", category, func, -1 );
    
end );

InstallMethod( AddZeroObject,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ZeroObject", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ZeroObjectFunctorial
InstallMethod( AddZeroObjectFunctorial,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ZeroObjectFunctorial", category, func, -1 );
    
end );

InstallMethod( AddZeroObjectFunctorial,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ZeroObjectFunctorial", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

## ZeroObjectFunctorialWithGivenZeroObjects
InstallMethod( AddZeroObjectFunctorialWithGivenZeroObjects,
               [ IsCapCategory, IsFunction ],
               
  function( category, func )
    
    AddCapOperation( "ZeroObjectFunctorialWithGivenZeroObjects", category, func, -1 );
    
end );

InstallMethod( AddZeroObjectFunctorialWithGivenZeroObjects,
               [ IsCapCategory, IsFunction, IsInt ],
               
    FunctionWithNamedArguments(
        [
            [ "IsPrecompiledDerivation", false ],
        ],
        function( CAP_NAMED_ARGUMENTS, category, func, weight )
            
            AddCapOperation( "ZeroObjectFunctorialWithGivenZeroObjects", category, func, weight : IsPrecompiledDerivation := CAP_NAMED_ARGUMENTS.IsPrecompiledDerivation );
            
        end
    )
);

AddDerivationToCAP( ZeroObjectFunctorialWithGivenZeroObjects,
                    "ZeroObjectFunctorialWithGivenZeroObjects by calling ZeroObjectFunctorial with the WithGiven argument(s) dropped",
                    [
                        [ ZeroObjectFunctorial, 1 ],
                    ],
  function( cat, P, Pp )
    
    return ZeroObjectFunctorial( cat );
        
end : is_with_given_derivation := true );

AddDerivationToCAP( ZeroObjectFunctorial,
                    "ZeroObjectFunctorial by calling ZeroObjectFunctorialWithGivenZeroObjects with the WithGiven object(s)",
                    [
                        [ ZeroObjectFunctorialWithGivenZeroObjects, 1 ],
                        [ ZeroObject, 2 ],
                    ],
  function( cat )
    
    return ZeroObjectFunctorialWithGivenZeroObjects( cat, ZeroObject( cat ), ZeroObject( cat ) );
    
end : is_with_given_derivation := true );

[0.227QuellennavigatorsProjekt 2026-04-26]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge