  
  [1X4 [33X[0;0YMorphisms[133X[101X
  
  
  [1X4.1 [33X[0;0YMorphisms: Categories and Representations[133X[101X
  
  [1X4.1-1 IsHomalgMorphism[101X
  
  [33X[1;0Y[29X[2XIsHomalgMorphism[102X( [3Xphi[103X ) [32X Category[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YThis  is  the  super  [5XGAP[105X-category  which  will  include  the [5XGAP[105X-categories
  [2XIsHomalgStaticMorphism[102X  ([14X4.1-2[114X)  and  [2XIsHomalgChainMorphism[102X ([14X7.1-1[114X). We need
  this [5XGAP[105X-category to be able to build complexes with *objects* being objects
  of  [5Xhomalg[105X  categories  or  again complexes. We need this GAP-category to be
  able  to  build  chain  morphisms with *morphisms* being morphisms of [5Xhomalg[105X
  categories or again chain morphisms.[133X
  [33X[0;0YCAUTION:  Never  let  [5Xhomalg[105X  morphisms  (which  are  not  endomorphisms) be
  multiplicative elements!![133X
  
  [4X[32X  Code  [32X[104X
    [4XDeclareCategory( "IsHomalgMorphism",[104X
    [4X        IsHomalgStaticObjectOrMorphism and[104X
    [4X        IsAdditiveElementWithInverse );[104X
  [4X[32X[104X
  
  [1X4.1-2 IsHomalgStaticMorphism[101X
  
  [33X[1;0Y[29X[2XIsHomalgStaticMorphism[102X( [3Xphi[103X ) [32X Category[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YThis  is  the  super  [5XGAP[105X-category  which  will  include  the [5XGAP[105X-categories
  [10XIsHomalgMap[110X, etc.[133X
  [33X[0;0YCAUTION:  Never  let  homalg  morphisms  (which  are  not  endomorphisms) be
  multiplicative elements!![133X
  
  [4X[32X  Code  [32X[104X
    [4XDeclareCategory( "IsHomalgStaticMorphism",[104X
    [4X        IsHomalgMorphism );[104X
  [4X[32X[104X
  
  [1X4.1-3 IsHomalgEndomorphism[101X
  
  [33X[1;0Y[29X[2XIsHomalgEndomorphism[102X( [3Xphi[103X ) [32X Category[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YThis  is  the  super  [5XGAP[105X-category  which  will  include  the [5XGAP[105X-categories
  [10XIsHomalgSelfMap[110X,  [2XIsHomalgChainEndomorphism[102X  ([14X7.1-2[114X), etc. be multiplicative
  elements!![133X
  
  [4X[32X  Code  [32X[104X
    [4XDeclareCategory( "IsHomalgEndomorphism",[104X
    [4X        IsHomalgMorphism and[104X
    [4X        IsMultiplicativeElementWithInverse );[104X
  [4X[32X[104X
  
  [1X4.1-4 IsMorphismOfFinitelyGeneratedObjectsRep[101X
  
  [33X[1;0Y[29X[2XIsMorphismOfFinitelyGeneratedObjectsRep[102X( [3Xphi[103X ) [32X Representation[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YThe [5XGAP[105X representation of morphisms of finitley generated [5Xhomalg[105X objects.[133X
  
  [33X[0;0Y(It is a representation of the [5XGAP[105X category [2XIsHomalgMorphism[102X ([14X4.1-1[114X).)[133X
  
  [4X[32X  Code  [32X[104X
    [4XDeclareRepresentation( "IsMorphismOfFinitelyGeneratedObjectsRep",[104X
    [4X        IsHomalgMorphism,[104X
    [4X        [ ] );[104X
  [4X[32X[104X
  
  [1X4.1-5 IsStaticMorphismOfFinitelyGeneratedObjectsRep[101X
  
  [33X[1;0Y[29X[2XIsStaticMorphismOfFinitelyGeneratedObjectsRep[102X( [3Xphi[103X ) [32X Representation[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YThe  [5XGAP[105X  representation  of  static  morphisms of finitley generated [5Xhomalg[105X
  static objects.[133X
  
  [33X[0;0Y(It  is a representation of the [5XGAP[105X category [2XIsHomalgStaticMorphism[102X ([14X4.1-2[114X),
  which     is    a    subrepresentation    of    the    [5XGAP[105X    representation
  [2XIsMorphismOfFinitelyGeneratedObjectsRep[102X ([14X4.1-4[114X).)[133X
  
  [4X[32X  Code  [32X[104X
    [4XDeclareRepresentation( "IsStaticMorphismOfFinitelyGeneratedObjectsRep",[104X
    [4X        IsHomalgStaticMorphism and[104X
    [4X        IsMorphismOfFinitelyGeneratedObjectsRep,[104X
    [4X        [ ] );[104X
  [4X[32X[104X
  
  
  [1X4.2 [33X[0;0YMorphisms: Constructors[133X[101X
  
  
  [1X4.3 [33X[0;0YMorphisms: Properties[133X[101X
  
  [1X4.3-1 IsMorphism[101X
  
  [33X[1;0Y[29X[2XIsMorphism[102X( [3Xphi[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0Y[10XIsMorphism[110X=[10Xtrue[110X means one of the following:[133X
  
  [30X    [33X[0;6YThe property method [10XIsMorphism[110X([3Xphi[103X) was explicitly invoked by the user
        and it returned [10Xtrue[110X, where prior to the invocation [10XHasIsMorphism[110X([3Xphi[103X)
        was  [10Xfalse[110X.  The  method  is  meant to check the integrity of the data
        structure  at  the  time  of  it invocation. What this precisely means
        depends on the specific [5Xhomalg[105X-based package.[133X
  
  [30X    [33X[0;6YThe user has explicitly [10XSetIsMorphism[110X([3Xphi[103X, [10Xtrue[110X).[133X
  
  [30X    [33X[0;6YThe morphism [3Xphi[103X is output of a categorical procedure where [10XIsMorphism[110X
        has become [10Xtrue[110X for all morphisms in the input.[133X
  
  [30X    [33X[0;6YThe  morphism [3Xphi[103X is output of a categorical procedure which gurantees
        the  integrity  of the data structure of its output independent of its
        input.[133X
  
  [1X4.3-2 IsGeneralizedMorphismWithFullDomain[101X
  
  [33X[1;0Y[29X[2XIsGeneralizedMorphismWithFullDomain[102X( [3Xphi[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YCheck if [3Xphi[103X is a generalized morphism.[133X
  
  [1X4.3-3 IsGeneralizedEpimorphism[101X
  
  [33X[1;0Y[29X[2XIsGeneralizedEpimorphism[102X( [3Xphi[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YCheck if [3Xphi[103X is a generalized epimorphism.[133X
  
  [1X4.3-4 IsGeneralizedMonomorphism[101X
  
  [33X[1;0Y[29X[2XIsGeneralizedMonomorphism[102X( [3Xphi[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YCheck if [3Xphi[103X is a generalized monomorphism.[133X
  
  [1X4.3-5 IsGeneralizedIsomorphism[101X
  
  [33X[1;0Y[29X[2XIsGeneralizedIsomorphism[102X( [3Xphi[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YCheck if [3Xphi[103X is a generalized isomorphism.[133X
  
  [1X4.3-6 IsOne[101X
  
  [33X[1;0Y[29X[2XIsOne[102X( [3Xphi[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YCheck if the [5Xhomalg[105X morphism [3Xphi[103X is the identity morphism.[133X
  
  [1X4.3-7 IsIdempotent[101X
  
  [33X[1;0Y[29X[2XIsIdempotent[102X( [3Xphi[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YCheck if the [5Xhomalg[105X morphism [3Xphi[103X is an automorphism.[133X
  
  [1X4.3-8 IsMonomorphism[101X
  
  [33X[1;0Y[29X[2XIsMonomorphism[102X( [3Xphi[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YCheck if the [5Xhomalg[105X morphism [3Xphi[103X is a monomorphism.[133X
  
  [1X4.3-9 IsEpimorphism[101X
  
  [33X[1;0Y[29X[2XIsEpimorphism[102X( [3Xphi[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YCheck if the [5Xhomalg[105X morphism [3Xphi[103X is an epimorphism.[133X
  
  [1X4.3-10 IsSplitMonomorphism[101X
  
  [33X[1;0Y[29X[2XIsSplitMonomorphism[102X( [3Xphi[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YCheck if the [5Xhomalg[105X morphism [3Xphi[103X is a split monomorphism.[133X
  
  [1X4.3-11 IsSplitEpimorphism[101X
  
  [33X[1;0Y[29X[2XIsSplitEpimorphism[102X( [3Xphi[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YCheck if the [5Xhomalg[105X morphism [3Xphi[103X is a split epimorphism.[133X
  
  [1X4.3-12 IsIsomorphism[101X
  
  [33X[1;0Y[29X[2XIsIsomorphism[102X( [3Xphi[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YCheck if the [5Xhomalg[105X morphism [3Xphi[103X is an isomorphism.[133X
  
  [1X4.3-13 IsAutomorphism[101X
  
  [33X[1;0Y[29X[2XIsAutomorphism[102X( [3Xphi[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YCheck if the [5Xhomalg[105X morphism [3Xphi[103X is an automorphism.[133X
  
  
  [1X4.4 [33X[0;0YMorphisms: Attributes[133X[101X
  
  [1X4.4-1 Source[101X
  
  [33X[1;0Y[29X[2XSource[102X( [3Xphi[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya [5Xhomalg[105X object[133X
  
  [33X[0;0YThe source of the [5Xhomalg[105X morphism [3Xphi[103X.[133X
  
  [1X4.4-2 Range[101X
  
  [33X[1;0Y[29X[2XRange[102X( [3Xphi[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya [5Xhomalg[105X object[133X
  
  [33X[0;0YThe target (range) of the [5Xhomalg[105X morphism [3Xphi[103X.[133X
  
  [1X4.4-3 CokernelEpi[101X
  
  [33X[1;0Y[29X[2XCokernelEpi[102X( [3Xphi[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya [5Xhomalg[105X morphism[133X
  
  [33X[0;0YThe natural epimorphism from the [10XRange[110X[22X([122X[3Xphi[103X[22X)[122X onto the [10XCokernel[110X[22X([122X[3Xphi[103X[22X)[122X.[133X
  
  [1X4.4-4 CokernelNaturalGeneralizedIsomorphism[101X
  
  [33X[1;0Y[29X[2XCokernelNaturalGeneralizedIsomorphism[102X( [3Xphi[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya [5Xhomalg[105X morphism[133X
  
  [33X[0;0YThe   natural  generalized  isomorphism  from  the  [10XCokernel[110X[22X([122X[3Xphi[103X[22X)[122X  onto  the
  [10XRange[110X[22X([122X[3Xphi[103X[22X)[122X.[133X
  
  [1X4.4-5 KernelSubobject[101X
  
  [33X[1;0Y[29X[2XKernelSubobject[102X( [3Xphi[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya [5Xhomalg[105X subobject[133X
  
  [33X[0;0YThis  constructor  returns  the  finitely  generated  kernel  of  the [5Xhomalg[105X
  morphism [3Xphi[103X as a subobject of the [5Xhomalg[105X object [10XSource[110X([3Xphi[103X) with generators
  given by the syzygies of [3Xphi[103X.[133X
  
  [1X4.4-6 KernelEmb[101X
  
  [33X[1;0Y[29X[2XKernelEmb[102X( [3Xphi[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya [5Xhomalg[105X morphism[133X
  
  [33X[0;0YThe natural embedding of the [10XKernel[110X[22X([122X[3Xphi[103X[22X)[122X into the [10XSource[110X[22X([122X[3Xphi[103X[22X)[122X.[133X
  
  [1X4.4-7 ImageSubobject[101X
  
  [33X[1;0Y[29X[2XImageSubobject[102X( [3Xphi[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya [5Xhomalg[105X subobject[133X
  
  [33X[0;0YThis constructor returns the finitely generated image of the [5Xhomalg[105X morphism
  [3Xphi[103X  as a subobject of the [5Xhomalg[105X object [10XRange[110X([3Xphi[103X) with generators given by
  [3Xphi[103X applied to the generators of its source object.[133X
  
  [1X4.4-8 ImageObjectEmb[101X
  
  [33X[1;0Y[29X[2XImageObjectEmb[102X( [3Xphi[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya [5Xhomalg[105X morphism[133X
  
  [33X[0;0YThe natural embedding of the [10XImageObject[110X[22X([122X[3Xphi[103X[22X)[122X into the [10XRange[110X[22X([122X[3Xphi[103X[22X)[122X.[133X
  
  [1X4.4-9 ImageObjectEpi[101X
  
  [33X[1;0Y[29X[2XImageObjectEpi[102X( [3Xphi[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya [5Xhomalg[105X morphism[133X
  
  [33X[0;0YThe natural epimorphism from the [10XSource[110X[22X([122X[3Xphi[103X[22X)[122X onto the [10XImageObject[110X[22X([122X[3Xphi[103X[22X)[122X.[133X
  
  [1X4.4-10 MorphismAid[101X
  
  [33X[1;0Y[29X[2XMorphismAid[102X( [3Xphi[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya [5Xhomalg[105X morphism[133X
  
  [33X[0;0YThe morphism aid map of a true generalized map.[133X
  [33X[0;0Y(no method installed)[133X
  
  [1X4.4-11 InverseOfGeneralizedMorphismWithFullDomain[101X
  
  [33X[1;0Y[29X[2XInverseOfGeneralizedMorphismWithFullDomain[102X( [3Xphi[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya [5Xhomalg[105X morphism[133X
  
  [33X[0;0YThe generalized inverse of the epimorphism [3Xphi[103X (cf. [Bar09, Cor. 4.8])).[133X
  
  [1X4.4-12 DegreeOfMorphism[101X
  
  [33X[1;0Y[29X[2XDegreeOfMorphism[102X( [3Xphi[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Yan integer[133X
  
  [33X[0;0YThe degree of the morphism [3Xphi[103X between graded objects.[133X
  [33X[0;0Y(no method installed)[133X
  
  
  [1X4.5 [33X[0;0YMorphisms: Operations and Functions[133X[101X
  
  [1X4.5-1 ByASmallerPresentation[101X
  
  [33X[1;0Y[29X[2XByASmallerPresentation[102X( [3Xphi[103X ) [32X method[133X
  [6XReturns:[106X  [33X[0;10Ya [5Xhomalg[105X map[133X
  
  [33X[0;0YIt invokes [10XByASmallerPresentation[110X for [5Xhomalg[105X (static) objects.[133X
  
  [4X[32X  Code  [32X[104X
    [4XInstallMethod( ByASmallerPresentation,[104X
    [4X        "for homalg morphisms",[104X
    [4X        [ IsStaticMorphismOfFinitelyGeneratedObjectsRep ],[104X
    [4X        [104X
    [4X  function( phi )[104X
    [4X    [104X
    [4X    ByASmallerPresentation( Source( phi ) );[104X
    [4X    ByASmallerPresentation( Range( phi ) );[104X
    [4X    [104X
    [4X    return DecideZero( phi );[104X
    [4X    [104X
    [4Xend );[104X
  [4X[32X[104X
  
  [33X[0;0YThis method performs side effects on its argument [3Xphi[103X and returns it.[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<A 2 x 3 matrix over an internal ring>[128X[104X
    [4X[25Xgap>[125X [27XM := LeftPresentation( M );[127X[104X
    [4X[28X<A non-torsion left module presented by 2 relations for 3 generators>[128X[104X
    [4X[25Xgap>[125X [27XN := HomalgMatrix( "[ 2, 3, 4, 5,   6, 7, 8, 9 ]", 2, 4, ZZ );[127X[104X
    [4X[28X<A 2 x 4 matrix over an internal ring>[128X[104X
    [4X[25Xgap>[125X [27XN := LeftPresentation( N );[127X[104X
    [4X[28X<A non-torsion left module presented by 2 relations for 4 generators>[128X[104X
    [4X[25Xgap>[125X [27Xmat := HomalgMatrix( "[ \[127X[104X
    [4X[25X>[125X [27X1, 0, -2, -4, \[127X[104X
    [4X[25X>[125X [27X0, 1,  4,  7, \[127X[104X
    [4X[25X>[125X [27X1, 0, -2, -4  \[127X[104X
    [4X[25X>[125X [27X]", 3, 4, ZZ );[127X[104X
    [4X[28X<A 3 x 4 matrix over an internal ring>[128X[104X
    [4X[25Xgap>[125X [27Xphi := HomalgMap( mat, M, N );[127X[104X
    [4X[28X<A "homomorphism" of left modules>[128X[104X
    [4X[25Xgap>[125X [27XIsMorphism( phi );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xphi;[127X[104X
    [4X[28X<A homomorphism of left modules>[128X[104X
    [4X[25Xgap>[125X [27XDisplay( phi );[127X[104X
    [4X[28X[ [   1,   0,  -2,  -4 ],[128X[104X
    [4X[28X  [   0,   1,   4,   7 ],[128X[104X
    [4X[28X  [   1,   0,  -2,  -4 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[28Xthe map is currently represented by the above 3 x 4 matrix[128X[104X
    [4X[25Xgap>[125X [27XByASmallerPresentation( phi );[127X[104X
    [4X[28X<A non-zero homomorphism of left modules>[128X[104X
    [4X[25Xgap>[125X [27XDisplay( phi );[127X[104X
    [4X[28X[ [   0,   0,   0 ],[128X[104X
    [4X[28X  [   1,  -1,  -2 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[28Xthe map is currently represented by the above 2 x 3 matrix[128X[104X
    [4X[25Xgap>[125X [27XM;[127X[104X
    [4X[28X<A rank 1 left module presented by 1 relation for 2 generators>[128X[104X
    [4X[25Xgap>[125X [27XDisplay( M );[127X[104X
    [4X[28XZ/< 3 > + Z^(1 x 1)[128X[104X
    [4X[25Xgap>[125X [27XN;[127X[104X
    [4X[28X<A rank 2 left module presented by 1 relation for 3 generators>[128X[104X
    [4X[25Xgap>[125X [27XDisplay( N );[127X[104X
    [4X[28XZ/< 4 > + Z^(1 x 2)[128X[104X
  [4X[32X[104X
  
