Skip to content

Commit c1b69a8

Browse files
Tom Kuhmichelzickgraf
authored andcommitted
Add derivations for isomorphisms
- Equalizer of direct product <-> Fiber product - Coequalizer of coproduct <-> Pushout - Kernel of joint differences <-> Equalizer - Cokernel of joint differences <-> Coequalizer
1 parent aa8d25b commit c1b69a8

File tree

1 file changed

+160
-0
lines changed

1 file changed

+160
-0
lines changed

CAP/gap/DerivedMethods.gi

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1929,6 +1929,86 @@ AddDerivationToCAP( IsomorphismFromCoimageToCokernelOfKernel,
19291929

19301930
end : Description := "IsomorphismFromCoimageToCokernelOfKernel as the inverse of IsomorphismFromCokernelOfKernelToCoimage" );
19311931

1932+
##
1933+
AddDerivationToCAP( IsomorphismFromEqualizerToKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProduct,
1934+
1935+
function( cat, A, diagram )
1936+
local joint_pairwise_differences, equalizer_embedding;
1937+
1938+
joint_pairwise_differences := JointPairwiseDifferencesOfMorphismsIntoDirectProduct( cat, A, diagram );
1939+
1940+
equalizer_embedding := EmbeddingOfEqualizer( cat, A, diagram );
1941+
1942+
return KernelLift( cat, joint_pairwise_differences, Source( equalizer_embedding ), equalizer_embedding );
1943+
1944+
end : Description := "IsomorphismFromEqualizerToKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProduct using the universal property of the kernel" );
1945+
1946+
##
1947+
AddDerivationToCAP( IsomorphismFromKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProductToEqualizer,
1948+
1949+
function( cat, A, diagram )
1950+
local kernel_embedding;
1951+
1952+
kernel_embedding := KernelEmbedding( cat, JointPairwiseDifferencesOfMorphismsIntoDirectProduct( cat, A, diagram ) );
1953+
1954+
return UniversalMorphismIntoEqualizer( cat, A, diagram, Source( kernel_embedding ), kernel_embedding );
1955+
1956+
end : Description := "IsomorphismFromKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProductToEqualizer using the universal property of the equalizer" );
1957+
1958+
##
1959+
AddDerivationToCAP( IsomorphismFromCoequalizerToCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproduct,
1960+
1961+
function( cat, A, diagram )
1962+
local cokernel_proj;
1963+
1964+
cokernel_proj := CokernelProjection( cat, JointPairwiseDifferencesOfMorphismsFromCoproduct( cat, A, diagram ) );
1965+
1966+
return UniversalMorphismFromCoequalizer( cat, A, diagram, Range( cokernel_proj ), cokernel_proj );
1967+
1968+
end : Description := "IsomorphismFromCoequalizerToCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproduct using the universal property of the coequalizer" );
1969+
1970+
##
1971+
AddDerivationToCAP( IsomorphismFromCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproductToCoequalizer,
1972+
1973+
function( cat, A, diagram )
1974+
local joint_pairwise_differences, coequalizer_projection;
1975+
1976+
joint_pairwise_differences := JointPairwiseDifferencesOfMorphismsFromCoproduct( cat, A, diagram );
1977+
1978+
coequalizer_projection := ProjectionOntoCoequalizer( cat, A, diagram );
1979+
1980+
return CokernelColift( cat, joint_pairwise_differences, Range( coequalizer_projection ), coequalizer_projection );
1981+
1982+
end : Description := "IsomorphismFromCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproductToCoequalizer using the universal property of the cokernel" );
1983+
1984+
##
1985+
AddDerivationToCAP( IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram,
1986+
[ [ DirectProduct, 1 ],
1987+
[ PreCompose, 2 ],
1988+
[ ProjectionInFactorOfDirectProductWithGivenDirectProduct, 2 ],
1989+
[ ProjectionInFactorOfFiberProduct, 2 ],
1990+
[ UniversalMorphismIntoDirectProductWithGivenDirectProduct, 1 ],
1991+
[ FiberProduct, 1 ],
1992+
[ UniversalMorphismIntoEqualizer, 1 ] ],
1993+
1994+
function( cat, diagram )
1995+
local sources_of_diagram, direct_product, direct_product_diagram, test_source, fiber_product_embedding;
1996+
1997+
sources_of_diagram := List( diagram, Source );
1998+
1999+
direct_product := DirectProduct( cat, sources_of_diagram );
2000+
2001+
direct_product_diagram := List( [ 1.. Length( sources_of_diagram ) ],
2002+
i -> PreCompose( cat, ProjectionInFactorOfDirectProductWithGivenDirectProduct( cat, sources_of_diagram, i, direct_product ), diagram[ i ] ) );
2003+
2004+
test_source := List( [ 1 .. Length( diagram ) ], i -> ProjectionInFactorOfFiberProduct( cat, diagram, i ) );
2005+
2006+
fiber_product_embedding := UniversalMorphismIntoDirectProductWithGivenDirectProduct( cat, sources_of_diagram, FiberProduct( cat, diagram ), test_source, direct_product );
2007+
2008+
return UniversalMorphismIntoEqualizer( cat, direct_product, direct_product_diagram, Source( fiber_product_embedding ), fiber_product_embedding );
2009+
2010+
end : Description := "IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram using the universal property of the equalizer" );
2011+
19322012
##
19332013
AddDerivationToCAP( IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram,
19342014
[ [ IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct, 1 ],
@@ -1940,6 +2020,32 @@ AddDerivationToCAP( IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram
19402020

19412021
end : Description := "IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram as the inverse of IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct" );
19422022

2023+
##
2024+
AddDerivationToCAP( IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct,
2025+
[ [ PreCompose, 4 ],
2026+
[ ProjectionInFactorOfDirectProductWithGivenDirectProduct, 2 ],
2027+
[ DirectProduct, 1 ],
2028+
[ EmbeddingOfEqualizer, 1 ],
2029+
[ UniversalMorphismIntoFiberProduct, 1 ] ],
2030+
2031+
function( cat, diagram )
2032+
local sources_of_diagram, direct_product_diagram, direct_product, equalizer_embedding, equalizer_of_direct_product_diagram;
2033+
2034+
sources_of_diagram := List( diagram, Source );
2035+
2036+
direct_product := DirectProduct( cat, sources_of_diagram );
2037+
2038+
direct_product_diagram := List( [ 1.. Length( sources_of_diagram ) ],
2039+
i -> PreCompose( cat, ProjectionInFactorOfDirectProductWithGivenDirectProduct( cat, sources_of_diagram, i, direct_product ), diagram[ i ] ) );
2040+
2041+
equalizer_embedding := EmbeddingOfEqualizer( cat, direct_product, direct_product_diagram );
2042+
2043+
equalizer_of_direct_product_diagram := List( [ 1 .. Length( direct_product_diagram ) ], i -> PreCompose( cat, equalizer_embedding, direct_product_diagram[ i ] ) );
2044+
2045+
return UniversalMorphismIntoFiberProduct( cat, diagram, Source( equalizer_embedding ), equalizer_of_direct_product_diagram );
2046+
2047+
end : Description := "IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct using the universal property of the fiber product" );
2048+
19432049
##
19442050
AddDerivationToCAP( IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct,
19452051
[ [ IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram, 1 ],
@@ -1951,6 +2057,32 @@ AddDerivationToCAP( IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct
19512057

19522058
end : Description := "IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct as the inverse of IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram" );
19532059

2060+
##
2061+
AddDerivationToCAP( IsomorphismFromPushoutToCoequalizerOfCoproductDiagram,
2062+
[ [ Coproduct, 1 ],
2063+
[ PreCompose, 4 ],
2064+
[ InjectionOfCofactorOfCoproductWithGivenCoproduct, 2 ],
2065+
[ ProjectionOntoCoequalizer, 1 ],
2066+
[ UniversalMorphismFromPushout, 1 ] ],
2067+
2068+
function( cat, diagram )
2069+
local ranges_of_diagram, coproduct, coproduct_diagram, coequalizer_projection, coequalizer_of_coproduct_diagram;
2070+
2071+
ranges_of_diagram := List( diagram, Range );
2072+
2073+
coproduct := Coproduct( cat, ranges_of_diagram );
2074+
2075+
coproduct_diagram := List( [ 1.. Length( ranges_of_diagram ) ],
2076+
i -> PreCompose( cat, diagram[ i ], InjectionOfCofactorOfCoproductWithGivenCoproduct( cat, ranges_of_diagram, i, coproduct ) ) );
2077+
2078+
coequalizer_projection := ProjectionOntoCoequalizer( cat, coproduct, coproduct_diagram );
2079+
2080+
coequalizer_of_coproduct_diagram := List( [ 1 .. Length( coproduct_diagram ) ], i -> PreCompose( cat, coproduct_diagram[ i ], coequalizer_projection ) );
2081+
2082+
return UniversalMorphismFromPushout( cat, diagram, Range( coequalizer_projection ), coequalizer_of_coproduct_diagram );
2083+
2084+
end : Description := "IsomorphismFromPushoutToCoequalizerOfCoproductDiagram using the universal property of the pushout" );
2085+
19542086
##
19552087
AddDerivationToCAP( IsomorphismFromPushoutToCoequalizerOfCoproductDiagram,
19562088
[ [ IsomorphismFromCoequalizerOfCoproductDiagramToPushout , 1 ],
@@ -1962,6 +2094,34 @@ AddDerivationToCAP( IsomorphismFromPushoutToCoequalizerOfCoproductDiagram,
19622094

19632095
end : Description := "IsomorphismFromPushoutToCoequalizerOfCoproductDiagram as the inverse of IsomorphismFromCoequalizerOfCoproductDiagramToPushout" );
19642096

2097+
##
2098+
AddDerivationToCAP( IsomorphismFromCoequalizerOfCoproductDiagramToPushout,
2099+
[ [ Coproduct, 1 ],
2100+
[ PreCompose, 2 ],
2101+
[ InjectionOfCofactorOfCoproductWithGivenCoproduct, 2 ],
2102+
[ InjectionOfCofactorOfPushout, 2 ],
2103+
[ UniversalMorphismFromCoproductWithGivenCoproduct, 1 ],
2104+
[ Pushout, 1 ],
2105+
[ UniversalMorphismFromCoequalizer, 1 ] ],
2106+
2107+
function( cat, diagram )
2108+
local ranges_of_diagram, coproduct, coproduct_diagram, test_source, pushout_injection;
2109+
2110+
ranges_of_diagram := List( diagram, Range );
2111+
2112+
coproduct := Coproduct( cat, ranges_of_diagram );
2113+
2114+
coproduct_diagram := List( [ 1.. Length( ranges_of_diagram ) ],
2115+
i -> PreCompose( cat, diagram[ i ], InjectionOfCofactorOfCoproductWithGivenCoproduct( cat, ranges_of_diagram, i, coproduct ) ) );
2116+
2117+
test_source := List( [ 1 .. Length( diagram ) ], i -> InjectionOfCofactorOfPushout( cat, diagram, i ) );
2118+
2119+
pushout_injection := UniversalMorphismFromCoproductWithGivenCoproduct( cat, ranges_of_diagram, Pushout( cat, diagram ), test_source, coproduct );
2120+
2121+
return UniversalMorphismFromCoequalizer( cat, coproduct, coproduct_diagram, Source( pushout_injection ), pushout_injection );
2122+
2123+
end : Description := "IsomorphismFromCoequalizerOfCoproductDiagramToPushout using the universal property of the coequalizer" );
2124+
19652125
##
19662126
AddDerivationToCAP( IsomorphismFromCoequalizerOfCoproductDiagramToPushout,
19672127
[ [ IsomorphismFromPushoutToCoequalizerOfCoproductDiagram, 1 ],

0 commit comments

Comments
 (0)