@@ -1929,6 +1929,100 @@ AddDerivationToCAP( IsomorphismFromCoimageToCokernelOfKernel,
19291929
19301930end : Description := " IsomorphismFromCoimageToCokernelOfKernel as the inverse of IsomorphismFromCokernelOfKernelToCoimage" );
19311931
1932+ # #
1933+ AddDerivationToCAP( IsomorphismFromEqualizerToKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProduct,
1934+
1935+ function ( cat, A, diagram )
1936+ local joint_pairwise_differences, equalizer, equalizer_embedding;
1937+
1938+ joint_pairwise_differences := JointPairwiseDifferencesOfMorphismsIntoDirectProduct( cat, A, diagram );
1939+
1940+ equalizer := Equalizer( cat, A, diagram );
1941+
1942+ equalizer_embedding := EmbeddingOfEqualizerWithGivenEqualizer( cat, A, diagram, equalizer );
1943+
1944+ return KernelLift( cat, joint_pairwise_differences, equalizer, equalizer_embedding );
1945+
1946+ end : Description := " IsomorphismFromEqualizerToKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProduct using the universal property of the kernel" );
1947+
1948+ # #
1949+ AddDerivationToCAP( IsomorphismFromKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProductToEqualizer,
1950+
1951+ function ( cat, A, diagram )
1952+ local joint_pairwise_differences, kernel_object, kernel_embedding;
1953+
1954+ joint_pairwise_differences := JointPairwiseDifferencesOfMorphismsIntoDirectProduct( cat, A, diagram );
1955+
1956+ kernel_object := KernelObject( cat, joint_pairwise_differences );
1957+
1958+ kernel_embedding := KernelEmbeddingWithGivenKernelObject( cat, joint_pairwise_differences, kernel_object );
1959+
1960+ return UniversalMorphismIntoEqualizer( cat, A, diagram, kernel_object, kernel_embedding );
1961+
1962+ end : Description := " IsomorphismFromKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProductToEqualizer using the universal property of the equalizer" );
1963+
1964+ # #
1965+ AddDerivationToCAP( IsomorphismFromCoequalizerToCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproduct,
1966+
1967+ function ( cat, A, diagram )
1968+ local joint_pairwise_differences, cokernel_object, cokernel_proj;
1969+
1970+ joint_pairwise_differences := JointPairwiseDifferencesOfMorphismsFromCoproduct( cat, A, diagram );
1971+
1972+ cokernel_object := CokernelObject( cat, joint_pairwise_differences );
1973+
1974+ cokernel_proj := CokernelProjectionWithGivenCokernelObject( cat, joint_pairwise_differences, cokernel_object );
1975+
1976+ return UniversalMorphismFromCoequalizer( cat, A, diagram, cokernel_object, cokernel_proj );
1977+
1978+ end : Description := " IsomorphismFromCoequalizerToCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproduct using the universal property of the coequalizer" );
1979+
1980+ # #
1981+ AddDerivationToCAP( IsomorphismFromCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproductToCoequalizer,
1982+
1983+ function ( cat, A, diagram )
1984+ local joint_pairwise_differences, coequalizer, coequalizer_projection;
1985+
1986+ joint_pairwise_differences := JointPairwiseDifferencesOfMorphismsFromCoproduct( cat, A, diagram );
1987+
1988+ coequalizer := Coequalizer( cat, A, diagram );
1989+
1990+ coequalizer_projection := ProjectionOntoCoequalizerWithGivenCoequalizer( cat, A, diagram, coequalizer );
1991+
1992+ return CokernelColift( cat, joint_pairwise_differences, coequalizer, coequalizer_projection );
1993+
1994+ end : Description := " IsomorphismFromCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproductToCoequalizer using the universal property of the cokernel" );
1995+
1996+ # #
1997+ AddDerivationToCAP( IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram,
1998+ [ [ DirectProduct, 1 ] ,
1999+ [ PreCompose, 2 ] ,
2000+ [ ProjectionInFactorOfDirectProductWithGivenDirectProduct, 2 ] ,
2001+ [ ProjectionInFactorOfFiberProductWithGivenFiberProduct, 2 ] ,
2002+ [ UniversalMorphismIntoDirectProductWithGivenDirectProduct, 1 ] ,
2003+ [ FiberProduct, 1 ] ,
2004+ [ UniversalMorphismIntoEqualizer, 1 ] ] ,
2005+
2006+ function ( cat, diagram )
2007+ local sources_of_diagram, direct_product, direct_product_diagram, fiber_product, test_source, fiber_product_embedding;
2008+
2009+ sources_of_diagram := List( diagram, Source );
2010+
2011+ direct_product := DirectProduct( cat, sources_of_diagram );
2012+
2013+ direct_product_diagram := List( [ 1 .. Length( sources_of_diagram ) ] ,
2014+ i -> PreCompose( cat, ProjectionInFactorOfDirectProductWithGivenDirectProduct( cat, sources_of_diagram, i, direct_product ), diagram[ i ] ) );
2015+
2016+ fiber_product := FiberProduct( cat, diagram );
2017+
2018+ test_source := List( [ 1 .. Length( diagram ) ] , i -> ProjectionInFactorOfFiberProductWithGivenFiberProduct( cat, diagram, i, fiber_product ) );
2019+
2020+ fiber_product_embedding := UniversalMorphismIntoDirectProductWithGivenDirectProduct( cat, sources_of_diagram, fiber_product, test_source, direct_product );
2021+
2022+ return UniversalMorphismIntoEqualizer( cat, direct_product, direct_product_diagram, fiber_product, fiber_product_embedding );
2023+
2024+ end : Description := " IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram using the universal property of the equalizer" );
2025+
19322026# #
19332027AddDerivationToCAP( IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram,
19342028 [ [ IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct, 1 ] ,
@@ -1940,6 +2034,35 @@ AddDerivationToCAP( IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram
19402034
19412035end : Description := " IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram as the inverse of IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct" );
19422036
2037+ # #
2038+ AddDerivationToCAP( IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct,
2039+ [ [ PreCompose, 4 ] ,
2040+ [ ProjectionInFactorOfDirectProductWithGivenDirectProduct, 2 ] ,
2041+ [ DirectProduct, 1 ] ,
2042+ [ Equalizer, 1 ] ,
2043+ [ EmbeddingOfEqualizerWithGivenEqualizer, 1 ] ,
2044+ [ UniversalMorphismIntoFiberProduct, 1 ] ] ,
2045+
2046+ function ( cat, diagram )
2047+ local sources_of_diagram, direct_product, direct_product_diagram, equalizer, equalizer_embedding, equalizer_of_direct_product_diagram;
2048+
2049+ sources_of_diagram := List( diagram, Source );
2050+
2051+ direct_product := DirectProduct( cat, sources_of_diagram );
2052+
2053+ direct_product_diagram := List( [ 1 .. Length( sources_of_diagram ) ] ,
2054+ i -> PreCompose( cat, ProjectionInFactorOfDirectProductWithGivenDirectProduct( cat, sources_of_diagram, i, direct_product ), diagram[ i ] ) );
2055+
2056+ equalizer := Equalizer( cat, direct_product, direct_product_diagram );
2057+
2058+ equalizer_embedding := EmbeddingOfEqualizerWithGivenEqualizer( cat, direct_product, direct_product_diagram, equalizer );
2059+
2060+ equalizer_of_direct_product_diagram := List( [ 1 .. Length( direct_product_diagram ) ] , i -> PreCompose( cat, equalizer_embedding, direct_product_diagram[ i ] ) );
2061+
2062+ return UniversalMorphismIntoFiberProduct( cat, diagram, equalizer, equalizer_of_direct_product_diagram );
2063+
2064+ end : Description := " IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct using the universal property of the fiber product" );
2065+
19432066# #
19442067AddDerivationToCAP( IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct,
19452068 [ [ IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram, 1 ] ,
@@ -1951,6 +2074,35 @@ AddDerivationToCAP( IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct
19512074
19522075end : Description := " IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct as the inverse of IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram" );
19532076
2077+ # #
2078+ AddDerivationToCAP( IsomorphismFromPushoutToCoequalizerOfCoproductDiagram,
2079+ [ [ Coproduct, 1 ] ,
2080+ [ PreCompose, 4 ] ,
2081+ [ InjectionOfCofactorOfCoproductWithGivenCoproduct, 2 ] ,
2082+ [ Coequalizer, 1 ] ,
2083+ [ ProjectionOntoCoequalizerWithGivenCoequalizer, 1 ] ,
2084+ [ UniversalMorphismFromPushout, 1 ] ] ,
2085+
2086+ function ( cat, diagram )
2087+ local ranges_of_diagram, coproduct, coproduct_diagram, coequalizer, coequalizer_projection, coequalizer_of_coproduct_diagram;
2088+
2089+ ranges_of_diagram := List( diagram, Range );
2090+
2091+ coproduct := Coproduct( cat, ranges_of_diagram );
2092+
2093+ coproduct_diagram := List( [ 1 .. Length( ranges_of_diagram ) ] ,
2094+ i -> PreCompose( cat, diagram[ i ] , InjectionOfCofactorOfCoproductWithGivenCoproduct( cat, ranges_of_diagram, i, coproduct ) ) );
2095+
2096+ coequalizer := Coequalizer( cat, coproduct, coproduct_diagram );
2097+
2098+ coequalizer_projection := ProjectionOntoCoequalizerWithGivenCoequalizer( cat, coproduct, coproduct_diagram, coequalizer );
2099+
2100+ coequalizer_of_coproduct_diagram := List( [ 1 .. Length( coproduct_diagram ) ] , i -> PreCompose( cat, coproduct_diagram[ i ] , coequalizer_projection ) );
2101+
2102+ return UniversalMorphismFromPushout( cat, diagram, coequalizer, coequalizer_of_coproduct_diagram );
2103+
2104+ end : Description := " IsomorphismFromPushoutToCoequalizerOfCoproductDiagram using the universal property of the pushout" );
2105+
19542106# #
19552107AddDerivationToCAP( IsomorphismFromPushoutToCoequalizerOfCoproductDiagram,
19562108 [ [ IsomorphismFromCoequalizerOfCoproductDiagramToPushout , 1 ] ,
@@ -1962,6 +2114,36 @@ AddDerivationToCAP( IsomorphismFromPushoutToCoequalizerOfCoproductDiagram,
19622114
19632115end : Description := " IsomorphismFromPushoutToCoequalizerOfCoproductDiagram as the inverse of IsomorphismFromCoequalizerOfCoproductDiagramToPushout" );
19642116
2117+ # #
2118+ AddDerivationToCAP( IsomorphismFromCoequalizerOfCoproductDiagramToPushout,
2119+ [ [ Coproduct, 1 ] ,
2120+ [ PreCompose, 2 ] ,
2121+ [ InjectionOfCofactorOfCoproductWithGivenCoproduct, 2 ] ,
2122+ [ InjectionOfCofactorOfPushoutWithGivenPushout, 2 ] ,
2123+ [ UniversalMorphismFromCoproductWithGivenCoproduct, 1 ] ,
2124+ [ Pushout, 1 ] ,
2125+ [ UniversalMorphismFromCoequalizer, 1 ] ] ,
2126+
2127+ function ( cat, diagram )
2128+ local ranges_of_diagram, coproduct, coproduct_diagram, pushout, test_sink, pushout_injection;
2129+
2130+ ranges_of_diagram := List( diagram, Range );
2131+
2132+ coproduct := Coproduct( cat, ranges_of_diagram );
2133+
2134+ coproduct_diagram := List( [ 1 .. Length( ranges_of_diagram ) ] ,
2135+ i -> PreCompose( cat, diagram[ i ] , InjectionOfCofactorOfCoproductWithGivenCoproduct( cat, ranges_of_diagram, i, coproduct ) ) );
2136+
2137+ pushout := Pushout( cat, diagram );
2138+
2139+ test_sink := List( [ 1 .. Length( diagram ) ] , i -> InjectionOfCofactorOfPushoutWithGivenPushout( cat, diagram, i, pushout ) );
2140+
2141+ pushout_injection := UniversalMorphismFromCoproductWithGivenCoproduct( cat, ranges_of_diagram, pushout, test_sink, coproduct );
2142+
2143+ return UniversalMorphismFromCoequalizer( cat, coproduct, coproduct_diagram, pushout, pushout_injection );
2144+
2145+ end : Description := " IsomorphismFromCoequalizerOfCoproductDiagramToPushout using the universal property of the coequalizer" );
2146+
19652147# #
19662148AddDerivationToCAP( IsomorphismFromCoequalizerOfCoproductDiagramToPushout,
19672149 [ [ IsomorphismFromPushoutToCoequalizerOfCoproductDiagram, 1 ] ,
0 commit comments