Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

16 Examples on graded rows and columns
 16.1 Freyd category of graded rows
 16.2 Freyd category of graded columns
 16.3 Constructors of objects and reduction of degree lists
 16.4 Constructors of morphisms
 16.5 The GAP categories
 16.6 A few categorical constructions for graded rows
 16.7 A few categorical constructions for graded columns
 16.8 Additional examples on monoidal structure for graded rows
 16.9 Additional examples on monoidal structure for graded columns
 16.10 Examples to test Tools methods in graded rows/cols

16 Examples on graded rows and columns

16.1 Freyd category of graded rows

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

16.2 Freyd category of graded columns

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

16.3 Constructors of objects and reduction of degree lists

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

16.4 Constructors of morphisms

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)

16.5 The GAP categories

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 ] ])

16.6 A few categorical constructions for graded rows

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 ] ]

16.7 A few categorical constructions for graded columns

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 ] ]

16.8 Additional examples on monoidal structure for graded rows

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

16.9 Additional examples on monoidal structure for graded columns

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

16.10 Examples to test Tools methods in graded rows/cols

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
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Ind

generated by GAPDoc2HTML