  
  [1X12 Chain Maps[0X
  
  
  [1X12.1 ChainMaps: Categories and Representations[0X
  
  [1X12.1-1 IsHomalgChainMap[0m
  
  [2X> IsHomalgChainMap( [0X[3Xcm[0X[2X ) ___________________________________________[0XCategory
  [6XReturns:[0X  [10Xtrue[0m or [10Xfalse[0m
  
  The [5XGAP[0m category of [5Xhomalg[0m (co)chain maps.
  
  (It is a subcategory of the [5XGAP[0m category [10XIsHomalgMorphism[0m.)
  
  [1X12.1-2 IsHomalgChainSelfMap[0m
  
  [2X> IsHomalgChainSelfMap( [0X[3Xcm[0X[2X ) _______________________________________[0XCategory
  [6XReturns:[0X  [10Xtrue[0m or [10Xfalse[0m
  
  The [5XGAP[0m category of [5Xhomalg[0m (co)chain self-maps.
  
  (It   is   a   subcategory   of  the  [5XGAP[0m  categories  [10XIsHomalgChainMap[0m  and
  [10XIsHomalgEndomorphism[0m.)
  
  [1X12.1-3 IsChainMapOfFinitelyPresentedObjectsRep[0m
  
  [2X> IsChainMapOfFinitelyPresentedObjectsRep( [0X[3Xc[0X[2X ) _______________[0XRepresentation
  [6XReturns:[0X  [10Xtrue[0m or [10Xfalse[0m
  
  The [5XGAP[0m representation of chain maps of finitley generated [5Xhomalg[0m modules.
  
  (It is a representation of the [5XGAP[0m category [2XIsHomalgChainMap[0m ([14X12.1-1[0m), which
  is      a      subrepresentation      of      the     [5XGAP[0m     representation
  [10XIsMorphismOfFinitelyGeneratedModulesRep[0m.)
  
  [1X12.1-4 IsCochainMapOfFinitelyPresentedObjectsRep[0m
  
  [2X> IsCochainMapOfFinitelyPresentedObjectsRep( [0X[3Xc[0X[2X ) _____________[0XRepresentation
  [6XReturns:[0X  [10Xtrue[0m or [10Xfalse[0m
  
  The [5XGAP[0m representation of cochain maps of finitley generated [5Xhomalg[0m modules.
  
  (It is a representation of the [5XGAP[0m category [2XIsHomalgChainMap[0m ([14X12.1-1[0m), which
  is      a      subrepresentation      of      the     [5XGAP[0m     representation
  [10XIsMorphismOfFinitelyGeneratedModulesRep[0m.)
  
  
  [1X12.2 Chain Maps: Constructors[0X
  
  [1X12.2-1 HomalgChainMap[0m
  
  [2X> HomalgChainMap( [0X[3Xphi[, C][, D][, d][0X[2X ) _____________________________[0Xfunction
  [6XReturns:[0X  a [5Xhomalg[0m chain map
  
  The  constructor  creates  a  (co)chain  map given a source [5Xhomalg[0m (co)chain
  complex  [3XC[0m,  a target [5Xhomalg[0m (co)chain complex [3XD[0m (--> [14X9.2[0m), and a [5Xhomalg[0m map
  [3Xphi[0m  (-->  [14X10.2[0m)at (co)homological degree [3Xd[0m. The returned (co)chain map will
  cautiously  be  indicated  using  parenthesis: "chain map". To verify if the
  result  is  indeed  a  (co)chain  map use [2XIsMorphism[0m ([14X12.3-1[0m). If source and
  target are identical objects, and only then, the (co)chain map is created as
  a (co)chain selfmap.
  
  The  following  examples  shows  a  chain  map  that induces the zero map on
  homology, but is itself [13Xnot[0m zero in the derived category:
  
  [4X---------------------------  Example  ----------------------------[0X
    [4Xgap> ZZ := HomalgRingOfIntegers( );;[0X
    [4Xgap> M := 1 * ZZ;[0X
    [4X<The free left module of rank 1 on a free generator>[0X
    [4Xgap> Display( M );[0X
    [4XZ^(1 x 1)[0X
    [4Xgap> N := HomalgMatrix( "[3]", 1, 1, ZZ );;[0X
    [4Xgap> N := LeftPresentation( N );[0X
    [4X<A cyclic left module presented by 1 relation for a cyclic generator>[0X
    [4Xgap> Display( N );[0X
    [4XZ/< 3 >[0X
    [4Xgap> a := HomalgMap( HomalgMatrix( "[2]", 1, 1, ZZ ), M, M );[0X
    [4X<An endomorphism of a left module>[0X
    [4Xgap> c := HomalgMap( HomalgMatrix( "[2]", 1, 1, ZZ ), M, N );[0X
    [4X<A homomorphism of left modules>[0X
    [4Xgap> b := HomalgMap( HomalgMatrix( "[1]", 1, 1, ZZ ), M, M );[0X
    [4X<An endomorphism of a left module>[0X
    [4Xgap> d := HomalgMap( HomalgMatrix( "[1]", 1, 1, ZZ ), M, N );[0X
    [4X<A homomorphism of left modules>[0X
    [4Xgap> C1 := HomalgComplex( a );[0X
    [4X<A non-zero acyclic complex containing a single morphism of left modules at de\[0X
    [4Xgrees [ 0 .. 1 ]>[0X
    [4Xgap> C2 := HomalgComplex( c );[0X
    [4X<A non-zero acyclic complex containing a single morphism of left modules at de\[0X
    [4Xgrees [ 0 .. 1 ]>[0X
    [4Xgap> cm := HomalgChainMap( d, C1, C2 );[0X
    [4X<A "chain map" containing a single left morphism at degree 0>[0X
    [4Xgap> Add( cm, b );[0X
    [4Xgap> IsMorphism( cm );[0X
    [4Xtrue[0X
    [4Xgap> cm;[0X
    [4X<A chain map containing 2 morphisms of left modules at degrees [ 0 .. 1 ]>[0X
    [4Xgap> hcm := DefectOfExactness( cm );[0X
    [4X<A chain map of graded objects containing[0X
    [4X2 morphisms of left modules at degrees [ 0 .. 1 ]>[0X
    [4Xgap> IsZero( hcm );[0X
    [4Xtrue[0X
    [4Xgap> IsZero( Source( hcm ) );[0X
    [4Xfalse[0X
    [4Xgap> IsZero( Range( hcm ) );[0X
    [4Xfalse[0X
  [4X------------------------------------------------------------------[0X
  
  
  [1X12.3 Chain Maps: Properties[0X
  
  [1X12.3-1 IsMorphism[0m
  
  [2X> IsMorphism( [0X[3Xcm[0X[2X ) _________________________________________________[0Xproperty
  [6XReturns:[0X  [10Xtrue[0m or [10Xfalse[0m
  
  Check  if  [3Xcm[0m  is a well-defined chain map, i.e. independent of all involved
  presentations.
  
  [1X12.3-2 IsGeneralizedMorphism[0m
  
  [2X> IsGeneralizedMorphism( [0X[3Xcm[0X[2X ) ______________________________________[0Xproperty
  [6XReturns:[0X  [10Xtrue[0m or [10Xfalse[0m
  
  Check if [3Xcm[0m is a generalized morphism.
  
  [1X12.3-3 IsGeneralizedEpimorphism[0m
  
  [2X> IsGeneralizedEpimorphism( [0X[3Xcm[0X[2X ) ___________________________________[0Xproperty
  [6XReturns:[0X  [10Xtrue[0m or [10Xfalse[0m
  
  Check if [3Xcm[0m is a generalized epimorphism.
  
  [1X12.3-4 IsGeneralizedMonomorphism[0m
  
  [2X> IsGeneralizedMonomorphism( [0X[3Xcm[0X[2X ) __________________________________[0Xproperty
  [6XReturns:[0X  [10Xtrue[0m or [10Xfalse[0m
  
  Check if [3Xcm[0m is a generalized monomorphism.
  
  [1X12.3-5 IsGeneralizedIsomorphism[0m
  
  [2X> IsGeneralizedIsomorphism( [0X[3Xcm[0X[2X ) ___________________________________[0Xproperty
  [6XReturns:[0X  [10Xtrue[0m or [10Xfalse[0m
  
  Check if [3Xcm[0m is a generalized isomorphism.
  
  [1X12.3-6 IsIdentityMorphism[0m
  
  [2X> IsIdentityMorphism( [0X[3Xcm[0X[2X ) _________________________________________[0Xproperty
  [6XReturns:[0X  [10Xtrue[0m or [10Xfalse[0m
  
  Check if the [5Xhomalg[0m chain map [3Xcm[0m is the identity chain map.
  
  [1X12.3-7 IsMonomorphism[0m
  
  [2X> IsMonomorphism( [0X[3Xcm[0X[2X ) _____________________________________________[0Xproperty
  [6XReturns:[0X  [10Xtrue[0m or [10Xfalse[0m
  
  Check if the [5Xhomalg[0m chain map [3Xcm[0m is a monomorphism.
  
  [1X12.3-8 IsEpimorphism[0m
  
  [2X> IsEpimorphism( [0X[3Xcm[0X[2X ) ______________________________________________[0Xproperty
  [6XReturns:[0X  [10Xtrue[0m or [10Xfalse[0m
  
  Check if the [5Xhomalg[0m chain map [3Xcm[0m is an epimorphism.
  
  [1X12.3-9 IsSplitMonomorphism[0m
  
  [2X> IsSplitMonomorphism( [0X[3Xcm[0X[2X ) ________________________________________[0Xproperty
  [6XReturns:[0X  [10Xtrue[0m or [10Xfalse[0m
  
  Check if the [5Xhomalg[0m chain map [3Xcm[0m is a split monomorphism.
  
  [1X12.3-10 IsSplitEpimorphism[0m
  
  [2X> IsSplitEpimorphism( [0X[3Xcm[0X[2X ) _________________________________________[0Xproperty
  [6XReturns:[0X  [10Xtrue[0m or [10Xfalse[0m
  
  Check if the [5Xhomalg[0m chain map [3Xcm[0m is a split epimorphism.
  
  [1X12.3-11 IsIsomorphism[0m
  
  [2X> IsIsomorphism( [0X[3Xcm[0X[2X ) ______________________________________________[0Xproperty
  [6XReturns:[0X  [10Xtrue[0m or [10Xfalse[0m
  
  Check if the [5Xhomalg[0m chain map [3Xcm[0m is an isomorphism.
  
  [1X12.3-12 IsAutomorphism[0m
  
  [2X> IsAutomorphism( [0X[3Xcm[0X[2X ) _____________________________________________[0Xproperty
  [6XReturns:[0X  [10Xtrue[0m or [10Xfalse[0m
  
  Check if the [5Xhomalg[0m chain map [3Xcm[0m is an automorphism.
  
  [1X12.3-13 IsGradedMorphism[0m
  
  [2X> IsGradedMorphism( [0X[3Xcm[0X[2X ) ___________________________________________[0Xproperty
  [6XReturns:[0X  [10Xtrue[0m or [10Xfalse[0m
  
  Check if the source and target complex of the [5Xhomalg[0m chain map [3Xcm[0m are graded
  objects, i.e. if all their morphisms vanish.
  
  [1X12.3-14 IsQuasiIsomorphism[0m
  
  [2X> IsQuasiIsomorphism( [0X[3Xcm[0X[2X ) _________________________________________[0Xproperty
  [6XReturns:[0X  [10Xtrue[0m or [10Xfalse[0m
  
  Check if the [5Xhomalg[0m chain map [3Xcm[0m is a quasi-isomorphism.
  
  
  [1X12.4 Chain Maps: Attributes[0X
  
  [1X12.4-1 Source[0m
  
  [2X> Source( [0X[3Xcm[0X[2X ) ____________________________________________________[0Xattribute
  [6XReturns:[0X  a [5Xhomalg[0m complex
  
  The source of the [5Xhomalg[0m chain map [3Xcm[0m.
  
  [1X12.4-2 Range[0m
  
  [2X> Range( [0X[3Xcm[0X[2X ) _____________________________________________________[0Xattribute
  [6XReturns:[0X  a [5Xhomalg[0m complex
  
  The target (range) of the [5Xhomalg[0m chain map [3Xcm[0m.
  
  
  [1X12.5 Chain Maps: Operations and Functions[0X
  
  [1X12.5-1 ByASmallerPresentation[0m
  
  [2X> ByASmallerPresentation( [0X[3Xcm[0X[2X ) _______________________________________[0Xmethod
  [6XReturns:[0X  a [5Xhomalg[0m complex
  
  See [2XByASmallerPresentation[0m ([14X11.5-2[0m) on complexes.
  
  [4X-----------------------------  Code  -----------------------------[0X
    [4XInstallMethod( ByASmallerPresentation,[0X
    [4X        "for homalg chain maps",[0X
    [4X        [ IsHomalgChainMap ],[0X
    [4X        [0X
    [4X  function( cm )[0X
    [4X    [0X
    [4X    ByASmallerPresentation( Source( cm ) );[0X
    [4X    ByASmallerPresentation( Range( cm ) );[0X
    [4X    [0X
    [4X    List( MorphismsOfChainMap( cm ), DecideZero );[0X
    [4X    [0X
    [4X    return cm;[0X
    [4X    [0X
    [4Xend );[0X
  [4X------------------------------------------------------------------[0X
  
  This method performs side effects on its argument [3Xcm[0m and returns it.
  
