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)[]" ) ) ) ): 58 primitive operations were used to derive 284 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
‣ 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 ).
‣ 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
‣ 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 ).
‣ 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 ).
‣ IsbellAdjunctionMonad ( PSh, coPSh ) | ( operation ) |
‣ IsbellAdjunctionMonad ( B ) | ( attribute ) |
Returns: a CAP functor
Returns the Isbell adjunction monad on the presheaf category PSh.
‣ UnitOfIsbellAdjunction ( PSh ) | ( attribute ) |
Returns: a CAP functor
Returns the unit of the Isbell adjunction on the presheaf category PSh.
‣ IsomorphismFromSourceIntoImageOfYonedaEmbeddingOfSource ( PSh ) | ( attribute ) |
Returns: a CAP functor
Returns the isomorphism functor from Source
(PSh) to ImageOfYonedaEmbeddingOfSource
(PSh) induced by the Yoneda embedding.
‣ IsomorphismFromImageOfYonedaEmbeddingOfSourceIntoSource ( PSh ) | ( attribute ) |
Returns: a CAP functor
Returns the isomorphism functor from ImageOfYonedaEmbeddingOfSource
(PSh) to Source
(PSh) induced by the Yoneda embedding.
‣ EquivalenceFromFullSubcategoryOfProjectivesObjectsIntoAdditiveClosureOfSource ( PSh ) | ( attribute ) |
Returns: a CAP functor
Returns the equivalence functor from FullSubcategoryOfProjectiveObjects
(PSh) to the additive closure category of Source
(PSh).
generated by GAPDoc2HTML