Goto Chapter: Top 1 Ind

### 1 Finite concrete categories

#### 1.1 Example

##### 1.1-1 A category of module homomorphisms
true
gap> c3c3 := ConcreteCategoryForCAP( [ [2,3,1], [4,5,6], [,,,5,6,4] ] );
A finite concrete category
gap> C3C3 := AsFpCategory( c3c3 );
FreeCategory( RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) / relations
gap> UnderlyingQuiverAlgebra( C3C3 );
(Q * q) / [ 1*(a*a*a) - 1*(1), 1*(c*c*c) - 1*(2), 1*(b*c) - 1*(a*b) ]

A representation of the category C3C3 is another way to encode a module homomorphism between two modules over the cyclic group $$C_3$$ of order $$3$$: The vector space underlying the first module is the given by the value of (1). The action of $$C_3$$ on the first module is given by the value of (a). The vector space underlying the second module is the given by the value of (2). The action on the second module is given by the value of (c). The above relation of the quiver states that the value of (b) is a module homomorphism from the first to the second $$C_3$$-module.

gap> GF3 := HomalgRingOfIntegers( 3 );
GF(3)
gap> A := GF3[c3c3];
Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations
gap> IsLinearClosureOfACategory( A );
true
gap> CatReps := FunctorCategory( A, GF3 );
FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) )
gap> Display( CatReps );
A CAP category with name
FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) ):

107 primitive operations were used to derive 363 operations for this category
which algorithmically
* IsCategoryWithDecidableColifts
* IsCategoryWithDecidableLifts
* IsEquippedWithHomomorphismStructure
* IsLinearCategoryOverCommutativeRingWithFinitelyGeneratedFreeExternalHoms
* IsSymmetricMonoidalCategory
* IsAbelianCategory
gap> CommutativeRingOfLinearCategory( CatReps );
GF(3)
gap> zero := ZeroObject( CatReps );
<(1)->0, (2)->0; (a)->0x0, (b)->0x0, (c)->0x0>
gap> Display( zero );
Image of <(1)>:
A vector space object over GF(3) of dimension 0

Image of <(2)>:
A vector space object over GF(3) of dimension 0

Image of (1)-[{ Z(3)^0*(a) }]->(1):
(an empty 0 x 0 matrix)

A morphism in Category of matrices over GF(3)

Image of (1)-[{ Z(3)^0*(b) }]->(2):
(an empty 0 x 0 matrix)

A morphism in Category of matrices over GF(3)

Image of (2)-[{ Z(3)^0*(c) }]->(2):
(an empty 0 x 0 matrix)

A morphism in Category of matrices over GF(3)

An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) ) given by the above data
gap> unit := TensorUnit( CatReps );
<(1)->1, (2)->1; (a)->1x1, (b)->1x1, (c)->1x1>
gap> Display( unit );
Image of <(1)>:
A vector space object over GF(3) of dimension 1

Image of <(2)>:
A vector space object over GF(3) of dimension 1

Image of (1)-[{ Z(3)^0*(a) }]->(1):
1

An identity morphism in Category of matrices over GF(3)

Image of (1)-[{ Z(3)^0*(b) }]->(2):
1

An identity morphism in Category of matrices over GF(3)

Image of (2)-[{ Z(3)^0*(c) }]->(2):
1

An identity morphism in Category of matrices over GF(3)

An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) ) given by the above data
gap> d := [[1,1,0,0,0],[0,1,1,0,0],[0,0,1,0,0],[0,0,0,1,1],[0,0,0,0,1]];;
gap> e := [[0,1,0,0],[0,0,1,0],[0,0,0,0],[0,1,0,1],[0,0,1,0]];;
gap> f := [[1,1,0,0],[0,1,1,0],[0,0,1,0],[0,0,0,1]];;
gap> nine := AsObjectInFunctorCategory( CatReps, [ 5, 4 ], [ d, e, f ] );
<(1)->5, (2)->4; (a)->5x5, (b)->5x4, (c)->4x4>
gap> Display( nine );
Image of <(1)>:
A vector space object over GF(3) of dimension 5

Image of <(2)>:
A vector space object over GF(3) of dimension 4

Image of (1)-[{ Z(3)^0*(a) }]->(1):
1 1 . . .
. 1 1 . .
. . 1 . .
. . . 1 1
. . . . 1

A morphism in Category of matrices over GF(3)

Image of (1)-[{ Z(3)^0*(b) }]->(2):
. 1 . .
. . 1 .
. . . .
. 1 . 1
. . 1 .

A morphism in Category of matrices over GF(3)

Image of (2)-[{ Z(3)^0*(c) }]->(2):
1 1 . .
. 1 1 .
. . 1 .
. . . 1

A morphism in Category of matrices over GF(3)

An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) ) given by the above data
gap> nine( A.1 );
<A vector space object over GF(3) of dimension 5>
gap> nine( A.2 );
<A vector space object over GF(3) of dimension 4>
gap> nine( A.b );
<A morphism in Category of matrices over GF(3)>
gap> Display( nine( A.b ) );
. 1 . .
. . 1 .
. . . .
. 1 . 1
. . 1 .

A morphism in Category of matrices over GF(3)
gap> IsWellDefined( nine );
true
gap> Length( WeakDirectSumDecomposition( nine ) );
1
gap> fortyone := TensorProductOnObjects( nine, nine );
<(1)->25, (2)->16; (a)->25x25, (b)->25x16, (c)->16x16>
gap> IsWellDefined( fortyone );
true
gap> fortyone( A.1 );
<A vector space object over GF(3) of dimension 25>
gap> fortyone( A.2 );
<A vector space object over GF(3) of dimension 16>
gap> fortyone( A.a ) = TensorProductOnMorphisms( nine( A.a ), nine( A.a ) );
true
gap> fortyone( A.b ) = TensorProductOnMorphisms( nine( A.b ), nine( A.b ) );
true
gap> fortyone( A.c ) = TensorProductOnMorphisms( nine( A.c ), nine( A.c ) );
true
gap> Display( fortyone );
Image of <(1)>:
A vector space object over GF(3) of dimension 25

Image of <(2)>:
A vector space object over GF(3) of dimension 16

Image of (1)-[{ Z(3)^0*(a) }]->(1):
1 1 . . . 1 1 . . . . . . . . . . . . . . . . . .
. 1 1 . . . 1 1 . . . . . . . . . . . . . . . . .
. . 1 . . . . 1 . . . . . . . . . . . . . . . . .
. . . 1 1 . . . 1 1 . . . . . . . . . . . . . . .
. . . . 1 . . . . 1 . . . . . . . . . . . . . . .
. . . . . 1 1 . . . 1 1 . . . . . . . . . . . . .
. . . . . . 1 1 . . . 1 1 . . . . . . . . . . . .
. . . . . . . 1 . . . . 1 . . . . . . . . . . . .
. . . . . . . . 1 1 . . . 1 1 . . . . . . . . . .
. . . . . . . . . 1 . . . . 1 . . . . . . . . . .
. . . . . . . . . . 1 1 . . . . . . . . . . . . .
. . . . . . . . . . . 1 1 . . . . . . . . . . . .
. . . . . . . . . . . . 1 . . . . . . . . . . . .
. . . . . . . . . . . . . 1 1 . . . . . . . . . .
. . . . . . . . . . . . . . 1 . . . . . . . . . .
. . . . . . . . . . . . . . . 1 1 . . . 1 1 . . .
. . . . . . . . . . . . . . . . 1 1 . . . 1 1 . .
. . . . . . . . . . . . . . . . . 1 . . . . 1 . .
. . . . . . . . . . . . . . . . . . 1 1 . . . 1 1
. . . . . . . . . . . . . . . . . . . 1 . . . . 1
. . . . . . . . . . . . . . . . . . . . 1 1 . . .
. . . . . . . . . . . . . . . . . . . . . 1 1 . .
. . . . . . . . . . . . . . . . . . . . . . 1 . .
. . . . . . . . . . . . . . . . . . . . . . . 1 1
. . . . . . . . . . . . . . . . . . . . . . . . 1

A morphism in Category of matrices over GF(3)

Image of (1)-[{ Z(3)^0*(b) }]->(2):
. . . . . 1 . . . . . . . . . .
. . . . . . 1 . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . 1 . 1 . . . . . . . .
. . . . . . 1 . . . . . . . . .
. . . . . . . . . 1 . . . . . .
. . . . . . . . . . 1 . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . 1 . 1 . . . .
. . . . . . . . . . 1 . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . 1 . . . . . . . 1 . .
. . . . . . 1 . . . . . . . 1 .
. . . . . . . . . . . . . . . .
. . . . . 1 . 1 . . . . . 1 . 1
. . . . . . 1 . . . . . . . 1 .
. . . . . . . . . 1 . . . . . .
. . . . . . . . . . 1 . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . 1 . 1 . . . .
. . . . . . . . . . 1 . . . . .

A morphism in Category of matrices over GF(3)

Image of (2)-[{ Z(3)^0*(c) }]->(2):
1 1 . . 1 1 . . . . . . . . . .
. 1 1 . . 1 1 . . . . . . . . .
. . 1 . . . 1 . . . . . . . . .
. . . 1 . . . 1 . . . . . . . .
. . . . 1 1 . . 1 1 . . . . . .
. . . . . 1 1 . . 1 1 . . . . .
. . . . . . 1 . . . 1 . . . . .
. . . . . . . 1 . . . 1 . . . .
. . . . . . . . 1 1 . . . . . .
. . . . . . . . . 1 1 . . . . .
. . . . . . . . . . 1 . . . . .
. . . . . . . . . . . 1 . . . .
. . . . . . . . . . . . 1 1 . .
. . . . . . . . . . . . . 1 1 .
. . . . . . . . . . . . . . 1 .
. . . . . . . . . . . . . . . 1

A morphism in Category of matrices over GF(3)

An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) ) given by the above data
gap> etas := WeakDirectSumDecomposition( fortyone : random := false );;
gap> dec := List( etas, eta -> List( SetOfObjects( A ),
>              o -> Dimension( Source( eta( o ) ) ) ) );
[ [ 3, 0 ], [ 3, 0 ], [ 3, 0 ], [ 3, 0 ], [ 0, 3 ],
[ 1, 3 ], [ 3, 3 ], [ 3, 3 ], [ 3, 3 ], [ 3, 1 ] ]
gap> iso := UniversalMorphismFromDirectSum( etas );
<(1)->25x25, (2)->16x16>
gap> IsIsomorphism( iso );
true
gap> Display( Source( iso ) );
Image of <(1)>:
A vector space object over GF(3) of dimension 25

Image of <(2)>:
A vector space object over GF(3) of dimension 16

Image of (1)-[{ Z(3)^0*(a) }]->(1):
1 1 . . . . . . . . . . . . . . . . . . . . . . .
. 1 . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 . . . . . . . . . . . . . . . . . . . . . .
. . . 1 . . . . . . . . . . . . . . . . . . . . .
. . . 1 1 . . . . . . . . . . . . . . . . . . . .
. . . . 1 1 . . . . . . . . . . . . . . . . . . .
. . . . . . . 1 . . . . . . . . . . . . . . . . .
. . . . . . 2 2 . . . . . . . . . . . . . . . . .
. . . . . . 1 . 1 . . . . . . . . . . . . . . . .
. . . . . . . . . 1 2 . . . . . . . . . . . . . .
. . . . . . . . . . 1 . . . . . . . . . . . . . .
. . . . . . . . . 2 . 1 . . . . . . . . . . . . .
. . . . . . . . . . . . 1 . . . . . . . . . . . .
. . . . . . . . . . . . . 1 1 . . . . . . . . . .
. . . . . . . . . . . . . . 1 1 . . . . . . . . .
. . . . . . . . . . . . . . . 1 . . . . . . . . .
. . . . . . . . . . . . . . . . 1 1 . . . . . . .
. . . . . . . . . . . . . . . . . 1 1 . . . . . .
. . . . . . . . . . . . . . . . . . 1 . . . . . .
. . . . . . . . . . . . . . . . . . . 1 1 . . . .
. . . . . . . . . . . . . . . . . . . . 1 1 . . .
. . . . . . . . . . . . . . . . . . . . . 1 . . .
. . . . . . . . . . . . . . . . . . . . . . 1 1 .
. . . . . . . . . . . . . . . . . . . . . . . 1 1
. . . . . . . . . . . . . . . . . . . . . . . . 1

A morphism in Category of matrices over GF(3)

Image of (1)-[{ Z(3)^0*(b) }]->(2):
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . 1 . 2 . . . . . . . . . .
. . . . . . 1 . 2 . . . . . . .
. . . . . . . 1 2 . . . . . . .
. . . . . . . . 2 . . . . . . .
. . . . . . . . . . 1 2 . . . .
. . . . . . . . . . . 1 . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 2 1 .
. . . . . . . . . . . . . . 2 .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 1
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .

A morphism in Category of matrices over GF(3)

Image of (2)-[{ Z(3)^0*(c) }]->(2):
1 . . . . . . . . . . . . . . .
. 1 1 . . . . . . . . . . . . .
1 . 1 . . . . . . . . . . . . .
. . . . . 1 . . . . . . . . . .
. . . . 1 1 . . . . . . . . . .
. . . 2 . 2 . . . . . . . . . .
. . . . . . 1 1 2 . . . . . . .
. . . . . . . 1 2 . . . . . . .
. . . . . . . . 1 . . . . . . .
. . . . . . . . . 1 1 . . . . .
. . . . . . . . . . 1 1 . . . .
. . . . . . . . . . . 1 . . . .
. . . . . . . . . . . . 1 1 . .
. . . . . . . . . . . . . 1 1 .
. . . . . . . . . . . . . . 1 .
. . . . . . . . . . . . . . . 1

A morphism in Category of matrices over GF(3)

An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) ) given by the above data
gap> Display( iso );
Image of <(1)>:
. . 1 . . . 2 1 . 1 1 . . 2 . . . 1 . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 1 . .
. 1 2 . 2 1 1 2 2 2 1 . . 2 . . 1 . . 2 2 . . 1 .
. . . . . . . 2 . . . 1 1 . . . . . . . . . 2 . .
. . 1 . . . 1 1 . 1 . 2 . 2 . . . 1 . . . 1 1 . .
. 1 2 . 2 . 1 2 2 2 1 . . 2 . . 1 . . 2 . . . 1 .
. . 1 . . . 1 1 . 1 . . 2 2 . . . 1 . . . 1 1 . .
. . 1 . . . 1 . . 1 . 1 1 2 . . . 1 . . . 1 . . .
. 1 1 . 2 . 2 . 2 1 1 . . . . . 1 . . 2 . . . 1 .
. . . . . . . . . 1 . 2 . 1 1 . . 2 . . . 2 2 . .
. . . . . . . . . . . . 1 . 1 . . . . . . . 2 . .
. . . . . . . . 2 . 1 . . . . . 1 . . 2 . . . 1 .
. . 2 . . . 1 2 . 2 2 . . 1 . . . 2 . 2 . 1 . 1 .
2 . 1 1 . 1 2 1 2 . . . . 1 . 1 . . . 1 1 . . 2 .
. 2 . . 1 2 . . 1 . 1 . . 2 . . 1 . . . 1 2 . . .
. . 2 . . . 1 2 . 2 2 . . 1 . . . 1 . . . 2 . . .
2 . . 1 . 1 . . 2 2 2 . . 2 . . . 2 . . . 1 . . .
. 2 . . 1 2 . . 1 . 1 . . 2 . . . . . . . . . . .
. . 2 . . . 1 2 . 2 2 . . 1 . . . . . . . . . . .
1 . . . 2 2 . . 2 . 1 . . 1 . 2 2 1 . 2 1 . . 1 .
. 1 . . . 1 . . . 1 2 . . 2 . . 2 2 . . 2 2 . . .
. . 1 . . . 2 1 . . 1 . . . . . . 2 . . . 1 . . .
1 . . 2 . 2 . . 1 . 1 . . 2 . 2 2 . 1 1 1 1 . 2 2
. 1 . . 2 1 . . 2 . 2 . . 1 . . 2 2 . 1 2 2 . 1 1
. . 1 . . . 2 1 . 1 1 . . 2 . . . 2 . . . 1 . . 2

An isomorphism in Category of matrices over GF(3)

Image of <(2)>:
. . 2 . . 1 . . 2 2 1 . . . . .
2 1 . . . . . . . . . . . 1 . .
. 2 1 . 2 . 1 . . . . . . . 1 .
. . 2 . . 2 . 2 . . . 1 . 1 . .
. 2 . 2 . 2 . . . . . . 1 1 . .
. . 2 . . 2 1 2 . 2 2 . . 1 1 .
. . . . . 1 1 1 . . . 1 . 1 1 .
. . . . . . 1 . . 1 . 1 . . 1 .
. . . . . . . . . . 1 . . . . .
. . . 1 . . . . . . . . . . . .
. . . . . . . 1 . . . . . . . .
. . . . . . . . . . . 1 . . . .
. . . . . . . . . . . . 1 . . .
. . . . . . . . . . . . . 1 . .
. . . . . . . . . . . . . . 1 .
. . . . . . . . . . . . . . . 1

An isomorphism in Category of matrices over GF(3)

A morphism in FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) ) given by the above data
gap> eta := etas[9];
<(1)->3x25, (2)->3x16>
gap> TensorProductOnMorphisms( eta, eta );
<(1)->9x625, (2)->9x256>
gap> six := Source( eta );
<(1)->3, (2)->3; (a)->3x3, (b)->3x3, (c)->3x3>
gap> Display( six );
Image of <(1)>:
A vector space object over GF(3) of dimension 3

Image of <(2)>:
A vector space object over GF(3) of dimension 3

Image of (1)-[{ Z(3)^0*(a) }]->(1):
1 1 .
. 1 1
. . 1

A morphism in Category of matrices over GF(3)

Image of (1)-[{ Z(3)^0*(b) }]->(2):
. 2 1
. . 2
. . .

A morphism in Category of matrices over GF(3)

Image of (2)-[{ Z(3)^0*(c) }]->(2):
1 1 .
. 1 1
. . 1

A morphism in Category of matrices over GF(3)

An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) ) given by the above data
gap> emb := EmbeddingOfSumOfImagesOfAllMorphisms( unit, six );
<(1)->1x3, (2)->0x3>
gap> Display( emb );
Image of <(1)>:
. . 1

A morphism in Category of matrices over GF(3)

Image of <(2)>:
(an empty 0 x 3 matrix)

A morphism in Category of matrices over GF(3)

A morphism in FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) ) given by the above data
gap> s1 := Source( emb );
<(1)->1, (2)->0; (a)->1x1, (b)->1x0, (c)->0x0>
gap> Display( s1 );
Image of <(1)>:
A vector space object over GF(3) of dimension 1

Image of <(2)>:
A vector space object over GF(3) of dimension 0

Image of (1)-[{ Z(3)^0*(a) }]->(1):
1

A morphism in Category of matrices over GF(3)

Image of (1)-[{ Z(3)^0*(b) }]->(2):
(an empty 1 x 0 matrix)

A morphism in Category of matrices over GF(3)

Image of (2)-[{ Z(3)^0*(c) }]->(2):
(an empty 0 x 0 matrix)

A morphism in Category of matrices over GF(3)

An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) ) given by the above data
gap> Aop := OppositeAlgebroid( A );
Algebroid( GF(3), FreeCategory(
RightQuiver( "q_op(2)[a:1->1,b:2->1,c:2->2]" ) ) ) / relations
gap> Yop := YonedaEmbeddingInFunctorCategory( Aop );
Yoneda embedding functor
gap> Display( Yop );
Yoneda embedding functor:

Algebroid( GF(3), FreeCategory(
RightQuiver( "q_op(2)[a:1->1,b:2->1,c:2->2]" ) ) ) / relations
|
V
FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) )
gap> proj1 := Yop( Aop.1 );
<(1)->3, (2)->3; (a)->3x3, (b)->3x3, (c)->3x3>
gap> IsProjective( proj1 );
true
gap> Display( proj1 );
Image of <(1)>:
A vector space object over GF(3) of dimension 3

Image of <(2)>:
A vector space object over GF(3) of dimension 3

Image of (1)-[{ Z(3)^0*(a) }]->(1):
. 1 .
. . 1
1 . .

A morphism in Category of matrices over GF(3)

Image of (1)-[{ Z(3)^0*(b) }]->(2):
1 . .
. 1 .
. . 1

A morphism in Category of matrices over GF(3)

Image of (2)-[{ Z(3)^0*(c) }]->(2):
. 1 .
. . 1
1 . .

A morphism in Category of matrices over GF(3)

An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) ) given by the above data
gap> e1 := EmbeddingOfSumOfImagesOfAllMorphisms( unit, proj1 );
<(1)->1x3, (2)->1x3>
gap> Source( e1 );
<(1)->1, (2)->1; (a)->1x1, (b)->1x1, (c)->1x1>
gap> IsEpimorphism( EmbeddingOfSumOfImagesOfAllMorphisms( proj1, six ) );
false
gap> five := CokernelObject( emb );
<(1)->2, (2)->3; (a)->2x2, (b)->2x3, (c)->3x3>
gap> Display( five );
Image of <(1)>:
A vector space object over GF(3) of dimension 2

Image of <(2)>:
A vector space object over GF(3) of dimension 3

Image of (1)-[{ Z(3)^0*(a) }]->(1):
1 1
. 1

A morphism in Category of matrices over GF(3)

Image of (1)-[{ Z(3)^0*(b) }]->(2):
. 2 1
. . 2

A morphism in Category of matrices over GF(3)

Image of (2)-[{ Z(3)^0*(c) }]->(2):
1 1 .
. 1 1
. . 1

A morphism in Category of matrices over GF(3)

An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) ) given by the above data

The next calculation shows that the $$3$$-dimensional representation of $$C_3$$ associated to object $$1$$ is a single copy of the regular representation of $$C_3$$.

gap> SumOfImagesOfAllMorphisms( s1, six );
<(1)->1, (2)->0; (a)->1x1, (b)->1x0, (c)->0x0>

The next calculation shows that the quotient representation five maps its module at object $$1$$ monomorphically to the module at object $$2$$, which must either be indecomposable of dimension $$3$$, or else the direct sum of indecomposables of dimension $$2$$ and $$1$$.

gap> SumOfImagesOfAllMorphisms( s1, five );
<(1)->0, (2)->0; (a)->0x0, (b)->0x0, (c)->0x0>
gap> SumOfImagesOfAllMorphisms( unit, five );
<(1)->1, (2)->1; (a)->1x1, (b)->1x1, (c)->1x1>

The next calculation shows that the module at object $$2$$ for six is indecomposable of dimension $$3$$. We now have sufficient information to describe six completely.

gap> SumOfImagesOfAllMorphisms( six, unit );
<(1)->0, (2)->1; (a)->0x0, (b)->0x1, (c)->1x1>
gap> proj2 := Yop( Aop.2 );
<(1)->0, (2)->3; (a)->0x0, (b)->0x3, (c)->3x3>
gap> IsProjective( proj2 );
true
gap> Display( proj2 );
Image of <(1)>:
A vector space object over GF(3) of dimension 0

Image of <(2)>:
A vector space object over GF(3) of dimension 3

Image of (1)-[{ Z(3)^0*(a) }]->(1):
(an empty 0 x 0 matrix)

A zero morphism in Category of matrices over GF(3)

Image of (1)-[{ Z(3)^0*(b) }]->(2):
(an empty 0 x 3 matrix)

A zero morphism in Category of matrices over GF(3)

Image of (2)-[{ Z(3)^0*(c) }]->(2):
. 1 .
. . 1
1 . .

A morphism in Category of matrices over GF(3)

An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) ) given by the above data

##### 1.1-2 One step in the direct sum decomposition
gap> c3c3 := ConcreteCategoryForCAP( [ [2,3,1], [4,5,6], [,,,5,6,4] ] );
A finite concrete category
gap> AsFpCategory( c3c3 );
FreeCategory( RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) / relations
gap> GF3 := HomalgRingOfIntegers( 3 );
GF(3)
gap> A := GF3[c3c3];
Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations
gap> IsLinearClosureOfACategory( A );
true
gap> CatReps := FunctorCategory( A, GF3 );
FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) )
gap> d := [[1,1,0,0,0],[0,1,1,0,0],[0,0,1,0,0],[0,0,0,1,1],[0,0,0,0,1]];;
gap> e := [[0,1,0,0],[0,0,1,0],[0,0,0,0],[0,1,0,1],[0,0,1,0]];;
gap> f := [[1,1,0,0],[0,1,1,0],[0,0,1,0],[0,0,0,1]];;
gap> nine := AsObjectInFunctorCategory( CatReps, [ 5, 4 ], [ d, e, f ] );
<(1)->5, (2)->4; (a)->5x5, (b)->5x4, (c)->4x4>
gap> DecomposeOnceByRandomEndomorphism( nine );
fail

The above shows that our representation nine is indecomposable (with a high probability). We use the tensor product to generate another representation fortyone, that is hopefully decomposable, and inspect the two resulting embeddings iota and kappa.

gap> fortyone := TensorProductOnObjects( nine, nine );
<(1)->25, (2)->16; (a)->25x25, (b)->25x16, (c)->16x16>
gap> result := DecomposeOnceByRandomEndomorphism( fortyone );
[ <(1)->3x25, (2)->1x16>, <(1)->22x25, (2)->15x16> ]
gap> iota := result[1];
<(1)->3x25, (2)->1x16>
gap> kappa := result[2];
<(1)->22x25, (2)->15x16>
gap> Display( fortyone );
Image of <(1)>:
A vector space object over GF(3) of dimension 25

Image of <(2)>:
A vector space object over GF(3) of dimension 16

Image of (1)-[{ Z(3)^0*(a) }]->(1):
1 1 . . . 1 1 . . . . . . . . . . . . . . . . . .
. 1 1 . . . 1 1 . . . . . . . . . . . . . . . . .
. . 1 . . . . 1 . . . . . . . . . . . . . . . . .
. . . 1 1 . . . 1 1 . . . . . . . . . . . . . . .
. . . . 1 . . . . 1 . . . . . . . . . . . . . . .
. . . . . 1 1 . . . 1 1 . . . . . . . . . . . . .
. . . . . . 1 1 . . . 1 1 . . . . . . . . . . . .
. . . . . . . 1 . . . . 1 . . . . . . . . . . . .
. . . . . . . . 1 1 . . . 1 1 . . . . . . . . . .
. . . . . . . . . 1 . . . . 1 . . . . . . . . . .
. . . . . . . . . . 1 1 . . . . . . . . . . . . .
. . . . . . . . . . . 1 1 . . . . . . . . . . . .
. . . . . . . . . . . . 1 . . . . . . . . . . . .
. . . . . . . . . . . . . 1 1 . . . . . . . . . .
. . . . . . . . . . . . . . 1 . . . . . . . . . .
. . . . . . . . . . . . . . . 1 1 . . . 1 1 . . .
. . . . . . . . . . . . . . . . 1 1 . . . 1 1 . .
. . . . . . . . . . . . . . . . . 1 . . . . 1 . .
. . . . . . . . . . . . . . . . . . 1 1 . . . 1 1
. . . . . . . . . . . . . . . . . . . 1 . . . . 1
. . . . . . . . . . . . . . . . . . . . 1 1 . . .
. . . . . . . . . . . . . . . . . . . . . 1 1 . .
. . . . . . . . . . . . . . . . . . . . . . 1 . .
. . . . . . . . . . . . . . . . . . . . . . . 1 1
. . . . . . . . . . . . . . . . . . . . . . . . 1

A morphism in Category of matrices over GF(3)

Image of (1)-[{ Z(3)^0*(b) }]->(2):
. . . . . 1 . . . . . . . . . .
. . . . . . 1 . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . 1 . 1 . . . . . . . .
. . . . . . 1 . . . . . . . . .
. . . . . . . . . 1 . . . . . .
. . . . . . . . . . 1 . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . 1 . 1 . . . .
. . . . . . . . . . 1 . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . 1 . . . . . . . 1 . .
. . . . . . 1 . . . . . . . 1 .
. . . . . . . . . . . . . . . .
. . . . . 1 . 1 . . . . . 1 . 1
. . . . . . 1 . . . . . . . 1 .
. . . . . . . . . 1 . . . . . .
. . . . . . . . . . 1 . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . 1 . 1 . . . .
. . . . . . . . . . 1 . . . . .

A morphism in Category of matrices over GF(3)

Image of (2)-[{ Z(3)^0*(c) }]->(2):
1 1 . . 1 1 . . . . . . . . . .
. 1 1 . . 1 1 . . . . . . . . .
. . 1 . . . 1 . . . . . . . . .
. . . 1 . . . 1 . . . . . . . .
. . . . 1 1 . . 1 1 . . . . . .
. . . . . 1 1 . . 1 1 . . . . .
. . . . . . 1 . . . 1 . . . . .
. . . . . . . 1 . . . 1 . . . .
. . . . . . . . 1 1 . . . . . .
. . . . . . . . . 1 1 . . . . .
. . . . . . . . . . 1 . . . . .
. . . . . . . . . . . 1 . . . .
. . . . . . . . . . . . 1 1 . .
. . . . . . . . . . . . . 1 1 .
. . . . . . . . . . . . . . 1 .
. . . . . . . . . . . . . . . 1

A morphism in Category of matrices over GF(3)

An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) ) given by the above data
gap> S := DirectSum( [ Source( iota ), Source( kappa ) ] );
<(1)->25, (2)->16; (a)->25x25, (b)->25x16, (c)->16x16>
gap> Display( S );
Image of <(1)>:
A vector space object over GF(3) of dimension 25

Image of <(2)>:
A vector space object over GF(3) of dimension 16

Image of (1)-[{ Z(3)^0*(a) }]->(1):
1 1 . . . . . . . . . . . . . . . . . . . . . . .
. 1 1 . . . . . . . . . . . . . . . . . . . . . .
. . 1 . . . . . . . . . . . . . . . . . . . . . .
. . . 1 1 . . . 1 1 . . . . . . . . . . . . . . .
. . . . 1 1 . . . 1 1 . . . . . . . . . . . . . .
. . . . . 1 . . . . 1 . . . . . . . . . . . . . .
. . . . . . 1 1 . . . 1 1 . . . . . . . . . . . .
. . . . . . . 1 . . . . 1 . . . . . . . . . . . .
. . . . . . . . 1 1 . . . 1 1 . . . . . . . . . .
. . . . . . . . . 1 1 . . . 1 1 . . . . . . . . .
. . . . . . . . . . 1 . . . . 1 . . . . . . . . .
. . . . . . . . . . . 1 1 . . . 1 1 . . . . . . .
. . . . . . . . . . . . 1 . . . . 1 . . . . . . .
. . . . . . . . . . . . . 1 1 . . . . . . . . . .
. . . . . . . . . . . . . . 1 1 . . . . . . . . .
. . . . . . . . . . . . . . . 1 . . . . . . . . .
. . . . . . . . . . . . . . . . 1 1 . . . . . . .
. . . . . . . . . . . . . . . . . 1 . . . . . . .
. . . . . . . . . . . . . . . . . . 1 1 . 1 1 . .
. . . . . . . . . . . . . . . . . . . 1 1 . 1 1 .
. . . . . . . . . . . . . . . . . . . . 1 . . 1 .
. . . . . . . . . . . . . . . . . . . . . 1 1 . .
. . . . . . . . . . . . . . . . . . . . . . 1 1 .
. . . . . . . . . . . . . . . . . . . . . . . 1 .
. . . . . . . . . . . . . . . . . . . . . . . . 1

A morphism in Category of matrices over GF(3)

Image of (1)-[{ Z(3)^0*(b) }]->(2):
1 . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . 1 . . . . . . . . .
. . . . . . . 1 . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . 1 . 1 . . . . . . .
. . . . . . . 1 . . . . . . . .
. . . . . . . . . . 1 . . . . .
. . . . . . . . . . . 1 . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . 1 . 1 . . .
. . . . . . . . . . . 1 . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . 1 . . . . . . . 1 .
. . . . . . . 1 . . . . . . . 1
. . . . . . . . . . . . . . . .
. . . . . . . . . . 1 . . . . .
. . . . . . . . . . . 1 . . . .
. . . . . . . . . . . . . . . .
. . . . . . . 2 . . 1 . 1 . . 2

A morphism in Category of matrices over GF(3)

Image of (2)-[{ Z(3)^0*(c) }]->(2):
1 . . . . . . . . . . . . . . .
. 1 1 . . 1 1 . . . . . . . . .
. . 1 1 . . 1 1 . . . . . . . .
. . . 1 . . . 1 . . . . . . . .
. . . . 1 . . . 1 . . . . . . .
. . . . . 1 1 . . 1 1 . . . . .
. . . . . . 1 1 . . 1 1 . . . .
. . . . . . . 1 . . . 1 . . . .
. . . . . . . . 1 . . . 1 . . .
. . . . . . . . . 1 1 . . . . .
. . . . . . . . . . 1 1 . . . .
. . . . . . . . . . . 1 . . . .
. . . . . . . . . . . . 1 . . .
. . . . . . . . . . . . . 1 1 .
. . . . . . . . . . . . . . 1 1
. . . . . . . . . . . . . . . 1

A morphism in Category of matrices over GF(3)

An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) ) given by the above data

Comparing the matrices of fortyone with those of S, we see that after decomposing once, we have separated one small matrix on the diagonal: A $$3\times 3$$-matrix from S(A.a), a $$3 \times 1$$-matrix from S(A.b) and a $$1\times 1$$-matrix from S(A.c). This matches with the source of the embedding iota.

gap> Display( iota );
Image of <(1)>:
1 . . 2 . 2 . . 1 . 1 . . 2 . 2 2 . 1 1 1 1 . 2 2
. 1 . . 2 1 . . 2 . 2 . . 1 . . 2 2 . 1 2 2 . 1 1
. . 1 . . . 2 1 . 1 1 . . 2 . . . 2 . . . 1 . . 2

A morphism in Category of matrices over GF(3)

Image of <(2)>:
. . . . . . . . . . . . . . . 1

A morphism in Category of matrices over GF(3)

A morphism in FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) ) given by the above data
gap> Display( Source( iota ) );
Image of <(1)>:
A vector space object over GF(3) of dimension 3

Image of <(2)>:
A vector space object over GF(3) of dimension 1

Image of (1)-[{ Z(3)^0*(a) }]->(1):
1 1 .
. 1 1
. . 1

A morphism in Category of matrices over GF(3)

Image of (1)-[{ Z(3)^0*(b) }]->(2):
1
.
.

A morphism in Category of matrices over GF(3)

Image of (2)-[{ Z(3)^0*(c) }]->(2):
1

A morphism in Category of matrices over GF(3)

An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) ) given by the above data

We can then look at the other embedding of the direct sum decomposition, kappa. The iteration of WeakDirectSumDecomposition will continue then with Source( kappa ). Each time the random endomorphism will decompose the representation, lowering the dimensions of each object at most by $$3$$.

gap> Source( kappa );
<(1)->22, (2)->15; (a)->22x22, (b)->22x15, (c)->15x15>
gap> result2 := DecomposeOnceByRandomEndomorphism( Source( kappa ) );
[ <(1)->3x22, (2)->3x15>, <(1)->19x22, (2)->12x15> ]

##### 1.1-3 Another category of module homomorphisms

In order to understand the choices in the above example, we made a similar example to compare the results.

gap> c4c4 := ConcreteCategoryForCAP( [ [2,3,4,1], [5,6,7,8], [,,,,6,7,8,5] ] );
A finite concrete category
gap> AsFpCategory( c4c4 );
FreeCategory( RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) / relations
gap> UnderlyingQuiverAlgebra( AsFpCategory( c4c4 ) );
(Q * q) / [ 1*(a*a*a*a) - 1*(1), 1*(c*c*c*c) - 1*(2), 1*(b*c) - 1*(a*b) ]
gap> GF3 := HomalgRingOfIntegers( 3 );
GF(3)
gap> A := GF3[c4c4];
Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations
gap> SetIsLinearClosureOfACategory( A, true );

In order to find representations of our concrete category $$C4C4$$ we need to find matrices $$a, b, c$$ that satisfy the relations of the algebroid. Here we choose permutation matrices corresponding to the two permutations $$a, c$$. We view the permutations on $$4$$ points in $$\mathrm{S}_4$$ as elements of $$\mathrm{Stab}_{\mathrm{S}_6}(5,6)$$ or of $$\mathrm{Stab}_{\mathrm{S}_5}(5)$$. As permutation matrices, they are block diagonal matrices with the smaller permutation matrix on $$4$$ elements complemented with a $$2 \times 2$$ or $$1 \times 1$$ identity matrix on the diagonal. This gives us two different dimensions for our target matrix category, $$6$$ and $$5$$ respectively, and makes the choice of the matrix for b less trivial.

gap> CatReps := FunctorCategory( A, GF3 );
FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) )
gap> amat := HomalgMatrix( One( GF3 ) *
> [ [ 0,0,0,1,0,0 ],
>   [ 1,0,0,0,0,0 ],
>   [ 0,1,0,0,0,0 ],
>   [ 0,0,1,0,0,0 ],
>   [ 0,0,0,0,1,0 ],
>   [ 0,0,0,0,0,1 ] ], 6, 6, GF3 );
<A 6 x 6 matrix over an internal ring>
gap> cmat := HomalgMatrix( One(GF3) *
> [ [ 0,0,0,1,0 ],
>   [ 1,0,0,0,0 ],
>   [ 0,1,0,0,0 ],
>   [ 0,0,1,0,0 ],
>   [ 0,0,0,0,1 ] ], 5, 5, GF3 );
<A 5 x 5 matrix over an internal ring>
gap> Display( amat^4 );
1 . . . . .
. 1 . . . .
. . 1 . . .
. . . 1 . .
. . . . 1 .
. . . . . 1
gap> Display( cmat^4 );
1 . . . .
. 1 . . .
. . 1 . .
. . . 1 .
. . . . 1

Given the matrices $$a$$ and $$c$$ above one can now solve the homogenous linear system $$a*b = b*c$$ in the $$30$$ unknowns $$b_{11},...,b_{65}$$. The following $$9$$ variables are free variables:

gap> b11 := 0;; b12 := 1;; b13 := 0;; b21 := 1;;
gap> b15 := 0;; b51 := 1;; b55 := 0;; b61 := 1;; b65 := 1;;
gap> bmat := HomalgMatrix( One( GF3 ) *
> [ [b11,b12,b13,b21,b15],
>   [b21,b11,b12,b13,b15],
>   [b13,b21,b11,b12,b15],
>   [b12,b13,b21,b11,b15],
>   [b51,b51,b51,b51,b55],
>   [b61,b61,b61,b61,b65] ], 6, 5, GF3 );
<A 6 x 5 matrix over an internal ring>
gap> Display( bmat );
. 1 . 1 .
1 . 1 . .
. 1 . 1 .
1 . 1 . .
1 1 1 1 .
1 1 1 1 1
gap> Display( amat * bmat );
1 . 1 . .
. 1 . 1 .
1 . 1 . .
. 1 . 1 .
1 1 1 1 .
1 1 1 1 1
gap> Display( bmat * cmat );
1 . 1 . .
. 1 . 1 .
1 . 1 . .
. 1 . 1 .
1 1 1 1 .
1 1 1 1 1
gap> amat * bmat = bmat * cmat;
true

So the three relations in our algebroid should be satisfied by these matrices, therefore they should provide a well-defined representation of C4C4.

gap> eleven := AsObjectInFunctorCategory( CatReps, [ 6, 5 ], [ amat, bmat, cmat ] );
<(1)->6, (2)->5; (a)->6x6, (b)->6x5, (c)->5x5>
gap> IsWellDefined( eleven );
true
gap> Display( eleven );
Image of <(1)>:
A vector space object over GF(3) of dimension 6

Image of <(2)>:
A vector space object over GF(3) of dimension 5

Image of (1)-[{ Z(3)^0*(a) }]->(1):
. . . 1 . .
1 . . . . .
. 1 . . . .
. . 1 . . .
. . . . 1 .
. . . . . 1

A morphism in Category of matrices over GF(3)

Image of (1)-[{ Z(3)^0*(b) }]->(2):
. 1 . 1 .
1 . 1 . .
. 1 . 1 .
1 . 1 . .
1 1 1 1 .
1 1 1 1 1

A morphism in Category of matrices over GF(3)

Image of (2)-[{ Z(3)^0*(c) }]->(2):
. . . 1 .
1 . . . .
. 1 . . .
. . 1 . .
. . . . 1

A morphism in Category of matrices over GF(3)

An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) ) given by the above data
gap> gammas := WeakDirectSumDecomposition( eleven );
[ <(1)->1x6, (2)->0x5>, <(1)->1x6, (2)->1x5>, <(1)->1x6, (2)->1x5>,
<(1)->0x6, (2)->2x5>, <(1)->2x6, (2)->0x5>, <(1)->1x6, (2)->1x5> ]

As opposed to nine in the previous example, eleven itself can already be decomposed.

gap> Display( Source( UniversalMorphismFromDirectSum( gammas ) ) );
Image of <(1)>:
A vector space object over GF(3) of dimension 6

Image of <(2)>:
A vector space object over GF(3) of dimension 5

Image of (1)-[{ Z(3)^0*(a) }]->(1):
1 . . . . .
. 2 . . . .
. . 1 . . .
. . . . 2 .
. . . 1 . .
. . . . . 1

A morphism in Category of matrices over GF(3)

Image of (1)-[{ Z(3)^0*(b) }]->(2):
. . . . .
1 . . . .
. 2 . . .
. . . . .
. . . . .
. . . . 1

A morphism in Category of matrices over GF(3)

Image of (2)-[{ Z(3)^0*(c) }]->(2):
2 . . . .
. 1 . . .
. . . 2 .
. . 1 . .
. . . . 1

A morphism in Category of matrices over GF(3)

An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over GF(3) ) given by the above data

#### 1.2 GAP categories

##### 1.2-1 IsFiniteConcreteCategory
 ‣ IsFiniteConcreteCategory( object ) ( filter )

Returns: true or false

The GAP category of a finite concrete category

##### 1.2-2 IsCellInAFiniteConcreteCategory
 ‣ IsCellInAFiniteConcreteCategory( object ) ( filter )

Returns: true or false

The GAP category of cell in a finite concrete category

##### 1.2-3 IsObjectInAFiniteConcreteCategory
 ‣ IsObjectInAFiniteConcreteCategory( object ) ( filter )

Returns: true or false

The GAP category of objects in a finite concrete category

##### 1.2-4 IsMorphismInAFiniteConcreteCategory
 ‣ IsMorphismInAFiniteConcreteCategory( object ) ( filter )

Returns: true or false

The GAP category of morphisms in a finite concrete category

#### 1.3 Attributes

##### 1.3-1 RightQuiverFromConcreteCategory
 ‣ RightQuiverFromConcreteCategory( C ) ( attribute )

Returns: a right quiver

Return the right quiver q(n) from the concrete category C with $$n$$ objects.

#### 1.4 Constructors

##### 1.4-1 ConcreteCategoryForCAP
 ‣ ConcreteCategoryForCAP( L ) ( operation )

Returns: a CAP object

Construct finite concrete category out of the list L of morphisms given by images.

gap> c3c3 := ConcreteCategoryForCAP( [ [2,3,1], [4,5,6], [,,,5,6,4] ] );
A finite concrete category
gap> objects := SetOfObjects( c3c3 );
[ An object in subcategory given by: <An object in FinSets>,
An object in subcategory given by: <An object in FinSets> ]
gap> Perform( objects, Display );
An object in subcategory given by: [ 1, 2, 3 ]
An object in subcategory given by: [ 4, 5, 6 ]
gap> gmorphisms := SetOfGeneratingMorphisms( c3c3 );
[ A morphism in subcategory given by: <A morphism in FinSets>,
A morphism in subcategory given by: <A morphism in FinSets>,
A morphism in subcategory given by: <A morphism in FinSets> ]
gap> Perform( gmorphisms, Display );
A morphism in subcategory given by:
[ [ 1, 2, 3 ], [ [ 1, 2 ], [ 2, 3 ], [ 3, 1 ] ], [ 1, 2, 3 ] ]
A morphism in subcategory given by:
[ [ 1, 2, 3 ], [ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ], [ 4, 5, 6 ] ]
A morphism in subcategory given by:
[ [ 4, 5, 6 ], [ [ 4, 5 ], [ 5, 6 ], [ 6, 4 ] ], [ 4, 5, 6 ] ]

##### 1.4-2 AsFpCategory
 ‣ AsFpCategory( C ) ( attribute )

Returns: a finitely presented category

Return a finitely presented category isomorphic to the finite category C.

gap> c3c3c3 := ConcreteCategoryForCAP(
>                   [ [2,3,1], [4,5,6], [,,,5,6,4],
>                     [,,,7,8,9], [,,,,,,8,9,7], [7,8,9] ] );
A finite concrete category
gap> objects := SetOfObjects( c3c3c3 );
[ An object in subcategory given by: <An object in FinSets>,
An object in subcategory given by: <An object in FinSets>,
An object in subcategory given by: <An object in FinSets> ]
gap> gmorphisms := SetOfGeneratingMorphisms( c3c3c3 );
[ A morphism in subcategory given by: <A morphism in FinSets>,
A morphism in subcategory given by: <A morphism in FinSets>,
A morphism in subcategory given by: <A morphism in FinSets>,
A morphism in subcategory given by: <A morphism in FinSets>,
A morphism in subcategory given by: <A morphism in FinSets>,
A morphism in subcategory given by: <A morphism in FinSets> ]
gap> q := RightQuiverFromConcreteCategory( c3c3c3 );
q(3)[a:1->1,b:1->2,c:2->2,d:2->3,e:3->3,f:1->3]
gap> relEndo := RelationsOfEndomorphisms( c3c3c3 );
[ [ (a*a*a), (1) ], [ (c*c*c), (2) ], [ (e*e*e), (3) ] ]
gap> C := AsFpCategory( c3c3c3 );
FreeCategory( RightQuiver(
"q(3)[a:1->1,b:1->2,c:2->2,d:2->3,e:3->3,f:1->3]" ) ) / relations
gap> A := UnderlyingQuiverAlgebra( C );
(Q * q) / [ 1*(a*a*a) - 1*(1), 1*(c*c*c) - 1*(2), 1*(e*e*e) - 1*(3),
1*(b*c) - 1*(a*b), 1*(b*d) - 1*(f), 1*(f*e) - 1*(a*f), 1*(d*e) - 1*(c*d) ]
gap> unit := A.1 + A.2 + A.3;
{ 1*(3) + 1*(2) + 1*(1) }
gap> unit * A.a = A.a;
true
gap> A.f * unit = A.f;
true

Return the k-linear closure of the category C over the commutative ring k.

##### 1.4-3 Algebroid
 ‣ Algebroid( k, C ) ( operation )
 ‣ []( k, C ) ( operation )

Returns: a k-linear category

We can also create finite concrete categories with objects not starting with $$1$$, to demonstrate that ConcreteCategoryForCAP( [ [,,,5,6,4], [,,,7,8,9], [,,,,,,8,9,7] ] ) and ConcreteCategoryForCAP( [ [2,3,1], [4,5,6], [,,,5,6,4] ] ) yield even identical categories, in particular, their underlying quivers are identical, inducing identical algebroids, and identical categories of representations.

gap> ccat1 := ConcreteCategoryForCAP( [ [2,3,1], [4,5,6], [,,,5,6,4] ] );
A finite concrete category
gap> ccat2 := ConcreteCategoryForCAP( [ [,,,5,6,4], [,,,7,8,9], [,,,,,,8,9,7] ] );
A finite concrete category
gap> Q := HomalgFieldOfRationals( );
Q
gap> A1 := Q[ccat1];
Algebroid( Q, FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations
gap> A2 := Q[ccat2];
Algebroid( Q, FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations
gap> IsIdenticalObj( A1, A2 );
true
gap> UnderlyingCategory( A1 );
FreeCategory( RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) / relations
gap> UnderlyingCategory( A2 );
FreeCategory( RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) / relations
gap> IsIdenticalObj( UnderlyingCategory( A1 ), UnderlyingCategory( A2 ) );
true
gap> CatReps1 := FunctorCategory( A1, Q );
FunctorCategory( Algebroid( Q, FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over Q )
gap> CatReps2 := FunctorCategory( A2, Q );
FunctorCategory( Algebroid( Q, FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over Q )
gap> IsIdenticalObj( CatReps1, CatReps2 );
true

##### 1.4-4 RelationsOfEndomorphisms
 ‣ RelationsOfEndomorphisms( C ) ( operation )

Returns: list of relations as generators of ideal.

Return the endomorphism relations of the category C.

The two examples below test RelationsOfEndomorphisms on endomorphisms that are not bijective. The first generating morphism of the first example is constant, and hence an idempotent.

gap> ccat := ConcreteCategoryForCAP( [ [1,1,1], [4,5,6], [,,,5,6,4] ] );
A finite concrete category
gap> relEndo := RelationsOfEndomorphisms( ccat );
[ [ (a*a), (a) ], [ (c*c*c), (2) ] ]

The next example is a single permutation defined by the companion matrix of $$a^8-a^3$$, hence neither $$a^5-a^0$$, $$a^6-a^1$$, nor $$a^7-a^2$$ are zero:

gap> ccat := ConcreteCategoryForCAP( [ [2,3,4,5,6,7,8,4] ] );
A finite concrete category
gap> relEndo := RelationsOfEndomorphisms( ccat );
[ [ (a*a*a*a*a*a*a*a), (a*a*a) ] ]

##### 1.4-5 EmbeddingOfSubRepresentation
 ‣ EmbeddingOfSubRepresentation( eta, F ) ( operation )

Returns: an morphism in a Hom-category

Concstruct the embedding of a subrepresentation $$S$$ of F by a list eta of morphisms, where the image embeddings thereof are the components of the natural monomorphism from $$S$$ into F.

#### 1.5 Tools

##### 1.5-1 ConvertToMapOfFinSets
 ‣ ConvertToMapOfFinSets( objects_list, generator ) ( function )

Returns: a morphism of finite sets

Construct the map of finite sets corresponding to the list of images in the convention of catreps.

gap> c3c3 := ConcreteCategory([[2,3,1],[4,5,6],[,,,5,6,4]]);
rec( codomain := [ 1, 2, 2 ], domain := [ 1, 1, 2 ],
generators := [ [ 2, 3, 1 ], [ 4, 5, 6 ], [ ,,, 5, 6, 4 ] ],
objects := [ [ 1, 2, 3 ], [ 4, 5, 6 ] ], operations := rec(  ) )
gap> objects := List( c3c3.objects, FinSet );
[ <An object in FinSets>, <An object in FinSets> ]
gap> g1 := ConvertToMapOfFinSets( objects, c3c3.generators[1] );
<A morphism in FinSets>
gap> Display( g1 );
[ [ 1, 2, 3 ], [ [ 1, 2 ], [ 2, 3 ], [ 3, 1 ] ], [ 1, 2, 3 ] ]
gap> g2 := ConvertToMapOfFinSets( objects, c3c3.generators[2] );
<A morphism in FinSets>
gap> Display( g2 );
[ [ 1, 2, 3 ], [ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ], [ 4, 5, 6 ] ]
gap> g3 := ConvertToMapOfFinSets( objects, c3c3.generators[3] );
<A morphism in FinSets>
gap> Display( g3 );
[ [ 4, 5, 6 ], [ [ 4, 5 ], [ 5, 6 ], [ 6, 4 ] ], [ 4, 5, 6 ] ]
gap> g := ConvertToMapOfFinSets( objects, [,,,1,1,1] );
<A morphism in FinSets>
gap> Display( g );
[ [ 4, 5, 6 ], [ [ 4, 1 ], [ 5, 1 ], [ 6, 1 ] ], [ 1, 2, 3 ] ]
Goto Chapter: Top 1 Ind

generated by GAPDoc2HTML