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

### 12 Abelian closure with strict direct sums

#### 12.1 Attributes

##### 12.1-1 UnderlyingCategory
 ‣ UnderlyingCategory( DC ) ( attribute )

Return the category $$C$$ underlying the abelian closure with strict direct sums category DC := AbelianClosureWithStrictDirectSumsAsFreydOfCoFreydOfStrictAdditiveClosure( $$C$$ ).

#### 12.2 Constructors

 ‣ AbelianClosureWithStrictDirectSumsAsFreydOfCoFreydOfStrictAdditiveClosure( C ) ( attribute )

Returns: a CAP category

Construct the free distributive closure category with strict products and coproducts of a category C.

#@if ValueOption( "no_precompiled_code" ) <> true
true
true
gap> q := RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" );
q(4)[a:1->2,b:2->3,c:3->4]
gap> Fq := FreeCategory( q );
FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) )
gap> Q := HomalgFieldOfRationals( );
Q
gap> Qq := Q[Fq];
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
gap> L := Qq / [ Qq.abc ];
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations
gap> A := AbelianClosureWithStrictDirectSumsAsFreydOfCoFreydOfStrictAdditiveClosure( L );
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )
gap> a := A.a;
<A morphism in
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> b := A.b;
<A morphism in
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> c := A.c;
<A morphism in
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> IsZero( PreCompose( [ a, b, c ] ) );
true
gap> d := CokernelProjection( a );
<An epimorphism in
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> e := CokernelColift( a, PreCompose( b, c ) );
<A morphism in
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> f := KernelEmbedding( e );
<A monomorphism in
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> g := KernelEmbedding( c );
<A monomorphism in
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> h := KernelLift( c, PreCompose( a, b ) );
<A morphism in
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> i := CokernelProjection( h );
<An epimorphism in
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> ker := Source( f );
<An object in
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> coker := Target( i );
<An object in
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> HomStructure( ker, coker );
<A row module over Q of rank 1>
gap> hom_ker_coker := BasisOfExternalHom( ker, coker );
[ <A morphism in
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )> ]
gap> s := hom_ker_coker[1];
<A morphism in
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> j := KernelObjectFunctorial( b, d, e );
<A morphism in
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> k := CokernelObjectFunctorial( h, g, b );
<A morphism in
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> HK := HomologyObject( j, s );
<An object in
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> IsZero( HK );
true
gap> HC := HomologyObject( s, k );
<An object in
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> IsZero( HC );
true
gap> ff := AsGeneralizedMorphism( f );
<A morphism in Generalized morphism category of
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> dd := AsGeneralizedMorphism( d );
<A morphism in Generalized morphism category of
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> bb := AsGeneralizedMorphism( b );
<A morphism in Generalized morphism category of
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> gg := AsGeneralizedMorphism( g );
<A morphism in Generalized morphism category of
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> ii := AsGeneralizedMorphism( i );
<A morphism in Generalized morphism category of
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> ss := PreCompose( [ ff, PseudoInverse( dd ), bb, PseudoInverse( gg ), ii ] );
<A morphism in Generalized morphism category of
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> IsHonest( ss );
true
gap> s = HonestRepresentative( ss );
true
gap> Id := ExtendFunctorToAbelianClosureWithStrictDirectSums(
>               EmbeddingOfUnderlyingCategory( A ) );
Extension to
Source( Embedding functor into an abelian closure category
with strict direct sums ) )
gap> Id( s );
<A morphism in
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations )>
gap> IsWellDefined( Id( s ) );
true
gap> Display( s );

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

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

A 2 x 2 matrix with entries in Algebroid( Q, FreeCategory(
RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) ) / relations

[1,1]: (2)-[{ 1*(b*c) }]->(4)
[1,2]: (2)-[{ 1*(2) }]->(2)
[2,1]: (1)-[{ 0 }]->(4)
[2,2]: (1)-[{ -1*(a) }]->(2)

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

A 2 x 1 matrix with entries in Algebroid( Q, FreeCategory(
RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) ) / relations

[1,1]: (2)-[{ 1*(2) }]->(2)
[2,1]: (1)-[{ 0 }]->(2)

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

A 1 x 1 matrix with entries in Algebroid( Q, FreeCategory(
RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) ) / relations

[1,1]: (2)-[{ 1*(b*c) }]->(4)

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

A morphism in CoFreyd( AdditiveClosure( Algebroid( Q, FreeCategory(
RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) ) / relations ) )

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

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

A 1 x 1 matrix with entries in Algebroid( Q, FreeCategory(
RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) ) / relations

[1,1]: (2)-[{ 1*(b*c) }]->(4)

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

A 1 x 1 matrix with entries in Algebroid( Q, FreeCategory(
RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) ) / relations

[1,1]: (2)-[{ 1*(b) }]->(3)

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

A 1 x 1 matrix with entries in Algebroid( Q, FreeCategory(
RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) ) / relations

[1,1]: (3)-[{ 1*(c) }]->(4)

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

A morphism in CoFreyd( AdditiveClosure( Algebroid( Q, FreeCategory(
RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) ) / relations ) )

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

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

A 2 x 2 matrix with entries in Algebroid( Q, FreeCategory(
RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) ) / relations

[1,1]: (3)-[{ 1*(c) }]->(4)
[1,2]: (3)-[{ 1*(3) }]->(3)
[2,1]: (1)-[{ 0 }]->(4)
[2,2]: (1)-[{ 0 }]->(3)

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

A 2 x 1 matrix with entries in Algebroid( Q, FreeCategory(
RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) ) / relations

[1,1]: (3)-[{ 1*(3) }]->(3)
[2,1]: (1)-[{ 1*(a*b) }]->(3)

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

A 1 x 1 matrix with entries in Algebroid( Q, FreeCategory(
RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) ) / relations

[1,1]: (3)-[{ 1*(c) }]->(4)

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

A morphism in CoFreyd( AdditiveClosure( Algebroid( Q, FreeCategory(
RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) ) / relations ) )

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

A morphism in Freyd( CoFreyd( AdditiveClosure( Algebroid( Q, FreeCategory(
RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) ) / relations ) ) )

A morphism in
Algebroid( Q, FreeCategory( RightQuiver( "q(4)[a:1->2,b:2->3,c:3->4]" ) ) )
/ relations ) given by the above data
#@fi


##### 12.2-2 EmbeddingOfUnderlyingCategory
 ‣ EmbeddingOfUnderlyingCategory( UC ) ( attribute )

Returns: a CAP functor

The full embedding functor from the category $$C$$ underlying the free distributive closure category DC with strict products and coproducts into DC.

##### 12.2-3 ExtendFunctorToAbelianClosureWithStrictDirectSums
 ‣ ExtendFunctorToAbelianClosureWithStrictDirectSums( DC ) ( attribute )

Returns: a CAP functor

The full embedding functor from the category $$C$$ underlying the free distributive closure category DC with strict products and coproducts into DC.

#### 12.3 GAP categories

 ‣ IsAbelianClosureWithStrictDirectSumsAsFreydOfCoFreydOfStrictAdditiveClosure( arg ) ( filter )

Returns: true or false

The GAP category of free distributive closure categories with strict products and coproducts of a category.

 ‣ IsCellInAbelianClosureWithStrictDirectSumsAsFreydOfCoFreydOfStrictAdditiveClosure( arg ) ( filter )

Returns: true or false

The GAP category of cells in the free distributive closure category with strict products and coproducts of a category.

 ‣ IsObjectInAbelianClosureWithStrictDirectSumsAsFreydOfCoFreydOfStrictAdditiveClosure( arg ) ( filter )

Returns: true or false

The GAP category of objects in the free distributive closure category with strict products and coproducts of a category.

 ‣ IsMorphismInAbelianClosureWithStrictDirectSumsAsFreydOfCoFreydOfStrictAdditiveClosure( arg ) ( filter )
Returns: true or false