Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Ind

### 15 Examples on graded rows and columns

#### 15.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 ])>
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 ])>
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>
>                        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 ] ])>
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 ] ])>
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

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

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

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

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

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

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


#### 15.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>
>                        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

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

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

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

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

Range:
(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

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


#### 15.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


#### 15.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>
>       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 ) );
(with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees:
[ [ 0, 1 ] ]
gap> Display( Range( m1L ) );
(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

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>
>       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 ) );
(with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ]) of rank 1 and degrees:
[ [ 0, 1 ] ]
gap> Display( Range( m1R ) );
(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


#### 15.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 ] ])


#### 15.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:
(with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])
of rank 0 and degrees:
[  ]

Matrix:
(an empty 0 x 2 matrix)

Range:
(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:
(with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])
of rank 1 and degrees:
[ [ 0, 1 ] ]

Matrix:
1

Range:
(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 );
(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

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

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

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

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

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

gap> IsMonomorphism( kL );
true
gap> IsEpimorphism( kL );
false
gap> IsMonomorphism( ckL );
false
gap> IsEpimorphism( ckL );
true
>       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>
>       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
>       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

gap> O3L := GradedRow( [ [[1,0],2] ], S );
<A graded row of rank 2>
>        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

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

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

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

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

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

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

Range:
(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:
(with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])
of rank 1 and degrees:
[ [ 0, 1 ] ]

Matrix:
x_1,x_2

Range:
(with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])
of rank 2 and degrees:
[ [ ( 1, 0 ), 2 ] ]
gap> Display( DualOnObjects( TensorProductOnObjects( ObjectL, Object2L ) ) );
(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:
(with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])
of rank 1 and degrees:
[ [ 0, 1 ] ]

Matrix:
1,x_2

Range:
(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

Range:
(with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])
of rank 1 and degrees:
[ [ 0, 1 ] ]
gap> Display( InternalHomOnObjects( ObjectL, ObjectL ) );
(with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])
of rank 4 and degrees:
[ [ 0, 4 ] ]


#### 15.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:
(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:
(with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])
of rank 1 and degrees:
[ [ 0, 1 ] ]

Matrix:
1

Range:
(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 );
(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

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

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

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

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

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

gap> IsMonomorphism( kR );
true
gap> IsEpimorphism( kR );
false
gap> IsMonomorphism( ckR );
false
gap> IsEpimorphism( ckR );
true
>       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>
>       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
>       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

gap> O3R := GradedColumn( [ [[1,0],2] ], S );
<A graded column of rank 2>
>        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

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

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

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:
(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

Range:
(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

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

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:
(with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])
of rank 2 and degrees:
[ [ ( 1, 0 ), 2 ] ]

Matrix:
1,0,
0,1

Range:
(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:
(with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])
of rank 1 and degrees:
[ [ 0, 1 ] ]

Matrix:
x_1,
x_2

Range:
(with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])
of rank 2 and degrees:
[ [ ( 1, 0 ), 2 ] ]
gap> Display( DualOnObjects( TensorProductOnObjects( ObjectR, Object2R ) ) );
(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:
(with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])
of rank 1 and degrees:
[ [ 0, 1 ] ]

Matrix:
1,
x_2

Range:
(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:
(with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])
of rank 4 and degrees:
[ [ 0, 4 ] ]

Matrix:
1,0,0,1

Range:
(with weights [ [ 1, 0 ], [ 1, 0 ], [ 0, 1 ], [ 0, 1 ] ])
of rank 1 and degrees:
[ [ 0, 1 ] ]
gap> Display( InternalHomOnObjects( ObjectR, ObjectR ) );
(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
<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
<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


#### 15.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

Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Ind

generated by GAPDoc2HTML