  
  [1X2 [33X[0;0YExamples and Tests[133X[101X
  
  
  [1X2.1 [33X[0;0YAnnihilator[133X[101X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XZZZ := HomalgRingOfIntegersInSingular();;[127X[104X
    [4X[25Xgap>[125X [27Xfpres := LeftPresentations( ZZZ );;[127X[104X
    [4X[25Xgap>[125X [27XM1 := AsLeftPresentation( fpres, HomalgMatrix( [ [ "2" ] ], ZZZ ) );;[127X[104X
    [4X[25Xgap>[125X [27XM2 := AsLeftPresentation( fpres, HomalgMatrix( [ [ "3" ] ], ZZZ ) );;[127X[104X
    [4X[25Xgap>[125X [27XM3 := AsLeftPresentation( fpres, HomalgMatrix( [ [ "4" ] ], ZZZ ) );;[127X[104X
    [4X[25Xgap>[125X [27XM := DirectSum( M1, M2, M3 );;[127X[104X
    [4X[25Xgap>[125X [27XDisplay( Annihilator( M ) );[127X[104X
    [4X[28X12[128X[104X
    [4X[28X[128X[104X
    [4X[28XA monomorphism in Category of left presentations of Z[128X[104X
    [4X[25Xgap>[125X [27Xfpres := RightPresentations( ZZZ );;[127X[104X
    [4X[25Xgap>[125X [27XM1 := AsRightPresentation( fpres, HomalgMatrix( [ [ "2" ] ], ZZZ ) );;[127X[104X
    [4X[25Xgap>[125X [27XM2 := AsRightPresentation( fpres, HomalgMatrix( [ [ "3" ] ], ZZZ ) );;[127X[104X
    [4X[25Xgap>[125X [27XM3 := AsRightPresentation( fpres, HomalgMatrix( [ [ "4" ] ], ZZZ ) );;[127X[104X
    [4X[25Xgap>[125X [27XM := DirectSum( M1, M2, M3 );;[127X[104X
    [4X[25Xgap>[125X [27XDisplay( Annihilator( M ) );[127X[104X
    [4X[28X12[128X[104X
    [4X[28X[128X[104X
    [4X[28XA monomorphism in Category of right presentations of Z[128X[104X
  [4X[32X[104X
  
  
  [1X2.2 [33X[0;0YIntersection of Submodules[133X[101X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XQ := HomalgFieldOfRationalsInSingular();;[127X[104X
    [4X[25Xgap>[125X [27XR := Q * "x,y";[127X[104X
    [4X[28XQ[x,y][128X[104X
    [4X[25Xgap>[125X [27Xfpres := LeftPresentations( R );;[127X[104X
    [4X[25Xgap>[125X [27XF := AsLeftPresentation( fpres, HomalgMatrix( [ [ 0 ] ], R ) );[127X[104X
    [4X[28X<An object in Category of left presentations of Q[x,y]>[128X[104X
    [4X[25Xgap>[125X [27XI1 := AsLeftPresentation( fpres, HomalgMatrix( [ [ "x" ] ], R ) );;[127X[104X
    [4X[25Xgap>[125X [27XI2 := AsLeftPresentation( fpres, HomalgMatrix( [ [ "y" ] ], R ) );;[127X[104X
    [4X[25Xgap>[125X [27XDisplay( I1 );[127X[104X
    [4X[28Xx[128X[104X
    [4X[28X[128X[104X
    [4X[28XAn object in Category of left presentations of Q[x,y][128X[104X
    [4X[25Xgap>[125X [27XDisplay( I2 );[127X[104X
    [4X[28Xy[128X[104X
    [4X[28X[128X[104X
    [4X[28XAn object in Category of left presentations of Q[x,y][128X[104X
    [4X[25Xgap>[125X [27Xeps1 := PresentationMorphism( F, HomalgMatrix( [ [ 1 ] ], R ), I1 );[127X[104X
    [4X[28X<A morphism in Category of left presentations of Q[x,y]>[128X[104X
    [4X[25Xgap>[125X [27Xeps2 := PresentationMorphism( F, HomalgMatrix( [ [ 1 ] ], R ), I2 );[127X[104X
    [4X[28X<A morphism in Category of left presentations of Q[x,y]>[128X[104X
    [4X[25Xgap>[125X [27Xkernelemb1 := KernelEmbedding( eps1 );[127X[104X
    [4X[28X<A monomorphism in Category of left presentations of Q[x,y]>[128X[104X
    [4X[25Xgap>[125X [27Xkernelemb2 := KernelEmbedding( eps2 );[127X[104X
    [4X[28X<A monomorphism in Category of left presentations of Q[x,y]>[128X[104X
    [4X[25Xgap>[125X [27XP := FiberProduct( kernelemb1, kernelemb2 );;[127X[104X
    [4X[25Xgap>[125X [27XDisplay( P );[127X[104X
    [4X[28X(an empty 0 x 1 matrix)[128X[104X
    [4X[28X[128X[104X
    [4X[28XAn object in Category of left presentations of Q[x,y][128X[104X
    [4X[25Xgap>[125X [27Xpi1 := ProjectionInFactorOfFiberProduct( [ kernelemb1, kernelemb2 ], 1 );[127X[104X
    [4X[28X<A monomorphism in Category of left presentations of Q[x,y]>[128X[104X
    [4X[25Xgap>[125X [27Xcomposite := PreCompose( pi1, kernelemb1 );[127X[104X
    [4X[28X<A monomorphism in Category of left presentations of Q[x,y]>[128X[104X
    [4X[25Xgap>[125X [27XDisplay( composite );[127X[104X
    [4X[28Xx*y[128X[104X
    [4X[28X[128X[104X
    [4X[28XA monomorphism in Category of left presentations of Q[x,y][128X[104X
  [4X[32X[104X
  
  
  [1X2.3 [33X[0;0YKoszul Complex[133X[101X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XQ := HomalgFieldOfRationalsInSingular();;[127X[104X
    [4X[25Xgap>[125X [27XR := Q * "x,y,z";;[127X[104X
    [4X[25Xgap>[125X [27Xfpres := LeftPresentations( R );;[127X[104X
    [4X[25Xgap>[125X [27XM := HomalgMatrix( [ [ "x" ], [ "y" ], [ "z" ] ], 3, 1, R );;[127X[104X
    [4X[25Xgap>[125X [27XMl := AsLeftPresentation( fpres, M );;[127X[104X
    [4X[25Xgap>[125X [27Xeps := CoverByFreeModule( Ml );;[127X[104X
    [4X[25Xgap>[125X [27Xiota1 := KernelEmbedding( eps );;[127X[104X
    [4X[25Xgap>[125X [27XDisplay( iota1 );[127X[104X
    [4X[28Xx,[128X[104X
    [4X[28Xy,[128X[104X
    [4X[28Xz [128X[104X
    [4X[28X[128X[104X
    [4X[28XA monomorphism in Category of left presentations of Q[x,y,z][128X[104X
    [4X[25Xgap>[125X [27XDisplay( Source( iota1 ) );[127X[104X
    [4X[28X0, -z,y,[128X[104X
    [4X[28X-z,0, x,[128X[104X
    [4X[28X-y,x, 0 [128X[104X
    [4X[28X[128X[104X
    [4X[28XAn object in Category of left presentations of Q[x,y,z][128X[104X
    [4X[25Xgap>[125X [27Xpi1 := CoverByFreeModule( Source( iota1 ) );;[127X[104X
    [4X[25Xgap>[125X [27Xd1 := PreCompose( pi1, iota1 );;[127X[104X
    [4X[25Xgap>[125X [27XDisplay( d1 );[127X[104X
    [4X[28Xx,[128X[104X
    [4X[28Xy,[128X[104X
    [4X[28Xz [128X[104X
    [4X[28X[128X[104X
    [4X[28XA morphism in Category of left presentations of Q[x,y,z][128X[104X
    [4X[25Xgap>[125X [27Xiota2 := KernelEmbedding( d1 );;[127X[104X
    [4X[25Xgap>[125X [27XDisplay( iota2 );[127X[104X
    [4X[28X0, -z,y,[128X[104X
    [4X[28X-z,0, x,[128X[104X
    [4X[28X-y,x, 0 [128X[104X
    [4X[28X[128X[104X
    [4X[28XA monomorphism in Category of left presentations of Q[x,y,z][128X[104X
    [4X[25Xgap>[125X [27XDisplay( Source( iota2 ) );;[127X[104X
    [4X[28Xx,-y,z[128X[104X
    [4X[28X[128X[104X
    [4X[28XAn object in Category of left presentations of Q[x,y,z][128X[104X
    [4X[25Xgap>[125X [27Xpi2 := CoverByFreeModule( Source( iota2 ) );;[127X[104X
    [4X[25Xgap>[125X [27Xd2 := PreCompose( pi2, iota2 );;[127X[104X
    [4X[25Xgap>[125X [27XDisplay( d2 );[127X[104X
    [4X[28X0, -z,y,[128X[104X
    [4X[28X-z,0, x,[128X[104X
    [4X[28X-y,x, 0 [128X[104X
    [4X[28X[128X[104X
    [4X[28XA morphism in Category of left presentations of Q[x,y,z][128X[104X
    [4X[25Xgap>[125X [27Xiota3 := KernelEmbedding( d2 );;[127X[104X
    [4X[25Xgap>[125X [27XDisplay( iota3 );[127X[104X
    [4X[28Xx,-y,z[128X[104X
    [4X[28X[128X[104X
    [4X[28XA monomorphism in Category of left presentations of Q[x,y,z][128X[104X
    [4X[25Xgap>[125X [27XDisplay( Source( iota3 ) );[127X[104X
    [4X[28X(an empty 0 x 1 matrix)[128X[104X
    [4X[28X[128X[104X
    [4X[28XAn object in Category of left presentations of Q[x,y,z][128X[104X
    [4X[25Xgap>[125X [27Xpi3 := CoverByFreeModule( Source( iota3 ) );;[127X[104X
    [4X[25Xgap>[125X [27Xd3 := PreCompose( pi3, iota3 );;[127X[104X
    [4X[25Xgap>[125X [27XDisplay( d3 );[127X[104X
    [4X[28Xx,-y,z[128X[104X
    [4X[28X[128X[104X
    [4X[28XA morphism in Category of left presentations of Q[x,y,z][128X[104X
    [4X[25Xgap>[125X [27XN := HomalgMatrix( [ [ "x" ] ], 1, 1, R );;[127X[104X
    [4X[25Xgap>[125X [27XNl := AsLeftPresentation( fpres, N );;[127X[104X
    [4X[25Xgap>[125X [27Xd2Nl := TensorProductOnMorphisms( d2, IdentityMorphism( Nl ) );;[127X[104X
    [4X[25Xgap>[125X [27Xd1Nl := TensorProductOnMorphisms( d1, IdentityMorphism( Nl ) );;[127X[104X
    [4X[25Xgap>[125X [27XIsZero( PreCompose( d2Nl, d1Nl ) );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xcycles := KernelEmbedding( d1Nl );;[127X[104X
    [4X[25Xgap>[125X [27Xboundaries := ImageEmbedding( d2Nl );;[127X[104X
    [4X[25Xgap>[125X [27Xboundaries_in_cyles := LiftAlongMonomorphism( cycles, boundaries );;[127X[104X
    [4X[25Xgap>[125X [27Xhomology := CokernelObject( boundaries_in_cyles );;[127X[104X
    [4X[25Xgap>[125X [27XLessGenFunctor := FunctorLessGeneratorsLeft( fpres );;[127X[104X
    [4X[25Xgap>[125X [27Xhomology := ApplyFunctor( LessGenFunctor, homology );;[127X[104X
    [4X[25Xgap>[125X [27XStdBasisFunctor := FunctorStandardModuleLeft( fpres );;[127X[104X
    [4X[25Xgap>[125X [27Xhomology := ApplyFunctor( StdBasisFunctor, homology );;[127X[104X
    [4X[25Xgap>[125X [27XDisplay( homology );[127X[104X
    [4X[28Xz,[128X[104X
    [4X[28Xy,[128X[104X
    [4X[28Xx [128X[104X
    [4X[28X[128X[104X
    [4X[28XAn object in Category of left presentations of Q[x,y,z][128X[104X
  [4X[32X[104X
  
  
  [1X2.4 [33X[0;0YMonoidal Categories[133X[101X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XZZZ := HomalgRingOfIntegers();;[127X[104X
    [4X[25Xgap>[125X [27Xfpres := LeftPresentations( ZZZ );;[127X[104X
    [4X[25Xgap>[125X [27XMl := AsLeftPresentation( fpres, HomalgMatrix( [ [ 2 ] ], 1, 1, ZZZ ) );[127X[104X
    [4X[28X<An object in Category of left presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XNl := AsLeftPresentation( fpres, HomalgMatrix( [ [ 3 ] ], 1, 1, ZZZ ) );[127X[104X
    [4X[28X<An object in Category of left presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XTl := TensorProductOnObjects( Ml, Nl );[127X[104X
    [4X[28X<An object in Category of left presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XDisplay( UnderlyingMatrix( Tl ) );[127X[104X
    [4X[28X[ [  3 ],[128X[104X
    [4X[28X  [  2 ] ][128X[104X
    [4X[25Xgap>[125X [27XIsZeroForObjects( Tl );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XBl := Braiding( DirectSum( Ml, Nl ), DirectSum( Ml, Ml ) );[127X[104X
    [4X[28X<A morphism in Category of left presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XDisplay( UnderlyingMatrix( Bl ) );[127X[104X
    [4X[28X[ [  1,  0,  0,  0 ],[128X[104X
    [4X[28X  [  0,  0,  1,  0 ],[128X[104X
    [4X[28X  [  0,  1,  0,  0 ],[128X[104X
    [4X[28X  [  0,  0,  0,  1 ] ][128X[104X
    [4X[25Xgap>[125X [27XIsWellDefined( Bl );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XUl := TensorUnit( CapCategory( Ml ) );[127X[104X
    [4X[28X<An object in Category of left presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XIntHoml := InternalHomOnObjects( DirectSum( Ml, Ul ), Nl );[127X[104X
    [4X[28X<An object in Category of left presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XDisplay( UnderlyingMatrix( IntHoml ) );[127X[104X
    [4X[28X[ [  1,  2 ],[128X[104X
    [4X[28X  [  0,  3 ] ][128X[104X
    [4X[25Xgap>[125X [27Xgenerator_l1 := StandardGeneratorMorphism( IntHoml, 1 );[127X[104X
    [4X[28X<A morphism in Category of left presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27Xmorphism_l1 := LambdaElimination( DirectSum( Ml, Ul ), Nl, generator_l1 );[127X[104X
    [4X[28X<A morphism in Category of left presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XDisplay( UnderlyingMatrix( morphism_l1 ) );[127X[104X
    [4X[28X[ [  -3 ],[128X[104X
    [4X[28X  [   2 ] ][128X[104X
    [4X[25Xgap>[125X [27Xgenerator_l2 := StandardGeneratorMorphism( IntHoml, 2 );[127X[104X
    [4X[28X<A morphism in Category of left presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27Xmorphism_l2 := LambdaElimination( DirectSum( Ml, Ul ), Nl, generator_l2 );[127X[104X
    [4X[28X<A morphism in Category of left presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XDisplay( UnderlyingMatrix( morphism_l2 ) );[127X[104X
    [4X[28X[ [   0 ],[128X[104X
    [4X[28X  [  -1 ] ][128X[104X
    [4X[25Xgap>[125X [27XIsEqualForMorphisms( LambdaIntroduction( morphism_l1 ), generator_l1 );[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XIsCongruentForMorphisms( LambdaIntroduction( morphism_l1 ), generator_l1 );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsEqualForMorphisms( LambdaIntroduction( morphism_l2 ), generator_l2 );[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XIsCongruentForMorphisms( LambdaIntroduction( morphism_l2 ), generator_l2 );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xfpres := RightPresentations( ZZZ );;[127X[104X
    [4X[25Xgap>[125X [27XMr := AsRightPresentation( fpres, HomalgMatrix( [ [ 2 ] ], 1, 1, ZZZ ) );[127X[104X
    [4X[28X<An object in Category of right presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XNr := AsRightPresentation( fpres, HomalgMatrix( [ [ 3 ] ], 1, 1, ZZZ ) );[127X[104X
    [4X[28X<An object in Category of right presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XTr := TensorProductOnObjects( Mr, Nr );[127X[104X
    [4X[28X<An object in Category of right presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XDisplay( UnderlyingMatrix( Tr ) );[127X[104X
    [4X[28X[ [  3,  2 ] ][128X[104X
    [4X[25Xgap>[125X [27XIsZeroForObjects( Tr );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XBr := Braiding( DirectSum( Mr, Nr ), DirectSum( Mr, Mr ) );[127X[104X
    [4X[28X<A morphism in Category of right presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XDisplay( UnderlyingMatrix( Br ) );[127X[104X
    [4X[28X[ [  1,  0,  0,  0 ],[128X[104X
    [4X[28X  [  0,  0,  1,  0 ],[128X[104X
    [4X[28X  [  0,  1,  0,  0 ],[128X[104X
    [4X[28X  [  0,  0,  0,  1 ] ][128X[104X
    [4X[25Xgap>[125X [27XIsWellDefined( Br );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XUr := TensorUnit( CapCategory( Mr ) );[127X[104X
    [4X[28X<An object in Category of right presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XIntHomr := InternalHomOnObjects( DirectSum( Mr, Ur ), Nr );[127X[104X
    [4X[28X<An object in Category of right presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XDisplay( UnderlyingMatrix( IntHomr ) );[127X[104X
    [4X[28X[ [  1,  0 ],[128X[104X
    [4X[28X  [  2,  3 ] ][128X[104X
    [4X[25Xgap>[125X [27Xgenerator_r1 := StandardGeneratorMorphism( IntHomr, 1 );[127X[104X
    [4X[28X<A morphism in Category of right presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27Xmorphism_r1 := LambdaElimination( DirectSum( Mr, Ur ), Nr, generator_r1 );[127X[104X
    [4X[28X<A morphism in Category of right presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XDisplay( UnderlyingMatrix( morphism_r1 ) );[127X[104X
    [4X[28X[ [  -3,   2 ] ][128X[104X
    [4X[25Xgap>[125X [27Xgenerator_r2 := StandardGeneratorMorphism( IntHoml, 2 );[127X[104X
    [4X[28X<A morphism in Category of left presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27Xmorphism_r2 := LambdaElimination( DirectSum( Ml, Ul ), Nl, generator_r2 );[127X[104X
    [4X[28X<A morphism in Category of left presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XDisplay( UnderlyingMatrix( morphism_r2 ) );[127X[104X
    [4X[28X[ [   0 ],[128X[104X
    [4X[28X  [  -1 ] ][128X[104X
    [4X[25Xgap>[125X [27XIsEqualForMorphisms( LambdaIntroduction( morphism_r1 ), generator_r1 );[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XIsCongruentForMorphisms( LambdaIntroduction( morphism_r1 ), generator_r1 );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsEqualForMorphisms( LambdaIntroduction( morphism_r2 ), generator_r2 );[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XIsCongruentForMorphisms( LambdaIntroduction( morphism_r2 ), generator_r2 );[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  
  [1X2.5 [33X[0;0YClosed Monoidal Structure[133X[101X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XR := HomalgRingOfIntegers( );;[127X[104X
    [4X[25Xgap>[125X [27Xfpres := LeftPresentations( R );;[127X[104X
    [4X[25Xgap>[125X [27XM := AsLeftPresentation( fpres, HomalgMatrix( [ [ 2 ] ], 1, 1, R ) );[127X[104X
    [4X[28X<An object in Category of left presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XN := AsLeftPresentation( fpres, HomalgMatrix( [ [ 3 ] ], 1, 1, R ) );[127X[104X
    [4X[28X<An object in Category of left presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XT := TensorProductOnObjects( M, N );[127X[104X
    [4X[28X<An object in Category of left presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XDisplay( T );[127X[104X
    [4X[28X[ [  3 ],[128X[104X
    [4X[28X  [  2 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[28XAn object in Category of left presentations of Z[128X[104X
    [4X[25Xgap>[125X [27XIsZero( T );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XH := InternalHomOnObjects( DirectSum( M, M ), DirectSum( M, N ) );[127X[104X
    [4X[28X<An object in Category of left presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XDisplay( H );[127X[104X
    [4X[28X[ [   0,   0,   0,  -2 ],[128X[104X
    [4X[28X  [   1,   2,   0,   0 ],[128X[104X
    [4X[28X  [   0,   2,   2,   0 ],[128X[104X
    [4X[28X  [   2,   3,   0,   2 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[28XAn object in Category of left presentations of Z[128X[104X
    [4X[25Xgap>[125X [27Xalpha := StandardGeneratorMorphism( H, 3 );[127X[104X
    [4X[28X<A morphism in Category of left presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27Xl := LambdaElimination( DirectSum( M, M ), DirectSum( M, N ), alpha );[127X[104X
    [4X[28X<A morphism in Category of left presentations of Z>[128X[104X
    [4X[25Xgap>[125X [27XIsZero( l );[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XDisplay( l );[127X[104X
    [4X[28X[ [  -2,   6 ],[128X[104X
    [4X[28X  [  -1,  -3 ] ][128X[104X
    [4X[28X[128X[104X
    [4X[28XA morphism in Category of left presentations of Z[128X[104X
  [4X[32X[104X
  
  
  [1X2.6 [33X[0;0YProjectivity test[133X[101X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XQ := HomalgFieldOfRationalsInSingular();;[127X[104X
    [4X[25Xgap>[125X [27XR := Q * "x";;[127X[104X
    [4X[25Xgap>[125X [27XF := FreeLeftPresentation( 2, Q );;[127X[104X
    [4X[25Xgap>[125X [27XHasIsProjective( F ) and IsProjective( F );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XG := FreeRightPresentation( 2, Q );;[127X[104X
    [4X[25Xgap>[125X [27XHasIsProjective( G ) and IsProjective( G );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XM := AsLeftPresentation( HomalgMatrix( "[ x, x ]", 1, 2, R ) );;[127X[104X
    [4X[25Xgap>[125X [27XIsProjective( M );[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XN := AsLeftPresentation( HomalgMatrix( "[ 1, x ]", 1, 2, R ) );;[127X[104X
    [4X[25Xgap>[125X [27XIsProjective( N );[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
