Goto Chapter: Top 1 2 3 4 Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

3 Stable Categories
 3.1 GAP categories
 3.2 Constructors
 3.3 Stable categories defined by systems of lifting objects
 3.4 Stable categories defined by systems of colifting objects

3 Stable Categories

3.1 GAP categories

3.1-1 IsStableCategory
‣ IsStableCategory( seq_obj )( filter )

Returns: true or false

The GAP category of stable categories

3.1-2 IsStableCategoryCell
‣ IsStableCategoryCell( seq_obj )( filter )

Returns: true or false

The GAP category of stable categories cells.

3.1-3 IsStableCategoryObject
‣ IsStableCategoryObject( seq_obj )( filter )

Returns: true or false

The GAP category of stable categories objects.

3.1-4 IsStableCategoryMorphism
‣ IsStableCategoryMorphism( seq_obj )( filter )

Returns: true or false

The GAP category of stable categories morphisms.

3.2 Constructors

3.2-1 StableCategory
‣ StableCategory( category, f )( operation )

Returns: an additive category \CC/I

The arguments are an additive category \CC and a function f which decides whether or a not a morphism \alpha:A \to B in \CC belongs to some two-sided ideal I of morphisms in \CC. The output is the stable category \CC/I.

3.2-2 CongruencyTestFunction
‣ CongruencyTestFunction( stable_category )( attribute )

Returns: a gap function

The argument is a stable category \CC/I. The output is is a gap function f such that for any \alpha in \CC, [\alpha] \sim 0 if and only if f(\alpha)=\mathrm{true}.

3.2-3 ProjectionFunctor
‣ ProjectionFunctor( stable_category )( attribute )

Returns: a functor \CC \to \CC/I

The argument is a stable category \CC/I. The output is the natural projection functor \pi: \CC \to \CC/I.

3.2-4 StableCategoryObject
‣ StableCategoryObject( stable_category, A )( operation )

Returns: [A] in \CC/I

The arguments are a stable category \CC/I and an object A in \CC. The output is [A] in \CC/I.

3.2-5 UnderlyingCell
‣ UnderlyingCell( class_A )( attribute )

Returns: an object in \CC

The argument is an object [A] in a stable category \CC/I. The output is A.

3.2-6 StableCategoryMorphism
‣ StableCategoryMorphism( class_A, alpha, class_B )( operation )

Returns: [\alpha]:[A]\to [B] in \CC/I

The arguments are an object [A] in a stable category \CC/I, a morphism \alpha:A\to B in \CC and an object [B] in \CC/I. The output is [\alpha] in \CC/I.

3.2-7 StableCategoryMorphism
‣ StableCategoryMorphism( alpha )( operation )

Returns: [\alpha]:[A]\to [B] in \CC/I

The arguments are a stable category \CC/I and a morphism \alpha:A\to B in \CC. The output is [\alpha] in \CC/I.

3.2-8 UnderlyingCell
‣ UnderlyingCell( class_alpha )( attribute )

Returns: an object in \CC

The argument is a morphism [\alpha] in a stable category \CC/I. The output is \alpha.

3.2-9 Code example

If \CC is an abelian category with enough projectives, then the set of all morphisms which factor through some projective object in \CC defines a two-sided ideal I of morphisms. For every object A in \CC, we fix an epimorphism p_A:P_A \to A with P_A a projective object. One can easily verify that a morphism \alpha:A \to B factors through some projective object if and only if it lifts along p_B:P_B \to B. The stable category \CC/I is usually called the stable category of \CC by projectives. Let us illustrate this for the category of finitely presented \mathbb{Z}-modules.

gap> LoadPackage( "FreydCategoriesForCAP" );
true
gap> LoadPackage( "StableCategories" );
true
gap> ZZ := HomalgRingOfIntegers( );
Z
gap> ZZ_rows := CategoryOfRows( ZZ );
Rows( Z )
gap> ZZ_mod := FreydCategory( ZZ_rows );
Freyd( Rows( Z ) )
gap> f := m -> IsLiftable( m, EpimorphismFromSomeProjectiveObject( Range( m ) ) );
function( m ) ... end
gap> ZZ_mod_by_projs := StableCategory( ZZ_mod, f );
Stable category( Freyd( Rows( Z ) ) ) defined by f
gap> A := HomalgMatrix( [[0,0],[0,2],[0,3]], 3, 2, ZZ ) / ZZ_rows / ZZ_mod;
<An object in Freyd( Rows( Z ) )>
gap> IsZero( A );
false
gap> class_A := StableCategoryObject( ZZ_mod_by_projs, A );
<An object in Stable category( Freyd( Rows( Z ) ) ) defined by f>
gap> IsZeroForMorphisms( IdentityMorphism( class_A ) );
true
gap> IsZero( class_A );
true
gap> IsProjective( A );
true
gap> RangeCategoryOfHomomorphismStructure( ZZ_mod );
Freyd( Rows( Z ) )
gap> HasRangeCategoryOfHomomorphismStructure( ZZ_mod_by_projs );
false

In order to be able to lift the homomorphism structure from \CC to \CC/I, we need to equip \CC with more categorical operations (see the next section).

3.3 Stable categories defined by systems of lifting objects

Let \CC be a category equipped with a system \LL of lifting objects. The set of all morphisms \alpha:A \to B which lift along \ell_B:L_B \to B defines a two-sided ideal I_{\LL} of morphisms in \CC. It can be shown that a morphism \alpha: A \to B belongs to I_{\LL} if and only if it factors through at least on object in \LL. The extra structure which is bundled with the system of lifting objects enables us to lift more than additive structure form \CC to \CC/I_{\LL}. This will be illustrated in the next example. The category \CC/{I_{\LL}} can be constructed by the following operation:

3.3-1 StableCategoryByClassOfLiftingObjects
‣ StableCategoryByClassOfLiftingObjects( category )( attribute )

Returns: a stable category

The argument is an additive category equipped with a system of lifting objects \LL. The output is the stable category \CC/I_{\LL} where I_{\LL} is the two-sided ideal of morphisms \alpha: A \to B in \CC that lift along \ell_B:L_B \to B.

3.3-2 Code example

We found earlier that the class of all \EE-projective objects in any exact category (\CC,\EE) defines a system of lifting objects. Let us illustrate this for the category of finitely presented \mathbb{Z}-modules.

gap> LoadPackage( "FreydCategoriesForCAP" );
true
gap> LoadPackage( "StableCategories" );
true
gap> ZZ := HomalgRingOfIntegers( );
Z
gap> ZZ_rows := CategoryOfRows( ZZ );
Rows( Z )
gap> ZZ_mod := FreydCategory( ZZ_rows );
Freyd( Rows( Z ) )
gap> IsExactCategoryWithEnoughExactProjectives( ZZ_mod );
true
gap> ZZ_mod_by_projs := StableCategoryByClassOfLiftingObjects( ZZ_mod );
Stable category( Freyd( Rows( Z ) ) ) defined by a system of lifting objects
gap> CongruencyTestFunction( ZZ_mod_by_projs );
<Property "IsLiftableAlongMorphismFromLiftingObject">
gap> A := HomalgMatrix( [[0,0],[0,2],[0,3]], 3, 2, ZZ ) / ZZ_rows / ZZ_mod;
<An object in Freyd( Rows( Z ) )>
gap> IsZero( A );
false
gap> class_A := StableCategoryObject( ZZ_mod_by_projs, A );
<An object in Stable category( Freyd( Rows( Z ) ) ) defined by a system of
lifting objects>
gap> IsZeroForMorphisms( IdentityMorphism( class_A ) );
true
gap> IsZero( class_A );
true
gap> IsProjective( A );
true
gap> RangeCategoryOfHomomorphismStructure( ZZ_mod );
Freyd( Rows( Z ) )
gap> HasRangeCategoryOfHomomorphismStructure( ZZ_mod_by_projs );
true
gap> RangeCategoryOfHomomorphismStructure( ZZ_mod_by_projs );
Freyd( Rows( Z ) )

In the following we create two \mathbb{Z}-modules A and B In the following, we constructe a nonzero morphism \alpha:A \to B with [\alpha]\sim 0.

gap> mat_A := HomalgMatrix(
>                 [ [    0,    4,  -10,    6 ],
>                   [   10,   -8,   10,  -10 ],
>                   [    1,    5,  -14,    5 ] ] , 3, 4, ZZ
>         );;
gap> A := mat_A / ZZ_rows / ZZ_mod;
<An object in Freyd( Rows( Z ) )>
gap> class_A := StableCategoryObject( ZZ_mod_by_projs, A );
<An object in Stable category( Freyd( Rows( Z ) ) ) defined by a system of
lifting objects>
gap> mat_B := HomalgMatrix(
>                 [ [   8,  -6,  -9 ],
>                   [   8,  -4,  -9 ] ] , 2, 3, ZZ
>         );;
gap> B := mat_B / ZZ_rows / ZZ_mod;
<An object in Freyd( Rows( Z ) )>
gap> class_B := StableCategoryObject( ZZ_mod_by_projs, B );
<An object in Stable category( Freyd( Rows( Z ) ) ) defined by a system of
lifting objects>
gap> mat_alpha := HomalgMatrix(
>                 [ [       1899716,        264976,   90332035416 ],
>                   [       2974213,        474929,  241963187751 ],
>                   [       2974213,        474929,   87104606157 ],
>                   [       2974213,        209953,  -16134448239 ] ] , 4, 3, ZZ
>         );;
gap> alpha := FreydCategoryMorphism( A, mat_alpha / ZZ_rows, B );
<A morphism in Freyd( Rows( Z ) )>
gap> IsZero( alpha );
false
gap> class_alpha := StableCategoryMorphism( class_A, alpha, class_B );
<A morphism in Stable category( Freyd( Rows( Z ) ) ) defined by a system of
lifting objects>
gap> IsZero( class_alpha );
true

This means \alpha lifts along \ell_B:L_B \to B. In the following, we compute a lift morphism of \alpha along \ell_B.

gap> IsLiftableAlongMorphismFromLiftingObject( alpha );
true
gap> lambda := WitnessForBeingLiftableAlongMorphismFromLiftingObject( alpha );
<A morphism in Freyd( Rows( Z ) )>
gap> Display( lambda );

--------------------------------
Source:
--------------------------------

Source: 
A row module over Z of rank 3

Matrix: 
[ [    0,    4,  -10,    6 ],
  [   10,   -8,   10,  -10 ],
  [    1,    5,  -14,    5 ] ]

Range: 
A row module over Z of rank 4

A morphism in Rows( Z )


--------------------------------
Morphism datum:
--------------------------------

Source: 
A row module over Z of rank 4

Matrix: 
[ [   -44715405386652,    89250478674756,    50395165232580 ],
  [  -119773407285675,   239063782164525,   134987049730125 ],
  [   -43118426622843,    86062961579229,    48595337902845 ],
  [     7984893819045,   -15937585477635,    -8999136648675 ] ]

Range: 
A row module over Z of rank 3

A morphism in Rows( Z )


--------------------------------
Range:
--------------------------------

Source: 
A row module over Z of rank 0

Matrix: 
(an empty 0 x 3 matrix)

Range: 
A row module over Z of rank 3

A zero, split monomorphism in Rows( Z )


--------------------------------
General description:
--------------------------------

A morphism in Freyd( Rows( Z ) )

gap> ell_B := MorphismFromLiftingObject( B );
<A morphism in Freyd( Rows( Z ) )>
gap> Display( ell_B );

--------------------------------
Source:
--------------------------------

Source: 
A row module over Z of rank 0

Matrix: 
(an empty 0 x 3 matrix)

Range: 
A row module over Z of rank 3

A zero, split monomorphism in Rows( Z )


--------------------------------
Morphism datum:
--------------------------------

Source: 
A row module over Z of rank 3

Matrix: 
[ [  1,  0,  0 ],
  [  0,  1,  0 ],
  [  0,  0,  1 ] ]

Range: 
A row module over Z of rank 3

An identity morphism in Rows( Z )


--------------------------------
Range:
--------------------------------

Source: 
A row module over Z of rank 2

Matrix: 
[ [   8,  -6,  -9 ],
  [   8,  -4,  -9 ] ]

Range: 
A row module over Z of rank 3

A morphism in Rows( Z )


--------------------------------
General description:
--------------------------------

A morphism in Freyd( Rows( Z ) )

gap> IsCongruentForMorphisms( PreCompose( lambda, ell_B ), alpha );
true

Let us compute \mathrm{Hom}(A,B) and \mathrm{Hom}([A],[B]) as \mathbb{Z}-modules a generating set of morphisms for \mathrm{Hom}([A],[B]).

gap> RangeCategoryOfHomomorphismStructure( ZZ_mod );
Freyd( Rows( Z ) )
gap> RangeCategoryOfHomomorphismStructure( ZZ_mod_by_projs );
Freyd( Rows( Z ) )
gap> Hom_AB := HomStructure( A, B );
<An object in Freyd( Rows( Z ) )>
gap> Display( Hom_AB );
--------------------------------
Relation morphism:
--------------------------------

Source: 
A row module over Z of rank 8

Matrix: 
[ [   -7,    6,    0,    1,    0,   16,    0,    1,    0 ],
  [   -2,    4,    0,    1,    0,    4,   10,    0,    1 ],
  [    8,    0,    0,   12,    0,   -8,    0,    5,    0 ],
  [    9,    0,    0,    8,    4,    0,   -8,    0,    5 ],
  [  -17,    8,    0,  -16,    0,   18,    0,  -14,    0 ],
  [  -23,    8,    0,   -4,  -10,    8,   10,    0,  -14 ],
  [   12,    6,    9,    6,    0,  -10,    0,    5,    0 ],
  [   13,    4,    9,    0,    6,    0,  -10,    0,    5 ] ]

Range: 
A row module over Z of rank 9

A morphism in Rows( Z )


--------------------------------
General description:
--------------------------------

An object in Freyd( Rows( Z ) )

gap> Sim_Hom_AB := SimplifyObject( Hom_AB, infinity );
<An object in Freyd( Rows( Z ) )>
gap> Display( Sim_Hom_AB );
--------------------------------
Relation morphism:
--------------------------------

Source: 
A row module over Z of rank 3

Matrix: 
[ [  2,  0,  0,  0 ],
  [  0,  2,  0,  0 ],
  [  0,  0,  2,  0 ] ]

Range: 
A row module over Z of rank 4

A morphism in Rows( Z )


--------------------------------
General description:
--------------------------------

An object in Freyd( Rows( Z ) )

gap> Hom_class_A_class_B := HomStructure( class_A, class_B );
<An object in Freyd( Rows( Z ) )>
gap> Display( Hom_class_A_class_B );

--------------------------------
Relation morphism:
--------------------------------

Source: 
A row module over Z of rank 11

Matrix: 
[ [     -7,      6,      0,       1,     0,     16,     0,     1,     0 ],
  [     -2,      4,      0,       1,     0,      4,    10,     0,     1 ],
  [      8,      0,      0,      12,     0,     -8,     0,     5,     0 ],
  [      9,      0,      0,       8,     4,      0,    -8,     0,     5 ],
  [    -17,      8,      0,     -16,     0,     18,     0,   -14,     0 ],
  [    -23,      8,      0,      -4,   -10,      8,    10,     0,   -14 ],
  [     12,      6,      9,       6,     0,    -10,     0,     5,     0 ],
  [     13,      4,      9,       0,     6,      0,   -10,     0,     5 ],
  [  56694,   5395,   9550,  156285,     0,  -9550,     0,     0,     0 ],
  [  11665,   1110,   1965,   32156,     0,  -1965,     0,     0,     0 ],
  [ -11191,  -1064,  -1885,  -30848,     0,   1886,     0,     0,     0 ] ]

Range: 
A row module over Z of rank 9

A morphism in Rows( Z )


--------------------------------
General description:
--------------------------------

An object in Freyd( Rows( Z ) )

gap> Sim_Hom_class_A_class_B := SimplifyObject( Hom_class_A_class_B, infinity );
<An object in Freyd( Rows( Z ) )>
gap> Display( Sim_Hom_class_A_class_B );

--------------------------------
Relation morphism:
--------------------------------

Source: 
A row module over Z of rank 2

Matrix: 
[ [  2,  0 ],
  [  0,  2 ] ]

Range: 
A row module over Z of rank 2

A morphism in Rows( Z )


--------------------------------
General description:
--------------------------------

An object in Freyd( Rows( Z ) )

This means \mathrm{Hom}(A,B) \cong \mathbb{Z}/2\mathbb{Z} \oplus \mathbb{Z}/2\mathbb{Z} \oplus \mathbb{Z}/2\mathbb{Z} \oplus \mathbb{Z} and \mathrm{Hom}([A],[B]) \cong \mathbb{Z}/2\mathbb{Z} \oplus \mathbb{Z}/2\mathbb{Z}.

gap> eta := SimplifyObject_IsoToInputObject( Hom_class_A_class_B, infinity );
<A morphism in Freyd( Rows( Z ) )>
gap> IsEqualForObjects( Source( eta ), Sim_Hom_class_A_class_B );
true
gap> IsEqualForObjects( Range( eta ), Hom_class_A_class_B );
true
gap> IsIsomorphism( eta );
true
gap> Display( MorphismDatum( eta ) );
Source: 
A row module over Z of rank 2

Matrix: 
[ [   0,   0,   0,  -1,   1,  -1,  -1,   1,   0 ],
  [   0,   0,   0,   0,   1,  -1,   0,   0,   1 ] ]

Range: 
A row module over Z of rank 9

A morphism in Rows( Z )

gap> D := DistinguishedObjectOfHomomorphismStructure( ZZ_mod_by_projs );
<A projective object in Freyd( Rows( Z ) )>
gap> g1 := HomalgMatrix( [[1,0]], 1, 2, ZZ );
<A 1 x 2 matrix over an internal ring>
gap> g1 := FreydCategoryMorphism( D, g1 / ZZ_rows, Sim_Hom_class_A_class_B );
<A morphism in Freyd( Rows( Z ) )>
gap> g1 := PreCompose( g1, eta );
<A morphism in Freyd( Rows( Z ) )>
gap> g1 :=
>   InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism(
>             class_A, class_B, g1 );
<A morphism in Stable category( Freyd( Rows( Z ) ) ) defined by a system of
lifting objects>
gap> IsEqualForObjects( Source( g1 ), class_A );
true
gap> IsEqualForObjects( Range( g1 ), class_B );
true
gap> Display( MorphismDatum( UnderlyingCell( g1 ) ) );
Source: 
A row module over Z of rank 4

Matrix: 
[ [   224824,   217054,   810891 ],
  [   893412,   362992,  1844424 ],
  [   274828,   165777,   716643 ],
  [  -168860,    57774,        0 ] ]

Range: 
A row module over Z of rank 3

A morphism in Rows( Z )

gap> IsZero( AdditionForMorphisms( g1, g1 ) );
true
gap> g2 := HomalgMatrix( [[0,1]], 1, 2, ZZ );
<A 1 x 2 matrix over an internal ring>
gap> g2 := FreydCategoryMorphism( D, g2 / ZZ_rows, Sim_Hom_class_A_class_B );
<A morphism in Freyd( Rows( Z ) )>
gap> g2 := PreCompose( g2, eta );
<A morphism in Freyd( Rows( Z ) )>
gap> g2 :=
>   InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism(
>             class_A, class_B, g2 );
<A morphism in Stable category( Freyd( Rows( Z ) ) ) defined by a system of
lifting objects>
gap> IsEqualForObjects( Source( g2 ), class_A );
true
gap> IsEqualForObjects( Range( g2 ), class_B );
true
gap> Display( MorphismDatum( UnderlyingCell( g2 ) ) );
Source: 
A row module over Z of rank 4

Matrix: 
[ [   457088,   441291,  1648629 ],
  [  1816402,   737986,  3749904 ],
  [   558754,   337038,  1457010 ],
  [  -343310,   117463,        0 ] ]

Range: 
A row module over Z of rank 3

A morphism in Rows( Z )

gap> IsZero( AdditionForMorphisms( g2, g2 ) );
true

3.4 Stable categories defined by systems of colifting objects

Let \CC be a category equipped with a system \QQ of colifting objects. The set of all morphisms \alpha:A \to B which colift along q_A:A \to Q_A defines a two-sided ideal I_{\QQ} of morphisms in \CC. It can be shown that a morphism \alpha: A \to B belongs to I_{\QQ} if and only if it factors through at least on object in \QQ. The extra structure which is bundled with the system of colifting objects enables us to lift more than additive structure form \CC to \CC/I_{\LL}. The category \CC/{I_{\QQ}} can be constructed by the following operation:

3.4-1 StableCategoryByClassOfColiftingObjects
‣ StableCategoryByClassOfColiftingObjects( category )( attribute )

Returns: a stable category

The argument is an additive category equipped with a system of colifting objects \QQ. The output is the stable category \CC/I_{\QQ} where I_{\QQ} is the two-sided ideal of morphisms \alpha: A \to B in \CC that colift along q_A:A \to Q_A.

3.4-2 Code example 1

In this example we continue the Code example in Subsection We will construct the stable category of \mathrm{Arr}(\CC) where \CC is the additive closure of the \mathbb{Q}-algebroid defined by the quiver

gap> ReadPackage( "StableCategories", "examples/doc/CategoryOfArrows-1.g" );
true
gap> AAoid;
FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure( Algebroid( V=4\
, E=10, Rel=7 ) ) )
gap> St_AAoid := StableCategoryByClassOfColiftingObjects( AAoid );
Stable category( FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure( Algebroid( V=4\
, E=10, Rel=7 ) ) ) ) 
defined by a system of colifting objects
gap> class_A := StableCategoryObject( St_AAoid, A );
<An object in Stable category( FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure( Algebroid( V=4\
, E=10, Rel=7 ) ) ) ) 
defined by a system of colifting objects>
gap> IsZeroForObjects( class_A );
false
gap> class_B := StableCategoryObject( St_AAoid, B );
<An object in Stable category( FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure( Algebroid( V=4\
, E=10, Rel=7 ) ) ) ) 
defined by a system of colifting objects>
gap> IsZeroForObjects( class_B );
false
gap> class_U := StableCategoryObject( St_AAoid, U );
<An object in Stable category( FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure( Algebroid( V=4\
, E=10, Rel=7 ) ) ) ) 
defined by a system of colifting objects>
gap> IsZeroForObjects( class_U );
true
gap> class_phi := StableCategoryMorphism( class_A, phi, class_B );
<A morphism in Stable category( FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure( Algebroid( V=4\
, E=10, Rel=7 ) ) ) ) 
defined by a system of colifting objects>
gap> IsZeroForMorphisms( class_phi );
false
gap> class_psi := StableCategoryMorphism( class_A, psi, class_B );
<A morphism in Stable category( FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure( Algebroid( V=4\
, E=10, Rel=7 ) ) ) ) 
defined by a system of colifting objects>
gap> IsZeroForMorphisms( class_psi );
true
gap> IsLiftable( [ [ psi_2 ] ] / Aoid, [ [ beta ] ] / Aoid );
true
gap> IsCongruentForMorphisms(
>         PreCompose( [ [ w ] ] / Aoid, [ [ beta ] ] / Aoid ),
>         [ [ psi_2 ] ] / Aoid
>   );
true
gap> HomStructure( A, B );
<A row module over Q of rank 4>
gap> HomStructure( class_A, class_B );
<A row module over Q of rank 1>
gap> Hom_class_A_class_B := BasisOfExternalHom( class_A, class_B );
[ <A morphism in Stable category( FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure( Algebroid( V=4\
, E=10, Rel=7 ) ) ) ) 
defined by a system of colifting objects> ]
gap> Display( Hom_class_A_class_B[ 1 ] );
A morphism in Stable category( FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure( Algebroid( V=4\
, E=10, Rel=7 ) ) ) ) 
defined by a system of colifting objects defined by the underlying morphism:

Image of <(1)>:
A 1 x 1 matrix with entries in Algebroid( V=4, E=10, Rel=7 )

[1,1]: (A_1)-[{ 1*(tau) }]->(B_1)
Image of <(2)>:
A 1 x 1 matrix with entries in Algebroid( V=4, E=10, Rel=7 )

[1,1]: (A_2)-[{ 1*(phi_2) }]->(B_2)
A morphism in FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure( Algebroid( V=4\
, E=10, Rel=7 ) ) )
given by the above data
gap> Freyd_Aoid := FreydCategory( Aoid );
Freyd( Additive closure( Algebroid( V=4, E=10, Rel=7 ) ) )
gap> FA := FreydCategoryObject( [ [ alpha ] ] / Aoid );
<An object in Freyd( Additive closure( Algebroid( V=4, E=10, Rel=7 ) ) )>
gap> IsZeroForObjects( FA );
false
gap> FB := FreydCategoryObject( [ [ beta ] ] / Aoid );
<An object in Freyd( Additive closure( Algebroid( V=4, E=10, Rel=7 ) ) )>
gap> IsZeroForObjects( FB );
false
gap> FU := FreydCategoryObject( [ [ u ] ] / Aoid );
<An object in Freyd( Additive closure( Algebroid( V=4, E=10, Rel=7 ) ) )>
gap> IsZeroForObjects( FU );
true
gap> Fphi := FreydCategoryMorphism( FA, [ [ phi_2 ] ] / Aoid, FB );
<A morphism in Freyd( Additive closure( Algebroid( V=4, E=10, Rel=7 ) ) )>
gap> IsZeroForMorphisms( Fphi );
false
gap> Fpsi := FreydCategoryMorphism( FA, [ [ psi_2 ] ] / Aoid, FB );
<A morphism in Freyd( Additive closure( Algebroid( V=4, E=10, Rel=7 ) ) )>
gap> IsZeroForMorphisms( Fpsi );
true
gap> HomStructure( FA, FB );
<A row module over Q of rank 1>
gap> Hom_FA_FB := BasisOfExternalHom( FA, FB );
[ <A morphism in Freyd( Additive closure( Algebroid( V=4, E=10, Rel=7 ) ) )> ]
gap> Display( Hom_FA_FB[ 1 ] );

--------------------------------
Source:
--------------------------------

A 1 x 1 matrix with entries in Algebroid( V=4, E=10, Rel=7 )

[1,1]: (A_1)-[{ 1*(alpha) }]->(A_2)

--------------------------------
Morphism datum:
--------------------------------

A 1 x 1 matrix with entries in Algebroid( V=4, E=10, Rel=7 )

[1,1]: (A_2)-[{ 1*(phi_2) }]->(B_2)

--------------------------------
Range:
--------------------------------

A 1 x 1 matrix with entries in Algebroid( V=4, E=10, Rel=7 )

[1,1]: (B_1)-[{ 1*(beta) }]->(B_2)

--------------------------------
General description:
--------------------------------

A morphism in Freyd( Additive closure( Algebroid( V=4, E=10, Rel=7 ) ) )

3.4-3 Code example 2

In this example we continue the Code example in Subsection the additive closure of the \mathbb{Q}-algebroid defined by the quiver The stable category \Ch{\CC}/I is isomorphic to the bounded homotopy category \Ho{\CC}. This follows from the fact that a morphism \alpha:A \to B in \Ch{\CC} is null-homotopic if and only if it colifts along the q_A:A \to Q_A where q_A is the natural injection of A in the mapping cone of \id_A.

gap> ReadPackage( "StableCategories", "examples/doc/ComplexesCategories-0.g" );
true
gap> Ch_Aoid;
Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 ) ) )
gap> St_Ch_Aoid := StableCategoryByClassOfColiftingObjects( Ch_Aoid );
Stable category( Cochain complexes( Additive closure(
Algebroid( V=6, E=12, Rel=9 ) ) ) ) defined by a system of colifting objects
gap> class_A := StableCategoryObject( St_Ch_Aoid, A );
<An object in Stable category( Cochain complexes(
Additive closure( Algebroid( V=6, E=12, Rel=9 ) )
) ) defined by a system of colifting objects>
gap> class_B := StableCategoryObject( St_Ch_Aoid, B );
<An object in Stable category( Cochain complexes(
Additive closure( Algebroid( V=6, E=12, Rel=9
) ) ) ) defined by a system of colifting objects>
gap> Hom_AB := HomStructure( A, B );
<A row module over Q of rank 3>
gap> Hom_A_B := BasisOfExternalHom( A, B );;
gap> Display( Hom_A_B[ 1 ] );

== 2 =======================
A 1 x 1 matrix with entries in Algebroid( V=6, E=12, Rel=9 )

[1,1]: (A_2)-[{ 0 }]->(B_2)
== 1 =======================
A 1 x 1 matrix with entries in Algebroid( V=6, E=12, Rel=9 )

[1,1]: (A_1)-[{ 1*(a_1*h_2) + 1*(beta_1) - 1*(alpha_1) }]->(B_1)
== 0 =======================
A 1 x 1 matrix with entries in Algebroid( V=6, E=12, Rel=9 )

[1,1]: (A_0)-[{ 1*(beta_0) - 1*(alpha_0) }]->(B_0)

A morphism in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
) ) given by the above data
gap> Display( Hom_A_B[ 2 ] );

== 2 =======================
A 1 x 1 matrix with entries in Algebroid( V=6, E=12, Rel=9 )

[1,1]: (A_2)-[{ 1*(alpha_2) }]->(B_2)
== 1 =======================
A 1 x 1 matrix with entries in Algebroid( V=6, E=12, Rel=9 )

[1,1]: (A_1)-[{ 1*(alpha_1) }]->(B_1)
== 0 =======================
A 1 x 1 matrix with entries in Algebroid( V=6, E=12, Rel=9 )

[1,1]: (A_0)-[{ 1*(alpha_0) }]->(B_0)

A morphism in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
) ) given by the above data
gap> Display( Hom_A_B[ 3 ] );

== 2 =======================
A 1 x 1 matrix with entries in Algebroid( V=6, E=12, Rel=9 )

[1,1]: (A_2)-[{ 1*(beta_2) }]->(B_2)
== 1 =======================
A 1 x 1 matrix with entries in Algebroid( V=6, E=12, Rel=9 )

[1,1]: (A_1)-[{ 1*(beta_1) }]->(B_1)
== 0 =======================
A 1 x 1 matrix with entries in Algebroid( V=6, E=12, Rel=9 )

[1,1]: (A_0)-[{ 1*(beta_0) }]->(B_0)

A morphism in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
) ) given by the above data
gap> Hom_class_A_class_B := HomStructure( class_A, class_B );
<A row module over Q of rank 1>
gap> Hom_class_A_class_B := BasisOfExternalHom( class_A, class_B );;
gap> Display( Hom_class_A_class_B[ 1 ] );
A morphism in Stable category( Cochain complexes( Additive closure(
Algebroid( V=6, E=12, Rel=9 ) ) ) ) defined by a system of colifting
objects defined by the underlying morphism:


== 2 =======================
A 1 x 1 matrix with entries in Algebroid( V=6, E=12, Rel=9 )

[1,1]: (A_2)-[{ 1*(alpha_2) }]->(B_2)
== 1 =======================
A 1 x 1 matrix with entries in Algebroid( V=6, E=12, Rel=9 )

[1,1]: (A_1)-[{ 1*(alpha_1) }]->(B_1)
== 0 =======================
A 1 x 1 matrix with entries in Algebroid( V=6, E=12, Rel=9 )

[1,1]: (A_0)-[{ 1*(alpha_0) }]->(B_0)

A morphism in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
) ) given by the above data
gap> class_alpha := StableCategoryMorphism( St_Ch_Aoid, alpha );
<A morphism in Stable category( Cochain complexes( Additive closure(
Algebroid( V=6, E=12, Rel=9 ) ) ) ) defined by a system of colifting objects>
gap> class_beta := StableCategoryMorphism( St_Ch_Aoid, beta );
<A morphism in Stable category( Cochain complexes( Additive closure(
Algebroid( V=6, E=12, Rel=9 ) ) ) ) defined by a system of colifting objects>
gap> IsCongruentForMorphisms( class_alpha, class_beta );
true
gap> gamma := alpha - beta;
<A morphism in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
 ) ) with active lower bound 0 and active upper bound 2>
gap> IsColiftableAlongMorphismToColiftingObject( gamma );
true
gap> w := WitnessForBeingColiftableAlongMorphismToColiftingObject( gamma );
<A morphism in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
 ) ) with active lower bound 0 and active upper bound 2>
gap> IsCongruentForMorphisms( PreCompose( q_A, w ), gamma );
true
gap> Display( w );

== 2 =======================
A 1 x 1 matrix with entries in Algebroid( V=6, E=12, Rel=9 )

[1,1]: (A_2)-[{ -1*(beta_2) + 1*(alpha_2) }]->(B_2)
== 1 =======================
A 2 x 1 matrix with entries in Algebroid( V=6, E=12, Rel=9 )

[1,1]: (A_2)-[{ 1*(h_2) }]->(B_1)
[2,1]: (A_1)-[{ -1*(beta_1) + 1*(alpha_1) }]->(B_1)
== 0 =======================
A 2 x 1 matrix with entries in Algebroid( V=6, E=12, Rel=9 )

[1,1]: (A_1)-[{ 1*(h_1) }]->(B_0)
[2,1]: (A_0)-[{ -1*(beta_0) + 1*(alpha_0) }]->(B_0)

A morphism in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
) ) given by the above data
gap> H := HomotopyMorphisms( gamma );
<ZFunction>
gap> Display( H[ 1 ] );
A 1 x 1 matrix with entries in Algebroid( V=6, E=12, Rel=9 )

[1,1]: (A_1)-[{ 1*(h_1) }]->(B_0)
gap> Display( H[ 2 ] );
A 1 x 1 matrix with entries in Algebroid( V=6, E=12, Rel=9 )

[1,1]: (A_2)-[{ 1*(h_2) }]->(B_1)
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 Ind

generated by GAPDoc2HTML