gap> Q := HomalgFieldOfRationalsInSingular();; gap> S := GradedRing( Q * "x_1, x_2" );; gap> SetWeightsOfIndeterminates( S, [[1],[1]] );; gap> Module := AsFreydCategoryObject( GradedRow( [[[1],1]], S ) ); <A projective object in Category of f.p. graded left modules over Q[x_1,x_2] (with weights [ 1, 1 ])> gap> IsFpGradedLeftOrRightModulesObject( Module ); true gap> mor := AsFreydCategoryMorphism( IdentityMorphism( GradedRow( [[[1],1]], S ) ) ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2] (with weights [ 1, 1 ])> gap> IsFpGradedLeftOrRightModulesMorphism( mor ); true

gap> Q := HomalgFieldOfRationalsInSingular(); Q gap> S := GradedRing( Q * "x_1, x_2, x_3, x_4" ); Q[x_1,x_2,x_3,x_4] (weights: yet unset) gap> SetWeightsOfIndeterminates( S, [[1,0],[1,0],[0,1],[0,1]] ); gap> cat := CategoryOfGradedRows( S ); Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) gap> obj1 := GradedRow( [ [[1,1],1] ], S ); <A graded row of rank 1> gap> obj2 := GradedRow( [ [[1,1],2] ], S ); <A graded row of rank 2> gap> gamma := GradedRowOrColumnMorphism( obj2, > HomalgMatrix( [ [ 1, 1 ], [ 1, 1 ] ], 2, 2, S ), obj2 ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> freyd := FreydCategory( cat ); Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) gap> IsAbelianCategory( freyd ); true gap> obj_gamma := FreydCategoryObject( gamma ); <An object in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsFpGradedLeftOrRightModulesObject( obj_gamma ); true gap> f := FreydCategoryMorphism( obj_gamma, gamma, obj_gamma ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsFpGradedLeftOrRightModulesMorphism( f ); true gap> witness := MorphismWitness( f ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])>

gap> Display( witness ); A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 1 ), 2 ] ] Matrix: 2,0, 2,0 (over a graded ring) Range: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 1 ), 2 ] ]

gap> g := FreydCategoryMorphism( obj_gamma, > ZeroMorphism( obj2, obj2 ), obj_gamma ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsCongruentForMorphisms( f, g ); true gap> c := PreCompose( f, f ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])>

gap> Display( c ); A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) ) -------------------------------- Source: A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 1 ), 2 ] ] Matrix: 1,1, 1,1 (over a graded ring) Range: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 1 ), 2 ] ] -------------------------------- Morphism datum: A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 1 ), 2 ] ] Matrix: 2,2, 2,2 (over a graded ring) Range: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 1 ), 2 ] ] -------------------------------- Range: A morphism in Category of graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 1 ), 2 ] ] Matrix: 1,1, 1,1 (over a graded ring) Range: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 1 ), 2 ] ] --------------------------------

gap> s := g + g; <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> a := GradedRowOrColumnMorphism( obj1, > HomalgMatrix( [ [ 2 ] ], 1, 1, S ), obj1 ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])>

gap> Display( a ); A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ ( 1, 1 ), 1 ] ] Matrix: 2 (over a graded ring) Range: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ ( 1, 1 ), 1 ] ]

gap> Z2 := FreydCategoryObject( a ); <An object in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])>

gap> Display( Z2 ); An object in Freyd( Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) ) Relation morphism: A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ ( 1, 1 ), 1 ] ] Matrix: 2 (over a graded ring) Range: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ ( 1, 1 ), 1 ] ]

gap> id := IdentityMorphism( Z2 ); <An identity morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> z := id + id + id; <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> d := DirectSumFunctorial( [ z, z, z ] ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> pr2 := ProjectionInFactorOfDirectSum( [ Z2, Z2, Z2 ], 2 ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> pr3 := ProjectionInFactorOfDirectSum( [ Z2, Z2, Z2 ], 3 ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> uni := UniversalMorphismIntoDirectSum( [ pr3, pr2 ] ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> inj1 := InjectionOfCofactorOfDirectSum( [ Z2, Z2, Z2 ], 1 ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> inj2 := InjectionOfCofactorOfDirectSum( [ Z2, Z2, Z2 ], 2 ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> uni2 := UniversalMorphismFromDirectSum( [ inj2, inj1 ] ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> ZFree := AsFreydCategoryObject( obj1 ); <A projective object in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])>

gap> Display( ZFree ); A projective object in Freyd( Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) ) Relation morphism: A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 0 and degrees: [ ] Matrix: (an empty 0 x 1 matrix) Range: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ ( 1, 1 ), 1 ] ]

gap> id := IdentityMorphism( ZFree ); <An identity morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> z := id + id; <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> coker_proj := CokernelProjection( z ); <An epimorphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> cokernel_colift := CokernelColift( z, CokernelProjection( z ) ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> a := ZFree; <A projective object in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> b := obj_gamma; <An object in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> c := TensorProductOnObjects( ZFree, obj_gamma ); <An object in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> KaxbKxc := TensorProductOnObjects( TensorProductOnObjects( a, b ), c ); <An object in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsEqualForObjects( KaxbKxc, ZeroObject( freyd ) ); false gap> tensor_product_morphism := TensorProductOnMorphisms( cokernel_colift, coker_proj ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsEpimorphism( tensor_product_morphism ); true gap> IsEqualForObjects( Source( tensor_product_morphism ), Range( tensor_product_morphism ) ); false gap> unit := TensorUnit( freyd ); <An object in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsEqualForObjects( TensorProductOnObjects( a, unit ), a ); true gap> axKbxcK := TensorProductOnObjects( a, TensorProductOnObjects( b, c ) ); <An object in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> ass_left_to_right := AssociatorLeftToRightWithGivenTensorProducts( KaxbKxc, a, b, c, axKbxcK ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsIsomorphism( ass_left_to_right ); true gap> ass_right_to_left := AssociatorLeftToRightWithGivenTensorProducts( axKbxcK, a, b, c, KaxbKxc ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsMonomorphism( ass_right_to_left ); true gap> IsEpimorphism( ass_right_to_left ); true gap> LeftUnitor( a ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> LeftUnitorInverse( axKbxcK ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> RightUnitor( b ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> RightUnitorInverse( TensorProductOnObjects( axKbxcK, axKbxcK ) ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> Braiding( axKbxcK, KaxbKxc ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> braiding := Braiding( a, b ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( braiding ); true gap> hom := InternalHomOnObjects( axKbxcK, axKbxcK ); <An object in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsZero( hom ); false gap> free_mod1 := AsFreydCategoryObject( GradedRow( [ [[0,0],1] ], S ) ); <A projective object in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> free_mod2 := AsFreydCategoryObject( GradedRow( [ [[1,1],1] ], S ) ); <A projective object in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> hom2 := InternalHomOnObjects( free_mod1, free_mod2 ); <An object in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsZero( hom2 ); false gap> IsZero( Source( RelationMorphism( hom2 ) ) ); true gap> Rank( Range( RelationMorphism( hom2 ) ) ); 1 gap> hom3 := InternalHomOnObjects( free_mod2, free_mod1 ); <An object in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsZero( hom3 ); false gap> InternalHomOnMorphisms( ass_left_to_right, ass_right_to_left ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> eval := ClosedMonoidalLeftEvaluationMorphism( a, b ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsEpimorphism( eval ); true gap> IsMonomorphism( eval ); true gap> coeval := ClosedMonoidalLeftCoevaluationMorphism( a, b ); <A morphism in Category of f.p. graded left modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsEpimorphism( coeval ); true gap> IsMonomorphism( coeval ); true

gap> Q := HomalgFieldOfRationalsInSingular(); Q gap> S := GradedRing( Q * "x_1, x_2, x_3, x_4" ); Q[x_1,x_2,x_3,x_4] (weights: yet unset) gap> SetWeightsOfIndeterminates( S, [[1,0],[1,0],[0,1],[0,1]] ); gap> cat := CategoryOfGradedColumns( S ); Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) gap> obj1 := GradedColumn( [ [[1,1],1] ], S ); <A graded column of rank 1> gap> obj2 := GradedColumn( [ [[1,1],2] ], S ); <A graded column of rank 2> gap> gamma := GradedRowOrColumnMorphism( obj2, > HomalgMatrix( [ [ 1, 1 ], [ 1, 1 ] ], 2, 2, S ), obj2 ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> freyd := FreydCategory( cat ); Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) gap> IsAbelianCategory( freyd ); true gap> obj_gamma := FreydCategoryObject( gamma ); <An object in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> f := FreydCategoryMorphism( obj_gamma, gamma, obj_gamma ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> witness := MorphismWitness( f ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])>

gap> Display( witness ); A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 1 ), 2 ] ] Matrix: 2,2, 0,0 (over a graded ring) Range: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 1 ), 2 ] ]

gap> g := FreydCategoryMorphism( obj_gamma, > ZeroMorphism( obj2, obj2 ), obj_gamma ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsCongruentForMorphisms( f, g ); true gap> c := PreCompose( f, f ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])>

gap> Display( c ); A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) ) -------------------------------- Source: A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 1 ), 2 ] ] Matrix: 1,1, 1,1 (over a graded ring) Range: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 1 ), 2 ] ] -------------------------------- Morphism datum: A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 1 ), 2 ] ] Matrix: 2,2, 2,2 (over a graded ring) Range: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 1 ), 2 ] ] -------------------------------- Range: A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 1 ), 2 ] ] Matrix: 1,1, 1,1 (over a graded ring) Range: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 1 ), 2 ] ] --------------------------------

gap> s := g + g; <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> a := GradedRowOrColumnMorphism( obj1, > HomalgMatrix( [ [ 2 ] ], 1, 1, S ), obj1 ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])>

gap> Display( a ); A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ ( 1, 1 ), 1 ] ] Matrix: 2 (over a graded ring) Range: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ ( 1, 1 ), 1 ] ]

gap> Z2 := FreydCategoryObject( a ); <An object in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])>

gap> Display( Z2 ); An object in Freyd( Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) ) Relation morphism: A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ ( 1, 1 ), 1 ] ] Matrix: 2 (over a graded ring) Range: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ ( 1, 1 ), 1 ] ]

gap> id := IdentityMorphism( Z2 ); <An identity morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> z := id + id + id; <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> d := DirectSumFunctorial( [ z, z, z ] ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> pr2 := ProjectionInFactorOfDirectSum( [ Z2, Z2, Z2 ], 2 ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> pr3 := ProjectionInFactorOfDirectSum( [ Z2, Z2, Z2 ], 3 ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> uni := UniversalMorphismIntoDirectSum( [ pr3, pr2 ] ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> inj1 := InjectionOfCofactorOfDirectSum( [ Z2, Z2, Z2 ], 1 ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> inj2 := InjectionOfCofactorOfDirectSum( [ Z2, Z2, Z2 ], 2 ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> uni2 := UniversalMorphismFromDirectSum( [ inj2, inj1 ] ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> ZFree := AsFreydCategoryObject( obj1 ); <A projective object in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])>

gap> Display( ZFree ); A projective object in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) ) Relation morphism: A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 0 and degrees: [ ] Matrix: (an empty 1 x 0 matrix) Range: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ ( 1, 1 ), 1 ] ]

gap> id := IdentityMorphism( ZFree ); <An identity morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> z := id + id; <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> coker_proj := CokernelProjection( z ); <An epimorphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> cokernel_colift := CokernelColift( z, CokernelProjection( z ) ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> a := ZFree; <A projective object in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> b := obj_gamma; <An object in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> c := TensorProductOnObjects( a, b ); <An object in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> KaxbKxc := TensorProductOnObjects( TensorProductOnObjects( a, b ), c ); <An object in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsEqualForObjects( KaxbKxc, ZeroObject( freyd ) ); false gap> tensor_product_morphism := TensorProductOnMorphisms( cokernel_colift, coker_proj ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsEpimorphism( tensor_product_morphism ); true gap> IsEqualForObjects( Source( tensor_product_morphism ), Range( tensor_product_morphism ) ); false gap> unit := TensorUnit( freyd ); <An object in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsEqualForObjects( TensorProductOnObjects( a, unit ), a ); true gap> axKbxcK := TensorProductOnObjects( a, TensorProductOnObjects( b, c ) ); <An object in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> ass_left_to_right := AssociatorLeftToRightWithGivenTensorProducts( KaxbKxc, a, b, c, axKbxcK ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsIsomorphism( ass_left_to_right ); true gap> ass_right_to_left := AssociatorLeftToRightWithGivenTensorProducts( axKbxcK, a, b, c, KaxbKxc ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsMonomorphism( ass_right_to_left ); true gap> IsEpimorphism( ass_right_to_left ); true gap> LeftUnitor( a ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> LeftUnitorInverse( axKbxcK ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> RightUnitor( b ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> RightUnitorInverse( TensorProductOnObjects( axKbxcK, axKbxcK ) ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> Braiding( axKbxcK, KaxbKxc ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> braiding := Braiding( a, b ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( braiding ); true gap> hom := InternalHomOnObjects( axKbxcK, axKbxcK ); <An object in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsZero( hom ); false gap> free_mod1 := AsFreydCategoryObject( GradedColumn( [ [[0,0],1] ], S ) ); <A projective object in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> free_mod2 := AsFreydCategoryObject( GradedColumn( [ [[1,1],1] ], S ) ); <A projective object in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> hom2 := InternalHomOnObjects( free_mod1, free_mod2 ); <An object in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsZero( hom2 ); false gap> IsZero( Source( RelationMorphism( hom2 ) ) ); true gap> Rank( Range( RelationMorphism( hom2 ) ) ); 1 gap> hom3 := InternalHomOnObjects( free_mod2, free_mod1 ); <An object in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsZero( hom3 ); false gap> InternalHomOnMorphisms( ass_left_to_right, ass_right_to_left ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> eval := ClosedMonoidalLeftEvaluationMorphism( a, b ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsEpimorphism( eval ); true gap> IsMonomorphism( eval ); true gap> coeval := ClosedMonoidalLeftCoevaluationMorphism( a, b ); <A morphism in Category of f.p. graded right modules over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsEpimorphism( coeval ); true gap> IsMonomorphism( coeval ); true

gap> Q := HomalgFieldOfRationalsInSingular(); Q gap> S := GradedRing( Q * "x_1, x_2, x_3, x_4" ); Q[x_1,x_2,x_3,x_4] (weights: yet unset) gap> SetWeightsOfIndeterminates( S, [[1,0],[1,0],[0,1],[0,1]] ); gap> ObjectL := GradedRow( [ [[1,0],2] ], S ); <A graded row of rank 2> gap> DegreeList( ObjectL ); [ [ ( 1, 0 ), 2 ] ] gap> Object2L := GradedRow( [ [[1,0],2], > [[1,0],3],[[0,1],2],[[1,0],1] ], S ); <A graded row of rank 8> gap> DegreeList( Object2L ); [ [ ( 1, 0 ), 5 ], [ ( 0, 1 ), 2 ], [ ( 1, 0 ), 1 ] ] gap> UnzipDegreeList( Object2L ); [ ( 1, 0 ), ( 1, 0 ), ( 1, 0 ), ( 1, 0 ), ( 1, 0 ), ( 0, 1 ), ( 0, 1 ), ( 1, 0 ) ] gap> ObjectR := GradedColumn( [ [[1,0],2] ], S ); <A graded column of rank 2> gap> DegreeList( ObjectR ); [ [ ( 1, 0 ), 2 ] ] gap> Object2R := GradedColumn( [ [[1,0],2], > [[1,0],3],[[0,1],2],[[1,0],1] ], S ); <A graded column of rank 8> gap> DegreeList( Object2R ); [ [ ( 1, 0 ), 5 ], [ ( 0, 1 ), 2 ], [ ( 1, 0 ), 1 ] ] gap> UnzipDegreeList( Object2R ); [ ( 1, 0 ), ( 1, 0 ), ( 1, 0 ), ( 1, 0 ), ( 1, 0 ), ( 0, 1 ), ( 0, 1 ), ( 1, 0 ) ] gap> S2 := GradedRing( Q * "x" );; gap> SetWeightsOfIndeterminates( S2, [ 1 ] );; gap> IsWellDefined( GradedRow( [ [ [ 1 ], 1 ] ], S2 ) ); true gap> IsWellDefined( GradedColumn( [ [ [ 1 ], 1 ] ], S2 ) ); true

Whenever the object constructor is called, it tries to simplify the given degree list. To this end it checks if subsequent degree group elements match. If so, their multiplicities are added. So, as in the example above we have:

[ [(1,0),2], [(1,0),3],[(0,1),2],[(1,0),1] ] \mapsto [ [ ( 1, 0 ), 5 ], [ ( 0, 1 ), 2 ], [ ( 1, 0 ), 1 ] ]

Note that, even though there are two occurances of \left( 1,0 \right) in the final degree list, we do not simplify further. The reason for this is as follows. Assume that we have a map of graded rows

\varphi \colon A \to B

given by a homomgeneous matrix M and that we want to compute the weak kernel embedding of this mapping. To this end we first compute the row syzygies of M. Let us call the corresponding matrix N. Then we deduce the degree list of the weak kernel object from N and from the graded row A. Once this degree list is known, we would call the object constructor. If this object constructor summarised all (and not only subsequent) occurances of one degree element in the degree list, then in order to make sure that the weak kernel embedding is a mapping of graded rows, the rows of the matrix N would have to be shuffled. The latter we do not wish to perform.

Note that the 'IsEqualForObjects' methods returns true whenever the degree lists of two graded rows/columns are identical. So in particular it returns false, if the degree lists are mere permutations of one another. Here is an example.

gap> Object2LShuffle := GradedRow( [ [[0,1],1], > [[1,0],2],[[0,1],1],[[1,0],4] ], S ); <A graded row of rank 8> gap> IsEqualForObjects( Object2L, Object2LShuffle ); false gap> Object2RShuffle := GradedColumn( [ [[0,1],1], > [[1,0],2],[[0,1],1],[[1,0],4] ], S ); <A graded column of rank 8> gap> IsEqualForObjects( Object2R, Object2RShuffle ); false

gap> Q1L := GradedRow( [ [[0,0],1] ], S ); <A graded row of rank 1> gap> IsWellDefined( Q1L ); true gap> Q2L := GradedRow( [ [[1,0],2] ], S ); <A graded row of rank 2> gap> m1L := GradedRowOrColumnMorphism( > Q1L, HomalgMatrix( [["x_1","x_2"]], S ) ,Q2L ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( m1L ); true

gap> Display( Source( m1L ) ); A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ 0, 1 ] ] gap> Display( Range( m1L ) ); A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 0 ), 2 ] ] gap> Display( UnderlyingHomalgMatrix( m1L ) ); x_1,x_2 (over a graded ring)

gap> Q1R := GradedColumn( [ [[0,0],1] ], S ); <A graded column of rank 1> gap> IsWellDefined( Q1R ); true gap> Q2R := GradedColumn( [ [[1,0],2] ], S ); <A graded column of rank 2> gap> m1R := GradedRowOrColumnMorphism( > Q1R, HomalgMatrix( [["x_1"],["x_2"]], S ) ,Q2R ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( m1R ); true

gap> Display( Source( m1R ) ); A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ 0, 1 ] ] gap> Display( Range( m1R ) ); A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 0 ), 2 ] ] gap> Display( UnderlyingHomalgMatrix( m1R ) ); x_1, x_2 (over a graded ring)

gap> categoryL := CapCategory( Q1L ); Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) gap> categoryR := CapCategory( Q1R ); Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])

gap> ZeroObject( categoryL ); <A graded row of rank 0> gap> O1L := GradedRow( [ [[-1,0],2] ], S ); <A graded row of rank 2>

gap> Display( ZeroMorphism( ZeroObject( categoryL ), O1L ) ); A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 0 and degrees: [ ] Matrix: (an empty 0 x 2 matrix) Range: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( -1, 0 ), 2 ] ]

gap> O2L := GradedRow( [ [[0,0],1] ], S ); <A graded row of rank 1> gap> obj3L := GradedRow( [ [[-1,0],1] ], S ); <A graded row of rank 1>

gap> Display( IdentityMorphism( O2L ) ); A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ 0, 1 ] ] Matrix: 1 (over a graded ring) Range: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ 0, 1 ] ]

gap> IsWellDefined( IdentityMorphism( Q2L ) ); true gap> directSumL := DirectSum( [ O1L, O2L ] ); <A graded row of rank 3>

gap> Display( directSumL ); A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 3 and degrees: [ [ ( -1, 0 ), 2 ], [ 0, 1 ] ]

gap> i1L := InjectionOfCofactorOfDirectSum( [ O1L, O2L ], 1 ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( i1L ); true

gap> Display( UnderlyingHomalgMatrix( i1L ) ); 1,0,0, 0,1,0 (over a graded ring)

gap> i2L := InjectionOfCofactorOfDirectSum( [ O1L, O2L ], 2 ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ],[ 0, 1 ] ])> gap> IsWellDefined( i2L ); true

gap> Display( UnderlyingHomalgMatrix( i2L ) ); 0,0,1 (over a graded ring)

gap> proj1L := ProjectionInFactorOfDirectSum( [ O1L, O2L ], 1 ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( proj1L ); true

gap> Display( UnderlyingHomalgMatrix( proj1L ) ); 1,0, 0,1, 0,0 (over a graded ring)

gap> proj2L := ProjectionInFactorOfDirectSum( [ O1L, O2L ], 2 ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( proj2L ); true

gap> Display( UnderlyingHomalgMatrix( proj2L ) ); 0, 0, 1 (over a graded ring)

gap> kL := WeakKernelEmbedding( proj1L ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( kL ); true

gap> Display( UnderlyingHomalgMatrix( kL ) ); 0,0,1 (over a graded ring)

gap> ckL := WeakCokernelProjection( kL ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( ckL ); true

gap> Display( UnderlyingHomalgMatrix( ckL ) ); 1,0, 0,1, 0,0 (over a graded ring)

gap> IsMonomorphism( kL ); true gap> IsEpimorphism( kL ); false gap> IsMonomorphism( ckL ); false gap> IsEpimorphism( ckL ); true gap> m1L := GradedRowOrColumnMorphism( O1L, > HomalgMatrix( [[ "x_1" ], [ "x_2" ]], S ), O2L ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( m1L ); true gap> m2L := IdentityMorphism( O2L ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( m2L ); true gap> obj1L := GradedRow( [ [[0,0],1], [[-1,0],1] ], S ); <A graded row of rank 2> gap> m1L := GradedRowOrColumnMorphism( obj1L, > HomalgMatrix( [[ 1 ], [ "x_2"] ], S ), O2L ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( m1L ); true gap> m3L := GradedRowOrColumnMorphism( obj3L, > HomalgMatrix( [[ "x_1" ]], S ), O2L ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( m3L ); true gap> liftL := Lift( m3L, m1L ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( liftL ); true

gap> Display( UnderlyingHomalgMatrix( liftL ) ); x_1, 0 (over a graded ring)

gap> O3L := GradedRow( [ [[1,0],2] ], S ); <A graded row of rank 2> gap> morL := GradedRowOrColumnMorphism( > O2L, HomalgMatrix( [[ "x_1, x_2" ]], S ), O3L ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( morL ); true gap> coliftL := Colift( m2L, morL ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( coliftL ); true

gap> Display( UnderlyingHomalgMatrix( coliftL ) ); x_1,x_2 (over a graded ring)

gap> fpL := WeakBiFiberProduct( m1L, m2L ); <A graded row of rank 2> gap> fp_proj1L := ProjectionInFirstFactorOfWeakBiFiberProduct( m1L, m2L ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( fp_proj1L ); true

gap> Display( UnderlyingHomalgMatrix( fp_proj1L ) ); 1,0, 0,1 (over a graded ring)

gap> fp_proj2L := ProjectionInSecondFactorOfWeakBiFiberProduct( m1L, m2L ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( fp_proj2L ); true

gap> Display( UnderlyingHomalgMatrix( fp_proj2L ) ); 1, x_2 (over a graded ring)

gap> BiasedWeakFiberProduct( m1L, m2L ); <A graded row of rank 2> gap> pbwfprow := ProjectionOfBiasedWeakFiberProduct( m1L, m2L ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( pbwfprow ); true

gap> Display( pbwfprow ); A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ 0, 1 ], [ ( -1, 0 ), 1 ] ] Matrix: 1,0, 0,1 (over a graded ring) Range: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ 0, 1 ], [ ( -1, 0 ), 1 ] ]

gap> poL := WeakBiPushout( morL, m2L ); <A graded row of rank 2> gap> inj1L := InjectionOfFirstCofactorOfWeakBiPushout( morL, m2L ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( inj1L ); true

gap> Display( UnderlyingHomalgMatrix( inj1L ) ); 1,0, 0,1 (over a graded ring)

gap> inj2L := InjectionOfSecondCofactorOfWeakBiPushout( morL, m2L ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( inj2L ); true

gap> Display( UnderlyingHomalgMatrix( inj2L ) ); x_1,x_2 (over a graded ring)

gap> injectionL := InjectionOfBiasedWeakPushout( morL, m2L ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( injectionL ); true

gap> Display( injectionL ); A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 0 ), 2 ] ] Matrix: 1,0, 0,1 (over a graded ring) Range: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 0 ), 2 ] ]

gap> tensorProductL := TensorProductOnObjects( O1L, O2L ); <A graded row of rank 2>

gap> Display( tensorProductL ); A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( -1, 0 ), 2 ] ]

gap> tensorProductMorphismL := TensorProductOnMorphisms( m2L, morL ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( tensorProductMorphismL ); true

gap> Display( tensorProductMorphismL ); A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ 0, 1 ] ] Matrix: x_1,x_2 (over a graded ring) Range: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 0 ), 2 ] ] gap> Display( DualOnObjects( TensorProductOnObjects( ObjectL, Object2L ) ) ); A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 16 and degrees: [ [ ( -2, 0 ), 5 ], [ ( -1, -1 ), 2 ], [ ( -2, 0 ), 6 ], [ ( -1, -1 ), 2 ], [ ( -2, 0 ), 1 ] ]

gap> IsWellDefined( DualOnMorphisms( m1L ) ); true

gap> Display( DualOnMorphisms( m1L ) ); A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ 0, 1 ] ] Matrix: 1,x_2 (over a graded ring) Range: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ 0, 1 ], [ ( 1, 0 ), 1 ] ]

gap> IsWellDefined( EvaluationForDualWithGivenTensorProduct( TensorProductOnObjects( > DualOnObjects( ObjectL ), ObjectL ), ObjectL, TensorUnit( categoryL ) ) ); true

gap> Display( EvaluationForDualWithGivenTensorProduct( TensorProductOnObjects( > DualOnObjects( ObjectL ), ObjectL ), ObjectL, TensorUnit( categoryL ) ) ); A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 4 and degrees: [ [ 0, 4 ] ] Matrix: 1, 0, 0, 1 (over a graded ring) Range: A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ 0, 1 ] ] gap> Display( InternalHomOnObjects( ObjectL, ObjectL ) ); A graded row over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 4 and degrees: [ [ 0, 4 ] ]

gap> ZeroObject( categoryR ); <A graded column of rank 0> gap> O1R := GradedColumn( [ [[-1,0],2] ], S ); <A graded column of rank 2>

gap> Display( ZeroMorphism( ZeroObject( categoryR ), O1R ) ); A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1,0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 0 and degrees: [ ] Matrix: (an empty 2 x 0 matrix) Range: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1,0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( -1, 0 ), 2 ] ]

gap> O2R := GradedColumn( [ [[0,0],1] ], S ); <A graded column of rank 1> gap> obj3R := GradedColumn( [ [[-1,0],1] ], S ); <A graded column of rank 1>

gap> Display( IdentityMorphism( O2R ) ); A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ 0, 1 ] ] Matrix: 1 (over a graded ring) Range: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ 0, 1 ] ]

gap> IsWellDefined( IdentityMorphism( Q2R ) ); true gap> directSumR := DirectSum( [ O1R, O2R ] ); <A graded column of rank 3>

gap> Display( directSumR ); A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 3 and degrees: [ [ ( -1, 0 ), 2 ], [ 0, 1 ] ]

gap> i1R := InjectionOfCofactorOfDirectSum( [ O1R, O2R ], 1 ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( i1R ); true

gap> Display( UnderlyingHomalgMatrix( i1R ) ); 1,0, 0,1, 0,0 (over a graded ring)

gap> i2R := InjectionOfCofactorOfDirectSum( [ O1R, O2R ], 2 ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ],[ 0, 1 ] ])> gap> IsWellDefined( i2R ); true

gap> Display( UnderlyingHomalgMatrix( i2R ) ); 0, 0, 1 (over a graded ring)

gap> proj1R := ProjectionInFactorOfDirectSum( [ O1R, O2R ], 1 ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( proj1R ); true

gap> Display( UnderlyingHomalgMatrix( proj1R ) ); 1,0,0, 0,1,0 (over a graded ring)

gap> proj2R := ProjectionInFactorOfDirectSum( [ O1R, O2R ], 2 ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( proj2R ); true

gap> Display( UnderlyingHomalgMatrix( proj2R ) ); 0,0,1 (over a graded ring)

gap> kR := WeakKernelEmbedding( proj1R ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( kR ); true

gap> Display( UnderlyingHomalgMatrix( kR ) ); 0, 0, 1 (over a graded ring)

gap> ckR := WeakCokernelProjection( kR ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( ckR ); true

gap> Display( UnderlyingHomalgMatrix( ckR ) ); 1,0,0, 0,1,0 (over a graded ring)

gap> IsMonomorphism( kR ); true gap> IsEpimorphism( kR ); false gap> IsMonomorphism( ckR ); false gap> IsEpimorphism( ckR ); true gap> m1R := GradedRowOrColumnMorphism( O1R, > HomalgMatrix( [[ "x_1", "x_2" ]], S ), O2R ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( m1R ); true gap> m2R := IdentityMorphism( O2R ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( m2R ); true gap> obj1R := GradedColumn( [ [[0,0],1], [[-1,0],1] ], S ); <A graded column of rank 2> gap> m1R := GradedRowOrColumnMorphism( obj1R, > HomalgMatrix( [ [ 1, "x_2"] ], S ), O2R ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( m1R ); true gap> m3R := GradedRowOrColumnMorphism( obj3R, > HomalgMatrix( [[ "x_1" ]], S ), O2R ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( m3R ); true gap> liftR := Lift( m3R, m1R ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( liftR ); true

gap> Display( UnderlyingHomalgMatrix( liftR ) ); x_1, 0 (over a graded ring)

gap> O3R := GradedColumn( [ [[1,0],2] ], S ); <A graded column of rank 2> gap> morR := GradedRowOrColumnMorphism( > O2R, HomalgMatrix( [[ "x_1" ], [ "x_2" ]], S ), O3R ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( morR ); true gap> coliftR := Colift( m2R, morR ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( coliftR ); true

gap> Display( UnderlyingHomalgMatrix( coliftR ) ); x_1, x_2 (over a graded ring)

gap> fpR := WeakBiFiberProduct( m1R, m2R ); <A graded column of rank 2> gap> fp_proj1R := ProjectionInFirstFactorOfWeakBiFiberProduct( m1R, m2R ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( fp_proj1R ); true

gap> Display( UnderlyingHomalgMatrix( fp_proj1R ) ); 1,0, 0,1 (over a graded ring)

gap> fp_proj2R := ProjectionInSecondFactorOfWeakBiFiberProduct( m1R, m2R ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( fp_proj2R ); true

gap> Display( UnderlyingHomalgMatrix( fp_proj2R ) ); 1, x_2 (over a graded ring)

gap> BiasedWeakFiberProduct( m1R, m2R ); <A graded column of rank 2> gap> pbwfpcol := ProjectionOfBiasedWeakFiberProduct( m1R, m2R ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( pbwfpcol ); true

gap> Display( pbwfpcol ); A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ 0, 1 ], [ ( -1, 0 ), 1 ] ] Matrix: 1,0, 0,1 (over a graded ring) Range: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ 0, 1 ], [ ( -1, 0 ), 1 ] ]

gap> poR := WeakBiPushout( morR, m2R ); <A graded column of rank 2> gap> inj1R := InjectionOfFirstCofactorOfWeakBiPushout( morR, m2R ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( inj1R ); true

gap> Display( UnderlyingHomalgMatrix( inj1R ) ); 1,0, 0,1 (over a graded ring)

gap> inj2R := InjectionOfSecondCofactorOfWeakBiPushout( morR, m2R ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( inj2R ); true

gap> Display( UnderlyingHomalgMatrix( inj2R ) ); x_1, x_2 (over a graded ring)

gap> injectionR := InjectionOfBiasedWeakPushout( morR, m2R ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( injectionR ); true

gap> Display( injectionR ); A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 0 ), 2 ] ] Matrix: 1,0, 0,1 (over a graded ring) Range: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 0 ), 2 ] ]

gap> tensorProductR := TensorProductOnObjects( O1R, O2R ); <A graded column of rank 2>

gap> Display( tensorProductR ); A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( -1, 0 ), 2 ] ]

gap> tensorProductMorphismR := TensorProductOnMorphisms( m2R, morR ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [0, 1 ] ])> gap> IsWellDefined( tensorProductMorphismR ); true

gap> Display( tensorProductMorphismR ); A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ 0, 1 ] ] Matrix: x_1, x_2 (over a graded ring) Range: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ ( 1, 0 ), 2 ] ] gap> Display( DualOnObjects( TensorProductOnObjects( ObjectR, Object2R ) ) ); A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 16 and degrees: [ [ ( -2, 0 ), 5 ], [ ( -1, -1 ), 2 ], [ ( -2, 0 ), 6 ], [ ( -1, -1 ), 2 ], [ ( -2, 0 ), 1 ] ]

gap> IsWellDefined( DualOnMorphisms( m1R ) ); true

gap> Display( DualOnMorphisms( m1R ) ); A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ 0, 1 ] ] Matrix: 1, x_2 (over a graded ring) Range: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 2 and degrees: [ [ 0, 1 ], [ ( 1, 0 ), 1 ] ]

gap> IsWellDefined( EvaluationForDualWithGivenTensorProduct( TensorProductOnObjects( > DualOnObjects( ObjectR ), ObjectR ), ObjectR, TensorUnit( categoryR ) ) ); true

gap> Display( EvaluationForDualWithGivenTensorProduct( TensorProductOnObjects( > DualOnObjects( ObjectR ), ObjectR ), ObjectR, TensorUnit( categoryR ) ) ); A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) Source: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 4 and degrees: [ [ 0, 4 ] ] Matrix: 1,0,0,1 (over a graded ring) Range: A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees: [ [ 0, 1 ] ] gap> Display( InternalHomOnObjects( ObjectR, ObjectR ) ); A graded column over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 4 and degrees: [ [ 0, 4 ] ]

gap> aR := GradedRow( [ [ [1,0], 1 ] ], S ); <A graded row of rank 1> gap> bR := ZeroObject( CapCategory( aR ) ); <A graded row of rank 0> gap> coevR := CoevaluationForDual( bR ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( coevR ); true gap> evalR := EvaluationForDual( bR ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( evalR ); true gap> cR := GradedRow( [ [ [2,0], 1 ] ], S ); <A graded row of rank 1> gap> aR_o_bR := TensorProductOnObjects( aR, bR ); <A graded row of rank 0> gap> phiR := ZeroMorphism( aR_o_bR, cR ); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( phiR ); true gap> tens_mor := TensorProductToInternalHomLeftAdjunctMorphism(aR,bR,phiR); <A morphism in Category of graded rows over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( tens_mor ); true

gap> aC := GradedColumn( [ [ [1,0], 1 ] ], S ); <A graded column of rank 1> gap> bC := ZeroObject( CapCategory( aC ) ); <A graded column of rank 0> gap> coevC := CoevaluationForDual( bC ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( coevC ); true gap> evalC := EvaluationForDual( bC ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( evalC ); true gap> cC := GradedColumn( [ [ [2,0], 1 ] ], S ); <A graded column of rank 1> gap> aC_o_bC := TensorProductOnObjects( aC, bC ); <A graded column of rank 0> gap> phiC := ZeroMorphism( aC_o_bC, cC ); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( phiC ); true gap> tens_mor := TensorProductToInternalHomLeftAdjunctMorphism(aC,bC,phiC); <A morphism in Category of graded columns over Q[x_1,x_2,x_3,x_4] (with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])> gap> IsWellDefined( tens_mor ); true

gap> S := GradedRing( Q * "x,y" ); Q[x,y] (weights: yet unset) gap> SetWeightsOfIndeterminates( S, [ 1, 1 ] ); gap> mat_1 := HomalgMatrix( "[ x, 0, 0, y ]", 2, 2, S ); <A 2 x 2 matrix over a graded ring> gap> mat_2 := HomalgMatrix( "[ x, 0, 0, 0 ]", 2, 2, S ); <A 2 x 2 matrix over a graded ring> gap> a := GradedRow( [ [ [ 1 ], 1 ], [ [ 2 ], 1 ] ], S ); <A graded row of rank 2> gap> b := GradedColumn( [ [ [ 1 ], 1 ], [ [ 2 ], 1 ] ], S ); <A graded column of rank 2> gap> map := DeduceMapFromMatrixAndRangeForGradedRows( mat_1, a ); <A morphism in Category of graded rows over Q[x,y] (with weights [ 1, 1 ])> gap> some_map := DeduceSomeMapFromMatrixAndRangeForGradedRows( mat_1, a ); <A morphism in Category of graded rows over Q[x,y] (with weights [ 1, 1 ])> gap> IsEqualForMorphisms( map, some_map ); true gap> map := DeduceMapFromMatrixAndSourceForGradedRows( mat_1, a ); <A morphism in Category of graded rows over Q[x,y] (with weights [ 1, 1 ])> gap> some_map := DeduceSomeMapFromMatrixAndSourceForGradedRows( mat_1, a ); <A morphism in Category of graded rows over Q[x,y] (with weights [ 1, 1 ])> gap> IsEqualForMorphisms( map, some_map ); true gap> some_map := DeduceSomeMapFromMatrixAndRangeForGradedRows( mat_2, a ); <A morphism in Category of graded rows over Q[x,y] (with weights [ 1, 1 ])> gap> IsWellDefined( some_map ); true gap> some_map := DeduceSomeMapFromMatrixAndSourceForGradedRows( mat_2, a ); <A morphism in Category of graded rows over Q[x,y] (with weights [ 1, 1 ])> gap> IsWellDefined( some_map ); true gap> map := DeduceMapFromMatrixAndRangeForGradedCols( mat_1, b ); <A morphism in Category of graded columns over Q[x,y] (with weights [ 1, 1 ])> gap> some_map := DeduceSomeMapFromMatrixAndRangeForGradedCols( mat_1, b ); <A morphism in Category of graded columns over Q[x,y] (with weights [ 1, 1 ])> gap> IsEqualForMorphisms( map, some_map ); true gap> map := DeduceMapFromMatrixAndSourceForGradedCols( mat_1, b ); <A morphism in Category of graded columns over Q[x,y] (with weights [ 1, 1 ])> gap> some_map := DeduceSomeMapFromMatrixAndSourceForGradedCols( mat_1, b ); <A morphism in Category of graded columns over Q[x,y] (with weights [ 1, 1 ])> gap> IsEqualForMorphisms( map, some_map ); true gap> some_map := DeduceSomeMapFromMatrixAndRangeForGradedCols( mat_2, b ); <A morphism in Category of graded columns over Q[x,y] (with weights [ 1, 1 ])> gap> IsWellDefined( some_map ); true gap> some_map := DeduceSomeMapFromMatrixAndSourceForGradedCols( mat_2, b ); <A morphism in Category of graded columns over Q[x,y] (with weights [ 1, 1 ])> gap> IsWellDefined( some_map ); true

generated by GAPDoc2HTML