[1X2 [33X[0;0YExamples and Tests[133X[101X
[1X2.1 [33X[0;0YBasic Commands[133X[101X
[4X[32X Example [32X[104X
[4X[25Xgap>[125X [27XQ := HomalgFieldOfRationals();;[127X[104X
[4X[25Xgap>[125X [27Xa := VectorSpaceObject( 3, Q );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xb := VectorSpaceObject( 4, Q );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xhomalg_matrix := HomalgMatrix( [ [ 1, 0, 0, 0 ],[127X[104X
[4X[25X>[125X [27X [ 0, 1, 0, -1 ],[127X[104X
[4X[25X>[125X [27X [ -1, 0, 2, 1 ] ], 3, 4, Q );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xalpha := VectorSpaceMorphism( a, homalg_matrix, b );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( alpha );[127X[104X
[4X[28X[ [ 1, 0, 0, 0 ],[128X[104X
[4X[28X [ 0, 1, 0, -1 ],[128X[104X
[4X[28X [ -1, 0, 2, 1 ] ][128X[104X
[4X[28X[128X[104X
[4X[28XA morphism in Category of matrices over Q[128X[104X
[4X[25Xgap>[125X [27Xhomalg_matrix := HomalgMatrix( [ [ 1, 1, 0, 0 ],[127X[104X
[4X[25X>[125X [27X [ 0, 1, 0, -1 ],[127X[104X
[4X[25X>[125X [27X [ -1, 0, 2, 1 ] ], 3, 4, Q );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xbeta := VectorSpaceMorphism( a, homalg_matrix, b );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XCokernelObject( alpha );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xc := CokernelProjection( alpha );;[127X[104X
[4X[25Xgap>[125X [27XDisplay( c );[127X[104X
[4X[28X[ [ 0 ],[128X[104X
[4X[28X [ 1 ],[128X[104X
[4X[28X [ -1/2 ],[128X[104X
[4X[28X [ 1 ] ][128X[104X
[4X[28X[128X[104X
[4X[28XA split epimorphism in Category of matrices over Q[128X[104X
[4X[25Xgap>[125X [27Xgamma := UniversalMorphismIntoDirectSum( [ c, c ] );;[127X[104X
[4X[25Xgap>[125X [27XDisplay( gamma );[127X[104X
[4X[28X[ [ 0, 0 ],[128X[104X
[4X[28X [ 1, 1 ],[128X[104X
[4X[28X [ -1/2, -1/2 ],[128X[104X
[4X[28X [ 1, 1 ] ][128X[104X
[4X[28X[128X[104X
[4X[28XA morphism in Category of matrices over Q[128X[104X
[4X[25Xgap>[125X [27Xcolift := CokernelColift( alpha, gamma );;[127X[104X
[4X[25Xgap>[125X [27XIsEqualForMorphisms( PreCompose( c, colift ), gamma );[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XFiberProduct( alpha, beta );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XF := FiberProduct( alpha, beta );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xp1 := ProjectionInFactorOfFiberProduct( [ alpha, beta ], 1 );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( PreCompose( p1, alpha ) );[127X[104X
[4X[28X[ [ 0, 1, 0, -1 ],[128X[104X
[4X[28X [ -1, 0, 2, 1 ] ][128X[104X
[4X[28X[128X[104X
[4X[28XA morphism in Category of matrices over Q[128X[104X
[4X[25Xgap>[125X [27XPushout( alpha, beta );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xi1 := InjectionOfCofactorOfPushout( [ alpha, beta ], 1 );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xi2 := InjectionOfCofactorOfPushout( [ alpha, beta ], 2 );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27Xu := UniversalMorphismFromDirectSum( [ b, b ], [ i1, i2 ] );[127X[104X
[4X[28X[128X[104X
[4X[25Xgap>[125X [27XDisplay( u );[127X[104X
[4X[28X[ [ 0, 1, 1, 0, 0 ],[128X[104X
[4X[28X [ 1, 0, 1, 0, -1 ],[128X[104X
[4X[28X [ -1/2, 0, 1/2, 1, 1/2 ],[128X[104X
[4X[28X [ 1, 0, 0, 0, 0 ],[128X[104X
[4X[28X [ 0, 1, 0, 0, 0 ],[128X[104X
[4X[28X [ 0, 0, 1, 0, 0 ],[128X[104X
[4X[28X [ 0, 0, 0, 1, 0 ],[128X[104X
[4X[28X [ 0, 0, 0, 0, 1 ] ][128X[104X
[4X[28X[128X[104X
[4X[28XA morphism in Category of matrices over Q[128X[104X
[4X[25Xgap>[125X [27XKernelObjectFunctorial( u, IdentityMorphism( Source( u ) ), u ) = IdentityMorphism( VectorSpaceObject( 3, Q ) );[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XIsZero( CokernelObjectFunctorial( u, IdentityMorphism( Range( u ) ), u ) );[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XDirectProductFunctorial( [ u, u ] ) = DirectSumFunctorial( [ u, u ] );[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XCoproductFunctorial( [ u, u ] ) = DirectSumFunctorial( [ u, u ] );[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XIsOne( FiberProductFunctorial( [ [ u, IdentityMorphism( Source( u ) ), u ], [ u, IdentityMorphism( Source( u ) ) , u ] ] ) );[127X[104X
[4X[28Xtrue[128X[104X
[4X[25Xgap>[125X [27XIsOne( PushoutFunctorial( [ [ u, IdentityMorphism( Range( u ) ), u ], [ u, IdentityMorphism( Range( u ) ) , u ] ] ) );[127X[104X
[4X[28Xtrue[128X[104X
[4X[32X[104X