‣ PreSheaves( B, k ) | ( operation ) |
‣ CreatePreSheaf( F ) | ( attribute ) |
‣ CreatePreSheaf( B, rec_images_of_objects, rec_images_of_morphisms ) | ( operation ) |
‣ CreatePreSheaf( B, images_of_objects, images_of_morphisms ) | ( operation ) |
Returns: a presheaf
Turn the functor F:B^op \to D into an object in the category of functors PSh := PreSheaves( B, D ). An alternative input is the source category B and two defining records rec_images_of_objects and rec_images_of_morphisms of F. Another alternative input is the source category B and two defining lists images_of_objects and images_of_morphisms of F. The order of their entries must correspond to that of the vertices and arrows of the underlying quiver.
For the convenience of the user the following input is also valid: If images_of_objects is a list of nonnegative integers, images_of_morphisms is a list of matrices, and k:= CommutativeSemiringOfLinearCategory( B ) is a field then the two lists are interpreted as objects and morphisms in a matrix category or a category of rows over k, respectively.
‣ CreatePreSheafMorphismByValues( arg1, arg2, arg3, arg4 ) | ( operation ) |
‣ CreatePreSheafMorphism( eta ) | ( attribute ) |
‣ CreatePreSheafMorphism( U, e, V ) | ( operation ) |
‣ CreatePreSheafMorphism( U, e, V ) | ( operation ) |
‣ CreatePreSheafMorphismByFunction( arg1, arg2, arg3 ) | ( operation ) |
Returns: a morphism in a CAP category
Turn the natrual transformation eta:F \to G into a morphism U := AsObjectInFunctorCategory( F ) \to V := AsObjectInFunctorCategory( G ) in the category of functors Hom := Hom( B, D ), where B := Source( F ) = Source( G ) and C := Target( F ) = Target( G ).
An alternative input is the triple (U, e, V), where e is a defining record of eta.
Another alternative input is the triple (U, e, V), where e is a defining list of eta.
‣ CoYonedaLemmaOnObjects( F ) | ( attribute ) |
‣ CoYonedaLemmaOnMorphisms( phi ) | ( attribute ) |
‣ CoequalizerDataOfPreSheafUsingCoYonedaLemma( F ) | ( attribute ) |
‣ CoYonedaLemmaCoequalizerPair( F ) | ( attribute ) |
‣ EmbeddingFunctorOfFiniteStrictCoproductCompletionIntoPreSheavesData( PSh ) | ( attribute ) |
‣ EmbeddingFunctorOfFiniteStrictCoproductCompletionIntoPreSheaves( PSh ) | ( attribute ) |
‣ MorphismFromRepresentableByYonedaLemma( PSh, objB, morC, F ) | ( operation ) |
‣ MorphismFromCoproductOfRepresentables( PSh, list, F ) | ( operation ) |
‣ MaximalMorphismFromRepresentable( F ) | ( attribute ) |
‣ CoveringListOfRepresentables( F ) | ( attribute ) |
‣ CoveringListOfRepresentablesUsingSplits( F ) | ( attribute ) |
‣ EpimorphismFromSomeProjectiveObjectUsingSplits( F ) | ( attribute ) |
‣ SectionAndComplementByCoveringListOfRepresentables( F ) | ( operation ) |
‣ SectionFromOptimizedCoYonedaProjectiveObjectIntoCoYonedaProjectiveObject( F ) | ( attribute ) |
‣ RetractionByCoveringListOfRepresentables( F ) | ( operation ) |
‣ RetractionFromCoYonedaProjectiveObjectOntoOptimizedCoYonedaProjectiveObject( F ) | ( attribute ) |
‣ OptimizedCoYonedaLemmaOnObjects( F ) | ( attribute ) |
‣ OptimizedCoYonedaLemmaOnMorphisms( phi ) | ( attribute ) |
‣ CoequalizerDataOfPreSheafUsingOptimizedCoYonedaLemma( F ) | ( attribute ) |
‣ AssociatedCoequalizerPairInPreSheaves( F ) | ( attribute ) |
‣ AssociatedCoequalizerPairInPreSheaves( F ) | ( attribute ) |
‣ OptimizedCoYonedaLemmaCoequalizerPair( F ) | ( attribute ) |
‣ ApplyPreSheafToObjectInFiniteStrictCoproductCompletion( PSh, presheaf, obj ) | ( operation ) |
‣ ApplyPreSheafToMorphismInFiniteStrictCoproductCompletion( PSh, presheaf, mor ) | ( operation ) |
‣ CategoryOfInternalCategories( C ) | ( attribute ) |
Construct the category of categories internal to the monoidal or cartesian category C. The output the full subcategory of the subcategory of functors from the SimplicialCategoryTruncatedInDegree(2) into C for which each such functor is the nerve truncated in degree 2 of a category internal to C.
‣ ValuesOnAllObjects( eta ) | ( attribute ) |
Returns: a list
Returns the values of the presheaf morphism eta on all objects of the source category of presheaf category PSh.
The 2-cell underlying the functor object F_or_eta.
‣ UnderlyingCapTwoCategoryCell( F_or_eta ) | ( attribute ) |
Returns: a CAP functor or natural transformation
‣ YonedaEmbedding( B ) | ( attribute ) |
Returns: a CAP functor
‣ YonedaEmbeddingOfSourceCategory( PSh ) | ( attribute ) |
Returns: a CAP functor
‣ ImageOfYonedaEmbeddingOfSource( PSh ) | ( attribute ) |
Returns: a CAP category
Returns the full subcategory of PSh generated by the values of the Yoneda embedding on the objects of Source(PSh).
‣ SimpleObjects( PSh ) | ( attribute ) |
Returns: a list of objects
The input is a category of presheaves PSh of an admissible k-algebroid for some field k. The output is the list of simple objects in PSh.
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> IsAdmissibleAlgebroid( A3 ); true gap> PSh := PreSheaves( A3 ); PreSheaves( Algebroid( Q, FreeCategory( RightQuiver( "q(3)[a:1->2,b:2->3]" ) ) ) / relations, Rows( Q ) ) gap> SimpleObjects( PSh ); [ <(1)->1, (2)->0, (3)->0; (a)->0x1, (b)->0x0>, <(1)->0, (2)->1, (3)->0; (a)->1x0, (b)->0x1>, <(1)->0, (2)->0, (3)->1; (a)->0x0, (b)->1x0> ] gap> # @drop_example_in_Julia
gap> q := RightQuiver( "q(4)[x:1->1,a:1->2,b:2->4,c:1->3,d:3->4,y:4->4]" ); q(4)[x:1->1,a:1->2,b:2->4,c:1->3,d:3->4,y:4->4] gap> F := FreeCategory( q ); FreeCategory( RightQuiver( "q(4)[x:1->1,a:1->2,b:2->4,c:1->3,d:3->4, y:4->4]" ) ) gap> k := HomalgFieldOfRationals( ); Q gap> kF := k[F]; Algebroid( Q, FreeCategory( RightQuiver( "q(4)[x:1->1,a:1->2,b:2->4, c:1->3,d:3->4,y:4->4]" ) ) ) gap> A := kF / [ kF.x^3, kF.y^2 ]; Algebroid( Q, FreeCategory( RightQuiver( "q(4)[x:1->1,a:1->2,b:2->4, c:1->3,d:3->4,y:4->4]" ) ) ) / relations gap> IsAdmissibleAlgebroid( A ); true gap> PSh := PreSheaves( A ); PreSheaves( Algebroid( Q, FreeCategory( RightQuiver( "q(4)[x:1->1, a:1->2,b:2->4,c:1->3,d:3->4,y:4->4]" ) ) ) / relations, Rows( Q ) ) gap> P := PSh.4; <(1)->12, (2)->2, (3)->2, (4)->2; (x)->12x12, (a)->2x12, (b)->2x2, (c)->2x12, (d)->2x2, (y)->2x2> gap> IsProjective( P ); true gap> Display( P ); Image of <(1)>: A row module over Q of rank 12 Image of <(2)>: A row module over Q of rank 2 Image of <(3)>: A row module over Q of rank 2 Image of <(4)>: A row module over Q of rank 2 Image of (1)-[{ 1*(x) }]->(1): Source: A row module over Q of rank 12 Matrix: [ [ 0, 0, 1, 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, 0, 1, 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, 1, 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, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ] Range: A row module over Q of rank 12 A morphism in Rows( Q ) Image of (1)-[{ 1*(a) }]->(2): Source: A row module over Q of rank 2 Matrix: [ [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 ] ] Range: A row module over Q of rank 12 A morphism in Rows( Q ) Image of (2)-[{ 1*(b) }]->(4): Source: A row module over Q of rank 2 Matrix: [ [ 1, 0 ], [ 0, 1 ] ] Range: A row module over Q of rank 2 A morphism in Rows( Q ) Image of (1)-[{ 1*(c) }]->(3): Source: A row module over Q of rank 2 Matrix: [ [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 ] ] Range: A row module over Q of rank 12 A morphism in Rows( Q ) Image of (3)-[{ 1*(d) }]->(4): Source: A row module over Q of rank 2 Matrix: [ [ 1, 0 ], [ 0, 1 ] ] Range: A row module over Q of rank 2 A morphism in Rows( Q ) Image of (4)-[{ 1*(y) }]->(4): Source: A row module over Q of rank 2 Matrix: [ [ 0, 1 ], [ 0, 0 ] ] Range: A row module over Q of rank 2 A morphism in Rows( Q ) An object in PreSheaves( Algebroid( Q, FreeCategory( RightQuiver( "q(4)[x:1->1, a:1->2,b:2->4,c:1->3,d:3->4,y:4->4]" ) ) ) / relations, Rows( Q ) ) given by the above data gap> IsWellDefined( MonomorphismIntoSomeInjectiveObject( P ) ); true gap> # @drop_example_in_Julia
gap> q := RightQuiver( "q(4)[x:1->1,a:1->2,b:2->4,c:1->3,d:3->4,y:4->4]" ); q(4)[x:1->1,a:1->2,b:2->4,c:1->3,d:3->4,y:4->4] gap> F := FreeCategory( q ); FreeCategory( RightQuiver( "q(4)[x:1->1,a:1->2,b:2->4,c:1->3,d:3->4,y:4->4]" ) ) gap> k := HomalgFieldOfRationals( ); Q gap> kF := k[F]; Algebroid( Q, FreeCategory( RightQuiver( "q(4)[x:1->1,a:1->2,b:2->4,c:1->3,d:3->4, y:4->4]" ) ) ) gap> A := AlgebroidFromDataTables( kF / [ kF.x^3, kF.y^2 ] ); Q-algebroid( {1,2,3,4}[x:1→1,a:1→2,b:2→4,c:1→3,d:3→4,y:4→4] ) defined by 4 objects and 6 generating morphisms gap> IsAdmissibleAlgebroid( A ); true gap> PSh := PreSheaves( A ); PreSheaves( Q-algebroid( {1,2,3,4}[x:1→1,a:1→2,b:2→4,c:1→3,d:3→4,y:4→4] ) defined by 4 objects and 6 generating morphisms, Rows( Q ) ) gap> P := PSh.4; <(1)->12, (2)->2, (3)->2, (4)->2; (x)->12x12, (a)->2x12, (b)->2x2, (c)->2x12, (d)->2x2, (y)->2x2> gap> IsProjective( P ); true gap> Display( P ); Image of <(1)>: A row module over Q of rank 12 Image of <(2)>: A row module over Q of rank 2 Image of <(3)>: A row module over Q of rank 2 Image of <(4)>: A row module over Q of rank 2 Image of <1*x:(1) → (1)>: Source: A row module over Q of rank 12 Matrix: [ [ 0, 0, 1, 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, 0, 1, 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, 1, 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, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ] Range: A row module over Q of rank 12 A morphism in Rows( Q ) Image of <1*a:(1) → (2)>: Source: A row module over Q of rank 2 Matrix: [ [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 ] ] Range: A row module over Q of rank 12 A morphism in Rows( Q ) Image of <1*b:(2) → (4)>: Source: A row module over Q of rank 2 Matrix: [ [ 1, 0 ], [ 0, 1 ] ] Range: A row module over Q of rank 2 A morphism in Rows( Q ) Image of <1*c:(1) → (3)>: Source: A row module over Q of rank 2 Matrix: [ [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 ] ] Range: A row module over Q of rank 12 A morphism in Rows( Q ) Image of <1*d:(3) → (4)>: Source: A row module over Q of rank 2 Matrix: [ [ 1, 0 ], [ 0, 1 ] ] Range: A row module over Q of rank 2 A morphism in Rows( Q ) Image of <1*y:(4) → (4)>: Source: A row module over Q of rank 2 Matrix: [ [ 0, 1 ], [ 0, 0 ] ] Range: A row module over Q of rank 2 A morphism in Rows( Q ) An object in PreSheaves( Q-algebroid( {1,2,3,4}[x:1→1,a:1→2,b:2→4,c:1→3,d:3→4, y:4→4] ) defined by 4 objects and 6 generating morphisms, Rows( Q ) ) given by the above data gap> IsWellDefined( MonomorphismIntoSomeInjectiveObject( P ) ); true gap> # @drop_example_in_Julia
‣ NerveTruncatedInDegree2( B ) | ( attribute ) |
Returns: a presheaf
The input is a category B with finitely many objects equipped with a homomorphism structure with values in a finite complete and finite cocomplete category H. The output is the nerve of B truncated in degree 2, as an object in the category of presheaves on SimplicialCategoryTruncatedInDegree(2) with values in H.
We compute the nerve of the full subcategory of the simplicial category \Delta on the objects [0], [1], [2].
gap> Delta2 := SimplicialCategoryTruncatedInDegree( 2 ); PathCategory( FinQuiver( "Delta(C0,C1,C2)[id:C1→C0,s:C0→C1,t:C0→C1, is:C2→C1,it:C2→C1, ps:C1→C2,pt:C1→C2,mu:C1→C2]" ) ) / [ s⋅id = id(C0), t⋅id = id(C0), ps⋅is = id(C1), ... ] gap> DefiningRelations( Delta2 ); [ [ s⋅id:(C0) → (C0), id(C0):(C0) → (C0) ], [ t⋅id:(C0) → (C0), id(C0):(C0) → (C0) ], [ ps⋅is:(C1) → (C1), id(C1):(C1) → (C1) ], [ pt⋅it:(C1) → (C1), id(C1):(C1) → (C1) ], [ is⋅id:(C2) → (C0), it⋅id:(C2) → (C0) ], [ pt⋅is:(C1) → (C1), id⋅t:(C1) → (C1) ], [ ps⋅it:(C1) → (C1), id⋅s:(C1) → (C1) ], [ s⋅pt:(C0) → (C2), t⋅ps:(C0) → (C2) ], [ s⋅mu:(C0) → (C2), s⋅ps:(C0) → (C2) ], [ t⋅mu:(C0) → (C2), t⋅pt:(C0) → (C2) ], [ mu⋅is:(C1) → (C1), id(C1):(C1) → (C1) ], [ mu⋅it:(C1) → (C1), id(C1):(C1) → (C1) ] ] gap> Size( Delta2 ); 31 gap> N := NerveTruncatedInDegree2( Delta2 ); <An object in PreSheaves( PathCategory( FinQuiver( "Delta(C0,C1,C2)[id:C1→C0,s:C0→C1,t:C0→C1, is:C2→C1,it:C2→C1, ps:C1→C2,pt:C1→C2,mu:C1→C2]" ) ) / [ s⋅id = id(C0), t⋅id = id(C0), ps⋅is = id(C1), ... ], SkeletalFinSets )> gap> IsWellDefined( N ); true gap> N.C0; |3| gap> Display( N.C0 ); { 0, 1, 2 } gap> N.C1; |31| gap> Display( N.C1 ); { 0,..., 30 } gap> N.C2; |393| gap> Display( N.C2 ); { 0,..., 392 } gap> N.id; |3| → |31| gap> Display( N.id ); { 0, 1, 2 } ⱶ[ 0, 5, 21 ]→ { 0,..., 30 } gap> IntCat := CategoryOfInternalCategories( > RangeCategoryOfHomomorphismStructure( Delta2 ) ); FullSubcategoryByObjectMembershipFunction( PreSheaves( PathCategory( FinQuiver( "Delta(C0,C1,C2)[id:C1→C0,s:C0→C1,t:C0→C1, is:C2→C1,it:C2→C1, ps:C1→C2,pt:C1→C2,mu:C1→C2]" ) ) / [ s⋅id = id(C0), t⋅id = id(C0), ps⋅is = id(C1), ... ], SkeletalFinSets ), ObjectMembershipFunction ) gap> IsWellDefined( N / IntCat ); true gap> # @drop_example_in_Julia
We compute the nerve of the full subcategory of the simplicial category \Delta on the objects [0], [1], [2].
gap> Delta2 := CategoryFromNerveData( SimplicialCategoryTruncatedInDegree( 2 ) ); PathCategory( FinQuiver( "Delta(C0,C1,C2)[id:C1→C0,s:C0→C1,t:C0→C1, is:C2→C1,it:C2→C1, ps:C1→C2,pt:C1→C2,mu:C1→C2]" ) ) / [ s⋅id = id(C0), t⋅id = id(C0), ps⋅is = id(C1), ... ] gap> N := NerveTruncatedInDegree2( Delta2 ); <An object in PreSheaves( PathCategory( FinQuiver( "Delta(C0,C1,C2)[id:C1→C0,s:C0→C1,t:C0→C1, is:C2→C1,it:C2→C1, ps:C1→C2,pt:C1→C2,mu:C1→C2]" ) ) / [ s⋅id = id(C0), t⋅id = id(C0), ps⋅is = id(C1), ... ], SkeletalFinSets )> gap> IsWellDefined( N ); true gap> N.C0; |3| gap> Display( N.C0 ); { 0, 1, 2 } gap> N.C1; |31| gap> Display( N.C1 ); { 0,..., 30 } gap> N.C2; |393| gap> Display( N.C2 ); { 0,..., 392 } gap> N.id; |3| → |31| gap> Display( N.id ); { 0, 1, 2 } ⱶ[ 0, 5, 21 ]→ { 0,..., 30 } gap> # @drop_example_in_Julia
We compute the nerve of the full subcategory of the simplicial category \Delta on the objects [0], [1].
gap> LoadPackage( "FunctorCategories", false ); true gap> Delta1 := UnderlyingCategory( FinReflexiveQuivers ); PathCategory( FinQuiver( "Delta(C0,C1)[id:C1→C0,s:C0→C1,t:C0→C1]" ) ) / [ s⋅id = id(C0), t⋅id = id(C0) ] gap> N := NerveTruncatedInDegree2( Delta1 ); <An object in PreSheaves( PathCategory( FinQuiver( "Delta(C0,C1,C2)[id:C1→C0,s:C0→C1,t:C0→C1, is:C2→C1,it:C2→C1, ps:C1→C2,pt:C1→C2,mu:C1→C2]" ) ) / [ s⋅id = id(C0), t⋅id = id(C0), ps⋅is = id(C1), ... ], SkeletalFinSets )> gap> IsWellDefined( N ); true gap> N.C0; |2| gap> Display( N.C0 ); { 0, 1 } gap> N.C1; |7| gap> Display( N.C1 ); { 0,..., 6 } gap> N.C2; |26| gap> Display( N.C2 ); { 0,..., 25 } gap> N.id; |2| → |7| gap> Display( N.id ); { 0, 1 } ⱶ[ 0, 4 ]→ { 0,..., 6 } gap> Display( N.is ); { 0,..., 6 } ⱶ[ 0, 1, 11, 12, 17, 18, 19 ]→ { 0,..., 25 } gap> Display( N.it ); { 0,..., 6 } ⱶ[ 0, 4, 7, 8, 17, 20, 23 ]→ { 0,..., 25 } gap> Delta2 := Source( N ); PathCategory( FinQuiver( "Delta(C0,C1,C2)[id:C1→C0,s:C0→C1,t:C0→C1, is:C2→C1,it:C2→C1, ps:C1→C2,pt:C1→C2,mu:C1→C2]" ) ) / [ s⋅id = id(C0), t⋅id = id(C0), ps⋅is = id(C1), ... ] gap> N( Delta2.it ) = N.it; true gap> L := [ Delta2.it, Delta2.id, Delta2.t ]; [ (C2)-[(it)]->(C1), (C1)-[(id)]->(C0), (C0)-[(t)]->(C1) ] gap> mor := PreComposeList( L ); (C2)-[(it*pt*is)]->(C1) gap> DecompositionOfMorphismInCategory( mor ); [ (C2)-[(it)]->(C1), (C1)-[(pt)]->(C2), (C2)-[(is)]->(C1) ] gap> NL := N( mor ); |7| → |26| gap> Display( NL ); { 0,..., 6 } ⱶ[ 0, 0, 17, 17, 17, 17, 17 ]→ { 0,..., 25 } gap> LN := PostComposeList( List( L, N ) ); |7| → |26| gap> Display( LN ); { 0,..., 6 } ⱶ[ 0, 0, 17, 17, 17, 17, 17 ]→ { 0,..., 25 } gap> NL = LN; true gap> # @drop_example_in_Julia
‣ SievesOfPathsToTruth( iota ) | ( attribute ) |
Returns: a monomorphisms in a Hom-category of functors
The input is a monomorphism iota:Q \to P in the category of presheaves with values in RangeCategoryOfHomomorphismStructure(C) on the finitely presented category C:=(Source(P)) with finite \mathrm{Hom}-sets. The output is the morphism from P to the SieveFunctor(C) mapping for each c \in C the element x \in P(c) to its paths to truth
f: a \to c translating x into f(x) \in Q(a) \subseteq P(a).
‣ FiniteStrictCoproductCompletionOfSourceCategory( PSh ) | ( attribute ) |
Returns: a CAP category
Given the presheaf category PSh=PreSheaves( C, V ), return the "sub"category EnrichmentSpecificFiniteStrictCoproductCompletion( C ).
‣ FiniteColimitCompletionWithStrictCoproductsOfSourceCategory( PSh ) | ( attribute ) |
Returns: a CAP category
Given the presheaf category PSh=PreSheaves( C, V ), return the ambient category CoequalizerPreCompletion( FiniteStrictCoproductCompletionOfSourceCategory( PSh ) ).
‣ CategoryOfColimitQuiversOfSourceCategory( PSh ) | ( attribute ) |
Returns: a CAP category
Given the presheaf category PSh=PreSheaves( C, V ) return the ambient category CategoryOfColimitQuivers( C ), provided C is enriched over SkeletalFinSets or over IntervalCategory.
‣ AssociatedCategoryOfCoPreSheaves( PSh ) | ( attribute ) |
Returns: a CAP category
Given the presheaf category PSh=PreSheaves( C, V ), return the associated category CoPreSheaves( C, V ).
‣ ApplyObjectInPreSheafCategoryOfFpEnrichedCategoryToObject( F, obj ) | ( operation ) |
Returns: a CAP object
Apply the presheaf F to the object obj. The shorthand is F(obj).
‣ ApplyObjectInPreSheafCategoryOfFpEnrichedCategoryToMorphism( F, mor ) | ( operation ) |
Returns: a CAP morphism
Apply the presheaf F to the morphism mor. The shorthand is F(mor).
‣ ApplyObjectInPreSheafCategoryOfFpEnrichedCategoryToGeneratingMorphismOrIdentity( F, mor ) | ( operation ) |
Returns: a CAP morphism
Apply the presheaf F to the morphism mor which is either a generating morphism or an identity morphism.
‣ ApplyMorphismInPreSheafCategoryOfFpEnrichedCategoryToObject( eta, obj ) | ( operation ) |
Returns: a CAP morphism
Apply the presheaf morphism eta to the object obj. The shorthand is eta(o).
‣ IsPreSheafCategoryOfFpEnrichedCategory( category ) | ( category ) |
Returns: true or false
The GAP category of a presheaf category of a finitely presented enriched category.
‣ IsCellInPreSheafCategoryOfFpEnrichedCategory( cell ) | ( category ) |
Returns: true or false
The GAP category of cells in a presheaf category of a finitely presented enriched category.
‣ IsObjectInPreSheafCategoryOfFpEnrichedCategory( obj ) | ( category ) |
Returns: true or false
The GAP category of objects in a presheaf category of a finitely presented enriched category.
‣ IsMorphismInPreSheafCategoryOfFpEnrichedCategory( mor ) | ( category ) |
Returns: true or false
The GAP category of morphisms in a presheaf category of a finitely presented enriched category.
The subobject classifier of the PreSheaves(C, H), where H:=RangeCategoryOfHomomorphismStructure(C) is the functor of sieves, mapping each object c \in C^\mathrm{op} to the set of subobjects of the representable functor \mathrm{Hom}_C(-,c).
gap> LoadPackage( "FunctorCategories", false ); true gap> q := RightQuiver( "q(1)[a:1->1]" ); q(1)[a:1->1] gap> Fq := FreeCategory( q ); FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) gap> M0 := Fq / [ [ Fq.a^3, Fq.1 ] ]; FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = 1 ] gap> PShM0 := PreSheaves( M0 ); PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = 1 ], SkeletalFinSets ) gap> Omega0 := SubobjectClassifier( PShM0 ); <An object in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = 1 ], SkeletalFinSets )> gap> Display( Omega0 ); Image of <(1)>: { 0, 1 } Image of (1)-[(a)]->(1): { 0, 1 } ⱶ[ 0, 1 ]→ { 0, 1 } An object in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = 1 ], SkeletalFinSets ) given by the above data gap> IsProjective( Omega0 ); false gap> IsReflexive( Omega0 ); false gap> e := Exponential( Omega0, Omega0 ); <An object in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = 1 ], SkeletalFinSets )> gap> Display( e ); Image of <(1)>: { 0,..., 3 } Image of (1)-[(a)]->(1): { 0,..., 3 } ⱶ[ 0, 1, 2, 3 ]→ { 0,..., 3 } An object in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = 1 ], SkeletalFinSets ) given by the above data gap> ev0 := CartesianLeftEvaluationMorphism( Omega0, Omega0 ); <A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = 1 ], SkeletalFinSets )> gap> Display( ev0 ); Image of <(1)>: { 0,..., 7 } ⱶ[ 0, 1, 0, 1, 0, 0, 1, 1 ]→ { 0, 1 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = 1 ], SkeletalFinSets ) given by the above data gap> M1 := Fq / [ [ Fq.a^3, Fq.a ] ]; FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a ] gap> PShM1 := PreSheaves( M1 ); PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a ], SkeletalFinSets ) gap> Omega1 := SubobjectClassifier( PShM1 ); <An object in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a ], SkeletalFinSets )> gap> Display( Omega1 ); Image of <(1)>: { 0, 1, 2 } Image of (1)-[(a)]->(1): { 0, 1, 2 } ⱶ[ 0, 2, 2 ]→ { 0, 1, 2 } An object in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a ], SkeletalFinSets ) given by the above data gap> IsProjective( Omega1 ); false gap> IsReflexive( Omega1 ); false gap> M2 := Fq / [ [ Fq.a^3, Fq.a^2 ] ]; FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ] gap> PShM2 := PreSheaves( M2 ); PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets ) gap> Omega2 := SubobjectClassifier( PShM2 ); <An object in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets )> gap> Display( Omega2 ); Image of <(1)>: { 0,..., 3 } Image of (1)-[(a)]->(1): { 0,..., 3 } ⱶ[ 0, 2, 3, 3 ]→ { 0,..., 3 } An object in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets ) given by the above data gap> IsProjective( Omega2 ); true gap> IsReflexive( Omega2 ); false gap> true2 := TruthMorphismOfTrue( PShM2 ); <A monomorphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets )> gap> Display( true2 ); Image of <(1)>: { 0 } ⱶ[ 3 ]→ { 0,..., 3 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets ) given by the above data gap> false2 := TruthMorphismOfFalse( PShM2 ); <A monomorphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets )> gap> Display( false2 ); Image of <(1)>: { 0 } ⱶ[ 0 ]→ { 0,..., 3 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets ) given by the above data gap> iota := CreatePreSheafMorphism( EmbeddingOfSieveFunctor( M2 ) ); <A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets )> gap> Display( iota ); Image of <(1)>: { 0,..., 3 } ⱶ[ 0, 4, 6, 7 ]→ { 0,..., 7 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets ) given by the above data gap> Target( iota ); <An object in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets )> gap> Display( Target( iota ) ); Image of <(1)>: { 0,..., 7 } Image of (1)-[(a)]->(1): { 0,..., 7 } ⱶ[ 0, 0, 1, 1, 6, 6, 7, 7 ]→ { 0,..., 7 } An object in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets ) given by the above data gap> t2 := SubobjectOfClassifyingMorphism( true2 ); <A monomorphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets )> gap> Display( t2 ); Image of <(1)>: { 0 } ⱶ[ 0 ]→ { 0 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets ) given by the above data gap> f2 := SubobjectOfClassifyingMorphism( false2 ); <A monomorphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets )> gap> Display( f2 ); Image of <(1)>: ∅ ⱶ[ ]→ { 0 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets ) given by the above data gap> H := HomStructure( Omega2, Omega2 ); |8| gap> Display( H ); { 0,..., 7 } gap> T2 := DistinguishedObjectOfHomomorphismStructure( PShM2 ); |1| gap> L := List( H, i -> > InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism( > Omega2, Omega2, MapOfFinSets( T2, [ i ], H ) ) );; gap> Length( L ); 8 gap> Perform( L, Display ); Image of <(1)>: { 0,..., 3 } ⱶ[ 0, 0, 0, 0 ]→ { 0,..., 3 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets ) given by the above data Image of <(1)>: { 0,..., 3 } ⱶ[ 3, 0, 0, 0 ]→ { 0,..., 3 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets ) given by the above data Image of <(1)>: { 0,..., 3 } ⱶ[ 0, 1, 2, 3 ]→ { 0,..., 3 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets ) given by the above data Image of <(1)>: { 0,..., 3 } ⱶ[ 3, 1, 2, 3 ]→ { 0,..., 3 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets ) given by the above data Image of <(1)>: { 0,..., 3 } ⱶ[ 0, 2, 3, 3 ]→ { 0,..., 3 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets ) given by the above data Image of <(1)>: { 0,..., 3 } ⱶ[ 3, 2, 3, 3 ]→ { 0,..., 3 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets ) given by the above data Image of <(1)>: { 0,..., 3 } ⱶ[ 0, 3, 3, 3 ]→ { 0,..., 3 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets ) given by the above data Image of <(1)>: { 0,..., 3 } ⱶ[ 3, 3, 3, 3 ]→ { 0,..., 3 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(1)[a:1->1]" ) ) / [ a*a*a = a*a ], SkeletalFinSets ) given by the above data gap> # @drop_example_in_Julia
Stream-vortex-system: Study the colimit completion of a cyclic monoid
gap> LoadPackage( "FunctorCategories", false ); true gap> q := RightQuiver( "q(o)[x:o->o]" ); q(o)[x:o->o] gap> F := FreeCategory( q ); FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) gap> C := F / [ [ F.x^(3+4), F.x^3 ] ]; FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ] gap> C := CategoryFromDataTables( C ); FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ] gap> x := C.x; (o)-[(x)]->(o) gap> IsMonomorphism( x ); false gap> IsEpimorphism( x ); false gap> PSh := PreSheaves( C ); PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ], SkeletalFinSets ) gap> Go := FinSet( 8 ); |8| gap> Display( Go ); { 0,..., 7 } gap> Gx := [ 5, 0, 3, 1, 1, 4, 3, 2 ];; gap> Gx := MapOfFinSets( Go, Gx, Go ); |8| → |8| gap> G := CreatePreSheafByValues( PSh, Pair( [ Go ], [ Gx ] ) ); <An object in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ], SkeletalFinSets )> gap> IsWellDefined( G ); true gap> Display( G ); Image of <(o)>: { 0,..., 7 } Image of (o)-[(x)]->(o): { 0,..., 7 } ⱶ[ 5, 0, 3, 1, 1, 4, 3, 2 ]→ { 0,..., 7 } An object in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ], SkeletalFinSets ) given by the above data gap> pi := EpimorphismFromSomeProjectiveObject( G ); <A morphism in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ], SkeletalFinSets )> gap> im := ImageObject( pi ); <An object in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ], SkeletalFinSets )> gap> Display( im ); Image of <(o)>: { 0,..., 7 } Image of (o)-[(x)]->(o): { 0,..., 7 } ⱶ[ 5, 0, 3, 1, 1, 4, 3, 2 ]→ { 0,..., 7 } An object in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ], SkeletalFinSets ) given by the above data gap> im = G; true gap> coim := CoimageObject( pi ); <An object in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ], SkeletalFinSets )> gap> Display( coim ); Image of <(o)>: { 0,..., 7 } Image of (o)-[(x)]->(o): { 0,..., 7 } ⱶ[ 1, 2, 3, 4, 5, 6, 3, 2 ]→ { 0,..., 7 } An object in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ], SkeletalFinSets ) given by the above data gap> coim = im; false gap> iso := MorphismFromCoimageToImage( pi ); <A morphism in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ], SkeletalFinSets )> gap> IsWellDefined( iso ); true gap> IsIsomorphism( iso ); true gap> Display( iso ); Image of <(o)>: { 0,..., 7 } ⱶ[ 7, 2, 3, 1, 0, 5, 4, 6 ]→ { 0,..., 7 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ], SkeletalFinSets ) given by the above data gap> inv := InverseOfMorphismFromCoimageToImage( pi ); <An isomorphism in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ], SkeletalFinSets )> gap> Display( inv ); Image of <(o)>: { 0,..., 7 } ⱶ[ 4, 3, 1, 2, 6, 5, 7, 0 ]→ { 0,..., 7 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ], SkeletalFinSets ) given by the above data gap> IsOne( PreCompose( iso, inv ) ); true gap> IsOne( PreCompose( inv, iso ) ); true gap> coYoG := CoYonedaLemmaOnObjects( G ); <An object in FiniteColimitCompletionWithStrictCoproducts( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ] )> gap> sec := SectionFromOptimizedCoYonedaProjectiveObjectIntoCoYonedaProjectiveObject( G ); <A split monomorphism in FiniteStrictCoproductCompletion( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ] )> gap> IsWellDefined( sec ); true gap> Display( sec ); { 0, 1 } ⱶ[ 7, 6 ]→ { 0,..., 7 } [ (o)-[(o)]->(o), (o)-[(o)]->(o) ] A morphism in FiniteStrictCoproductCompletion( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ] ) given by the above data gap> pi := EpimorphismFromSomeProjectiveObject( G ); <A morphism in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ], SkeletalFinSets )> gap> ast := AstrictionToCoimage( pi ); <A morphism in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ], SkeletalFinSets )> gap> IsWellDefined( ast ); true gap> Display( ast ); Image of <(o)>: { 0,..., 7 } ⱶ[ 7, 2, 3, 1, 0, 5, 4, 6 ]→ { 0,..., 7 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ], SkeletalFinSets ) given by the above data gap> # @drop_example_in_Julia
Stream-vortex-system: Study the colimit completion of a cyclic monoid
gap> LoadPackage( "FunctorCategories", false ); true gap> q := RightQuiver( "q(o)[x:o->o]" ); q(o)[x:o->o] gap> F := FreeCategory( q ); FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) gap> C := F / [ [ F.x^(4+12), F.x^4 ] ]; FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x = x*x*x*x ] gap> x := C.x; (o)-[(x)]->(o) gap> IsMonomorphism( x ); false gap> IsEpimorphism( x ); false gap> PSh := PreSheaves( C ); PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x = x*x*x*x ], SkeletalFinSets ) gap> Go := FinSet( 18 ); |18| gap> Display( Go ); { 0,..., 17 } gap> Gx := [ 5, 0, 1, 2, 3, 4, 0, 2, 5, 6, 6, 7, 7, 8, 8, 9, 9, 16 ];; gap> Gx := MapOfFinSets( Go, Gx, Go ); |18| → |18| gap> G := CreatePreSheafByValues( PSh, Pair( [ Go ], [ Gx ] ) ); <An object in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x = x*x*x*x ], SkeletalFinSets )> gap> IsWellDefined( G ); true gap> Display( G ); Image of <(o)>: { 0,..., 17 } Image of (o)-[(x)]->(o): { 0,..., 17 } ⱶ[ 5, 0, 1, 2, 3, 4, 0, 2, 5, 6, 6, 7, 7, 8, 8, 9, 9, 16 ]→ { 0,..., 17 } An object in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x = x*x*x*x ], SkeletalFinSets ) given by the above data gap> pi := EpimorphismFromSomeProjectiveObject( G ); <A morphism in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x = x*x*x*x ], SkeletalFinSets )> gap> im := ImageObject( pi ); <An object in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x = x*x*x*x ], SkeletalFinSets )> gap> im = G; true gap> coim := CoimageObject( pi ); <An object in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x = x*x*x*x ], SkeletalFinSets )> gap> Display( coim ); Image of <(o)>: { 0,..., 17 } Image of (o)-[(x)]->(o): { 0,..., 17 } ⱶ[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 4, 2, 3, 13, 8, 13, 16, 5, 16 ]→ { 0,..., 17 } An object in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x = x*x*x*x ], SkeletalFinSets ) given by the above data gap> coim = im; false gap> iso := MorphismFromCoimageToImage( pi ); <A morphism in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x = x*x*x*x ], SkeletalFinSets )> gap> IsWellDefined( iso ); true gap> IsIsomorphism( iso ); true gap> Display( iso ); Image of <(o)>: { 0,..., 17 } ⱶ[ 17, 16, 9, 6, 0, 5, 4, 3, 2, 1, 15, 10, 11, 7, 12, 13, 8, 14 ]→ { 0,..., 17 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x = x*x*x*x ], SkeletalFinSets ) given by the above data gap> inv := InverseOfMorphismFromCoimageToImage( pi ); <An isomorphism in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x = x*x*x*x ], SkeletalFinSets )> gap> Display( inv ); Image of <(o)>: { 0,..., 17 } ⱶ[ 4, 9, 8, 7, 6, 5, 3, 13, 16, 2, 11, 12, 14, 15, 17, 10, 1, 0 ]→ { 0,..., 17 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x = x*x*x*x ], SkeletalFinSets ) given by the above data gap> IsOne( PreCompose( iso, inv ) ); true gap> IsOne( PreCompose( inv, iso ) ); true gap> coYoG := CoYonedaLemmaOnObjects( G ); <An object in FiniteColimitCompletionWithStrictCoproducts( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x = x*x*x*x ] )> gap> sec := SectionFromOptimizedCoYonedaProjectiveObjectIntoCoYonedaProjectiveObject( G ); <A split monomorphism in FiniteStrictCoproductCompletion( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x = x*x*x*x ] )> gap> IsWellDefined( sec ); true gap> Display( sec ); { 0,..., 6 } ⱶ[ 17, 15, 10, 11, 12, 13, 14 ]→ { 0,..., 17 } [ (o)-[(o)]->(o), (o)-[(o)]->(o), (o)-[(o)]->(o), (o)-[(o)]->(o), (o)-[(o)]->(o), (o)-[(o)]->(o), (o)-[(o)]->(o) ] A morphism in FiniteStrictCoproductCompletion( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x = x*x*x*x ] ) given by the above data gap> pi := EpimorphismFromSomeProjectiveObject( G ); <A morphism in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x = x*x*x*x ], SkeletalFinSets )> gap> ast := AstrictionToCoimage( pi ); <A morphism in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x = x*x*x*x ], SkeletalFinSets )> gap> IsWellDefined( ast ); true gap> Display( ast ); Image of <(o)>: { 0,..., 17 } ⱶ[ 17, 16, 9, 6, 0, 5, 4, 3, 2, 1, 15, 10, 11, 7, 12, 13, 8, 14 ]→ { 0,..., 17 } A morphism in PreSheaves( FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x = x*x*x*x ], SkeletalFinSets ) given by the above data gap> # @drop_example_in_Julia
Stream-vortex-system: Study the linearization of the colimit completion of a cyclic monoid
gap> LoadPackage( "FunctorCategories", false ); true gap> q := RightQuiver( "q(o)[x:o->o]" ); q(o)[x:o->o] gap> F := FreeCategory( q ); FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) gap> C := F / [ [ F.x^(3+4), F.x^3 ] ]; FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) / [ x*x*x*x*x*x*x = x*x*x ] gap> Q := HomalgFieldOfRationals( ); Q gap> QC := Q[C]; Algebra( Q, FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) ) / relations gap> QC := AlgebroidFromDataTables( QC ); Q-algebroid( {o}[x:o→o] ) defined by 1 object and 1 generating morphism gap> x := QC.x; <1*x:(o) → (o)> gap> IsMonomorphism( x ); false gap> IsEpimorphism( x ); false gap> PSh := PreSheaves( QC ); PreSheaves( Q-algebroid( {o}[x:o→o] ) defined by 1 object and 1 generating morphism, Rows( Q ) ) gap> H := Target( PSh ); Rows( Q ) gap> Go := 8 / H; <A row module over Q of rank 8> gap> Gx := [ 5, 0, 3, 1, 1, 4, 3, 2 ];; gap> Gx := IdentityMat( 8 ){1 + Gx};; gap> Gx := HomalgMatrix( Gx, 8, 8, Q );; gap> Gx := MorphismConstructor( Go, Gx, Go ); <A morphism in Rows( Q )> gap> Display( Gx ); Source: A row module over Q of rank 8 Matrix: [ [ 0, 0, 0, 0, 0, 1, 0, 0 ], [ 1, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 1, 0, 0, 0, 0 ], [ 0, 1, 0, 0, 0, 0, 0, 0 ], [ 0, 1, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 1, 0, 0, 0 ], [ 0, 0, 0, 1, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0, 0, 0 ] ] Range: A row module over Q of rank 8 A morphism in Rows( Q ) gap> G := CreatePreSheafByValues( PSh, Pair( [ Go ], [ Gx ] ) ); <(o)->8; (x)->8x8> gap> IsWellDefined( G ); true gap> cy := ProjectionOntoCoequalizer( CoYonedaLemmaCoequalizerPair( G )[2] ); <(o)->56x8> gap> pi := EpimorphismFromSomeProjectiveObject( G ); <(o)->14x8> gap> CoimageObject( cy ) = CoimageObject( pi ); false gap> Display( CoimageObject( cy ) ); Image of <(o)>: A row module over Q of rank 8 Image of <1*x:(o) → (o)>: Source: A row module over Q of rank 8 Matrix: [ [ 0, 1, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 1, 0, 0, 0, 0 ], [ 1, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 1, 0, 0 ], [ 0, 0, 0, 1, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 1, 0, 0 ], [ 0, 0, 0, 0, 1, 0, 0, 0 ] ] Range: A row module over Q of rank 8 A morphism in Rows( Q ) An object in PreSheaves( Q-algebroid( {o}[x:o→o] ) defined by 1 object and 1 generating morphism, Rows( Q ) ) given by the above data gap> Display( CoimageObject( pi ) ); Image of <(o)>: A row module over Q of rank 8 Image of <1*x:(o) → (o)>: Source: A row module over Q of rank 8 Matrix: [ [ 0, 1, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 1, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 1, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 1, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 1, 0 ], [ 0, 0, 0, 1, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0, 0, 0 ] ] Range: A row module over Q of rank 8 A morphism in Rows( Q ) An object in PreSheaves( Q-algebroid( {o}[x:o→o] ) defined by 1 object and 1 generating morphism, Rows( Q ) ) given by the above data gap> ps := EpimorphismFromSomeProjectiveObjectUsingSplits( G ); <(o)->14x8> gap> nf := CoimageObject( ps ); <(o)->8; (x)->8x8> gap> nf = CoimageObject( cy ); false gap> Display( nf ); Image of <(o)>: A row module over Q of rank 8 Image of <1*x:(o) → (o)>: Source: A row module over Q of rank 8 Matrix: [ [ 0, 1, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 1, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 1, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 1, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 1, 0 ], [ 0, 0, 0, 1, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0 ] ] Range: A row module over Q of rank 8 A morphism in Rows( Q ) An object in PreSheaves( Q-algebroid( {o}[x:o→o] ) defined by 1 object and 1 generating morphism, Rows( Q ) ) given by the above data gap> section := SectionFromOptimizedCoYonedaProjectiveObjectIntoCoYonedaProjectiveObject( G ); <A morphism in AdditiveClosure( Q-algebroid( {o}[x:o→o] ) defined by 1 object and 1 generating morphism ) defined by a 2 x 8 matrix of underlying morphisms> gap> IsWellDefined( section ); true gap> Display( section ); A 2 x 8 matrix with entries in Q-algebroid( {o}[x:o→o] ) defined by 1 object and 1 generating morphism [1,1]: <0:(o) → (o)> [1,2]: <0:(o) → (o)> [1,3]: <0:(o) → (o)> [1,4]: <0:(o) → (o)> [1,5]: <0:(o) → (o)> [1,6]: <0:(o) → (o)> [1,7]: <0:(o) → (o)> [1,8]: <1*id(o):(o) → (o)> [2,1]: <0:(o) → (o)> [2,2]: <0:(o) → (o)> [2,3]: <0:(o) → (o)> [2,4]: <0:(o) → (o)> [2,5]: <0:(o) → (o)> [2,6]: <0:(o) → (o)> [2,7]: <1*id(o):(o) → (o)> [2,8]: <0:(o) → (o)> gap> Emb := EmbeddingFunctorOfFiniteStrictCoproductCompletionIntoPreSheaves( PSh ); The embedding functor of the finite coproduct completion into f.p. presheaves gap> ip := PreCompose( Emb( section ), cy ); <(o)->14x8> gap> IsEqualAsFactorobjects( pi, ip ); true gap> pi = ip; false gap> CoimageObject( ip ) = CoimageObject( pi ); true gap> retraction := RetractionFromCoYonedaProjectiveObjectOntoOptimizedCoYonedaProjectiveObject( G ); <A morphism in AdditiveClosure( Q-algebroid( {o}[x:o→o] ) defined by 1 object and 1 generating morphism ) defined by a 8 x 2 matrix of underlying morphisms> gap> IsWellDefined( retraction ); true gap> Display( retraction ); A 8 x 2 matrix with entries in Q-algebroid( {o}[x:o→o] ) defined by 1 object and 1 generating morphism [1,1]: <0:(o) → (o)> [1,2]: <1*x^3:(o) → (o)> [2,1]: <0:(o) → (o)> [2,2]: <1*x^2:(o) → (o)> [3,1]: <1*x:(o) → (o)> [3,2]: <0:(o) → (o)> [4,1]: <0:(o) → (o)> [4,2]: <1*x:(o) → (o)> [5,1]: <0:(o) → (o)> [5,2]: <1*x^5:(o) → (o)> [6,1]: <0:(o) → (o)> [6,2]: <1*x^4:(o) → (o)> [7,1]: <0:(o) → (o)> [7,2]: <1*id(o):(o) → (o)> [8,1]: <1*id(o):(o) → (o)> [8,2]: <0:(o) → (o)> gap> IsOne( PreCompose( section, retraction ) ); true gap> co := ProjectionOntoCoequalizer( OptimizedCoYonedaLemmaCoequalizerPair( G )[2] ); <(o)->14x8> gap> IsEqualAsFactorobjects( pi, co ); true gap> pi = co; false gap> CoimageObject( pi ) = CoimageObject( co ); true gap> # @drop_example_in_Julia
gap> LoadPackage( "FunctorCategories", ">= 2023.10-06", false ); true gap> Q := HomalgFieldOfRationals( ); Q gap> R := Q["x"]; Q[x] gap> x := Indeterminates( R )[1]; x gap> p := x^2-x-1; x^2-x-1 gap> d := Degree( p ); 2 gap> cmat3 := HomalgMatrix( CompanionMat( p^3 ), 3 * d, 3 * d, Q ); <A 6 x 6 matrix over an internal ring> gap> cmat2 := HomalgMatrix( CompanionMat( p^2 ), 2 * d, 2 * d, Q ); <A 4 x 4 matrix over an internal ring> gap> cmat1 := HomalgMatrix( CompanionMat( p^1 ), 1 * d, 1 * d, Q ); <A 2 x 2 matrix over an internal ring> gap> Display( cmat3 ); [ [ 0, 0, 0, 0, 0, 1 ], [ 1, 0, 0, 0, 0, 3 ], [ 0, 1, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, -5 ], [ 0, 0, 0, 1, 0, 0 ], [ 0, 0, 0, 0, 1, 3 ] ] gap> cmat := Q * DiagMat( [ cmat1, cmat1, cmat3 ] ); <An unevaluated 10 x 10 matrix over an internal ring> gap> n := NrRows( cmat ); 10 gap> inv := HomalgMatrix( RandomUnimodularMat( n ), n, n, Q ); <A 10 x 10 matrix over an internal ring> gap> mat := LeftInverse( inv ) * cmat * inv; <An unevaluated 10 x 10 matrix over an internal ring> gap> mat := > [ [ 0, 0, 3, 0, -1, 3, -8, 6, 0, -3 ], > [ 39, 15, -25, 2, 0, -9, 10, -15, 2, 1 ], > [ 21, 5, -5, 3, -1, 2, -16, 5, 0, -7 ], > [ 30, 10, -4, 3, -5, 10, -44, 22, -2, -18 ], > [ 40, 0, -66, 9, 27, -70, 170, -140, 9, 62 ], > [ -204, 0, 82, -57, -36, 50, 29, 100, 5, 13 ], > [ -52, -15, 18, -6, 2, -1, 30, -5, 0, 14 ], > [ 105, 0, -51, 29, 22, -36, 14, -72, -1, 4 ], > [ 6, 1, -11, 1, 3, -9, 19, -18, 0, 7 ], > [ 152, 45, -52, 17, -7, 5, -93, 19, 0, -43 ] ];; gap> mat := HomalgMatrix( mat, 10, 10 , Q ); <A 10 x 10 matrix over an internal ring> gap> q := RightQuiver( "q(o)[x:o->o]" ); q(o)[x:o->o] gap> F := FreeCategory( q ); FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) gap> QF := Q[F]; Algebra( Q, FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) ) gap> A := QF / [ QF.xxxxxx - 3 * QF.xxxxx + 5 * QF.xxx - 3 * QF.x - IdentityMorphism( QF.o ) ]; Algebra( Q, FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) ) / relations gap> o := A.o; <(o)> gap> x := A.x; (o)-[{ 1*(x) }]->(o) gap> IsMonomorphism( A.x ); true gap> IsEpimorphism( A.x ); true gap> IsIsomorphism( A.x ); true gap> Qmat := RangeCategoryOfHomomorphismStructure( A ); Rows( Q ) gap> U := n / Qmat; <A row module over Q of rank 10> gap> phi := mat / Qmat; <A morphism in Rows( Q )> gap> PSh := PreSheaves( A ); PreSheaves( Algebra( Q, FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) ) / relations, Rows( Q ) ) gap> G := CreatePreSheafByValues( PSh, Pair( [ U ], [ phi ] ) ); <(o)->10; (x)->10x10> gap> IsWellDefined( G ); true gap> Display( G ); Image of <(o)>: A row module over Q of rank 10 Image of (o)-[{ 1*(x) }]->(o): Source: A row module over Q of rank 10 Matrix: [ [ 0, 0, 3, 0, -1, 3, -8, 6, 0, -3 ], [ 39, 15, -25, 2, 0, -9, 10, -15, 2, 1 ], [ 21, 5, -5, 3, -1, 2, -16, 5, 0, -7 ], [ 30, 10, -4, 3, -5, 10, -44, 22, -2, -18 ], [ 40, 0, -66, 9, 27, -70, 170, -140, 9, 62 ], [ -204, 0, 82, -57, -36, 50, 29, 100, 5, 13 ], [ -52, -15, 18, -6, 2, -1, 30, -5, 0, 14 ], [ 105, 0, -51, 29, 22, -36, 14, -72, -1, 4 ], [ 6, 1, -11, 1, 3, -9, 19, -18, 0, 7 ], [ 152, 45, -52, 17, -7, 5, -93, 19, 0, -43 ] ] Range: A row module over Q of rank 10 A morphism in Rows( Q ) An object in PreSheaves( Algebra( Q, FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) ) / relations, Rows( Q ) ) given by the above data gap> cy := ProjectionOntoCoequalizer( CoYonedaLemmaCoequalizerPair( G )[2] ); <(o)->60x10> gap> pi := EpimorphismFromSomeProjectiveObject( G ); <(o)->18x10> gap> pmat := UnderlyingMatrix( CoimageObject( pi ).x ); <An unevaluated 10 x 10 matrix over an internal ring> gap> range3 := [ 1 .. 3 * d ]; [ 1 .. 6 ] gap> pmat3 := CertainColumns( CertainRows( pmat, range3 ), range3 ); <An unevaluated 6 x 6 matrix over an internal ring> gap> Display( pmat3 ); [ [ 0, 1, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0 ], [ 0, 0, 0, 1, 0, 0 ], [ 0, 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 0, 1 ], [ 1, 3, 0, -5, 0, 3 ] ] gap> pmat3 = TransposedMatrix( cmat3 ); true gap> range1 := [ 1 .. 1 * d ]; [ 1, 2 ] gap> pmat1_1 := CertainColumns( CertainRows( pmat, 3 * d + range1 ), 3 * d + range1 ); <An unevaluated 2 x 2 matrix over an internal ring> gap> Display( pmat1_1 ); [ [ 0, 1 ], [ 1, 1 ] ] gap> pmat1_1 = TransposedMatrix( cmat1 ); true gap> pmat1_2 := CertainColumns( CertainRows( pmat, 4 * d + range1 ), 4 * d + range1 ); <An unevaluated 2 x 2 matrix over an internal ring> gap> Display( pmat1_2 ); [ [ 0, 1 ], [ 1, 1 ] ] gap> pmat1_2 = TransposedMatrix( cmat1 ); true gap> CoimageObject( cy ) = CoimageObject( pi ); false gap> ps := EpimorphismFromSomeProjectiveObjectUsingSplits( G ); <(o)->18x10> gap> nf := CoimageObject( ps ); <(o)->10; (x)->10x10> gap> nf = CoimageObject( cy ); false gap> Display( nf ); Image of <(o)>: A row module over Q of rank 10 Image of (o)-[{ 1*(x) }]->(o): Source: A row module over Q of rank 10 Matrix: [ [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 ], [ 1, 3, 0, -5, 0, 3, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 ] ] Range: A row module over Q of rank 10 A morphism in Rows( Q ) An object in PreSheaves( Algebra( Q, FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) ) / relations, Rows( Q ) ) given by the above data gap> section := SectionFromOptimizedCoYonedaProjectiveObjectIntoCoYonedaProjectiveObject( G ); <A morphism in AdditiveClosure( Algebra( Q, FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) ) / relations ) defined by a 3 x 10 matrix of underlying morphisms> gap> IsWellDefined( section ); true gap> Emb := EmbeddingFunctorOfFiniteStrictCoproductCompletionIntoPreSheaves( PSh ); The embedding functor of the finite coproduct completion into f.p. presheaves gap> ip := PreCompose( Emb( section ), cy ); <(o)->18x10> gap> IsEqualAsFactorobjects( pi, ip ); true gap> pi = ip; false gap> CoimageObject( ip ) = CoimageObject( pi ); true gap> retraction := RetractionFromCoYonedaProjectiveObjectOntoOptimizedCoYonedaProjectiveObject( G ); <A morphism in AdditiveClosure( Algebra( Q, FreeCategory( RightQuiver( "q(o)[x:o->o]" ) ) ) / relations ) defined by a 10 x 3 matrix of underlying morphisms> gap> IsWellDefined( retraction ); true gap> IsOne( PreCompose( section, retraction ) ); true gap> co := ProjectionOntoCoequalizer( OptimizedCoYonedaLemmaCoequalizerPair( G )[2] ); <(o)->18x10> gap> IsEqualAsFactorobjects( pi, co ); true gap> pi = co; false gap> CoimageObject( pi ) = CoimageObject( co ); true gap> # @drop_example_in_Julia
gap> LoadPackage( "FunctorCategories", ">= 2024.03-13", false ); true gap> q := FinQuiver( "q(a,l,r,i,c,b)[ac:a->c,lc:l->c,ri:r->i,ic:i->c,cb:c->b]" ); FinQuiver( "q(a,l,r,i,c,b)[ac:a→c,lc:l→c,ri:r→i,ic:i→c,cb:c→b]" ) gap> F := PathCategory( q ); PathCategory( FinQuiver( "q(a,l,r,i,c,b)[ac:a→c,lc:l→c,ri:r→i,ic:i→c,cb:c→b]" ) ) gap> Size( F ); 16 gap> P := PosetOfCategory( F ); PosetOfCategory( PathCategory( FinQuiver( "q(a,l,r,i,c,b)[ac:a→c,lc:l→c,ri:r→i,ic:i→c,cb:c→b]" ) ) ) gap> Size( P ); 16 gap> PSh := PreSheaves( P ); PreSheaves( PosetOfCategory( PathCategory( FinQuiver( "q(a,l,r,i,c,b)[ac:a→c,lc:l→c,ri:r→i,ic:i→c,cb:c→b]" ) ) ), IntervalCategory ) gap> c := PSh.c; <A projective object in PreSheaves( PosetOfCategory( PathCategory( FinQuiver( "q(a,l,r,i,c,b)[ac:a→c,lc:l→c,ri:r→i,ic:i→c,cb:c→b]" ) ) ), IntervalCategory )> gap> section := > SectionFromOptimizedCoYonedaProjectiveObjectIntoCoYonedaProjectiveObject( c ); <A split monomorphism in FiniteStrictCoproductCompletion( PosetOfCategory( PathCategory( FinQuiver( "q(a,l,r,i,c,b)[ac:a→c,lc:l→c,ri:r→i,ic:i→c,cb:c→b]" ) ) ) )> gap> IsWellDefined( section ); true gap> IsIsomorphism( section ); true gap> Display( Source( section ) ); [ 1, [ An object in the poset given by: (c) ] ] An object in FiniteStrictCoproductCompletion( PosetOfCategory( PathCategory( FinQuiver( "q(a,l,r,i,c,b)[ac:a→c,lc:l→c,ri:r→i,ic:i→c,cb:c→b]" ) ) ) ) given by the above data gap> Display( Target( section ) ); [ 5, [ An object in the poset given by: (a), An object in the poset given by: (l), An object in the poset given by: (r), An object in the poset given by: (i), An object in the poset given by: (c) ] ] An object in FiniteStrictCoproductCompletion( PosetOfCategory( PathCategory( FinQuiver( "q(a,l,r,i,c,b)[ac:a→c,lc:l→c,ri:r→i,ic:i→c,cb:c→b]" ) ) ) ) given by the above data gap> # @drop_example_in_Julia
gap> LoadPackage( "FunctorCategories", false ); true gap> q := RightQuiver( "q(1)[a:1->1,b:1->1]" ); q(1)[a:1->1,b:1->1] gap> S3 := Category( q, [ [ q.a^2, q.1 ], [ q.b^3, q.1 ], [ q.bab, q.a ] ] ); FreeCategory( RightQuiver( "q(1)[a:1->1,b:1->1]" ) ) / \ [ a*a = 1, b*b*b = 1, b*a*b = a ] gap> Q := HomalgFieldOfRationals( ); Q gap> QS3 := Q[S3]; Algebra( Q, FreeCategory( RightQuiver( "q(1)[a:1->1,b:1->1]" ) ) ) / relations gap> PSh := PreSheaves( QS3 ); PreSheaves( Algebra( Q, FreeCategory( \ RightQuiver( "q(1)[a:1->1,b:1->1]" ) ) ) / relations, Rows( Q ) ) gap> Y1 := PSh.1; <(1)->6; (a)->6x6, (b)->6x6> gap> Display( Y1 ); Image of <(1)>: A row module over Q of rank 6 Image of (1)-[{ 1*(a) }]->(1): Source: A row module over Q of rank 6 Matrix: [ [ 0, 1, 0, 0, 0, 0 ], [ 1, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 1, 0, 0 ], [ 0, 0, 1, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 1 ], [ 0, 0, 0, 0, 1, 0 ] ] Range: A row module over Q of rank 6 A morphism in Rows( Q ) Image of (1)-[{ 1*(b) }]->(1): Source: A row module over Q of rank 6 Matrix: [ [ 0, 0, 1, 0, 0, 0 ], [ 0, 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 0, 1 ], [ 0, 1, 0, 0, 0, 0 ], [ 0, 0, 0, 1, 0, 0 ], [ 1, 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)[a:1->1,b:1->1]" ) ) ) / relations, Rows( Q ) ) given by the above data gap> # @drop_example_in_Julia
generated by GAPDoc2HTML