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

14 Quotient categories of algebroids from data tables using presheaves categories
 14.1 Attributes

14 Quotient categories of algebroids from data tables using presheaves categories

Let \(A\) be an algebroid over a commutative ring \(k\), given by finite data tables, and let \(I\) be the two-sided ideal generated by morphisms \(\alpha_i:t_i\to u_i\), where \(t_i\) and \(u_i\) are objects of \(A\). The aim of this construction is to realize the quotient algebroid \(A/I\) as a quotient of a presheaf associated with \(A\). More precisely, the ideal \(I\) gives rise to a subpresheaf \(F_I\subseteq F_A\), and the Hom-bifunctor of \(A/I\) is realized as the quotient presheaf \(F_A/F_I\).

More precisely, regard the Hom-bifunctor of \(A\) as the presheaf

\[ F_A \in \mathrm{PSh}(A^{\mathrm{op}}\otimes_k A) \]

determined by its values on the objects and generating morphisms of \(A^{\mathrm{op}}\otimes_k A\): For two objects \(u\) and \(t\) of \(A\), we have

\[ F_A(u^{\mathrm{op}}\otimes t)=\operatorname{Hom}_A(t,u). \]

For objects \(s,t,u,v\) of \(A\) and morphisms \(f:s\to t\) and \(g:u\to v\), the elementary tensor \(g^{\mathrm{op}}\otimes f:v^{\mathrm{op}}\otimes s\to u^{\mathrm{op}}\otimes t\) is mapped contravariantly to

\[ \operatorname{Hom}_A(t,u)\longrightarrow\operatorname{Hom}_A(s,v), \qquad h\longmapsto g\circ h\circ f. \]

The left and right actions commute by associativity, as displayed in the following diagram. Thus \(F_A\) is \(A\), through its Hom-modules and composition maps, regarded as a module over the enveloping algebroid \(A^{\mathrm{op}}\otimes_k A\).

For an object \(x\) of \(A^{\mathrm{op}}\otimes_k A\), let \(P_x\) denote its image under the Yoneda embedding. Such representable presheaves are projective objects. By the Yoneda lemma, every relation \(\alpha_i\) determines a morphism

\[ \lambda_{\alpha_i}:P_{u_i^{\mathrm{op}}\otimes t_i}\longrightarrow F_A. \]

The family of morphisms \(\lambda_{\alpha_i}\) induces a morphism from the direct sum of their source objects,

\[ \tau:\bigoplus_i P_{u_i^{\mathrm{op}}\otimes t_i}\longrightarrow F_A. \]

Define the ideal presheaf \(F_I\) and the quotient presheaf \(F_{A/I}\) by

\[ F_I:=\operatorname{im}(\tau),\qquad F_{A/I}:=F_A/F_I=\operatorname{coker}(\tau). \]

For \(x=v^{\mathrm{op}}\otimes s\), the quotient sequence and its evaluation at \(x\) fit into the following commutative diagram with exact rows. At \(v^{\mathrm{op}}\otimes s\), the value of \(F_I\) is precisely the submodule \(I(s,v)\subseteq\operatorname{Hom}_A(s,v)\) spanned by all compatible two-sided composites of the \(\alpha_i\). Hence

\[ F_{A/I}(v^{\mathrm{op}}\otimes s) =\operatorname{Hom}_A(s,v)/I(s,v) =\operatorname{Hom}_{A/I}(s,v). \]

Thus \(F_{A/I}\) is the Hom-bifunctor of the quotient algebroid, regarded as a presheaf on \(A^{\mathrm{op}}\otimes_k A\) via the quotient functor \(A\to A/I\).

This description is the mathematical basis of the method QuotientCategory for algebroids defined by data tables in the package FpLinearCategories. Indeed, for a morphism \(m:s\to v\) in \(A\), set \(x:=v^{\mathrm{op}}\otimes s\) and let \(\pi:F_A\to F_{A/I}\) be the cokernel projection. Membership in the ideal is characterized by

\[ m\in I(s,v) \quad\Longleftrightarrow\quad \lambda_m(x)\text{ factors through }\tau(x) \quad\Longleftrightarrow\quad \pi(x)\circ\lambda_m(x)=0. \]

When these equivalent conditions hold, the factorization is represented by the dashed lift in the following commutative diagram. Since composition in \(A\) is encoded by finite matrices, this criterion is decided by linear algebra. Over a field, the quotient Hom-modules are computed as cokernels. Over a more general computable ring, membership is decided by a lift through \(\tau\), and quotient Hom-modules are represented in the corresponding Freyd category. Thus taking a further quotient of an algebroid already given by data tables is computed directly by linear algebra, without computing a noncommutative Groebner basis or applying a path-reduction algorithm. Constructing those data tables from an earlier path presentation may, of course, have required a Groebner basis.

14.1 Attributes

14.1-1 EnvelopingAlgebroid
‣ EnvelopingAlgebroid( A )( attribute )

Returns: a CAP category

The argument is an algebroid \(A\) over a commutative ring \(k\), defined by data tables. The output is its enveloping algebroid \(A^{\mathrm{op}}\otimes_k A\).

14.1-2 AlgebroidAsObjectInPreSheavesCategory
‣ AlgebroidAsObjectInPreSheavesCategory( A )( attribute )

Returns: a CAP category object

The argument is an algebroid \(A\) over a commutative ring \(k\), defined by data tables. The output is the presheaf \(F_A\) defined in the introduction: the Hom-bifunctor of \(A\), regarded as a module over its enveloping algebroid \(A^{\mathrm{op}}\otimes_k A\).

14.1-3 AssociatedMorphismIntoAlgebroidAsObjectInPreSheavesCategory
‣ AssociatedMorphismIntoAlgebroidAsObjectInPreSheavesCategory( alpha )( attribute )

Returns: a CAP category morphism

The argument is a morphism \(\alpha:t\to u\) in an algebroid \(A\) over a commutative ring \(k\), where \(t\) and \(u\) are objects of \(A\). The output is the morphism of presheaves

\[ \lambda_\alpha:P_{u^{\mathrm{op}}\otimes t}\longrightarrow F_A \]

corresponding to \(\alpha\) under the Yoneda isomorphism

\[ \operatorname{Hom}_A(t,u)=F_A(u^{\mathrm{op}}\otimes t) \cong\operatorname{Hom}_{\mathrm{PSh}(A^{\mathrm{op}}\otimes_k A)} (P_{u^{\mathrm{op}}\otimes t},F_A). \]

Here \(P_{u^{\mathrm{op}}\otimes t}\) is the representable presheaf given by the Yoneda embedding. Pointwise, the image of \(\lambda_\alpha\) at \(v^{\mathrm{op}}\otimes s\) consists of the linear combinations of all compatible composites \(g\circ\alpha\circ f:s\to v\), where \(s,v\) are objects and \(f,g\) are morphisms in \(A\). This is exactly the \((s,v)\)-component of the two-sided ideal generated by \(\alpha\).

gap> LoadPackage( "FunctorCategories", false );
true
gap> q := FinQuiver( "q(0,1,2,3)[a:0->1,b:1->3,c:0->2,d:2->3,e:3->3]" );
FinQuiver( "q(0,1,2,3)[a:0→1,b:1→3,c:0→2,d:2→3,e:3→3]" )
gap> k := HomalgFieldOfRationals();;
gap> C := PathCategory( q );
PathCategory( FinQuiver( "q(0,1,2,3)[a:0→1,b:1→3,c:0→2,d:2→3,e:3→3]" ) )
gap> kC := k[C];
Q-LinearClosure( PathCategory( FinQuiver( "q(0,1,2,3)[a:0→1,b:1→3,c:0→2,
d:2→3,e:3→3]" ) ) )
gap> quo_kC := kC / [ kC.e^3 ];
Q-LinearClosure( PathCategory( FinQuiver( "q(0,1,2,3)[a:0→1,b:1→3,c:0→2,
d:2→3,e:3→3]" ) ) ) / [ 1*e^3 ]
gap> A := AlgebroidFromDataTables( quo_kC );
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> e := AssociatedMorphismIntoAlgebroidAsObjectInPreSheavesCategory( A.e );
<(0⊗0)->0x1, (0⊗1)->0x0, (0⊗2)->0x0, (0⊗3)->0x0, (1⊗0)->0x1, (1⊗1)->0x1,
(1⊗2)->0x0, (1⊗3)->0x0, (2⊗0)->0x1, (2⊗1)->0x0, (2⊗2)->0x1, (2⊗3)->0x0,
(3⊗0)->18x6, (3⊗1)->9x3, (3⊗2)->9x3, (3⊗3)->9x3>
gap> IsWellDefined( e );
true
gap> qA := QuotientCategory( A, [ A.ab - A.cd, 2*A.be ] );
QuotientCategory( 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, 2-sided ideal generated
by 2 morphisms )
gap> qA.("0");
<(0)>
gap> RangeCategoryOfHomomorphismStructure( qA );
Rows( Q )
gap> IsZeroForMorphisms( qA.cde );
true
gap> f := RandomMorphism( qA, 20 );;
gap> 2 * HomStructure( Source( f ), Target( f ), 3 * HomStructure( f ) ) = 6 * f;
true
gap> qA := QuotientCategory( A, [ A.id_0, A.id_1, A.id_2 ] );
QuotientCategory( 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, 2-sided ideal generated
by 3 morphisms )
gap> ForAll( [ qA.("0"), qA.("1"), qA.("2") ], IsZeroForObjects );
true
gap> IsZeroForObjects( qA.("3") );
false
gap> D := AlgebroidFromDataTables( qA );
Q-algebroid( {3}[e:3→3] ) defined by 1 object and 1 generating morphism
gap> Perform( BasisOfExternalHom( D.("3"), D.("3") ), Display );
<1*id(3):(3) → (3)>
<1*e:(3) → (3)>
<1*e^2:(3) → (3)>
gap> data_tables := DataTablesOfLinearCategory( quo_kC );;
gap> data_tables_Z := ShallowCopy( data_tables );;
gap> data_tables_Z[1] := HomalgRingOfIntegers();;
gap> B := AlgebroidFromDataTables( data_tables_Z );
Z-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> RangeCategoryOfHomomorphismStructure( B );
Rows( Z )
gap> qB := QuotientCategory( B, [ B.ab - B.cd, 2*B.be ] );
QuotientCategory( Z-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, 2-sided ideal generated by
2 morphisms )
gap> RangeCategoryOfHomomorphismStructure( qB );
Freyd( Rows( Z ) )
gap> IsZeroForMorphisms( qB.cde );
false
gap> IsZeroForMorphisms( 2 * qB.cde );
true
gap> add_qB := AdditiveClosure( qB );
AdditiveClosure( QuotientCategory( Z-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,
2-sided ideal generated by 2 morphisms ) )
gap> T := RandomObject( add_qB, [[5],[1]] );;
gap> u := RandomMorphism( T, T, 2 );;
gap> v := RandomMorphism( T, T, 2 );;
gap> w := RandomMorphism( T, T, 2 );;
gap> HomStructure( PreCompose( [ u, v, w ] ) ) = PreCompose( HomStructure( v ), HomStructure( u, w ) );
true
gap> HomStructure( T, T, 2 * HomStructure( 3 * u ) ) = 6 * u;
true
gap> LoadPackage( "FunctorCategories", false );
true
gap> q := FinQuiver( "q(0,1,2)[x:0->1,y:1->2,z:0->2]" );
FinQuiver( "q(0,1,2)[x:0→1,y:1→2,z:0→2]" )
gap> C := PathCategory( q );
PathCategory( FinQuiver( "q(0,1,2)[x:0→1,y:1→2,z:0→2]" ) )
gap> k := HomalgFieldOfRationals( );;
gap> kC := k[C];
Q-LinearClosure( PathCategory( FinQuiver( "q(0,1,2)[x:0→1,
y:1→2,z:0→2]" ) ) )
gap> A := kC / [ kC.xy - kC.z ];
Q-LinearClosure( PathCategory( FinQuiver( "q(0,1,2)[x:0→1,
y:1→2,z:0→2]" ) ) ) / [ 1*x⋅y + (-1)*z ]
gap> B := AlgebroidFromDataTables( A );
Q-algebroid( {0,1,2}[x:0→1,y:1→2,z:0→2] ) defined by 3 objects
and 3 generating morphisms
gap> IsAdmissibleAlgebroid( B );
false
gap> q := FinQuiver( "q(o)[x:o->o,y:o->o]" );
FinQuiver( "q(o)[x:o→o,y:o→o]" )
gap> C := PathCategory( q );
PathCategory( FinQuiver( "q(o)[x:o→o,y:o→o]" ) )
gap> kC := k[C];
Q-LinearClosure( PathCategory( FinQuiver( "q(o)[x:o→o,y:o→o]" ) ) )
gap> A := kC / [ kC.xy - kC.yx, kC.x^3, kC.y^3 ];
Q-LinearClosure( PathCategory( FinQuiver( "q(o)[x:o→o,y:o→o]" ) ) )
/ [ (-1)*y⋅x + 1*x⋅y, 1*x^3, 1*y^3 ]
gap> B := AlgebroidFromDataTables( A );
Q-algebroid( {o}[x:o→o,y:o→o] ) defined by 1 object and 2 generating morphisms
gap> IsAdmissibleAlgebroid( B );
true
gap> A := kC / [ kC.xy - kC.yx, kC.x^3 - kC.x, kC.y^3 ];
Q-LinearClosure( PathCategory( FinQuiver( "q(o)[x:o→o,y:o→o]" ) ) )
/ [ (-1)*y⋅x + 1*x⋅y, 1*x^3 + (-1)*x, 1*y^3 ]
gap> B := AlgebroidFromDataTables( A );
Q-algebroid( {o}[x:o→o,y:o→o] ) defined by 1 object and 2 generating morphisms
gap> IsAdmissibleAlgebroid( B );
false
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Ind

generated by GAPDoc2HTML