Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

6 Algebroids from data tables
 6.1 Properties
 6.2 Attributes
 6.3 Operations
 6.4 Constructors
 6.5 GAP categories

6 Algebroids from data tables

6.1 Properties

6.1-1 IsAdmissibleAlgebroid
‣ IsAdmissibleAlgebroid( A, i )( property )

Returns: a list

The arguments are an algebroid A linear over a field \(k\). This output is true iff the following two conditions hold: (1) the union of all identity morphisms and all generating morphism remain linear independent in the quotient category \(C/\mathfrak{m}^2\); (2) \(\mathfrak{m}^i=0\) for some \(i\in\mathbb{N}\), where \(\mathfrak{m}^i=\)PowerOfArrowIdeal(A,\(i\)).

6.2 Attributes

6.2-1 DataTablesOfCategory
‣ DataTablesOfCategory( A )( attribute )

Returns: a CAP functor

The argument is a \(k\)-algebroid A defined by a finite dimensional quiver-algebra. This operation extracts a data-tables record from A which can be used to construct an algebroid \(A\), that is isomorphic to A.

6.2-2 IsomorphismOntoAlgebroidFromDataTables
‣ IsomorphismOntoAlgebroidFromDataTables( A, A )( operation )

Returns: a CAP functor

?

6.2-3 IsomorphismFromAlgebroidFromDataTables
‣ IsomorphismFromAlgebroidFromDataTables( A, A )( operation )

Returns: a CAP functor

?

6.2-4 QuotientCategory
‣ QuotientCategory( A, I )( operation )

Returns: a record

The arguments are an algebroid \(A\) and a list I of morphisms in \(A\). The output is the quotient category \(A/I\) of \(A\) modulo the two-sided ideal of morphisms generated by I.

6.2-5 CategoryDatum
‣ CategoryDatum( A )( attribute )

Returns: a record

The data tables used to define \(A\).

6.2-6 BasesElements
‣ BasesElements( A )( attribute )

Returns: a list of lists

The argument is an algebroid A. The output is a list of lists \(L\) where \(L[i][j]\) is the basis of the external hom \(\mathrm{Hom}_B(u,v)\) where \(u\) and \(v\) are \(i\)'th resp. \(j\)'th objects in \(A\).

6.2-7 DecompositionIndicesOfBasesElements
‣ DecompositionIndicesOfBasesElements( A )( attribute )

Returns: a list of lists

The argument is an algebroid A. The output is a list of lists \(L\) where \(L[i][j]\) is the decomposition indices of the basis elements of \(\mathrm{Hom}_B(u,v)\) where \(u\) and \(v\) are \(i\)'th resp. \(j\)'th objects in \(A\). In other words, it is the third entry in the underlying defining data tables.

6.2-8 LabelsOfBasesElements
‣ LabelsOfBasesElements( A )( attribute )

Returns: a list of lists

The argument is an algebroid A. The output is a list of lists \(L\) where \(L[i][j]\) is the labels of the basis elements of \(\mathrm{Hom}_B(u,v)\) where \(u\) and \(v\) are \(i\)'th resp. \(j\)'th objects in \(A\).

6.2-9 LaTeXStringsOfBasesElements
‣ LaTeXStringsOfBasesElements( A )( attribute )

Returns: a list of lists

The argument is an algebroid A. The output is a list of lists \(L\) where \(L[i][j]\) is the latex strings of the basis elements of \(\mathrm{Hom}_B(u,v)\) where \(u\) and \(v\) are \(i\)'th resp. \(j\)'th objects in \(A\).

6.2-10 PowerOfArrowIdeal
‣ PowerOfArrowIdeal( A, i )( operation )

Returns: a list

The arguments are an algebroid A and a non-negative integer i. The output is a generating set for \(\mathfrak{m}^i\) where \(\mathfrak{m}\) is the ideal generated by all generating morphisms in A.

6.3 Operations

6.3-1 AssignSetOfObjects
‣ AssignSetOfObjects( A[, optional_string] )( operation )

Returns: nothing

The arguments are an algebroid A and a string optional_string. This operation assigns the objects of A to global variables. Names of the variables are the concatenation of the labels of the objects of A with optional_string. The default value of optional_string is the empty string.

6.3-2 AssignSetOfGeneratingMorphisms
‣ AssignSetOfGeneratingMorphisms( A[, optional_string] )( operation )

Returns: nothing

The arguments are an algebroid A and a string optional_string. This operation assigns the generating morphisms of A to global variables. Names of the variables are the concatenation of the labels of the generating morphisms of A with optional_string. The default value of optional_string is the empty string.

6.3-3 ObjectIndex
‣ ObjectIndex( v )( attribute )

Returns: an integer

The argument is an object v in an algebroid A. The output is the index of v in SetOfObjects(A).

6.3-4 CoefficientsList
‣ CoefficientsList( alpha )( attribute )

Returns: a CAP category morphism

The argument is a morphism alpha in an algebroid A. The output is the list of coefficients of alpha with respect to the basis of external hom \(\mathrm{Hom}_B(u,v)\) where \(u\) and \(v\) are source resp. target of alpha.

6.3-5 IndicesOfSupportMorphisms
‣ IndicesOfSupportMorphisms( alpha )( attribute )

Returns: a CAP category morphism

The argument is a morphism alpha in an algebroid A. The output is the indices of the non-zero entries of CoefficientsList(alpha).

6.3-6 CoefficientsOfSupportMorphisms
‣ CoefficientsOfSupportMorphisms( alpha )( attribute )

Returns: a CAP category morphism

The argument is a morphism alpha in an algebroid A. The output is the list of elements in CoefficientsList(alpha) that correspond to IndicesOfSupportMorphisms(alpha).

6.3-7 SupportMorphisms
‣ SupportMorphisms( alpha )( attribute )

Returns: a CAP category morphism

The argument is a morphism alpha from u to v in an algebroid A. The output is the list of elements in BasisOfExternalHom(u,v) that correspond to IndicesOfSupportMorphisms(alpha).

6.3-8 DecompositionOfMorphismInAlgebroid
‣ DecompositionOfMorphismInAlgebroid( alpha )( attribute )

Returns: a list of pairs

The argument is a morphism alpha in an algebroid \(A\) (over a commutative ring \(k\)). The output is a list of pairs \(L=[[c_1,l_1],..,[c_n,l_n]]\) where for each \(i=1,\dots,n\), \(c_i\) is a non-zero element in \(k\) and \(l_i\) is either a list containing an identity morphism or a list of (precomposable) generating morphisms such that alpha = \(c_1\cdot\mathrm{PreCompose}(l_1)+..+c_n\cdot\mathrm{PreCompose}(l_n)\).

6.3-9 DecompositionIndicesOfMorphismInAlgebroid
‣ DecompositionIndicesOfMorphismInAlgebroid( alpha )( attribute )

Returns: a list of pairs

The argument is a morphism alpha in an algebroid \(A\) (over a commutative ring \(k\)). The output is a list of pairs \(L=[[c_1,l_1],..,[c_n,l_n]]\) where for each \(i=1,\dots,n\), \(c_i\) is a non-zero element in \(k\) and \(l_i\) is either the empty-list or a list of indices of (precomposable) generating morphisms. The output can be used to compute DecompositionOfMorphismInAlgebroid(alpha).

6.3-10 OppositeAlgebroid
‣ OppositeAlgebroid( A )( attribute )

Returns: a CAP category

The argument is an algebroid A. The ouput is the opposite algebroid \(A^{\mathrm{op}}\) constructed as an algebroid from data tables.

6.3-11 TensorProductOfAlgebroids
‣ TensorProductOfAlgebroids( A, B )( operation )

Returns: a CAP category

The arguments are two algebroids A and B. The output is the tensor product algebroid A\(\otimes\)B.

6.3-12 \*
‣ \*( A, B )( operation )

Returns: a CAP category

Delegates to TensorProductOfAlgebroids(A,B).

6.3-13 ElementaryTensor
‣ ElementaryTensor( a, b, T )( operation )

Returns: a CAP category object

The arguments are two objects a, b and a tensor product algebroid T\(=A\otimes B\) where a and b belong to \(A\) resp. \(B\). The output is the object \(a\otimes b\) in T.

6.3-14 ElementaryTensor
‣ ElementaryTensor( f, g, T )( operation )

Returns: a CAP category morphism

The arguments are two morphisms f, g and a tensor product algebroid T\(=A\otimes B\) where f and g belong to \(A\) resp. \(B\). The output is the morphism \(f\otimes g\) in T.

6.4 Constructors

6.4-1 AlgebroidFromDataTables
‣ AlgebroidFromDataTables( data_tables )( operation )

Returns: a CAP category

Construct an enrichted algebroid \(A\) out of the data_tables consisting of \(7\) entries:

gap> LoadPackage( "Algebroids", false );
true
gap> q := RightQuiver( "q(0,1,2,3)[a:0->1,b:1->3,c:0->2,d:2->3,e:3->3]" );
q(0,1,2,3)[a:0->1,b:1->3,c:0->2,d:2->3,e:3->3]
gap> F := FreeCategory( q );
FreeCategory( RightQuiver( "q(0,1,2,3)[a:0->1,b:1->3,c:0->2,d:2->3,e:3->3]" ) )
gap> k := HomalgFieldOfRationals( );
Q
gap> kF := k[F];
Algebroid( Q, FreeCategory( RightQuiver( "q(0,1,2,3)[a:0->1,b:1->3,c:0->2,d:2->3,
e:3->3]" ) ) )
gap> B := kF / [ kF.e^3 ];
Algebroid( Q, FreeCategory( RightQuiver( "q(0,1,2,3)[a:0->1,b:1->3,c:0->2,d:2->3,
e:3->3]" ) ) ) / relations
gap> data_tables := DataTablesOfCategory( B );;
gap> data_tables[1];
Q
gap> data_tables[2];
FinQuiver( "q(0,1,2,3)[a:0-≻1,b:1-≻3,c:0-≻2,d:2-≻3,e:3-≻3]" )
gap> data_tables[3];
[[[ [] ], [ [1] ], [ [3] ], [ [1,2],[3,4],[1,2,5],[3,4,5],[1,2,5,5],[3,4,5,5]]],
 [[  ], [ [] ], [  ], [ [2],[2,5],[2,5,5] ]],
 [[  ], [  ], [ [] ], [ [4],[4,5],[4,5,5] ]],
 [[  ], [  ], [  ], [ [],[5],[5,5] ]]]
gap> data_tables[4][2][5];
[ [ 0, 1, 0 ], [ 0, 0, 1 ], [ 0, 0, 0 ] ]
gap> data_tables[5][4][1];
[ [ 1, 0, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0 ], [ 0, 0, 0, 0, 1, 0 ] ]
gap> A := AlgebroidFromDataTables( data_tables );; # alternatively,
gap> A := AlgebroidFromDataTables( B );
Q-algebroid( {0,1,2,3}[a:0-≻1,b:1-≻3,c:0-≻2,d:2-≻3,e:3-≻3] ) defined by
4 objects and 5 generating morphisms
gap> AssignSetOfObjects( A, "V_" );
#I  MakeReadWriteGlobal: V_0 already read-write
#I  MakeReadWriteGlobal: V_1 already read-write
#I  MakeReadWriteGlobal: V_2 already read-write
#I  MakeReadWriteGlobal: V_3 already read-write
gap> AssignSetOfGeneratingMorphisms( A );
#I  MakeReadWriteGlobal: a already read-write
#I  MakeReadWriteGlobal: b already read-write
#I  MakeReadWriteGlobal: c already read-write
#I  MakeReadWriteGlobal: d already read-write
#I  MakeReadWriteGlobal: e already read-write
gap> SetOfObjects( A );
[ <(0)>, <(1)>, <(2)>, <(3)> ]
gap> A.("0");
<(0)>
gap> V_0;
<(0)>
gap> IsEqualForObjects( A.("0"), V_0 );
true
gap> ObjectConstructor( A, 1 ) = A.("0");
true
gap> SetOfGeneratingMorphisms( A );
[ <1*a:(0) -≻ (1)>, <1*b:(1) -≻ (3)>,
  <1*c:(0) -≻ (2)>, <1*d:(2) -≻ (3)>,
  <1*e:(3) -≻ (3)> ]
gap> IsCongruentForMorphisms( A.("a"), a );
true
gap> Perform( [ "V_0", "V_1", "V_2", "V_3" ], MakeReadWriteGlobal );
gap> Perform( [ "a", "b", "c", "d", "e" ], MakeReadWriteGlobal );
gap> HomStructure( A.("0"), A.("3") );
<A row module over Q of rank 6>
gap> hom_03 := BasisOfExternalHom( A.("0"), A.("3") );
[ <1*a⋅b:(0) -≻ (3)>, <1*c⋅d:(0) -≻ (3)>,
  <1*a⋅b⋅e:(0) -≻ (3)>, <1*c⋅d⋅e:(0) -≻ (3)>,
  <1*a⋅b⋅e^2:(0) -≻ (3)>, <1*c⋅d⋅e^2:(0) -≻ (3)> ]
gap> alpha := 2*hom_03[1] + 3*hom_03[6];
<2*a⋅b + 3*c⋅d⋅e^2:(0) -≻ (3)>
gap> LaTeXOutput( alpha );
"{0}-\\left({2\\cdot {a}{b} + 3\\cdot {c}{d}{e}^{2}}\\right)\\rightarrow{3}"
gap> alpha = MorphismConstructor( A, A.("0"), [ 2, 0, 0, 0, 0, 3 ], A.("3") );
true
gap> CoefficientsList( alpha );
[ 2, 0, 0, 0, 0, 3 ]
gap> IndicesOfSupportMorphisms( alpha );
[ 1, 6 ]
gap> CoefficientsOfSupportMorphisms( alpha );
[ 2, 3 ]
gap> SupportMorphisms( alpha );
[ <1*a⋅b:(0) -≻ (3)>, <1*c⋅d⋅e^2:(0) -≻ (3)> ]
gap> DecompositionIndicesOfMorphismInAlgebroid( alpha );
[ [ 2, [ 1, 2 ] ], [ 3, [ 3, 4, 5, 5 ] ] ]
gap> DecompositionOfMorphismInAlgebroid( alpha );
[ [ 2, [ <1*a:(0) -≻ (1)>, <1*b:(1) -≻ (3)> ] ],
  [ 3, [ <1*c:(0) -≻ (2)>, <1*d:(2) -≻ (3)>,
         <1*e:(3) -≻ (3)>, <1*e:(3) -≻ (3)> ] ] ]
gap> A.("a⋅b⋅e");
<1*a⋅b⋅e:(0) -≻ (3)>
gap> A.("abe");
<1*a⋅b⋅e:(0) -≻ (3)>
gap> PreCompose( A.("a"), A.("b") ) = A.("ab");
true
gap> U := IsomorphismOntoAlgebroidFromDataTables( B, A );
Isomorphism functor onto algebroid from data tables
gap> V := IsomorphismFromAlgebroidFromDataTables( A, B );
Isomorphism functor from algebroid from data tables
gap> ApplyFunctor( PreCompose( V, U ), alpha ) = alpha;
true
#@if ValueOption( "no_precompiled_code" ) <> true
gap> V := ExtendFunctorToAdditiveClosures( V );
Extension of Isomorphism functor from algebroid from data tables to
additive closures
gap> add_A := SourceOfFunctor( V );
AdditiveClosure( Q-algebroid( {0,1,2,3}[a:0-≻1,b:1-≻3,c:0-≻2,d:2-≻3,e:3-≻3] )
defined by 4 objects and 5 generating morphisms )
gap> IsBound( add_A!.precompiled_functions_added );
true
gap> add_B := RangeOfFunctor( V );
AdditiveClosure( Algebroid( Q, FreeCategory( RightQuiver( "q(0,1,2,3)[a:0->1,
b:1->3,c:0->2,d:2->3,e:3->3]" ) ) ) / relations )
gap> IsBound( add_B!.precompiled_functions_added );
true
gap> o1 :=  RandomObject( add_A, [ [ 5 ], [ 1 ] ] );;
gap> o2 :=  RandomObject( add_A, [ [ 5 ], [ 1 ] ] );;
gap> V_o1 := V( o1 );;
gap> V_o2 := V( o2 );;
gap> s1 := Sum( BasisOfExternalHom( o1, o2 ) );;
gap> s2 := Sum( BasisOfExternalHom( V_o1, V_o2 ) );;
gap> V( s1 ) = s2;
true
gap> f := RandomMorphism( o1, o2, 20 );;
gap> g := RandomMorphism( o1, o2, 20 );;
gap> V_f := V( f );;
gap> V_g := V( g );;
gap> m1 := UnderlyingMatrix( HomStructure( f, g ) );;
gap> m2 := UnderlyingMatrix( HomStructure( V_f, V_g ) );;
gap> m1 = m2;
true
gap> IsZero( PreCompose( f, WeakCokernelProjection( f ) ) );
true
gap> IsZero( PreCompose( WeakKernelEmbedding( f ), f ) );
true
gap> freyd_B := FreydCategory( add_A );
Freyd( AdditiveClosure( Q-algebroid( {0,1,2,3}[a:0-≻1,b:1-≻3,c:0-≻2,d:2-≻3,
e:3-≻3] ) defined by 4 objects and 5 generating morphisms ) )
gap> IsAbelianCategory( freyd_B );
true
#@fi
gap> A_op := OppositeAlgebroid( A );
Q-algebroid( {0,1,2,3}[a:1-≻0,b:3-≻1,c:2-≻0,d:3-≻2,e:3-≻3] ) defined by
4 objects and 5 generating morphisms
gap> A_op.("ba");
<1*b⋅a:(3) -≻ (0)>
gap> add_A := AdditiveClosure( A );
AdditiveClosure( Q-algebroid( {0,1,2,3}[a:0-≻1,b:1-≻3,c:0-≻2,d:2-≻3,e:3-≻3] )
defined by 4 objects and 5 generating morphisms )
gap> T := DirectSum( List( SetOfObjects( A ), o -> o / add_A ) );
<An object in AdditiveClosure( Q-algebroid( {0,1,2,3}[a:0-≻1,b:1-≻3,c:0-≻2,
d:2-≻3,e:3-≻3] ) defined by 4 objects and 5 generating morphisms ) defined
by 4 underlying objects>
gap> u := RandomMorphism( T, T, 5 );;
gap> v := RandomMorphism( T, T, 5 );;
gap> w := RandomMorphism( T, T, 5 );;
gap> HomStructure( PreCompose( [ u, v, w ] ) )
>       = PreCompose( HomStructure( v ), HomStructure( u, w ) );
true
gap> AA := TensorProductOfAlgebroids( A, A );
Q-algebroid( {0⊗0,0⊗1,0⊗2,..,3⊗1,3⊗2,3⊗3}[0⊗a:0⊗0-≻0⊗1,0⊗b:0⊗1-≻0⊗3,
0⊗c:0⊗0-≻0⊗2,..,e⊗1:3⊗1-≻3⊗1,e⊗2:3⊗2-≻3⊗2,e⊗3:3⊗3-≻3⊗3] ) defined
by 16 objects and 40 generating morphisms
gap> ElementaryTensor( A.0, A.1 );
<(0⊗1)>
gap> ElementaryTensor( A.a, A.b );
<1*a⊗b:(0⊗1) -≻ (1⊗3)>
gap> ElementaryTensor( A.0, A.b );
<1*id(0)⊗b:(0⊗1) -≻ (0⊗3)>
gap> ElementaryTensor( A.a, A.1 );
<1*a⊗id(1):(0⊗1) -≻ (1⊗1)>
gap> 3x3 := AA.("3⊗3");
<(3⊗3)>
gap> AA.("e⊗1");
<1*e⊗id(1):(3⊗1) -≻ (3⊗1)>
gap> u := RandomMorphism( 3x3, 3x3, 15 );;
gap> v := RandomMorphism( 3x3, 3x3, 15 );;
gap> w := RandomMorphism( 3x3, 3x3, 15 );;
gap> HomStructure( PreCompose( [ u, v, w ] ) )
>       = PreCompose( HomStructure( v ), HomStructure( u, w ) );
true

6.5 GAP categories

6.5-1 IsAlgebroidFromDataTables
‣ IsAlgebroidFromDataTables( arg )( filter )

Returns: true or false

The GAP category of objects in an algebroid from data tables.

6.5-2 IsCellInAlgebroidFromDataTables
‣ IsCellInAlgebroidFromDataTables( arg )( filter )

Returns: true or false

The GAP category of cells in an algebroid from data tables.

6.5-3 IsObjectInAlgebroidFromDataTables
‣ IsObjectInAlgebroidFromDataTables( arg )( filter )

Returns: true or false

The GAP category of algebroids from data tables.

6.5-4 IsMorphismInAlgebroidFromDataTables
‣ IsMorphismInAlgebroidFromDataTables( arg )( filter )

Returns: true or false

The GAP category of morphisms in an algebroid from data tables.

 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 Ind

generated by GAPDoc2HTML