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


SSL DerivedMethods.autogen.gi   Interaktion und
Portierbarkeitunbekannt

 
# SPDX-License-Identifier: GPL-2.0-or-later
# CAP: Categories, Algorithms, Programming
#
# Implementations
#
# THIS FILE IS AUTOMATICALLY GENERATED, SEE CompilerForCAP/tst/generate_opposite_derivations.tst

##
AddDerivationToCAP( AdditionForMorphisms,
                    "dualizing the derivation of AdditionForMorphisms by AdditionForMorphisms(mor1, mor2) as the composition of (mor1,mor2) with the codiagonal morphism",
                    [
                        [ UniversalMorphismFromDirectSum, 1 ],
                        [ IdentityMorphism, 1 ],
                        [ UniversalMorphismIntoDirectSum, 1 ],
                        [ PostCompose, 1 ],
                    ],
                    
  function ( cat_1, alpha_1, beta_1 )
    local deduped_1_1, deduped_2_1, deduped_3_1;
    deduped_3_1 := Source( alpha_1 );
    deduped_2_1 := [ deduped_3_1, deduped_3_1 ];
    deduped_1_1 := IdentityMorphism( cat_1, deduped_3_1 );
    return PostCompose( cat_1, UniversalMorphismFromDirectSum( cat_1, deduped_2_1, Range( alpha_1 ), [ alpha_1, beta_1 ] ), UniversalMorphismIntoDirectSum( cat_1, deduped_2_1, deduped_3_1, [ deduped_1_1, deduped_1_1 ] ) );
end : CategoryFilter := IsAdditiveCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( AstrictionToCoimage,
                    "dualizing the derivation of CoastrictionToImage by CoastrictionToImage using that image embedding can be seen as a kernel",
                    [
                        [ CoimageProjection, 1 ],
                        [ ColiftAlongEpimorphism, 1 ],
                    ],
                    
  function ( cat_1, alpha_1 )
    return ColiftAlongEpimorphism( cat_1, CoimageProjection( cat_1, alpha_1 ), alpha_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( AstrictionToCoimageWithGivenCoimageObject,
                    "dualizing the derivation of CoastrictionToImageWithGivenImageObject by CoastrictionToImage using that image embedding can be seen as a kernel",
                    [
                        [ CoimageProjectionWithGivenCoimageObject, 1 ],
                        [ ColiftAlongEpimorphism, 1 ],
                    ],
                    
  function ( cat_1, alpha_1, C_1 )
    return ColiftAlongEpimorphism( cat_1, CoimageProjectionWithGivenCoimageObject( cat_1, alpha_1, C_1 ), alpha_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( Coequalizer,
                    "dualizing the derivation of Equalizer by Equalizer as the source of EmbeddingOfEqualizer",
                    [
                        [ ProjectionOntoCoequalizer, 1 ],
                    ],
                    
  function ( cat_1, Y_1, morphisms_1 )
    return Range( ProjectionOntoCoequalizer( cat_1, Y_1, morphisms_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( CoequalizerFunctorialWithGivenCoequalizers,
                    "dualizing the derivation of EqualizerFunctorialWithGivenEqualizers by EqualizerFunctorialWithGivenEqualizers using the universality of the limit",
                    [
                        [ UniversalMorphismFromCoequalizerWithGivenCoequalizer, 1 ],
                        [ PostCompose, 1 ],
                        [ ProjectionOntoCoequalizerWithGivenCoequalizer, 1 ],
                    ],
                    
  function ( cat_1, P_1, morphisms_1, mu_1, morphismsp_1, Pp_1 )
    return UniversalMorphismFromCoequalizerWithGivenCoequalizer( cat_1, Source( mu_1 ), morphisms_1, Pp_1, PostCompose( cat_1, ProjectionOntoCoequalizerWithGivenCoequalizer( cat_1, Range( mu_1 ), morphismsp_1, Pp_1 ), mu_1 ), P_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( CoimageObject,
                    "dualizing the derivation of ImageObject by ImageObject as the source of ImageEmbedding",
                    [
                        [ CoimageProjection, 1 ],
                    ],
                    
  function ( cat_1, arg2_1 )
    return Range( CoimageProjection( cat_1, arg2_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( CoimageObject,
                    "dualizing the derivation of ImageObject by ImageObject as the source of IsomorphismFromImageObjectToKernelOfCokernel",
                    [
                        [ IsomorphismFromCokernelOfKernelToCoimage, 1 ],
                    ],
                    
  function ( cat_1, arg2_1 )
    return Range( IsomorphismFromCokernelOfKernelToCoimage( cat_1, arg2_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( CoimageObject,
                    "dualizing the derivation of ImageObject by ImageObject as the range of IsomorphismFromKernelOfCokernelToImageObject",
                    [
                        [ IsomorphismFromCoimageToCokernelOfKernel, 1 ],
                    ],
                    
  function ( cat_1, arg2_1 )
    return Source( IsomorphismFromCoimageToCokernelOfKernel( cat_1, arg2_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( CoimageObjectFunctorialWithGivenCoimageObjects,
                    "dualizing the derivation of ImageObjectFunctorialWithGivenImageObjects by ImageObjectFunctorialWithGivenImageObjects using the universality",
                    [
                        [ ColiftAlongEpimorphism, 1 ],
                        [ CoimageProjectionWithGivenCoimageObject, 2 ],
                        [ PostCompose, 1 ],
                    ],
                    
  function ( cat_1, C_1, alpha_1, mu_1, alphap_1, Cp_1 )
    return ColiftAlongEpimorphism( cat_1, CoimageProjectionWithGivenCoimageObject( cat_1, alpha_1, C_1 ), PostCompose( cat_1, CoimageProjectionWithGivenCoimageObject( cat_1, alphap_1, Cp_1 ), mu_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( CoimageProjection,
                    "dualizing the derivation of ImageEmbedding by ImageEmbedding as the kernel embedding of the cokernel projection",
                    [
                        [ KernelEmbedding, 1 ],
                        [ CokernelProjection, 1 ],
                        [ IsomorphismFromCokernelOfKernelToCoimage, 1 ],
                        [ PostCompose, 1 ],
                    ],
                    
  function ( cat_1, alpha_1 )
    return PostCompose( cat_1, IsomorphismFromCokernelOfKernelToCoimage( cat_1, alpha_1 ), CokernelProjection( cat_1, KernelEmbedding( cat_1, alpha_1 ) ) );
end : CategoryFilter := IsPreAbelianCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( CokernelColift,
                    "dualizing the derivation of KernelLift by KernelLift using LiftAlongMonomorphism and KernelEmbedding",
                    [
                        [ ColiftAlongEpimorphism, 1 ],
                        [ CokernelProjection, 1 ],
                    ],
                    
  function ( cat_1, alpha_1, T_1, tau_1 )
    return ColiftAlongEpimorphism( cat_1, CokernelProjection( cat_1, alpha_1 ), tau_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( CokernelColiftWithGivenCokernelObject,
                    "dualizing the derivation of KernelLiftWithGivenKernelObject by KernelLift using LiftAlongMonomorphism and KernelEmbedding",
                    [
                        [ ColiftAlongEpimorphism, 1 ],
                        [ CokernelProjectionWithGivenCokernelObject, 1 ],
                    ],
                    
  function ( cat_1, alpha_1, T_1, tau_1, P_1 )
    return ColiftAlongEpimorphism( cat_1, CokernelProjectionWithGivenCokernelObject( cat_1, alpha_1, P_1 ), tau_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( CokernelObject,
                    "dualizing the derivation of KernelObject by KernelObject as the source of KernelEmbedding",
                    [
                        [ CokernelProjection, 1 ],
                    ],
                    
  function ( cat_1, alpha_1 )
    return Range( CokernelProjection( cat_1, alpha_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( CokernelObjectFunctorialWithGivenCokernelObjects,
                    "dualizing the derivation of KernelObjectFunctorialWithGivenKernelObjects by KernelObjectFunctorialWithGivenKernelObjects using the universality of the limit",
                    [
                        [ CokernelColiftWithGivenCokernelObject, 1 ],
                        [ PostCompose, 1 ],
                        [ CokernelProjectionWithGivenCokernelObject, 1 ],
                    ],
                    
  function ( cat_1, P_1, alpha_1, mu_1, alphap_1, Pp_1 )
    return CokernelColiftWithGivenCokernelObject( cat_1, alpha_1, Pp_1, PostCompose( cat_1, CokernelProjectionWithGivenCokernelObject( cat_1, alphap_1, Pp_1 ), mu_1 ), P_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( ColiftAlongEpimorphism,
                    "dualizing the derivation of LiftAlongMonomorphism by LiftAlongMonomorphism using Lift",
                    [
                        [ Colift, 1 ],
                    ],
                    
  function ( cat_1, epsilon_1, tau_1 )
    return Colift( cat_1, epsilon_1, tau_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( ColiftAlongEpimorphism,
                    "dualizing the derivation of LiftAlongMonomorphism by LiftAlongMonomorphism by inverting the kernel lift from the source to the kernel of the cokernel of a given monomorphism",
                    [
                        [ KernelEmbedding, 1 ],
                        [ CokernelColift, 2 ],
                        [ PostCompose, 1 ],
                        [ InverseForMorphisms, 1 ],
                    ],
                    
  function ( cat_1, epsilon_1, tau_1 )
    local deduped_1_1;
    deduped_1_1 := KernelEmbedding( cat_1, epsilon_1 );
    return PostCompose( cat_1, CokernelColift( cat_1, deduped_1_1, Range( tau_1 ), tau_1 ), InverseForMorphisms( cat_1, CokernelColift( cat_1, deduped_1_1, Range( epsilon_1 ), epsilon_1 ) ) );
end : CategoryFilter := IsAbelianCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( ComponentOfMorphismFromCoproduct,
                    "dualizing the derivation of ComponentOfMorphismIntoDirectProduct by ComponentOfMorphismIntoDirectProduct using ComponentOfMorphismIntoDirectSum",
                    [
                        [ IsomorphismFromDirectSumToCoproduct, 1 ],
                        [ ComponentOfMorphismFromDirectSum, 1 ],
                        [ PostCompose, 1 ],
                    ],
                    
  function ( cat_1, alpha_1, I_1, i_1 )
    return ComponentOfMorphismFromDirectSum( cat_1, PostCompose( cat_1, alpha_1, IsomorphismFromDirectSumToCoproduct( cat_1, I_1 ) ), I_1, i_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( ComponentOfMorphismFromCoproduct,
                    "dualizing the derivation of ComponentOfMorphismIntoDirectProduct by ComponentOfMorphismIntoDirectProduct by composing with the direct product projection",
                    [
                        [ InjectionOfCofactorOfCoproduct, 1 ],
                        [ PostCompose, 1 ],
                    ],
                    
  function ( cat_1, alpha_1, I_1, i_1 )
    return PostCompose( cat_1, alpha_1, InjectionOfCofactorOfCoproduct( cat_1, I_1, i_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( ComponentOfMorphismFromDirectSum,
                    "dualizing the derivation of ComponentOfMorphismIntoDirectSum by ComponentOfMorphismIntoDirectSum using ComponentOfMorphismIntoDirectProduct",
                    [
                        [ IsomorphismFromCoproductToDirectSum, 1 ],
                        [ ComponentOfMorphismFromCoproduct, 1 ],
                        [ PostCompose, 1 ],
                    ],
                    
  function ( cat_1, alpha_1, S_1, i_1 )
    return ComponentOfMorphismFromCoproduct( cat_1, PostCompose( cat_1, alpha_1, IsomorphismFromCoproductToDirectSum( cat_1, S_1 ) ), S_1, i_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( ComponentOfMorphismFromDirectSum,
                    "dualizing the derivation of ComponentOfMorphismIntoDirectSum by ComponentOfMorphismIntoDirectSum by composing with the direct sum projection",
                    [
                        [ InjectionOfCofactorOfDirectSum, 1 ],
                        [ PostCompose, 1 ],
                    ],
                    
  function ( cat_1, alpha_1, S_1, i_1 )
    return PostCompose( cat_1, alpha_1, InjectionOfCofactorOfDirectSum( cat_1, S_1, i_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( Coproduct,
                    "dualizing the derivation of DirectProduct by DirectProduct as the source of IsomorphismFromDirectProductToDirectSum",
                    [
                        [ IsomorphismFromDirectSumToCoproduct, 1 ],
                    ],
                    
  function ( cat_1, objects_1 )
    return Range( IsomorphismFromDirectSumToCoproduct( cat_1, objects_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( CoproductFunctorialWithGivenCoproducts,
                    "dualizing the derivation of DirectProductFunctorialWithGivenDirectProducts by DirectProductFunctorialWithGivenDirectProducts using the universality of the limit",
                    [
                        [ UniversalMorphismFromCoproductWithGivenCoproduct, 1 ],
                        [ PostCompose, 2 ],
                        [ InjectionOfCofactorOfCoproductWithGivenCoproduct, 2 ],
                    ],
                    
  function ( cat_1, P_1, objects_1, L_1, objectsp_1, Pp_1 )
    return UniversalMorphismFromCoproductWithGivenCoproduct( cat_1, objects_1, Pp_1, List( [ 1 .. Length( L_1 ) ], function ( i_2 )
              return PostCompose( cat_1, InjectionOfCofactorOfCoproductWithGivenCoproduct( cat_1, objectsp_1, i_2, Pp_1 ), L_1[i_2] );
          end ), P_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( DirectSumFunctorialWithGivenDirectSums,
                    "dualizing the derivation of DirectSumFunctorialWithGivenDirectSums by DirectSumFunctorialWithGivenDirectSums using the universality of the limit",
                    [
                        [ UniversalMorphismFromDirectSumWithGivenDirectSum, 1 ],
                        [ PostCompose, 2 ],
                        [ InjectionOfCofactorOfDirectSumWithGivenDirectSum, 2 ],
                    ],
                    
  function ( cat_1, P_1, objects_1, L_1, objectsp_1, Pp_1 )
    return UniversalMorphismFromDirectSumWithGivenDirectSum( cat_1, objects_1, Pp_1, List( [ 1 .. Length( L_1 ) ], function ( i_2 )
              return PostCompose( cat_1, InjectionOfCofactorOfDirectSumWithGivenDirectSum( cat_1, objectsp_1, i_2, Pp_1 ), L_1[i_2] );
          end ), P_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( InitialObject,
                    "dualizing the derivation of TerminalObject by TerminalObject as the source of IsomorphismFromTerminalObjectToZeroObject",
                    [
                        [ IsomorphismFromZeroObjectToInitialObject, 1 ],
                    ],
                    
  function ( cat_1 )
    return Range( IsomorphismFromZeroObjectToInitialObject( cat_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( InitialObject,
                    "dualizing the derivation of TerminalObject by TerminalObject as the range of IsomorphismFromZeroObjectToTerminalObject",
                    [
                        [ IsomorphismFromInitialObjectToZeroObject, 1 ],
                    ],
                    
  function ( cat_1 )
    return Source( IsomorphismFromInitialObjectToZeroObject( cat_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( InitialObjectFunctorial,
                    "dualizing the derivation of TerminalObjectFunctorial by TerminalObjectFunctorial by taking the identity morphism of TerminalObject",
                    [
                        [ InitialObject, 1 ],
                        [ IdentityMorphism, 1 ],
                    ],
                    
  function ( cat_1 )
    return IdentityMorphism( cat_1, InitialObject( cat_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( InitialObjectFunctorialWithGivenInitialObjects,
                    "dualizing the derivation of TerminalObjectFunctorialWithGivenTerminalObjects by TerminalObjectFunctorialWithGivenTerminalObjects using the universality of the limit",
                    [
                        [ UniversalMorphismFromInitialObjectWithGivenInitialObject, 1 ],
                    ],
                    
  function ( cat_1, P_1, Pp_1 )
    return UniversalMorphismFromInitialObjectWithGivenInitialObject( cat_1, Pp_1, P_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( InjectionOfCofactorOfCoproduct,
                    "dualizing the derivation of ProjectionInFactorOfDirectProduct by ProjectionInFactorOfDirectProduct using ProjectionInFactorOfDirectSum",
                    [
                        [ IsomorphismFromDirectSumToCoproduct, 1 ],
                        [ InjectionOfCofactorOfDirectSum, 1 ],
                        [ PostCompose, 1 ],
                    ],
                    
  function ( cat_1, objects_1, k_1 )
    return PostCompose( cat_1, IsomorphismFromDirectSumToCoproduct( cat_1, objects_1 ), InjectionOfCofactorOfDirectSum( cat_1, objects_1, k_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( InjectionOfCofactorOfDirectSum,
                    "dualizing the derivation of ProjectionInFactorOfDirectSum by ProjectionInFactorOfDirectSum using UniversalMorphismFromDirectSum",
                    [
                        [ IdentityMorphism, 1 ],
                        [ ZeroMorphism, 2 ],
                        [ UniversalMorphismIntoDirectSum, 1 ],
                    ],
                    
  function ( cat_1, objects_1, k_1 )
    local hoisted_1_1, deduped_3_1;
    deduped_3_1 := objects_1[k_1];
    hoisted_1_1 := IdentityMorphism( cat_1, deduped_3_1 );
    return UniversalMorphismIntoDirectSum( cat_1, objects_1, deduped_3_1, List( [ 1 .. Length( objects_1 ) ], function ( i_2 )
              if i_2 = k_1 then
                  return hoisted_1_1;
              else
                  return ZeroMorphism( cat_1, deduped_3_1, objects_1[i_2] );
              fi;
              return;
          end ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( InjectionOfCofactorOfDirectSum,
                    "dualizing the derivation of ProjectionInFactorOfDirectSum by ProjectionInFactorOfDirectSum using ProjectionInFactorOfDirectProduct",
                    [
                        [ IsomorphismFromCoproductToDirectSum, 1 ],
                        [ InjectionOfCofactorOfCoproduct, 1 ],
                        [ PostCompose, 1 ],
                    ],
                    
  function ( cat_1, objects_1, k_1 )
    return PostCompose( cat_1, IsomorphismFromCoproductToDirectSum( cat_1, objects_1 ), InjectionOfCofactorOfCoproduct( cat_1, objects_1, k_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( InjectionOfCofactorOfDirectSumWithGivenDirectSum,
                    "dualizing the derivation of ProjectionInFactorOfDirectSumWithGivenDirectSum by ProjectionInFactorOfDirectSum using UniversalMorphismFromDirectSum",
                    [
                        [ IdentityMorphism, 1 ],
                        [ ZeroMorphism, 2 ],
                        [ UniversalMorphismIntoDirectSumWithGivenDirectSum, 1 ],
                    ],
                    
  function ( cat_1, objects_1, k_1, P_1 )
    local hoisted_1_1, deduped_3_1;
    deduped_3_1 := objects_1[k_1];
    hoisted_1_1 := IdentityMorphism( cat_1, deduped_3_1 );
    return UniversalMorphismIntoDirectSumWithGivenDirectSum( cat_1, objects_1, deduped_3_1, List( [ 1 .. Length( objects_1 ) ], function ( i_2 )
              if i_2 = k_1 then
                  return hoisted_1_1;
              else
                  return ZeroMorphism( cat_1, deduped_3_1, objects_1[i_2] );
              fi;
              return;
          end ), P_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( InjectionOfCofactorOfPushout,
                    "dualizing the derivation of ProjectionInFactorOfFiberProduct by ProjectionInFactorOfFiberProduct by composing the embedding of equalizer with the direct product projection",
                    [
                        [ InjectionOfCofactorOfCoproductWithGivenCoproduct, 2 ],
                        [ PostCompose, 3 ],
                        [ ProjectionOntoCoequalizer, 1 ],
                        [ Coproduct, 1 ],
                        [ ComponentOfMorphismFromCoproduct, 1 ],
                        [ IsomorphismFromCoequalizerOfCoproductDiagramToPushout, 1 ],
                    ],
                    
  function ( cat_1, morphisms_1, k_1 )
    local deduped_3_1, deduped_4_1;
    deduped_4_1 := List( morphisms_1, Range );
    deduped_3_1 := Coproduct( cat_1, deduped_4_1 );
    return PostCompose( cat_1, IsomorphismFromCoequalizerOfCoproductDiagramToPushout( cat_1, morphisms_1 ), ComponentOfMorphismFromCoproduct( cat_1, ProjectionOntoCoequalizer( cat_1, deduped_3_1, List( [ 1 .. Length( morphisms_1 ) ], function ( i_2 )
                  return PostCompose( cat_1, InjectionOfCofactorOfCoproductWithGivenCoproduct( cat_1, deduped_4_1, i_2, deduped_3_1 ), morphisms_1[i_2] );
              end ) ), deduped_4_1, k_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( InjectiveColift,
                    "dualizing the derivation of ProjectiveLift by ProjectiveLift using Lift",
                    [
                        [ Colift, 1 ],
                    ],
                    
  function ( cat_1, alpha_1, beta_1 )
    return Colift( cat_1, alpha_1, beta_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( InjectiveEnvelopeObject,
                    "dualizing the derivation of ProjectiveCoverObject by ProjectiveCoverObject as the source of EpimorphismFromProjectiveCoverObject",
                    [
                        [ MonomorphismIntoInjectiveEnvelopeObject, 1 ],
                    ],
                    
  function ( cat_1, arg2_1 )
    return Range( MonomorphismIntoInjectiveEnvelopeObject( cat_1, arg2_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( InverseForMorphisms,
                    "dualizing the derivation of InverseForMorphisms by InverseForMorphisms using LiftAlongMonomorphism of an identity morphism",
                    [
                        [ IdentityMorphism, 1 ],
                        [ ColiftAlongEpimorphism, 1 ],
                    ],
                    
  function ( cat_1, alpha_1 )
    return ColiftAlongEpimorphism( cat_1, alpha_1, IdentityMorphism( cat_1, Source( alpha_1 ) ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsCodominating,
                    "dualizing the derivation of IsDominating by IsDominating using IsLiftableAlongMonomorphism",
                    [
                        [ IsColiftableAlongEpimorphism, 1 ],
                    ],
                    
  function ( cat_1, arg2_1, arg3_1 )
    return IsColiftableAlongEpimorphism( cat_1, arg3_1, arg2_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsCodominating,
                    "dualizing the derivation of IsDominating by IsDominating using IsCodominating and duality by cokernel",
                    [
                        [ KernelEmbedding, 2 ],
                        [ IsDominating, 1 ],
                    ],
                    
  function ( cat_1, arg2_1, arg3_1 )
    return IsDominating( cat_1, KernelEmbedding( cat_1, arg3_1 ), KernelEmbedding( cat_1, arg2_1 ) );
end : CategoryFilter := IsAbelianCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsCodominating,
                    "dualizing the derivation of IsDominating by IsDominating(sub1, sub2) by deciding if sub1 composed with CokernelProjection(cat, sub2) is zero",
                    [
                        [ KernelEmbedding, 1 ],
                        [ PostCompose, 1 ],
                        [ IsZeroForMorphisms, 1 ],
                    ],
                    
  function ( cat_1, arg2_1, arg3_1 )
    return IsZeroForMorphisms( cat_1, PostCompose( cat_1, arg2_1, KernelEmbedding( cat_1, arg3_1 ) ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsColiftable,
                    "dualizing the derivation of IsLiftable by Two morphisms with equal targets are mutually liftable in a terminal category",
                    [
                    ],
                    
  function ( cat_1, arg2_1, arg3_1 )
    return true;
end : CategoryFilter := IsTerminalCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsColiftableAlongEpimorphism,
                    "dualizing the derivation of IsLiftableAlongMonomorphism by IsLiftableAlongMonomorphism using IsLiftable",
                    [
                        [ IsColiftable, 1 ],
                    ],
                    
  function ( cat_1, arg2_1, arg3_1 )
    return IsColiftable( cat_1, arg2_1, arg3_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsEpimorphism,
                    "dualizing the derivation of IsMonomorphism by IsMonomorphism by deciding if the kernel is a zero object",
                    [
                        [ IsZeroForObjects, 1 ],
                        [ CokernelObject, 1 ],
                    ],
                    
  function ( cat_1, arg2_1 )
    return IsZeroForObjects( cat_1, CokernelObject( cat_1, arg2_1 ) );
end : CategoryFilter := IsAdditiveCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsEpimorphism,
                    "dualizing the derivation of IsMonomorphism by IsMonomorphism by deciding if the diagonal morphism is an isomorphism",
                    [
                        [ IsIsomorphism, 1 ],
                        [ IdentityMorphism, 1 ],
                        [ UniversalMorphismFromPushout, 1 ],
                    ],
                    
  function ( cat_1, arg2_1 )
    local deduped_1_1, deduped_2_1;
    deduped_2_1 := Range( arg2_1 );
    deduped_1_1 := IdentityMorphism( cat_1, deduped_2_1 );
    return IsIsomorphism( cat_1, UniversalMorphismFromPushout( cat_1, [ arg2_1, arg2_1 ], deduped_2_1, [ deduped_1_1, deduped_1_1 ] ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsEqualAsFactorobjects,
                    "dualizing the derivation of IsEqualAsSubobjects by IsEqualAsSubobjects(sub1, sub2) if sub1 dominates sub2 and vice versa",
                    [
                        [ IsCodominating, 2 ],
                    ],
                    
  function ( cat_1, arg2_1, arg3_1 )
    return IsCodominating( cat_1, arg2_1, arg3_1 ) and IsCodominating( cat_1, arg3_1, arg2_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsIdempotent,
                    "dualizing the derivation of IsIdempotent by IsIdempotent by comparing the square of the morphism with itself",
                    [
                        [ IsCongruentForMorphisms, 1 ],
                        [ PostCompose, 1 ],
                    ],
                    
  function ( cat_1, arg2_1 )
    return IsCongruentForMorphisms( cat_1, PostCompose( cat_1, arg2_1, arg2_1 ), arg2_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsInitial,
                    "dualizing the derivation of IsTerminal by IsTerminal using IsZeroForObjects",
                    [
                        [ IsZeroForObjects, 1 ],
                    ],
                    
  function ( cat_1, arg2_1 )
    return IsZeroForObjects( cat_1, arg2_1 );
end : CategoryFilter := IsAdditiveCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsInitial,
                    "dualizing the derivation of IsTerminal by IsTerminal using IsIsomorphism( cat, UniversalMorphismIntoTerminalObject )",
                    [
                        [ IsIsomorphism, 1 ],
                        [ UniversalMorphismFromInitialObject, 1 ],
                    ],
                    
  function ( cat_1, arg2_1 )
    return IsIsomorphism( cat_1, UniversalMorphismFromInitialObject( cat_1, arg2_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsInjective,
                    "dualizing the derivation of IsProjective by IsProjective by checking if the object is a retract of some projective object",
                    [
                        [ MonomorphismIntoSomeInjectiveObject, 1 ],
                        [ IsSplitMonomorphism, 1 ],
                    ],
                    
  function ( cat_1, arg2_1 )
    return IsSplitMonomorphism( cat_1, MonomorphismIntoSomeInjectiveObject( cat_1, arg2_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsInjective,
                    "dualizing the derivation of IsProjective by ",
                    [
                        [ MonomorphismIntoInjectiveEnvelopeObject, 1 ],
                        [ IsIsomorphism, 1 ],
                    ],
                    
  function ( cat_1, arg2_1 )
    return IsIsomorphism( cat_1, MonomorphismIntoInjectiveEnvelopeObject( cat_1, arg2_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsIsomorphism,
                    "dualizing the derivation of IsIsomorphism by IsIsomorphism by deciding if it is a split mono and an epi",
                    [
                        [ IsSplitEpimorphism, 1 ],
                        [ IsMonomorphism, 1 ],
                    ],
                    
  function ( cat_1, arg2_1 )
    return IsSplitEpimorphism( cat_1, arg2_1 ) and IsMonomorphism( cat_1, arg2_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsSplitEpimorphism,
                    "dualizing the derivation of IsSplitMonomorphism by IsSplitMonomorphism by using IsColiftable",
                    [
                        [ IsLiftable, 1 ],
                        [ IdentityMorphism, 1 ],
                    ],
                    
  function ( cat_1, arg2_1 )
    return IsLiftable( cat_1, IdentityMorphism( cat_1, Range( arg2_1 ) ), arg2_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsomorphismFromCoequalizerOfCoproductDiagramToPushout,
                    "dualizing the derivation of IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram by IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram using the universal property of the equalizer",
                    [
                        [ Coproduct, 1 ],
                        [ PostCompose, 2 ],
                        [ InjectionOfCofactorOfCoproductWithGivenCoproduct, 2 ],
                        [ InjectionOfCofactorOfPushoutWithGivenPushout, 2 ],
                        [ UniversalMorphismFromCoproductWithGivenCoproduct, 1 ],
                        [ Pushout, 1 ],
                        [ UniversalMorphismFromCoequalizer, 1 ],
                    ],
                    
  function ( cat_1, D_1 )
    local deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1;
    deduped_7_1 := Pushout( cat_1, D_1 );
    deduped_6_1 := List( D_1, Range );
    deduped_5_1 := [ 1 .. Length( D_1 ) ];
    deduped_4_1 := Coproduct( cat_1, deduped_6_1 );
    return UniversalMorphismFromCoequalizer( cat_1, deduped_4_1, List( deduped_5_1, function ( i_2 )
              return PostCompose( cat_1, InjectionOfCofactorOfCoproductWithGivenCoproduct( cat_1, deduped_6_1, i_2, deduped_4_1 ), D_1[i_2] );
          end ), deduped_7_1, UniversalMorphismFromCoproductWithGivenCoproduct( cat_1, deduped_6_1, deduped_7_1, List( deduped_5_1, function ( i_2 )
                return InjectionOfCofactorOfPushoutWithGivenPushout( cat_1, D_1, i_2, deduped_7_1 );
            end ), deduped_4_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsomorphismFromCoequalizerOfCoproductDiagramToPushout,
                    "dualizing the derivation of IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram by IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram as the inverse of IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct",
                    [
                        [ IsomorphismFromPushoutToCoequalizerOfCoproductDiagram, 1 ],
                        [ InverseForMorphisms, 1 ],
                    ],
                    
  function ( cat_1, D_1 )
    return InverseForMorphisms( cat_1, IsomorphismFromPushoutToCoequalizerOfCoproductDiagram( cat_1, D_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsomorphismFromCoequalizerToCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproduct,
                    "dualizing the derivation of IsomorphismFromKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProductToEqualizer by IsomorphismFromKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProductToEqualizer using the universal property of the equalizer",
                    [
                        [ JointPairwiseDifferencesOfMorphismsFromCoproduct, 1 ],
                        [ CokernelObject, 1 ],
                        [ CokernelProjectionWithGivenCokernelObject, 1 ],
                        [ UniversalMorphismFromCoequalizer, 1 ],
                    ],
                    
  function ( cat_1, A_1, D_1 )
    local deduped_1_1, deduped_2_1;
    deduped_2_1 := JointPairwiseDifferencesOfMorphismsFromCoproduct( cat_1, A_1, D_1 );
    deduped_1_1 := CokernelObject( cat_1, deduped_2_1 );
    return UniversalMorphismFromCoequalizer( cat_1, A_1, D_1, deduped_1_1, CokernelProjectionWithGivenCokernelObject( cat_1, deduped_2_1, deduped_1_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsomorphismFromCoimageToCokernelOfKernel,
                    "dualizing the derivation of IsomorphismFromKernelOfCokernelToImageObject by IsomorphismFromKernelOfCokernelToImageObject as the inverse of IsomorphismFromImageObjectToKernelOfCokernel",
                    [
                        [ InverseForMorphisms, 1 ],
                        [ IsomorphismFromCokernelOfKernelToCoimage, 1 ],
                    ],
                    
  function ( cat_1, alpha_1 )
    return InverseForMorphisms( cat_1, IsomorphismFromCokernelOfKernelToCoimage( cat_1, alpha_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsomorphismFromCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproductToCoequalizer,
                    "dualizing the derivation of IsomorphismFromEqualizerToKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProduct by IsomorphismFromEqualizerToKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProduct using the universal property of the kernel",
                    [
                        [ JointPairwiseDifferencesOfMorphismsFromCoproduct, 1 ],
                        [ Coequalizer, 1 ],
                        [ ProjectionOntoCoequalizerWithGivenCoequalizer, 1 ],
                        [ CokernelColift, 1 ],
                    ],
                    
  function ( cat_1, A_1, D_1 )
    local deduped_1_1;
    deduped_1_1 := Coequalizer( cat_1, A_1, D_1 );
    return CokernelColift( cat_1, JointPairwiseDifferencesOfMorphismsFromCoproduct( cat_1, A_1, D_1 ), deduped_1_1, ProjectionOntoCoequalizerWithGivenCoequalizer( cat_1, A_1, D_1, deduped_1_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsomorphismFromCokernelOfKernelToCoimage,
                    "dualizing the derivation of IsomorphismFromImageObjectToKernelOfCokernel by IsomorphismFromImageObjectToKernelOfCokernel as the inverse of IsomorphismFromKernelOfCokernelToImageObject",
                    [
                        [ InverseForMorphisms, 1 ],
                        [ IsomorphismFromCoimageToCokernelOfKernel, 1 ],
                    ],
                    
  function ( cat_1, alpha_1 )
    return InverseForMorphisms( cat_1, IsomorphismFromCoimageToCokernelOfKernel( cat_1, alpha_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsomorphismFromCokernelOfKernelToCoimage,
                    "dualizing the derivation of IsomorphismFromImageObjectToKernelOfCokernel by IsomorphismFromImageObjectToKernelOfCokernel using the universal property of the image",
                    [
                        [ CokernelProjection, 1 ],
                        [ KernelEmbedding, 1 ],
                        [ ColiftAlongEpimorphism, 1 ],
                        [ UniversalMorphismIntoCoimage, 1 ],
                    ],
                    
  function ( cat_1, alpha_1 )
    local deduped_1_1;
    deduped_1_1 := CokernelProjection( cat_1, KernelEmbedding( cat_1, alpha_1 ) );
    return UniversalMorphismIntoCoimage( cat_1, alpha_1, NTuple( 2, deduped_1_1, ColiftAlongEpimorphism( cat_1, deduped_1_1, alpha_1 ) ) );
end : CategoryFilter := IsAbelianCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsomorphismFromCoproductToDirectSum,
                    "dualizing the derivation of IsomorphismFromDirectSumToDirectProduct by IsomorphismFromDirectSumToDirectProduct using direct sum projections and universal property of direct product",
                    [
                        [ InjectionOfCofactorOfDirectSum, 2 ],
                        [ DirectSum, 1 ],
                        [ UniversalMorphismFromCoproduct, 1 ],
                    ],
                    
  function ( cat_1, D_1 )
    return UniversalMorphismFromCoproduct( cat_1, D_1, DirectSum( cat_1, D_1 ), List( [ 1 .. Length( D_1 ) ], function ( i_2 )
              return InjectionOfCofactorOfDirectSum( cat_1, D_1, i_2 );
          end ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsomorphismFromCoproductToDirectSum,
                    "dualizing the derivation of IsomorphismFromDirectSumToDirectProduct by IsomorphismFromDirectSumToDirectProduct as the inverse of IsomorphismFromDirectProductToDirectSum",
                    [
                        [ InverseForMorphisms, 1 ],
                        [ IsomorphismFromDirectSumToCoproduct, 1 ],
                    ],
                    
  function ( cat_1, D_1 )
    return InverseForMorphisms( cat_1, IsomorphismFromDirectSumToCoproduct( cat_1, D_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsomorphismFromDirectSumToCoproduct,
                    "dualizing the derivation of IsomorphismFromDirectProductToDirectSum by IsomorphismFromDirectProductToDirectSum using direct product projections and universal property of direct sum",
                    [
                        [ InjectionOfCofactorOfCoproduct, 2 ],
                        [ Coproduct, 1 ],
                        [ UniversalMorphismFromDirectSum, 1 ],
                    ],
                    
  function ( cat_1, D_1 )
    return UniversalMorphismFromDirectSum( cat_1, D_1, Coproduct( cat_1, D_1 ), List( [ 1 .. Length( D_1 ) ], function ( i_2 )
              return InjectionOfCofactorOfCoproduct( cat_1, D_1, i_2 );
          end ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsomorphismFromDirectSumToCoproduct,
                    "dualizing the derivation of IsomorphismFromDirectProductToDirectSum by IsomorphismFromDirectProductToDirectSum as the inverse of IsomorphismFromDirectSumToDirectProduct",
                    [
                        [ IsomorphismFromCoproductToDirectSum, 1 ],
                        [ InverseForMorphisms, 1 ],
                    ],
                    
  function ( cat_1, D_1 )
    return InverseForMorphisms( cat_1, IsomorphismFromCoproductToDirectSum( cat_1, D_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsomorphismFromInitialObjectToZeroObject,
                    "dualizing the derivation of IsomorphismFromZeroObjectToTerminalObject by IsomorphismFromZeroObjectToTerminalObject as the unique morphism from zero object to terminal object",
                    [
                        [ UniversalMorphismFromInitialObject, 1 ],
                        [ ZeroObject, 1 ],
                    ],
                    
  function ( cat_1 )
    return UniversalMorphismFromInitialObject( cat_1, ZeroObject( cat_1 ) );
end : CategoryFilter := IsAdditiveCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsomorphismFromInitialObjectToZeroObject,
                    "dualizing the derivation of IsomorphismFromZeroObjectToTerminalObject by IsomorphismFromZeroObjectToTerminalObject using the universal property of the zero object",
                    [
                        [ UniversalMorphismIntoZeroObject, 1 ],
                        [ InitialObject, 1 ],
                    ],
                    
  function ( cat_1 )
    return UniversalMorphismIntoZeroObject( cat_1, InitialObject( cat_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsomorphismFromInitialObjectToZeroObject,
                    "dualizing the derivation of IsomorphismFromZeroObjectToTerminalObject by IsomorphismFromZeroObjectToTerminalObject as the inverse of IsomorphismFromTerminalObjectToZeroObject",
                    [
                        [ InverseForMorphisms, 1 ],
                        [ IsomorphismFromZeroObjectToInitialObject, 1 ],
                    ],
                    
  function ( cat_1 )
    return InverseForMorphisms( cat_1, IsomorphismFromZeroObjectToInitialObject( cat_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsomorphismFromPushoutToCoequalizerOfCoproductDiagram,
                    "dualizing the derivation of IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct by IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct using the universal property of the fiber product",
                    [
                        [ PostCompose, 4 ],
                        [ InjectionOfCofactorOfCoproductWithGivenCoproduct, 2 ],
                        [ Coproduct, 1 ],
                        [ Coequalizer, 1 ],
                        [ ProjectionOntoCoequalizerWithGivenCoequalizer, 1 ],
                        [ UniversalMorphismFromPushout, 1 ],
                    ],
                    
  function ( cat_1, D_1 )
    local hoisted_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1;
    deduped_9_1 := List( D_1, Range );
    deduped_8_1 := [ 1 .. Length( D_1 ) ];
    deduped_7_1 := Coproduct( cat_1, deduped_9_1 );
    deduped_6_1 := List( deduped_8_1, function ( i_2 )
            return PostCompose( cat_1, InjectionOfCofactorOfCoproductWithGivenCoproduct( cat_1, deduped_9_1, i_2, deduped_7_1 ), D_1[i_2] );
        end );
    deduped_5_1 := Coequalizer( cat_1, deduped_7_1, deduped_6_1 );
    hoisted_4_1 := ProjectionOntoCoequalizerWithGivenCoequalizer( cat_1, deduped_7_1, deduped_6_1, deduped_5_1 );
    return UniversalMorphismFromPushout( cat_1, D_1, deduped_5_1, List( deduped_8_1, function ( i_2 )
              return PostCompose( cat_1, hoisted_4_1, deduped_6_1[i_2] );
          end ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsomorphismFromPushoutToCoequalizerOfCoproductDiagram,
                    "dualizing the derivation of IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct by IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct as the inverse of IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram",
                    [
                        [ IsomorphismFromCoequalizerOfCoproductDiagramToPushout, 1 ],
                        [ InverseForMorphisms, 1 ],
                    ],
                    
  function ( cat_1, D_1 )
    return InverseForMorphisms( cat_1, IsomorphismFromCoequalizerOfCoproductDiagramToPushout( cat_1, D_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsomorphismFromZeroObjectToInitialObject,
                    "dualizing the derivation of IsomorphismFromTerminalObjectToZeroObject by IsomorphismFromTerminalObjectToZeroObject as the inverse of IsomorphismFromZeroObjectToTerminalObject",
                    [
                        [ InverseForMorphisms, 1 ],
                        [ IsomorphismFromInitialObjectToZeroObject, 1 ],
                    ],
                    
  function ( cat_1 )
    return InverseForMorphisms( cat_1, IsomorphismFromInitialObjectToZeroObject( cat_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( IsomorphismFromZeroObjectToInitialObject,
                    "dualizing the derivation of IsomorphismFromTerminalObjectToZeroObject by IsomorphismFromTerminalObjectToZeroObject using the universal property of the zero object",
                    [
                        [ UniversalMorphismFromZeroObject, 1 ],
                        [ InitialObject, 1 ],
                    ],
                    
  function ( cat_1 )
    return UniversalMorphismFromZeroObject( cat_1, InitialObject( cat_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( MorphismFromCoimageToImageWithGivenObjects,
                    "dualizing the derivation of MorphismFromCoimageToImageWithGivenObjects by MorphismFromCoimageToImageWithGivenObjects using that images are given by kernels of cokernels",
                    [
                        [ KernelEmbedding, 1 ],
                        [ CokernelColift, 1 ],
                        [ CoastrictionToImageWithGivenImageObject, 1 ],
                        [ PostCompose, 1 ],
                        [ IsomorphismFromCoimageToCokernelOfKernel, 1 ],
                    ],
                    
  function ( cat_1, C_1, alpha_1, I_1 )
    return PostCompose( cat_1, CokernelColift( cat_1, KernelEmbedding( cat_1, alpha_1 ), I_1, CoastrictionToImageWithGivenImageObject( cat_1, alpha_1, I_1 ) ), IsomorphismFromCoimageToCokernelOfKernel( cat_1, alpha_1 ) );
end : CategoryFilter := IsPreAbelianCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( MorphismFromSourceToCoequalizer,
                    "dualizing the derivation of MorphismFromEqualizerToSink by MorphismFromEqualizerToSink by composing the embedding with the first morphism in the diagram",
                    [
                        [ ProjectionOntoCoequalizer, 1 ],
                        [ PostCompose, 1 ],
                    ],
                    
  function ( cat_1, Y_1, morphisms_1 )
    return PostCompose( cat_1, ProjectionOntoCoequalizer( cat_1, Y_1, morphisms_1 ), morphisms_1[1] );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( MorphismFromSourceToCokernelObject,
                    "dualizing the derivation of MorphismFromKernelObjectToSink by MorphismFromKernelObjectToSink as zero morphism from kernel object to range",
                    [
                        [ CokernelObject, 1 ],
                        [ ZeroMorphism, 1 ],
                    ],
                    
  function ( cat_1, alpha_1 )
    return ZeroMorphism( cat_1, Source( alpha_1 ), CokernelObject( cat_1, alpha_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( MorphismFromSourceToPushout,
                    "dualizing the derivation of MorphismFromFiberProductToSink by MorphismFromFiberProductToSink by composing the first projection with the first morphism in the diagram",
                    [
                        [ InjectionOfCofactorOfPushout, 1 ],
                        [ PostCompose, 1 ],
                    ],
                    
  function ( cat_1, morphisms_1 )
    return PostCompose( cat_1, InjectionOfCofactorOfPushout( cat_1, morphisms_1, 1 ), morphisms_1[1] );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( PostCompose,
                    "dualizing the derivation of PreCompose by PreCompose using PostCompose and swapping arguments",
                    [
                        [ PreCompose, 1 ],
                    ],
                    
  function ( cat_1, beta_1, alpha_1 )
    return PreCompose( cat_1, alpha_1, beta_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( PostCompose,
                    "dualizing the derivation of PreCompose by PreCompose by wrapping the arguments in a list",
                    [
                        [ PostComposeList, 1 ],
                    ],
                    
  function ( cat_1, beta_1, alpha_1 )
    return PostComposeList( cat_1, Source( alpha_1 ), [ beta_1, alpha_1 ], Range( beta_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( PostComposeList,
                    "dualizing the derivation of PreComposeList by PreComposeList by iterating PreCompose",
                    [
                        [ IdentityMorphism, 2 ],
                        [ PostCompose, 2 ],
                    ],
                    
  function ( cat_1, source_1, list_of_morphisms_1, range_1 )
    return Iterated( list_of_morphisms_1, function ( alpha_2, beta_2 )
            return PostCompose( cat_1, alpha_2, beta_2 );
        end, IdentityMorphism( cat_1, range_1 ), IdentityMorphism( cat_1, source_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( PostInverseForMorphisms,
                    "dualizing the derivation of PreInverseForMorphisms by PreInverseForMorphisms using IdentityMorphism and Lift",
                    [
                        [ IdentityMorphism, 1 ],
                        [ Colift, 1 ],
                    ],
                    
  function ( cat_1, alpha_1 )
    return Colift( cat_1, alpha_1, IdentityMorphism( cat_1, Source( alpha_1 ) ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( ProjectionOntoCoequalizer,
                    "dualizing the derivation of EmbeddingOfEqualizer by EmbeddingOfEqualizer using the kernel embedding of JointPairwiseDifferencesOfMorphismsIntoDirectProduct",
                    [
                        [ CokernelProjection, 1 ],
                        [ JointPairwiseDifferencesOfMorphismsFromCoproduct, 1 ],
                        [ PostCompose, 1 ],
                        [ IsomorphismFromCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproductToCoequalizer, 1 ],
                    ],
                    
  function ( cat_1, Y_1, morphisms_1 )
    return PostCompose( cat_1, IsomorphismFromCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproductToCoequalizer( cat_1, Y_1, morphisms_1 ), CokernelProjection( cat_1, JointPairwiseDifferencesOfMorphismsFromCoproduct( cat_1, Y_1, morphisms_1 ) ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( Pushout,
                    "dualizing the derivation of FiberProduct by FiberProduct as the source of IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram",
                    [
                        [ IsomorphismFromCoequalizerOfCoproductDiagramToPushout, 1 ],
                    ],
                    
  function ( cat_1, morphisms_1 )
    return Range( IsomorphismFromCoequalizerOfCoproductDiagramToPushout( cat_1, morphisms_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( PushoutFunctorialWithGivenPushouts,
                    "dualizing the derivation of FiberProductFunctorialWithGivenFiberProducts by FiberProductFunctorialWithGivenFiberProducts using the universality of the limit",
                    [
                        [ UniversalMorphismFromPushoutWithGivenPushout, 1 ],
                        [ PostCompose, 2 ],
                        [ InjectionOfCofactorOfPushoutWithGivenPushout, 2 ],
                    ],
                    
  function ( cat_1, P_1, morphisms_1, L_1, morphismsp_1, Pp_1 )
    return UniversalMorphismFromPushoutWithGivenPushout( cat_1, morphisms_1, Pp_1, List( [ 1 .. Length( L_1 ) ], function ( i_2 )
              return PostCompose( cat_1, InjectionOfCofactorOfPushoutWithGivenPushout( cat_1, morphismsp_1, i_2, Pp_1 ), L_1[i_2] );
          end ), P_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( SomeInjectiveObject,
                    "dualizing the derivation of SomeProjectiveObject by SomeProjectiveObject as the source of EpimorphismFromSomeProjectiveObject",
                    [
                        [ MonomorphismIntoSomeInjectiveObject, 1 ],
                    ],
                    
  function ( cat_1, arg2_1 )
    return Range( MonomorphismIntoSomeInjectiveObject( cat_1, arg2_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( UniversalMorphismFromCoequalizer,
                    "dualizing the derivation of UniversalMorphismIntoEqualizer by UniversalMorphismIntoEqualizer using the universality of the kernel representation of the equalizer",
                    [
                        [ JointPairwiseDifferencesOfMorphismsFromCoproduct, 1 ],
                        [ CokernelColift, 1 ],
                        [ IsomorphismFromCoequalizerToCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproduct, 1 ],
                        [ PostCompose, 1 ],
                    ],
                    
  function ( cat_1, Y_1, morphisms_1, T_1, tau_1 )
    return PostCompose( cat_1, CokernelColift( cat_1, JointPairwiseDifferencesOfMorphismsFromCoproduct( cat_1, Y_1, morphisms_1 ), T_1, tau_1 ), IsomorphismFromCoequalizerToCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproduct( cat_1, Y_1, morphisms_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( UniversalMorphismFromCoequalizer,
                    "dualizing the derivation of UniversalMorphismIntoEqualizer by UniversalMorphismIntoEqualizer using LiftAlongMonomorphism and EmbeddingOfEqualizer",
                    [
                        [ ColiftAlongEpimorphism, 1 ],
                        [ ProjectionOntoCoequalizer, 1 ],
                    ],
                    
  function ( cat_1, Y_1, morphisms_1, T_1, tau_1 )
    return ColiftAlongEpimorphism( cat_1, ProjectionOntoCoequalizer( cat_1, Y_1, morphisms_1 ), tau_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( UniversalMorphismFromCoequalizerWithGivenCoequalizer,
                    "dualizing the derivation of UniversalMorphismIntoEqualizerWithGivenEqualizer by UniversalMorphismIntoEqualizer using LiftAlongMonomorphism and EmbeddingOfEqualizer",
                    [
                        [ ColiftAlongEpimorphism, 1 ],
                        [ ProjectionOntoCoequalizerWithGivenCoequalizer, 1 ],
                    ],
                    
  function ( cat_1, Y_1, morphisms_1, T_1, tau_1, P_1 )
    return ColiftAlongEpimorphism( cat_1, ProjectionOntoCoequalizerWithGivenCoequalizer( cat_1, Y_1, morphisms_1, P_1 ), tau_1 );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( UniversalMorphismFromCoproduct,
                    "dualizing the derivation of UniversalMorphismIntoDirectProduct by UniversalMorphismIntoDirectProduct using UniversalMorphismIntoDirectSum",
                    [
                        [ UniversalMorphismFromDirectSum, 1 ],
                        [ IsomorphismFromCoproductToDirectSum, 1 ],
                        [ PostCompose, 1 ],
                    ],
                    
  function ( cat_1, objects_1, T_1, tau_1 )
    return PostCompose( cat_1, UniversalMorphismFromDirectSum( cat_1, objects_1, T_1, tau_1 ), IsomorphismFromCoproductToDirectSum( cat_1, objects_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( UniversalMorphismFromDirectSum,
                    "dualizing the derivation of UniversalMorphismIntoDirectSum by UniversalMorphismIntoDirectSum using the injections of the direct sum",
                    [
                        [ PostCompose, 2 ],
                        [ ProjectionInFactorOfDirectSum, 2 ],
                        [ SumOfMorphisms, 1 ],
                        [ DirectSum, 1 ],
                    ],
                    
  function ( cat_1, objects_1, T_1, tau_1 )
    return SumOfMorphisms( cat_1, DirectSum( cat_1, objects_1 ), List( [ 1 .. Length( tau_1 ) ], function ( i_2 )
              return PostCompose( cat_1, tau_1[i_2], ProjectionInFactorOfDirectSum( cat_1, objects_1, i_2 ) );
          end ), T_1 );
end : CategoryFilter := IsAdditiveCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( UniversalMorphismFromDirectSum,
                    "dualizing the derivation of UniversalMorphismIntoDirectSum by UniversalMorphismIntoDirectSum using UniversalMorphismIntoDirectProduct",
                    [
                        [ UniversalMorphismFromCoproduct, 1 ],
                        [ IsomorphismFromDirectSumToCoproduct, 1 ],
                        [ PostCompose, 1 ],
                    ],
                    
  function ( cat_1, objects_1, T_1, tau_1 )
    return PostCompose( cat_1, UniversalMorphismFromCoproduct( cat_1, objects_1, T_1, tau_1 ), IsomorphismFromDirectSumToCoproduct( cat_1, objects_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( UniversalMorphismFromDirectSumWithGivenDirectSum,
                    "dualizing the derivation of UniversalMorphismIntoDirectSumWithGivenDirectSum by UniversalMorphismIntoDirectSum using the injections of the direct sum",
                    [
                        [ PostCompose, 2 ],
                        [ ProjectionInFactorOfDirectSumWithGivenDirectSum, 2 ],
                        [ SumOfMorphisms, 1 ],
                    ],
                    
  function ( cat_1, objects_1, T_1, tau_1, P_1 )
    return SumOfMorphisms( cat_1, P_1, List( [ 1 .. Length( tau_1 ) ], function ( i_2 )
              return PostCompose( cat_1, tau_1[i_2], ProjectionInFactorOfDirectSumWithGivenDirectSum( cat_1, objects_1, i_2, P_1 ) );
          end ), T_1 );
end : CategoryFilter := IsAdditiveCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( UniversalMorphismFromInitialObject,
                    "dualizing the derivation of UniversalMorphismIntoTerminalObject by UniversalMorphismIntoTerminalObject computing the zero morphism",
                    [
                        [ InitialObject, 1 ],
                        [ ZeroMorphism, 1 ],
                    ],
                    
  function ( cat_1, T_1 )
    return ZeroMorphism( cat_1, InitialObject( cat_1 ), T_1 );
end : CategoryFilter := IsAdditiveCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( UniversalMorphismFromInitialObject,
                    "dualizing the derivation of UniversalMorphismIntoTerminalObject by UniversalMorphismFromInitialObject using UniversalMorphismFromZeroObject",
                    [
                        [ UniversalMorphismFromZeroObject, 1 ],
                        [ IsomorphismFromInitialObjectToZeroObject, 1 ],
                        [ PostCompose, 1 ],
                    ],
                    
  function ( cat_1, T_1 )
    return PostCompose( cat_1, UniversalMorphismFromZeroObject( cat_1, T_1 ), IsomorphismFromInitialObjectToZeroObject( cat_1 ) );
end : CategoryFilter := IsCapCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( UniversalMorphismFromInitialObjectWithGivenInitialObject,
                    "dualizing the derivation of UniversalMorphismIntoTerminalObjectWithGivenTerminalObject by UniversalMorphismIntoTerminalObject computing the zero morphism",
                    [
                        [ ZeroMorphism, 1 ],
                    ],
                    
  function ( cat_1, T_1, P_1 )
    return ZeroMorphism( cat_1, P_1, T_1 );
end : CategoryFilter := IsAdditiveCategory,
      Weight := 1,
      is_autogenerated_by_CompilerForCAP := true );

##
AddDerivationToCAP( UniversalMorphismFromPushout,
--> --------------------

--> maximum size reached

--> --------------------

[ zur Elbe Produktseite wechseln0.60Quellennavigators  Analyse erneut starten  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


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