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] 

11 Functors between the various categories
 11.1 Examples
 11.2 Attributes

11 Functors between the various categories

11.1 Examples

11.1-1 The reflexive completion of the one object category $C 2$

The reflexive completion of the one object category \(C_2\) has four isomorphism classes of objects:

gap> q := RightQuiver( "q(1)[a:1->1]" );
q(1)[a:1->1]
gap> C2 := Category( q, [ [ q.a^2, q.1 ] ] );
FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a = 1 ]
gap> PSh := PreSheaves( C2 );
PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) )/ [ a*a = 1 ],
SkeletalFinSets )
gap> IsReflexive( TerminalObject( PSh ) );
true
gap> IsReflexive( InitialObject( PSh ) );
true
gap> L := PSh.1;
<A projective object in PreSheaves( FreeCategory(
 RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a = 1 ], SkeletalFinSets )>
gap> IsReflexive( L );
true
gap> P := DirectProduct( L, L );
<An object in PreSheaves( FreeCategory(
 RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a = 1 ], SkeletalFinSets )>
gap> IsReflexive( P );
true
gap> iota := UnitOfIsbellAdjunction( PSh );
A natural transformation from Identity functor of PreSheaves(
FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a = 1 ], SkeletalFinSets )
to Precomposition of Isbell left adjoint functor and Isbell right adjoint functor
gap> iotaP := iota( P );
<A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) )
 / [ a*a = 1 ], SkeletalFinSets )>
gap> Display( iotaP );
Image of <(1)>:
{ 0,..., 3 } ⱶ[ 0, 1, 2, 3 ]→ { 0,..., 3 }

A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) )
/ [ a*a = 1 ], SkeletalFinSets ) given by the above data
gap> IsOne( iotaP );
true
gap> C := Coproduct( L, L );
<An object in PreSheaves( FreeCategory(
 RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a = 1 ], SkeletalFinSets )>
gap> IsReflexive( C );
true
gap> iotaC := iota( C );
<A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) )
 / [ a*a = 1 ], SkeletalFinSets )>
gap> Display( iotaC );
Image of <(1)>:
{ 0,..., 3 } ⱶ[ 1, 2, 0, 3 ]→ { 0,..., 3 }

A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) )
/ [ a*a = 1 ], SkeletalFinSets ) given by the above data
gap> IsIsomorphism( iotaC );
true
gap> Source( iotaC ) = C;
true
gap> Target( iotaC ) = P;
true
gap> L3 := Coproduct( L, L, L );
<An object in PreSheaves( FreeCategory(
 RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a = 1 ], SkeletalFinSets )>
gap> IsProjective( L3 );
true
gap> IsReflexive( L3 );
false
gap> q := RightQuiver( "q(1)[t:1->1]" );
q(1)[t:1->1]
gap> F := FreeCategory( q );
FreeCategory( RightQuiver( "q(1)[t:1->1]" ) )
gap> Q := HomalgFieldOfRationals( );
Q
gap> Qq := Q[F];
Algebra( Q, FreeCategory( RightQuiver( "q(1)[t:1->1]" ) ) )
gap> A := Qq / [ Qq.t^3 ];
Algebra( Q, FreeCategory( RightQuiver( "q(1)[t:1->1]" ) ) ) / relations
gap> PSh := PreSheaves( A );
PreSheaves(
Algebra( Q, FreeCategory( RightQuiver( "q(1)[t:1->1]" ) ) ) / relations,
Rows( Q ) )
gap> CommutativeRingOfLinearCategory( PSh );
Q
gap> Display( PSh.1 );
Image of <(1)>:
A row module over Q of rank 3

Image of (1)-[{ 1*(t) }]->(1):
Source:
A row module over Q of rank 3

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

Range:
A row module over Q of rank 3

A morphism in Rows( Q )

An object in PreSheaves(
Algebra( Q, FreeCategory( RightQuiver( "q(1)[t:1->1]" ) ) ) / relations,
Rows( Q ) ) given by the above data
gap> Display( PSh.t );
Image of <(1)>:
Source:
A row module over Q of rank 3

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

Range:
A row module over Q of rank 3

A morphism in Rows( Q )

A morphism in PreSheaves(
Algebra( Q, FreeCategory( RightQuiver( "q(1)[t:1->1]" ) ) ) / relations,
Rows( Q ) ) given by the above data
gap> phi := PreCompose( PSh.t, PSh.t );
<(1)->3x3>
gap> V := DirectSum( [ PSh.1, KernelObject( phi ), ImageObject( phi ) ] );
<(1)->6; (t)->6x6>
gap> Display( V );
Image of <(1)>:
A row module over Q of rank 6

Image of (1)-[{ 1*(t) }]->(1):
Source:
A row module over Q of rank 6

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

Range:
A row module over Q of rank 6

A morphism in Rows( Q )

An object in PreSheaves(
Algebra( Q, FreeCategory( RightQuiver( "q(1)[t:1->1]" ) ) ) / relations,
Rows( Q ) ) given by the above data
gap> IsProjective( V );
false
gap> IsReflexive( V );
true

The category of presheaves with values in the interval category of the boolean algebra 2^2 has 6 distinct objects. This is the free distributive lattice generated by a discrete category with two objects.

gap> LoadPackage( "FunctorCategories", false );
true
gap> pq := FinQuiver( "quiver(p,q)" );
FinQuiver( "quiver(p,q)[]" )
gap> F := PathCategory( pq );
PathCategory( FinQuiver( "quiver(p,q)[]" ) )
gap> P := PosetOfCategory( F );
PosetOfCategory( PathCategory( FinQuiver( "quiver(p,q)[]" ) ) )
gap> Dist := FreeDistributiveCompletion( P );
FreeDistributiveCompletion(
PosetOfCategory( PathCategory( FinQuiver( "quiver(p,q)[]" ) ) ) )
gap> Display( Dist );
A CAP category with name FreeDistributiveCompletion(
PosetOfCategory( PathCategory( FinQuiver( "quiver(p,q)[]" ) ) ) ):

25 primitive operations were used to derive 293 operations for this category
which algorithmically
* IsCategoryWithDecidableColifts
* IsCategoryWithDecidableLifts
* IsFiniteCategory
* IsEquippedWithHomomorphismStructure
* IsHeytingAlgebra
and not yet algorithmically
* IsBiHeytingAlgebra
gap> Length( SetOfObjects( Dist ) );
6
gap> Display( DotVertexLabelledDigraph( DigraphOfPoset( Dist ) ) );
//dot
digraph subobject_lattice{
rankdir="BT"
minlen=0
node [shape=circle width=0 height=0]
1 [label="0" fontsize=12 margin=0.01 fontname="DejaVu Serif,serif"]
2 [label="1" fontsize=12 margin=0.01 fontname="DejaVu Serif,serif"]
3 [label="2" fontsize=12 margin=0.01 fontname="DejaVu Serif,serif"]
4 [label="3" fontsize=12 margin=0.01 fontname="DejaVu Serif,serif"]
5 [label="4" fontsize=12 margin=0.01 fontname="DejaVu Serif,serif"]
6 [label="5" fontsize=12 margin=0.01 fontname="DejaVu Serif,serif"]
1 -> 5 [arrowsize=0.5]
3 -> 6 [arrowsize=0.5]
4 -> 6 [arrowsize=0.5]
5 -> 3 [arrowsize=0.5]
5 -> 4 [arrowsize=0.5]
6 -> 2 [arrowsize=0.5]
}
gap> DiffbCSL := MeetSemilatticeOfSingleDifferences( Dist );
MeetSemilatticeOfSingleDifferences( FreeDistributiveCompletion(
PosetOfCategory( PathCategory( FinQuiver( "quiver(p,q)[]" ) ) ) ) )
gap> Length( SetOfObjects( DiffbCSL ) );
13

11.2 Attributes

11.2-1 NakayamaLeftAdjoint
‣ NakayamaLeftAdjoint( PSh, coPSh )( operation )
‣ NakayamaLeftAdjoint( B )( attribute )

Returns: a CAP functor

Returns the Nakayama left adjoint functor from PSh = PreSheaves( B ) \(\to\) coPSh = CoPreSheaves( B ).

11.2-2 NakayamaRightAdjoint
‣ NakayamaRightAdjoint( coPSh, PSh )( operation )
‣ NakayamaRightAdjoint( B )( attribute )

Returns: a CAP functor

Returns the Nakayama right adjoint functor from coPSh = CoPreSheaves( B ) \(\to\) PSh = PreSheaves( B ).

gap> LoadPackage( "FunctorCategories", false );
true
gap> F := FreeCategory( RightQuiver( "q(1,2,3)[a:1->2,b:2->3]" ) );
FreeCategory( RightQuiver( "q(3)[a:1->2,b:2->3]" ) )
gap> Q := HomalgFieldOfRationals( );
Q
gap> QF := Q[F];
Algebroid( Q, FreeCategory( RightQuiver( "q(3)[a:1->2,b:2->3]" ) ) )
gap> A3 := QF / [ QF.ab ];
Algebroid( Q, FreeCategory( RightQuiver( "q(3)[a:1->2,b:2->3]" ) ) ) / relations
gap> PSh := PreSheaves( A3 );
PreSheaves( Algebroid( Q, FreeCategory( RightQuiver( "q(3)[a:1->2,b:2->3]" ) ) )
/ relations, Rows( Q ) )
gap> prj := IndecomposableProjectiveObjects( PSh );
[ <(1)->1, (2)->0, (3)->0; (a)->0x1, (b)->0x0>,
  <(1)->1, (2)->1, (3)->0; (a)->1x1, (b)->0x1>,
  <(1)->0, (2)->1, (3)->1; (a)->1x0, (b)->1x1> ]
gap> List( prj, IsInjective );
[ false, true, true ]
gap> P1 := prj[1];
<(1)->1, (2)->0, (3)->0; (a)->0x1, (b)->0x0>
gap> iota0 := MonomorphismIntoInjectiveEnvelopeObject( P1 );
<(1)->1x1, (2)->0x1, (3)->0x0>
gap> epsilon1 := CokernelProjection( iota0 );
<(1)->1x0, (2)->1x1, (3)->0x0>
gap> Sigma1 := Target( epsilon1 );
<(1)->0, (2)->1, (3)->0; (a)->1x0, (b)->0x1>
gap> iota1 := MonomorphismIntoInjectiveEnvelopeObject( Sigma1 );
<(1)->0x0, (2)->1x1, (3)->0x1>
gap> d1 := PreCompose( epsilon1, iota1 );
<(1)->1x0, (2)->1x1, (3)->0x1>
gap> IR := IsbellRightAdjoint( A3 );
Isbell right adjoint functor
gap> Display( IR );
Isbell right adjoint functor:

CoPreSheaves( Algebroid( Q, FreeCategory( RightQuiver( "q(3)[a:1->2,b:2->3]" ) ) )
/ relations, Rows( Q ) )
  |
  V
PreSheaves( Algebroid( Q, FreeCategory( RightQuiver( "q(3)[a:1->2,b:2->3]" ) ) )
/ relations, Rows( Q ) )
gap> NL := NakayamaLeftAdjoint( A3 );
Nakayama left adjoint
gap> Display( NL );
Nakayama left adjoint:

PreSheaves( Algebroid( Q, FreeCategory( RightQuiver( "q(3)[a:1->2,b:2->3]" ) ) )
/ relations, Rows( Q ) )
  |
  V
CoPreSheaves( Algebroid( Q, FreeCategory( RightQuiver( "q(3)[a:1->2,b:2->3]" ) ) )
/ relations, Rows( Q ) )
gap> tau_P1 := CokernelObject( IR( NL( d1 ) ) );
<(1)->0, (2)->1, (3)->0; (a)->1x0, (b)->0x1>
gap> tau_P1 = SimpleObjects( PSh )[2];
true
gap> LoadPackage( "FunctorCategories", false );
true
gap> F := FreeCategory( RightQuiver( "q(1,2,3)[a:1->2,b:2->3]" ) );
FreeCategory( RightQuiver( "q(3)[a:1->2,b:2->3]" ) )
gap> Q := HomalgFieldOfRationals( );
Q
gap> QF := Q[F];
Algebroid( Q, FreeCategory( RightQuiver( "q(3)[a:1->2,b:2->3]" ) ) )
gap> A3 := QF / [ QF.ab ];
Algebroid( Q, FreeCategory( RightQuiver( "q(3)[a:1->2,b:2->3]" ) ) ) / relations
gap> PSh := PreSheaves( A3 );
PreSheaves( Algebroid( Q, FreeCategory( RightQuiver( "q(3)[a:1->2,b:2->3]" ) ) )
/ relations, Rows( Q ) )
gap> inj := IndecomposableInjectiveObjects( PSh );
[ <(1)->1, (2)->1, (3)->0; (a)->1x1, (b)->0x1>,
  <(1)->0, (2)->1, (3)->1; (a)->1x0, (b)->1x1>,
  <(1)->0, (2)->0, (3)->1; (a)->0x0, (b)->1x0> ]
gap> List( inj, IsProjective );
[ true, true, false ]
gap> I3 := inj[3];
<(1)->0, (2)->0, (3)->1; (a)->0x0, (b)->1x0>
gap> pi0 := EpimorphismFromProjectiveCoverObject( I3 );
<(1)->0x0, (2)->1x0, (3)->1x1>
gap> kappa1 := KernelEmbedding( pi0 );
<(1)->0x0, (2)->1x1, (3)->0x1>
gap> Omega1 := Source( kappa1 );
<(1)->0, (2)->1, (3)->0; (a)->1x0, (b)->0x1>
gap> pi1 := EpimorphismFromProjectiveCoverObject( Omega1 );
<(1)->1x0, (2)->1x1, (3)->0x0>
gap> d1 := PreCompose( pi1, kappa1 );
<(1)->1x0, (2)->1x1, (3)->0x1>
gap> IL := IsbellLeftAdjoint( A3 );
Isbell left adjoint functor
gap> Display( IL );
Isbell left adjoint functor:

PreSheaves( Algebroid( Q, FreeCategory( RightQuiver( "q(3)[a:1->2,b:2->3]" ) ) )
/ relations, Rows( Q ) )
  |
  V
CoPreSheaves( Algebroid( Q, FreeCategory( RightQuiver( "q(3)[a:1->2,b:2->3]" ) ) )
/ relations, Rows( Q ) )
gap> NR := NakayamaRightAdjoint( A3 );
Nakayama right adjoint
gap> Display( NR );
Nakayama right adjoint:

CoPreSheaves( Algebroid( Q, FreeCategory( RightQuiver( "q(3)[a:1->2,b:2->3]" ) ) )
/ relations, Rows( Q ) )
  |
  V
PreSheaves( Algebroid( Q, FreeCategory( RightQuiver( "q(3)[a:1->2,b:2->3]" ) ) )
/ relations, Rows( Q ) )
gap> tauI3 := KernelObject( NR( IL( d1 ) ) );
<(1)->0, (2)->1, (3)->0; (a)->1x0, (b)->0x1>
gap> tauI3 = SimpleObjects( PSh )[2];
true

11.2-3 IsbellLeftAdjoint
‣ IsbellLeftAdjoint( PSh, coPSh )( operation )
‣ IsbellLeftAdjoint( B )( attribute )

Returns: a CAP functor

Returns the Isbell left adjoint functor from PSh = PreSheaves( B ) \(\to\) coPSh = CoPreSheaves( B ).

11.2-4 IsbellRightAdjoint
‣ IsbellRightAdjoint( coPSh, PSh )( operation )
‣ IsbellRightAdjoint( B )( attribute )

Returns: a CAP functor

Returns the Isbell right adjoint functor from coPSh = CoPreSheaves( B ) \(\to\) PSh = PreSheaves( B ).

11.2-5 IsbellAdjunctionMonad
‣ IsbellAdjunctionMonad( PSh, coPSh )( operation )
‣ IsbellAdjunctionMonad( B )( attribute )

Returns: a CAP functor

Returns the Isbell adjunction monad on the presheaf category PSh.

11.2-6 UnitOfIsbellAdjunction
‣ UnitOfIsbellAdjunction( PSh )( attribute )

Returns: a CAP functor

Returns the unit of the Isbell adjunction on the presheaf category PSh.

11.2-7 IsomorphismFromSourceIntoImageOfYonedaEmbeddingOfSource
‣ IsomorphismFromSourceIntoImageOfYonedaEmbeddingOfSource( PSh )( attribute )

Returns: a CAP functor

Returns the isomorphism functor from Source(PSh) to ImageOfYonedaEmbeddingOfSource(PSh) induced by the Yoneda embedding.

11.2-8 IsomorphismFromImageOfYonedaEmbeddingOfSourceIntoSource
‣ IsomorphismFromImageOfYonedaEmbeddingOfSourceIntoSource( PSh )( attribute )

Returns: a CAP functor

Returns the isomorphism functor from ImageOfYonedaEmbeddingOfSource(PSh) to Source(PSh) induced by the Yoneda embedding.

11.2-9 EquivalenceFromFullSubcategoryOfProjectivesObjectsIntoAdditiveClosureOfSource
‣ EquivalenceFromFullSubcategoryOfProjectivesObjectsIntoAdditiveClosureOfSource( PSh )( attribute )

Returns: a CAP functor

Returns the equivalence functor from FullSubcategoryOfProjectiveObjects(PSh) to the additive closure category of Source(PSh).

 [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