[1X10 [33X[0;0YFunctors[133X[101X
[1X10.1 [33X[0;0YFunctors: Category and Representations[133X[101X
[1X10.2 [33X[0;0YFunctors: Constructors[133X[101X
[1X10.3 [33X[0;0YFunctors: Attributes[133X[101X
[1X10.4 [33X[0;0YBasic Functors[133X[101X
[1X10.4-1 functor_Cokernel[101X
[29X[2Xfunctor_Cokernel[102X[32X global variable
[33X[0;0YThe functor that associates to a map its cokernel.[133X
[4X[32X Code [32X[104X
[4XInstallValue( functor_Cokernel_for_fp_modules,[104X
[4X CreateHomalgFunctor([104X
[4X [ "name", "Cokernel" ],[104X
[4X [ "category", HOMALG_MODULES.category ],[104X
[4X [ "operation", "Cokernel" ],[104X
[4X [ "natural_transformation", "CokernelEpi" ],[104X
[4X [ "special", true ],[104X
[4X [ "number_of_arguments", 1 ],[104X
[4X [ "1", [ [ "covariant" ],[104X
[4X [ IsMapOfFinitelyGeneratedModulesRep,[104X
[4X [ IsHomalgChainMorphism, IsImageSquare ] ] ] ],[104X
[4X [ "OnObjects", _Functor_Cokernel_OnModules ][104X
[4X )[104X
[4X );[104X
[4X[32X[104X
[1X10.4-2 Cokernel[101X
[29X[2XCokernel[102X( [3Xphi[103X ) [32X operation
[33X[0;0YThe following example also makes use of the natural transformation
[10XCokernelEpi[110X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );[127X[104X
[4X[28XZ[128X[104X
[4X[25Xgap>[125X [27XM := HomalgMatrix( "[ 2, 3, 4, 5, 6, 7 ]", 2, 3, ZZ );;[127X[104X
[4X[25Xgap>[125X [27XM := LeftPresentation( M );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XN := HomalgMatrix( "[ 2, 3, 4, 5, 6, 7, 8, 9 ]", 2, 4, ZZ );;[127X[104X
[4X[25Xgap>[125X [27XN := LeftPresentation( N );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xmat := HomalgMatrix( "[ \[127X[104X
[4X[25X>[125X [27X1, 0, -3, -6, \[127X[104X
[4X[25X>[125X [27X0, 1, 6, 11, \[127X[104X
[4X[25X>[125X [27X1, 0, -3, -6 \[127X[104X
[4X[25X>[125X [27X]", 3, 4, ZZ );;[127X[104X
[4X[25Xgap>[125X [27Xphi := HomalgMap( mat, M, N );;[127X[104X
[4X[25Xgap>[125X [27XIsMorphism( phi );[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27Xphi;[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xcoker := Cokernel( phi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XByASmallerPresentation( coker );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( coker );[127X[104X
[4X[28XZ/< 8 > + Z^(1 x 1)[128X[104X
[4X[25Xgap>[125X [27Xnu := CokernelEpi( phi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( nu );[127X[104X
[4X[28X[ [ -5, 0 ],[128X[104X
[4X[28X [ -6, 1 ],[128X[104X
[4X[28X [ 1, -2 ],[128X[104X
[4X[28X [ 0, 1 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 4 x 2 matrix[128X[104X
[4X[25Xgap>[125X [27XDefectOfExactness( phi, nu );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XByASmallerPresentation( nu );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( nu );[127X[104X
[4X[28X[ [ 2, 0 ],[128X[104X
[4X[28X [ 1, -2 ],[128X[104X
[4X[28X [ 0, 1 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 3 x 2 matrix[128X[104X
[4X[25Xgap>[125X [27XPreInverse( nu );[127X[104X
[4X[28Xfalse[128X[104X
[4X[32X[104X
[1X10.4-3 functor_ImageObject[101X
[29X[2Xfunctor_ImageObject[102X[32X global variable
[33X[0;0YThe functor that associates to a map its image.[133X
[4X[32X Code [32X[104X
[4XInstallValue( functor_ImageObject_for_fp_modules,[104X
[4X CreateHomalgFunctor([104X
[4X [ "name", "ImageObject for modules" ],[104X
[4X [ "category", HOMALG_MODULES.category ],[104X
[4X [ "operation", "ImageObject" ],[104X
[4X [ "natural_transformation", "ImageObjectEmb" ],[104X
[4X [ "number_of_arguments", 1 ],[104X
[4X [ "1", [ [ "covariant" ],[104X
[4X [ IsMapOfFinitelyGeneratedModulesRep and[104X
[4X AdmissibleInputForHomalgFunctors ] ] ],[104X
[4X [ "OnObjects", _Functor_ImageObject_OnModules ][104X
[4X )[104X
[4X );[104X
[4X[32X[104X
[1X10.4-4 ImageObject[101X
[29X[2XImageObject[102X( [3Xphi[103X ) [32X operation
[33X[0;0YThe following example also makes use of the natural transformations
[10XImageObjectEpi[110X and [10XImageObjectEmb[110X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );[127X[104X
[4X[28XZ[128X[104X
[4X[25Xgap>[125X [27XM := HomalgMatrix( "[ 2, 3, 4, 5, 6, 7 ]", 2, 3, ZZ );;[127X[104X
[4X[25Xgap>[125X [27XM := LeftPresentation( M );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XN := HomalgMatrix( "[ 2, 3, 4, 5, 6, 7, 8, 9 ]", 2, 4, ZZ );;[127X[104X
[4X[25Xgap>[125X [27XN := LeftPresentation( N );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xmat := HomalgMatrix( "[ \[127X[104X
[4X[25X>[125X [27X1, 0, -3, -6, \[127X[104X
[4X[25X>[125X [27X0, 1, 6, 11, \[127X[104X
[4X[25X>[125X [27X1, 0, -3, -6 \[127X[104X
[4X[25X>[125X [27X]", 3, 4, ZZ );;[127X[104X
[4X[25Xgap>[125X [27Xphi := HomalgMap( mat, M, N );;[127X[104X
[4X[25Xgap>[125X [27XIsMorphism( phi );[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27Xphi;[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xim := ImageObject( phi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XByASmallerPresentation( im );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xpi := ImageObjectEpi( phi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xepsilon := ImageObjectEmb( phi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xphi = pi * epsilon;[127X[104X
[4X[28Xtrue[128X[104X
[4X[32X[104X
[1X10.4-5 Kernel[101X
[29X[2XKernel[102X( [3Xphi[103X ) [32X operation
[33X[0;0YThe following example also makes use of the natural transformation
[10XKernelEmb[110X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );[127X[104X
[4X[28XZ[128X[104X
[4X[25Xgap>[125X [27XM := HomalgMatrix( "[ 2, 3, 4, 5, 6, 7 ]", 2, 3, ZZ );;[127X[104X
[4X[25Xgap>[125X [27XM := LeftPresentation( M );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XN := HomalgMatrix( "[ 2, 3, 4, 5, 6, 7, 8, 9 ]", 2, 4, ZZ );;[127X[104X
[4X[25Xgap>[125X [27XN := LeftPresentation( N );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xmat := HomalgMatrix( "[ \[127X[104X
[4X[25X>[125X [27X1, 0, -3, -6, \[127X[104X
[4X[25X>[125X [27X0, 1, 6, 11, \[127X[104X
[4X[25X>[125X [27X1, 0, -3, -6 \[127X[104X
[4X[25X>[125X [27X]", 3, 4, ZZ );;[127X[104X
[4X[25Xgap>[125X [27Xphi := HomalgMap( mat, M, N );;[127X[104X
[4X[25Xgap>[125X [27XIsMorphism( phi );[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27Xphi;[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xker := Kernel( phi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( ker );[127X[104X
[4X[28XZ/< -3 >[128X[104X
[4X[25Xgap>[125X [27XByASmallerPresentation( last );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( ker );[127X[104X
[4X[28XZ/< 3 >[128X[104X
[4X[25Xgap>[125X [27Xiota := KernelEmb( phi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( iota );[127X[104X
[4X[28X[ [ 0, 2, 4 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 1 x 3 matrix[128X[104X
[4X[25Xgap>[125X [27XDefectOfExactness( iota, phi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XByASmallerPresentation( iota );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( iota );[127X[104X
[4X[28X[ [ 2, 0 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 1 x 2 matrix[128X[104X
[4X[25Xgap>[125X [27XPostInverse( iota );[127X[104X
[4X[28Xfail[128X[104X
[4X[32X[104X
[1X10.4-6 DefectOfExactness[101X
[29X[2XDefectOfExactness[102X( [3Xphi[103X, [3Xpsi[103X ) [32X operation
[33X[0;0YWe follow the associative convention for applying maps. For left modules [3Xphi[103X
is applied first and from the right. For right modules [3Xpsi[103X is applied first
and from the left.[133X
[33X[0;0YThe following example also makes use of the natural transformation
[10XKernelEmb[110X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );[127X[104X
[4X[28XZ[128X[104X
[4X[25Xgap>[125X [27XM := HomalgMatrix( "[ 2, 3, 4, 0, 5, 6, 7, 0 ]", 2, 4, ZZ );;[127X[104X
[4X[25Xgap>[125X [27XM := LeftPresentation( M );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XN := HomalgMatrix( "[ 2, 3, 4, 5, 6, 7, 8, 9 ]", 2, 4, ZZ );;[127X[104X
[4X[25Xgap>[125X [27XN := LeftPresentation( N );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xmat := HomalgMatrix( "[ \[127X[104X
[4X[25X>[125X [27X1, 3, 3, 3, \[127X[104X
[4X[25X>[125X [27X0, 3, 10, 17, \[127X[104X
[4X[25X>[125X [27X1, 3, 3, 3, \[127X[104X
[4X[25X>[125X [27X0, 0, 0, 0 \[127X[104X
[4X[25X>[125X [27X]", 4, 4, ZZ );;[127X[104X
[4X[25Xgap>[125X [27Xphi := HomalgMap( mat, M, N );;[127X[104X
[4X[25Xgap>[125X [27XIsMorphism( phi );[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27Xphi;[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xiota := KernelEmb( phi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDefectOfExactness( iota, phi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xhom_iota := Hom( iota ); ## a shorthand for Hom( iota, ZZ );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xhom_phi := Hom( phi ); ## a shorthand for Hom( phi, ZZ );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDefectOfExactness( hom_iota, hom_phi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XByASmallerPresentation( last );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( last );[127X[104X
[4X[28XZ/< 2 >[128X[104X
[4X[32X[104X
[1X10.4-7 Functor_Hom[101X
[29X[2XFunctor_Hom[102X[32X global variable
[33X[0;0YThe bifunctor [10XHom[110X.[133X
[4X[32X Code [32X[104X
[4XInstallValue( Functor_Hom_for_fp_modules,[104X
[4X CreateHomalgFunctor([104X
[4X [ "name", "Hom" ],[104X
[4X [ "category", HOMALG_MODULES.category ],[104X
[4X [ "operation", "Hom" ],[104X
[4X [ "number_of_arguments", 2 ],[104X
[4X [ "1", [ [ "contravariant", "right adjoint", "distinguished" ] ] ],[104X
[4X [ "2", [ [ "covariant", "left exact" ] ] ],[104X
[4X [ "OnObjects", _Functor_Hom_OnModules ],[104X
[4X [ "OnMorphisms", _Functor_Hom_OnMaps ],[104X
[4X [ "MorphismConstructor", HOMALG_MODULES.category.MorphismConstructor ][104X
[4X )[104X
[4X );[104X
[4X[32X[104X
[1X10.4-8 Hom[101X
[29X[2XHom[102X( [3Xo1[103X, [3Xo2[103X ) [32X operation
[33X[0;0Y[3Xo1[103X resp. [3Xo2[103X could be a module, a map, a complex (of modules or of again of
complexes), or a chain morphism.[133X
[33X[0;0YEach generator of a module of homomorphisms is displayed as a matrix of
appropriate dimensions.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );[127X[104X
[4X[28XZ[128X[104X
[4X[25Xgap>[125X [27XM := HomalgMatrix( "[ 2, 3, 4, 5, 6, 7 ]", 2, 3, ZZ );;[127X[104X
[4X[25Xgap>[125X [27XM := LeftPresentation( M );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XN := HomalgMatrix( "[ 2, 3, 4, 5, 6, 7, 8, 9 ]", 2, 4, ZZ );;[127X[104X
[4X[25Xgap>[125X [27XN := LeftPresentation( N );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xmat := HomalgMatrix( "[ \[127X[104X
[4X[25X>[125X [27X1, 0, -3, -6, \[127X[104X
[4X[25X>[125X [27X0, 1, 6, 11, \[127X[104X
[4X[25X>[125X [27X1, 0, -3, -6 \[127X[104X
[4X[25X>[125X [27X]", 3, 4, ZZ );;[127X[104X
[4X[25Xgap>[125X [27Xphi := HomalgMap( mat, M, N );;[127X[104X
[4X[25Xgap>[125X [27XIsMorphism( phi );[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27Xphi;[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xpsi := Hom( phi, M );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XByASmallerPresentation( psi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( psi );[127X[104X
[4X[28X[ [ 1, 1, 0, 1 ],[128X[104X
[4X[28X [ 2, 2, 0, 0 ],[128X[104X
[4X[28X [ 0, 0, 6, 10 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 3 x 4 matrix[128X[104X
[4X[25Xgap>[125X [27XhomNM := Source( psi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XIsIdenticalObj( homNM, Hom( N, M ) ); ## the caching at work[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XhomMM := Range( psi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XIsIdenticalObj( homMM, Hom( M, M ) ); ## the caching at work[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XDisplay( homNM );[127X[104X
[4X[28XZ/< 3 > + Z/< 3 > + Z^(2 x 1)[128X[104X
[4X[25Xgap>[125X [27XDisplay( homMM );[127X[104X
[4X[28XZ/< 3 > + Z/< 3 > + Z^(1 x 1)[128X[104X
[4X[25Xgap>[125X [27XIsMonomorphism( psi );[127X[104X
[4X[28Xfalse[128X[104X
[4X[25Xgap>[125X [27XIsEpimorphism( psi );[127X[104X
[4X[28Xfalse[128X[104X
[4X[25Xgap>[125X [27XGeneratorsOfModule( homMM );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( last );[127X[104X
[4X[28X[ [ 0, 0, 0 ],[128X[104X
[4X[28X [ 0, 1, 2 ],[128X[104X
[4X[28X [ 0, 0, 0 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 3 x 3 matrix[128X[104X
[4X[28X[128X[104X
[4X[28X[ [ 0, 2, 4 ],[128X[104X
[4X[28X [ 0, 0, 0 ],[128X[104X
[4X[28X [ 0, 2, 4 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 3 x 3 matrix[128X[104X
[4X[28X[128X[104X
[4X[28X[ [ 0, 1, 3 ],[128X[104X
[4X[28X [ 0, 0, -2 ],[128X[104X
[4X[28X [ 0, 1, 3 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 3 x 3 matrix[128X[104X
[4X[28X[128X[104X
[4X[28Xa set of 3 generators given by the the above matrices[128X[104X
[4X[25Xgap>[125X [27XGeneratorsOfModule( homNM );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( last );[127X[104X
[4X[28X[ [ 0, 1, 2 ],[128X[104X
[4X[28X [ 0, 1, 2 ],[128X[104X
[4X[28X [ 0, 1, 2 ],[128X[104X
[4X[28X [ 0, 0, 0 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 4 x 3 matrix[128X[104X
[4X[28X[128X[104X
[4X[28X[ [ 0, 1, 2 ],[128X[104X
[4X[28X [ 0, 0, 0 ],[128X[104X
[4X[28X [ 0, 0, 0 ],[128X[104X
[4X[28X [ 0, 2, 4 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 4 x 3 matrix[128X[104X
[4X[28X[128X[104X
[4X[28X[ [ 0, 0, -3 ],[128X[104X
[4X[28X [ 0, 0, 7 ],[128X[104X
[4X[28X [ 0, 0, -5 ],[128X[104X
[4X[28X [ 0, 0, 1 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 4 x 3 matrix[128X[104X
[4X[28X[128X[104X
[4X[28X[ [ 0, 1, -3 ],[128X[104X
[4X[28X [ 0, 0, 12 ],[128X[104X
[4X[28X [ 0, 0, -9 ],[128X[104X
[4X[28X [ 0, 2, 6 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 4 x 3 matrix[128X[104X
[4X[28X[128X[104X
[4X[28Xa set of 4 generators given by the the above matrices[128X[104X
[4X[32X[104X
[33X[0;0YIf for example the source [22XN[122X gets a new presentation, you will see the effect
on the generators:[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XByASmallerPresentation( N );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XGeneratorsOfModule( homNM );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( last );[127X[104X
[4X[28X[ [ 0, 3, 6 ],[128X[104X
[4X[28X [ 0, 1, 2 ],[128X[104X
[4X[28X [ 0, 0, 0 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 3 x 3 matrix[128X[104X
[4X[28X[128X[104X
[4X[28X[ [ 0, 9, 18 ],[128X[104X
[4X[28X [ 0, 0, 0 ],[128X[104X
[4X[28X [ 0, 2, 4 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 3 x 3 matrix[128X[104X
[4X[28X[128X[104X
[4X[28X[ [ 0, 0, 0 ],[128X[104X
[4X[28X [ 0, 0, -5 ],[128X[104X
[4X[28X [ 0, 0, 1 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 3 x 3 matrix[128X[104X
[4X[28X[128X[104X
[4X[28X[ [ 0, 9, 18 ],[128X[104X
[4X[28X [ 0, 0, -9 ],[128X[104X
[4X[28X [ 0, 2, 6 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 3 x 3 matrix[128X[104X
[4X[28X[128X[104X
[4X[28Xa set of 4 generators given by the the above matrices[128X[104X
[4X[32X[104X
[33X[0;0YNow we compute a certain natural filtration on [10XHom[110X[22X(M,M)[122X:[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XdM := Resolution( M );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XhMM := Hom( dM, dM );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XBMM := HomalgBicomplex( hMM );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XII_E := SecondSpectralSequenceWithFiltration( BMM );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( II_E );[127X[104X
[4X[28XThe associated transposed spectral sequence:[128X[104X
[4X[28X[128X[104X
[4X[28Xa cohomological spectral sequence at bidegrees[128X[104X
[4X[28X[ [ 0 .. 1 ], [ -1 .. 0 ] ][128X[104X
[4X[28X---------[128X[104X
[4X[28XLevel 0:[128X[104X
[4X[28X[128X[104X
[4X[28X * *[128X[104X
[4X[28X * *[128X[104X
[4X[28X---------[128X[104X
[4X[28XLevel 1:[128X[104X
[4X[28X[128X[104X
[4X[28X * *[128X[104X
[4X[28X . .[128X[104X
[4X[28X---------[128X[104X
[4X[28XLevel 2:[128X[104X
[4X[28X[128X[104X
[4X[28X s s[128X[104X
[4X[28X . .[128X[104X
[4X[28X[128X[104X
[4X[28XNow the spectral sequence of the bicomplex:[128X[104X
[4X[28X[128X[104X
[4X[28Xa cohomological spectral sequence at bidegrees[128X[104X
[4X[28X[ [ -1 .. 0 ], [ 0 .. 1 ] ][128X[104X
[4X[28X---------[128X[104X
[4X[28XLevel 0:[128X[104X
[4X[28X[128X[104X
[4X[28X * *[128X[104X
[4X[28X * *[128X[104X
[4X[28X---------[128X[104X
[4X[28XLevel 1:[128X[104X
[4X[28X[128X[104X
[4X[28X * *[128X[104X
[4X[28X * *[128X[104X
[4X[28X---------[128X[104X
[4X[28XLevel 2:[128X[104X
[4X[28X[128X[104X
[4X[28X s s[128X[104X
[4X[28X . s[128X[104X
[4X[25Xgap>[125X [27Xfilt := FiltrationBySpectralSequence( II_E );[127X[104X
[4X[28X[128X[104X
[4X[28X 0: [128X[104X
[4X[28Xof[128X[104X
[4X[28X>[128X[104X
[4X[25Xgap>[125X [27XByASmallerPresentation( filt );[127X[104X
[4X[28X[128X[104X
[4X[28X 0: [128X[104X
[4X[28Xof[128X[104X
[4X[28X>[128X[104X
[4X[25Xgap>[125X [27XDisplay( filt );[127X[104X
[4X[28XDegree -1:[128X[104X
[4X[28X[128X[104X
[4X[28XZ/< 3 >[128X[104X
[4X[28X----------[128X[104X
[4X[28XDegree 0:[128X[104X
[4X[28X[128X[104X
[4X[28XZ/< 3 > + Z^(1 x 1)[128X[104X
[4X[25Xgap>[125X [27XDisplay( homMM );[127X[104X
[4X[28XZ/< 3 > + Z/< 3 > + Z^(1 x 1)[128X[104X
[4X[32X[104X
[1X10.4-9 Functor_TensorProduct[101X
[29X[2XFunctor_TensorProduct[102X[32X global variable
[33X[0;0YThe tensor product bifunctor.[133X
[4X[32X Code [32X[104X
[4XInstallValue( Functor_TensorProduct_for_fp_modules,[104X
[4X CreateHomalgFunctor([104X
[4X [ "name", "TensorProduct" ],[104X
[4X [ "category", HOMALG_MODULES.category ],[104X
[4X [ "operation", "TensorProductOp" ],[104X
[4X [ "number_of_arguments", 2 ],[104X
[4X [ "1", [ [ "covariant", "left adjoint", "distinguished" ] ] ],[104X
[4X [ "2", [ [ "covariant", "left adjoint" ] ] ],[104X
[4X [ "OnObjects", _Functor_TensorProduct_OnModules ],[104X
[4X [ "OnMorphisms", _Functor_TensorProduct_OnMaps ],[104X
[4X [ "MorphismConstructor", HOMALG_MODULES.category.MorphismConstructor ][104X
[4X )[104X
[4X );[104X
[4X[32X[104X
[1X10.4-10 TensorProduct[101X
[29X[2XTensorProduct[102X( [3Xo1[103X, [3Xo2[103X ) [32X operation
[29X[2X\*[102X( [3Xo1[103X, [3Xo2[103X ) [32X operation
[33X[0;0Y[3Xo1[103X resp. [3Xo2[103X could be a module, a map, a complex (of modules or of again of
complexes), or a chain morphism.[133X
[33X[0;0YThe symbol [10X*[110X is a shorthand for several operations associated with the
functor [10XFunctor_TensorProduct_for_fp_modules[110X installed under the name
[10XTensorProduct[110X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );[127X[104X
[4X[28XZ[128X[104X
[4X[25Xgap>[125X [27XM := HomalgMatrix( "[ 2, 3, 4, 5, 6, 7 ]", 2, 3, ZZ );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XM := LeftPresentation( M );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XN := HomalgMatrix( "[ 2, 3, 4, 5, 6, 7, 8, 9 ]", 2, 4, ZZ );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XN := LeftPresentation( N );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xmat := HomalgMatrix( "[ \[127X[104X
[4X[25X>[125X [27X1, 0, -3, -6, \[127X[104X
[4X[25X>[125X [27X0, 1, 6, 11, \[127X[104X
[4X[25X>[125X [27X1, 0, -3, -6 \[127X[104X
[4X[25X>[125X [27X]", 3, 4, ZZ );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xphi := HomalgMap( mat, M, N );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XIsMorphism( phi );[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27Xphi;[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XL := Hom( ZZ, M );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XByASmallerPresentation( L );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( L );[127X[104X
[4X[28XZ/< 3 > + Z^(1 x 1)[128X[104X
[4X[25Xgap>[125X [27XL;[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xpsi := phi * L;[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XByASmallerPresentation( psi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( psi );[127X[104X
[4X[28X[ [ 0, 0, 1, 1 ],[128X[104X
[4X[28X [ 0, 0, 8, 1 ],[128X[104X
[4X[28X [ 0, 0, 0, -2 ],[128X[104X
[4X[28X [ 0, 0, 0, 2 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 4 x 4 matrix[128X[104X
[4X[25Xgap>[125X [27XML := Source( psi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XIsIdenticalObj( ML, M * L ); ## the caching at work[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XNL := Range( psi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XIsIdenticalObj( NL, N * L ); ## the caching at work[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XDisplay( ML );[127X[104X
[4X[28XZ/< 3 > + Z/< 3 > + Z/< 3 > + Z^(1 x 1)[128X[104X
[4X[25Xgap>[125X [27XDisplay( NL );[127X[104X
[4X[28XZ/< 3 > + Z/< 12 > + Z^(2 x 1)[128X[104X
[4X[32X[104X
[33X[0;0YNow we compute a certain natural filtration on the tensor product [22XM[122X[10X*[110X[22XL[122X:[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XP := Resolution( M );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XGP := Hom( P );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XCE := Resolution( GP );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XFCE := Hom( CE, L );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XBC := HomalgBicomplex( FCE );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XII_E := SecondSpectralSequenceWithFiltration( BC );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( II_E );[127X[104X
[4X[28XThe associated transposed spectral sequence:[128X[104X
[4X[28X[128X[104X
[4X[28Xa homological spectral sequence at bidegrees[128X[104X
[4X[28X[ [ 0 .. 1 ], [ -1 .. 0 ] ][128X[104X
[4X[28X---------[128X[104X
[4X[28XLevel 0:[128X[104X
[4X[28X[128X[104X
[4X[28X * *[128X[104X
[4X[28X * *[128X[104X
[4X[28X---------[128X[104X
[4X[28XLevel 1:[128X[104X
[4X[28X[128X[104X
[4X[28X * *[128X[104X
[4X[28X . .[128X[104X
[4X[28X---------[128X[104X
[4X[28XLevel 2:[128X[104X
[4X[28X[128X[104X
[4X[28X s s[128X[104X
[4X[28X . .[128X[104X
[4X[28X[128X[104X
[4X[28XNow the spectral sequence of the bicomplex:[128X[104X
[4X[28X[128X[104X
[4X[28Xa homological spectral sequence at bidegrees[128X[104X
[4X[28X[ [ -1 .. 0 ], [ 0 .. 1 ] ][128X[104X
[4X[28X---------[128X[104X
[4X[28XLevel 0:[128X[104X
[4X[28X[128X[104X
[4X[28X * *[128X[104X
[4X[28X * *[128X[104X
[4X[28X---------[128X[104X
[4X[28XLevel 1:[128X[104X
[4X[28X[128X[104X
[4X[28X * *[128X[104X
[4X[28X . s[128X[104X
[4X[28X---------[128X[104X
[4X[28XLevel 2:[128X[104X
[4X[28X[128X[104X
[4X[28X s s[128X[104X
[4X[28X . s[128X[104X
[4X[25Xgap>[125X [27Xfilt := FiltrationBySpectralSequence( II_E );[127X[104X
[4X[28X[128X[104X
[4X[28X -1: [128X[104X
[4X[28Xof[128X[104X
[4X[28X>[128X[104X
[4X[25Xgap>[125X [27XByASmallerPresentation( filt );[127X[104X
[4X[28X[128X[104X
[4X[28X -1: [128X[104X
[4X[28Xof[128X[104X
[4X[28X>[128X[104X
[4X[25Xgap>[125X [27XDisplay( filt );[127X[104X
[4X[28XDegree 0:[128X[104X
[4X[28X[128X[104X
[4X[28XZ/< 3 > + Z^(1 x 1)[128X[104X
[4X[28X----------[128X[104X
[4X[28XDegree -1:[128X[104X
[4X[28X[128X[104X
[4X[28XZ/< 3 > + Z/< 3 >[128X[104X
[4X[25Xgap>[125X [27XDisplay( ML );[127X[104X
[4X[28XZ/< 3 > + Z/< 3 > + Z/< 3 > + Z^(1 x 1)[128X[104X
[4X[32X[104X
[1X10.4-11 Functor_Ext[101X
[29X[2XFunctor_Ext[102X[32X global variable
[33X[0;0YThe bifunctor [10XExt[110X.[133X
[33X[0;0YBelow is the only [13Xspecific[113X line of code used to define
[10XFunctor_Ext_for_fp_modules[110X and all the different operations [10XExt[110X in [5Xhomalg[105X.[133X
[4X[32X Code [32X[104X
[4XRightSatelliteOfCofunctor( Functor_Hom_for_fp_modules, "Ext" );[104X
[4X[32X[104X
[1X10.4-12 Ext[101X
[29X[2XExt[102X( [[3Xc[103X, ][3Xo1[103X, [3Xo2[103X[, [3Xstr[103X] ) [32X operation
[33X[0;0YCompute the [3Xc[103X-th extension object of [3Xo1[103X with [3Xo2[103X where [3Xc[103X is a nonnegative
integer and [3Xo1[103X resp. [3Xo2[103X could be a module, a map, a complex (of modules or
of again of complexes), or a chain morphism. If [3Xstr[103X=[21Xa[121X then the
(cohomologically) graded object [22XExt^i([122X[3Xo1[103X,[3Xo2[103X[22X)[122X for [22X0 ≤ i ≤[122X[3Xc[103X is computed. If
neither [3Xc[103X nor [3Xstr[103X is specified then the cohomologically graded object
[22XExt^i([122X[3Xo1[103X,[3Xo2[103X[22X)[122X for [22X0 ≤ i ≤ d[122X is computed, where [22Xd[122X is the length of the
internally computed free resolution of [3Xo1[103X.[133X
[33X[0;0YEach generator of a module of extensions is displayed as a matrix of
appropriate dimensions.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );[127X[104X
[4X[28XZ[128X[104X
[4X[25Xgap>[125X [27XM := HomalgMatrix( "[ 2, 3, 4, 5, 6, 7 ]", 2, 3, ZZ );;[127X[104X
[4X[25Xgap>[125X [27XM := LeftPresentation( M );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XN := TorsionObject( M );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xiota := TorsionObjectEmb( M );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xpsi := Ext( 1, iota, N );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XByASmallerPresentation( psi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( psi );[127X[104X
[4X[28X[ [ 2 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 1 x 1 matrix[128X[104X
[4X[25Xgap>[125X [27XextNN := Range( psi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XIsIdenticalObj( extNN, Ext( 1, N, N ) ); ## the caching at work[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XextMN := Source( psi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XIsIdenticalObj( extMN, Ext( 1, M, N ) ); ## the caching at work[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XDisplay( extNN );[127X[104X
[4X[28XZ/< 3 >[128X[104X
[4X[25Xgap>[125X [27XDisplay( extMN );[127X[104X
[4X[28XZ/< 3 >[128X[104X
[4X[32X[104X
[1X10.4-13 Functor_Tor[101X
[29X[2XFunctor_Tor[102X[32X global variable
[33X[0;0YThe bifunctor [10XTor[110X.[133X
[33X[0;0YBelow is the only [13Xspecific[113X line of code used to define
[10XFunctor_Tor_for_fp_modules[110X and all the different operations [10XTor[110X in [5Xhomalg[105X.[133X
[4X[32X Code [32X[104X
[4XLeftSatelliteOfFunctor( Functor_TensorProduct_for_fp_modules, "Tor" );[104X
[4X[32X[104X
[1X10.4-14 Tor[101X
[29X[2XTor[102X( [[3Xc[103X, ][3Xo1[103X, [3Xo2[103X[, [3Xstr[103X] ) [32X operation
[33X[0;0YCompute the [3Xc[103X-th torsion object of [3Xo1[103X with [3Xo2[103X where [3Xc[103X is a nonnegative
integer and [3Xo1[103X resp. [3Xo2[103X could be a module, a map, a complex (of modules or
of again of complexes), or a chain morphism. If [3Xstr[103X=[21Xa[121X then the
(cohomologically) graded object [22XTor_i([122X[3Xo1[103X,[3Xo2[103X[22X)[122X for [22X0 ≤ i ≤[122X[3Xc[103X is computed. If
neither [3Xc[103X nor [3Xstr[103X is specified then the cohomologically graded object
[22XTor_i([122X[3Xo1[103X,[3Xo2[103X[22X)[122X for [22X0 ≤ i ≤ d[122X is computed, where [22Xd[122X is the length of the
internally computed free resolution of [3Xo1[103X.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );[127X[104X
[4X[28XZ[128X[104X
[4X[25Xgap>[125X [27XM := HomalgMatrix( "[ 2, 3, 4, 5, 6, 7 ]", 2, 3, ZZ );;[127X[104X
[4X[25Xgap>[125X [27XM := LeftPresentation( M );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XN := TorsionObject( M );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xiota := TorsionObjectEmb( M );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xpsi := Tor( 1, iota, N );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XByASmallerPresentation( psi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( psi );[127X[104X
[4X[28X[ [ 1 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 1 x 1 matrix[128X[104X
[4X[25Xgap>[125X [27XtorNN := Source( psi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XIsIdenticalObj( torNN, Tor( 1, N, N ) ); ## the caching at work[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XtorMN := Range( psi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XIsIdenticalObj( torMN, Tor( 1, M, N ) ); ## the caching at work[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XDisplay( torNN );[127X[104X
[4X[28XZ/< 3 >[128X[104X
[4X[25Xgap>[125X [27XDisplay( torMN );[127X[104X
[4X[28XZ/< 3 >[128X[104X
[4X[32X[104X
[1X10.4-15 Functor_RHom[101X
[29X[2XFunctor_RHom[102X[32X global variable
[33X[0;0YThe bifunctor [10XRHom[110X.[133X
[33X[0;0YBelow is the only [13Xspecific[113X line of code used to define
[10XFunctor_RHom_for_fp_modules[110X and all the different operations [10XRHom[110X in [5Xhomalg[105X.[133X
[4X[32X Code [32X[104X
[4XRightDerivedCofunctor( Functor_Hom_for_fp_modules );[104X
[4X[32X[104X
[1X10.4-16 RHom[101X
[29X[2XRHom[102X( [[3Xc[103X, ][3Xo1[103X, [3Xo2[103X[, [3Xstr[103X] ) [32X operation
[33X[0;0YCompute the [3Xc[103X-th extension object of [3Xo1[103X with [3Xo2[103X where [3Xc[103X is a nonnegative
integer and [3Xo1[103X resp. [3Xo2[103X could be a module, a map, a complex (of modules or
of again of complexes), or a chain morphism. The string [3Xstr[103X may take
different values:[133X
[30X [33X[0;6YIf [3Xstr[103X=[21Xa[121X then [22XR^i Hom([122X[3Xo1[103X,[3Xo2[103X[22X)[122X for [22X0 ≤ i ≤[122X[3Xc[103X is computed.[133X
[30X [33X[0;6YIf [3Xstr[103X=[21Xc[121X then the [3Xc[103X-th connecting homomorphism with respect to the
short exact sequence [3Xo1[103X is computed.[133X
[30X [33X[0;6YIf [3Xstr[103X=[21Xt[121X then the exact triangle upto cohomological degree [3Xc[103X with
respect to the short exact sequence [3Xo1[103X is computed.[133X
[33X[0;0YIf neither [3Xc[103X nor [3Xstr[103X is specified then the cohomologically graded object [22XR^i
Hom([122X[3Xo1[103X,[3Xo2[103X[22X)[122X for [22X0 ≤ i ≤ d[122X is computed, where [22Xd[122X is the length of the
internally computed free resolution of [3Xo1[103X.[133X
[33X[0;0YEach generator of a module of derived homomorphisms is displayed as a matrix
of appropriate dimensions.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );[127X[104X
[4X[28XZ[128X[104X
[4X[25Xgap>[125X [27Xm := HomalgMatrix( [ [ 8, 0 ], [ 0, 2 ] ], ZZ );;[127X[104X
[4X[25Xgap>[125X [27XM := LeftPresentation( m );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( M );[127X[104X
[4X[28XZ/< 8 > + Z/< 2 >[128X[104X
[4X[25Xgap>[125X [27XM;[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xa := HomalgMatrix( [ [ 2, 0 ] ], ZZ );;[127X[104X
[4X[25Xgap>[125X [27Xalpha := HomalgMap( a, "free", M );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xpi := CokernelEpi( alpha );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( pi );[127X[104X
[4X[28X[ [ 1, 0 ],[128X[104X
[4X[28X [ 0, 1 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 2 x 2 matrix[128X[104X
[4X[25Xgap>[125X [27Xiota := KernelEmb( pi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( iota );[127X[104X
[4X[28X[ [ 2, 0 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 1 x 2 matrix[128X[104X
[4X[25Xgap>[125X [27XN := Kernel( pi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( N );[127X[104X
[4X[28XZ/< 4 >[128X[104X
[4X[25Xgap>[125X [27XC := HomalgComplex( pi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XAdd( C, iota );[127X[104X
[4X[25Xgap>[125X [27XByASmallerPresentation( C );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( C );[127X[104X
[4X[28X-------------------------[128X[104X
[4X[28Xat homology degree: 2[128X[104X
[4X[28XZ/< 4 >[128X[104X
[4X[28X-------------------------[128X[104X
[4X[28X[ [ 0, 6 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 1 x 2 matrix[128X[104X
[4X[28X------------v------------[128X[104X
[4X[28Xat homology degree: 1[128X[104X
[4X[28XZ/< 2 > + Z/< 8 >[128X[104X
[4X[28X-------------------------[128X[104X
[4X[28X[ [ 0, 1 ],[128X[104X
[4X[28X [ 1, 1 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 2 x 2 matrix[128X[104X
[4X[28X------------v------------[128X[104X
[4X[28Xat homology degree: 0[128X[104X
[4X[28XZ/< 2 > + Z/< 2 >[128X[104X
[4X[28X-------------------------[128X[104X
[4X[25Xgap>[125X [27XT := RHom( C, N );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XByASmallerPresentation( T );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XL := LongSequence( T );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( L );[127X[104X
[4X[28X-------------------------[128X[104X
[4X[28Xat cohomology degree: 5[128X[104X
[4X[28XZ/< 4 >[128X[104X
[4X[28X------------^------------[128X[104X
[4X[28X[ [ 0, 3 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 1 x 2 matrix[128X[104X
[4X[28X-------------------------[128X[104X
[4X[28Xat cohomology degree: 4[128X[104X
[4X[28XZ/< 2 > + Z/< 4 >[128X[104X
[4X[28X------------^------------[128X[104X
[4X[28X[ [ 0, 1 ],[128X[104X
[4X[28X [ 0, 0 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 2 x 2 matrix[128X[104X
[4X[28X-------------------------[128X[104X
[4X[28Xat cohomology degree: 3[128X[104X
[4X[28XZ/< 2 > + Z/< 2 >[128X[104X
[4X[28X------------^------------[128X[104X
[4X[28X[ [ 1 ],[128X[104X
[4X[28X [ 0 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 2 x 1 matrix[128X[104X
[4X[28X-------------------------[128X[104X
[4X[28Xat cohomology degree: 2[128X[104X
[4X[28XZ/< 4 >[128X[104X
[4X[28X------------^------------[128X[104X
[4X[28X[ [ 0, 2 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 1 x 2 matrix[128X[104X
[4X[28X-------------------------[128X[104X
[4X[28Xat cohomology degree: 1[128X[104X
[4X[28XZ/< 2 > + Z/< 4 >[128X[104X
[4X[28X------------^------------[128X[104X
[4X[28X[ [ 0, 1 ],[128X[104X
[4X[28X [ 2, 0 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 2 x 2 matrix[128X[104X
[4X[28X-------------------------[128X[104X
[4X[28Xat cohomology degree: 0[128X[104X
[4X[28XZ/< 2 > + Z/< 2 >[128X[104X
[4X[28X-------------------------[128X[104X
[4X[25Xgap>[125X [27XIsExactSequence( L );[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XL;[127X[104X
[4X[28X[128X[104X
[4X[32X[104X
[1X10.4-17 Functor_LTensorProduct[101X
[29X[2XFunctor_LTensorProduct[102X[32X global variable
[33X[0;0YThe bifunctor [10XLTensorProduct[110X.[133X
[33X[0;0YBelow is the only [13Xspecific[113X line of code used to define
[10XFunctor_LTensorProduct_for_fp_modules[110X and all the different operations
[10XLTensorProduct[110X in [5Xhomalg[105X.[133X
[4X[32X Code [32X[104X
[4XLeftDerivedFunctor( Functor_TensorProduct_for_fp_modules );[104X
[4X[32X[104X
[1X10.4-18 LTensorProduct[101X
[29X[2XLTensorProduct[102X( [[3Xc[103X, ][3Xo1[103X, [3Xo2[103X[, [3Xstr[103X] ) [32X operation
[33X[0;0YCompute the [3Xc[103X-th torsion object of [3Xo1[103X with [3Xo2[103X where [3Xc[103X is a nonnegative
integer and [3Xo1[103X resp. [3Xo2[103X could be a module, a map, a complex (of modules or
of again of complexes), or a chain morphism. The string [3Xstr[103X may take
different values:[133X
[30X [33X[0;6YIf [3Xstr[103X=[21Xa[121X then [22XL_i TensorProduct([122X[3Xo1[103X,[3Xo2[103X[22X)[122X for [22X0 ≤ i ≤[122X[3Xc[103X is computed.[133X
[30X [33X[0;6YIf [3Xstr[103X=[21Xc[121X then the [3Xc[103X-th connecting homomorphism with respect to the
short exact sequence [3Xo1[103X is computed.[133X
[30X [33X[0;6YIf [3Xstr[103X=[21Xt[121X then the exact triangle upto cohomological degree [3Xc[103X with
respect to the short exact sequence [3Xo1[103X is computed.[133X
[33X[0;0YIf neither [3Xc[103X nor [3Xstr[103X is specified then the cohomologically graded object [22XL_i
TensorProduct([122X[3Xo1[103X,[3Xo2[103X[22X)[122X for [22X0 ≤ i ≤ d[122X is computed, where [22Xd[122X is the length of the
internally computed free resolution of [3Xo1[103X.[133X
[33X[0;0YEach generator of a module of derived homomorphisms is displayed as a matrix
of appropriate dimensions.[133X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XZZ := HomalgRingOfIntegers( );[127X[104X
[4X[28XZ[128X[104X
[4X[25Xgap>[125X [27Xm := HomalgMatrix( [ [ 8, 0 ], [ 0, 2 ] ], ZZ );;[127X[104X
[4X[25Xgap>[125X [27XM := LeftPresentation( m );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( M );[127X[104X
[4X[28XZ/< 8 > + Z/< 2 >[128X[104X
[4X[25Xgap>[125X [27XM;[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xa := HomalgMatrix( [ [ 2, 0 ] ], ZZ );;[127X[104X
[4X[25Xgap>[125X [27Xalpha := HomalgMap( a, "free", M );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xpi := CokernelEpi( alpha );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( pi );[127X[104X
[4X[28X[ [ 1, 0 ],[128X[104X
[4X[28X [ 0, 1 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 2 x 2 matrix[128X[104X
[4X[25Xgap>[125X [27Xiota := KernelEmb( pi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( iota );[127X[104X
[4X[28X[ [ 2, 0 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 1 x 2 matrix[128X[104X
[4X[25Xgap>[125X [27XN := Kernel( pi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( N );[127X[104X
[4X[28XZ/< 4 >[128X[104X
[4X[25Xgap>[125X [27XC := HomalgComplex( pi );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XAdd( C, iota );[127X[104X
[4X[25Xgap>[125X [27XByASmallerPresentation( C );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( C );[127X[104X
[4X[28X-------------------------[128X[104X
[4X[28Xat homology degree: 2[128X[104X
[4X[28XZ/< 4 >[128X[104X
[4X[28X-------------------------[128X[104X
[4X[28X[ [ 0, 6 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 1 x 2 matrix[128X[104X
[4X[28X------------v------------[128X[104X
[4X[28Xat homology degree: 1[128X[104X
[4X[28XZ/< 2 > + Z/< 8 >[128X[104X
[4X[28X-------------------------[128X[104X
[4X[28X[ [ 0, 1 ],[128X[104X
[4X[28X [ 1, 1 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 2 x 2 matrix[128X[104X
[4X[28X------------v------------[128X[104X
[4X[28Xat homology degree: 0[128X[104X
[4X[28XZ/< 2 > + Z/< 2 >[128X[104X
[4X[28X-------------------------[128X[104X
[4X[25Xgap>[125X [27XT := LTensorProduct( C, N );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XByASmallerPresentation( T );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XL := LongSequence( T );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( L );[127X[104X
[4X[28X-------------------------[128X[104X
[4X[28Xat homology degree: 5[128X[104X
[4X[28XZ/< 4 >[128X[104X
[4X[28X-------------------------[128X[104X
[4X[28X[ [ 1, 3 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 1 x 2 matrix[128X[104X
[4X[28X------------v------------[128X[104X
[4X[28Xat homology degree: 4[128X[104X
[4X[28XZ/< 2 > + Z/< 4 >[128X[104X
[4X[28X-------------------------[128X[104X
[4X[28X[ [ 0, 1 ],[128X[104X
[4X[28X [ 0, 1 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 2 x 2 matrix[128X[104X
[4X[28X------------v------------[128X[104X
[4X[28Xat homology degree: 3[128X[104X
[4X[28XZ/< 2 > + Z/< 2 >[128X[104X
[4X[28X-------------------------[128X[104X
[4X[28X[ [ 2 ],[128X[104X
[4X[28X [ 0 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 2 x 1 matrix[128X[104X
[4X[28X------------v------------[128X[104X
[4X[28Xat homology degree: 2[128X[104X
[4X[28XZ/< 4 >[128X[104X
[4X[28X-------------------------[128X[104X
[4X[28X[ [ 0, 2 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 1 x 2 matrix[128X[104X
[4X[28X------------v------------[128X[104X
[4X[28Xat homology degree: 1[128X[104X
[4X[28XZ/< 2 > + Z/< 4 >[128X[104X
[4X[28X-------------------------[128X[104X
[4X[28X[ [ 0, 1 ],[128X[104X
[4X[28X [ 1, 1 ] ][128X[104X
[4X[28X[128X[104X
[4X[28Xthe map is currently represented by the above 2 x 2 matrix[128X[104X
[4X[28X------------v------------[128X[104X
[4X[28Xat homology degree: 0[128X[104X
[4X[28XZ/< 2 > + Z/< 2 >[128X[104X
[4X[28X-------------------------[128X[104X
[4X[25Xgap>[125X [27XIsExactSequence( L );[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XL;[127X[104X
[4X[28X[128X[104X
[4X[32X[104X
[1X10.4-19 Functor_HomHom[101X
[29X[2XFunctor_HomHom[102X[32X global variable
[33X[0;0YThe bifunctor [10XHomHom[110X.[133X
[33X[0;0YBelow is the only [13Xspecific[113X line of code used to define
[10XFunctor_HomHom_for_fp_modules[110X and all the different operations [10XHomHom[110X in
[5Xhomalg[105X.[133X
[4X[32X Code [32X[104X
[4XFunctor_Hom_for_fp_modules * Functor_Hom_for_fp_modules;[104X
[4X[32X[104X
[1X10.4-20 Functor_LHomHom[101X
[29X[2XFunctor_LHomHom[102X[32X global variable
[33X[0;0YThe bifunctor [10XLHomHom[110X.[133X
[33X[0;0YBelow is the only [13Xspecific[113X line of code used to define
[10XFunctor_LHomHom_for_fp_modules[110X and all the different operations [10XLHomHom[110X in
[5Xhomalg[105X.[133X
[4X[32X Code [32X[104X
[4XLeftDerivedFunctor( Functor_HomHom_for_fp_modules );[104X
[4X[32X[104X
[1X10.5 [33X[0;0YTool Functors[133X[101X
[1X10.6 [33X[0;0YOther Functors[133X[101X
[1X10.7 [33X[0;0YFunctors: Operations and Functions[133X[101X