Skip to content

Commit

Permalink
Merge pull request #43 from mohamed-barakat/devel
Browse files Browse the repository at this point in the history
  • Loading branch information
mohamed-barakat authored May 27, 2022
2 parents 8c9cf83 + cb1ae61 commit 38409d4
Show file tree
Hide file tree
Showing 13 changed files with 152 additions and 220 deletions.
1 change: 1 addition & 0 deletions .codecov.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
codecov:
disable_default_path_fixes: true
require_ci_to_pass: false
fixes:
- "/home/gap/.gap/pkg/CatReps/::"
ignore:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/Tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,16 @@ jobs:
# build documentation of packages which we might want to reference, keep this in sync with `release-gap-package`
[ -d "CAP_project/CAP" ] && make -C "CAP_project/CAP" doc
[ -d "CAP_project/CompilerForCAP" ] && make -C "CAP_project/CompilerForCAP" doc
[ -d "CAP_project/FreydCategoriesForCAP" ] && make -C "CAP_project/FreydCategoriesForCAP" doc
[ -d "CAP_project/MonoidalCategories" ] && make -C "CAP_project/MonoidalCategories" doc
[ -d "CAP_project/FreydCategoriesForCAP" ] && make -C "CAP_project/FreydCategoriesForCAP" doc
[ -d "HigherHomologicalAlgebra/ToolsForHigherHomologicalAlgebra" ] && make -C "HigherHomologicalAlgebra/ToolsForHigherHomologicalAlgebra" doc
[ -d "homalg_project/homalg" ] && make -C "homalg_project/homalg" doc
[ -d "homalg_project/Modules" ] && make -C "homalg_project/Modules" doc
[ -d "Toposes" ] && make -C "Toposes" doc
TERM=dumb make -C CatReps -j $(nproc) --output-sync ci-test
cp ./CatReps/.codecov.yml ./
(cd CatReps && LANG=C.UTF-8 python3 process_coverage_ignored_lines.py)
[ "${{ matrix.image }}" = "ghcr.io/homalg-project/gap-docker-master:latest" ] && ./CatReps/upload_codecov.sh
[ "$GITHUB_EVENT_NAME" != "schedule" ] && [ "${{ matrix.image }}" = "ghcr.io/homalg-project/gap-docker-master:latest" ] && ./CatReps/upload_codecov.sh
git config --global user.name "Bot"
git config --global user.email "empty"
cd CatReps
Expand Down
6 changes: 3 additions & 3 deletions PackageInfo.g
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ SetPackageInfo( rec(

PackageName := "CatReps",
Subtitle := "Representations and cohomology of finite categories",
Version := "2022.05-03",
Version := "2022.05-04",

Date := ~.Version{[ 1 .. 10 ]},
Date := Concatenation( "01/", ~.Version{[ 6, 7 ]}, "/", ~.Version{[ 1 .. 4 ]} ),
Expand Down Expand Up @@ -97,7 +97,7 @@ PackageDoc := rec(
),

Dependencies := rec(
GAP := ">= 4.9.1",
GAP := ">= 4.11.1",
NeededOtherPackages := [
[ "GAPDoc", ">= 1.5" ],
[ "CAP", ">= 2022.04-08" ],
Expand All @@ -108,7 +108,7 @@ Dependencies := rec(
[ "SubcategoriesForCAP", ">= 2020.06-01" ],
[ "MatricesForHomalg", ">= 2020.02.02" ],
[ "Toposes", ">= 2022.04-29" ],
[ "Algebroids", ">= 2022.05-02" ],
[ "Algebroids", ">= 2022.05-05" ],
[ "FunctorCategories", ">= 2022.05-09" ],
],
SuggestedOtherPackages := [ ],
Expand Down
9 changes: 5 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ Using the procedure `Algebroid` one can then construct a finite presentation of

```gap
gap> Q := HomalgFieldOfRationals( );
GF(3)
Q
gap> A := Algebroid( Q, c3c3 );
Algebroid generated by the right quiver q(2)[a:1->1,b:1->2,c:2->2]
Algebroid( Q, FreeCategory( RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations
gap> UnderlyingQuiverAlgebra( A );
(Q * q) / [ 1*(a*a*a) - 1*(1), 1*(c*c*c) - 1*(2), -1*(b*c) + 1*(a*b) ]
gap> IsLinearClosureOfACategory( A );
Expand All @@ -43,8 +43,9 @@ Finally, using the constructor `Hom` from the package [`FunctorCategories`](http

```gap
gap> CatReps := FunctorCategory( A, Q );
FunctorCategory( Algebroid generated by the right quiver
q(2)[a:1->1,b:1->2,c:2->2], Category of matrices over Q )
FunctorCategory( Algebroid( Q, FreeCategory(
RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
Category of matrices over Q )
```

The supported categorical doctrine of the category of representations is
Expand Down
16 changes: 10 additions & 6 deletions examples/Algebroid.g
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,11 @@ ccat2 := ConcreteCategoryForCAP( [ [,,,5,6,4], [,,,7,8,9], [,,,,,,8,9,7] ] );
Q := HomalgFieldOfRationals( );
#! Q
A1 := Q[ccat1];
#! Algebroid generated by the right quiver q(2)[a:1->1,b:1->2,c:2->2]
#! Algebroid( Q, FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations
A2 := Q[ccat2];
#! Algebroid generated by the right quiver q(2)[a:1->1,b:1->2,c:2->2]
#! Algebroid( Q, FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations
IsIdenticalObj( A1, A2 );
#! true
UnderlyingCategory( A1 );
Expand All @@ -29,11 +31,13 @@ UnderlyingCategory( A2 );
IsIdenticalObj( UnderlyingCategory( A1 ), UnderlyingCategory( A2 ) );
#! true
CatReps1 := FunctorCategory( A1, Q );
#! FunctorCategory( Algebroid generated by the right quiver
#! q(2)[a:1->1,b:1->2,c:2->2], Category of matrices over Q )
#! FunctorCategory( Algebroid( Q, FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over Q )
CatReps2 := FunctorCategory( A2, Q );
#! FunctorCategory( Algebroid generated by the right quiver
#! q(2)[a:1->1,b:1->2,c:2->2], Category of matrices over Q )
#! FunctorCategory( Algebroid( Q, FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over Q )
IsIdenticalObj( CatReps1, CatReps2 );
#! true
#! @EndExample
97 changes: 54 additions & 43 deletions examples/CategoryOfRepresentations.g
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,14 @@ UnderlyingQuiverAlgebra( AsFpCategory( c3c3 ) );
GF3 := HomalgRingOfIntegers( 3 );
#! GF(3)
A := GF3[c3c3];
#! Algebroid generated by the right quiver q(2)[a:1->1,b:1->2,c:2->2]
#! Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations
IsLinearClosureOfACategory( A );
#! true
CatReps := FunctorCategory( A, GF3 );
#! FunctorCategory( Algebroid generated by the right quiver
#! q(2)[a:1->1,b:1->2,c:2->2], Category of matrices over GF(3) )
#! FunctorCategory( Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over GF(3) )
InfoOfInstalledOperationsOfCategory( CatReps );
#! 98 primitive operations were used to derive 318 operations for this category
#! which constructively
Expand Down Expand Up @@ -63,9 +65,9 @@ Display( zero );
#!
#! A morphism in Category of matrices over GF(3)
#!
#! An object in FunctorCategory( Algebroid generated by the
#! right quiver q(2)[a:1->1,b:1->2,c:2->2], Category of matrices
#! over GF(3) ) given by the above data
#! An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over GF(3) ) given by the above data
unit := TensorUnit( CatReps );
#! <(1)->1, (2)->1; (a)->1x1, (b)->1x1, (c)->1x1>
Display( unit );
Expand All @@ -90,9 +92,9 @@ Display( unit );
#!
#! An identity morphism in Category of matrices over GF(3)
#!
#! An object in FunctorCategory( Algebroid generated by the
#! right quiver q(2)[a:1->1,b:1->2,c:2->2], Category of matrices
#! over GF(3) ) given by the above data
#! An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over GF(3) ) given by the above data
d := [[1,1,0,0,0],[0,1,1,0,0],[0,0,1,0,0],[0,0,0,1,1],[0,0,0,0,1]];;
e := [[0,1,0,0],[0,0,1,0],[0,0,0,0],[0,1,0,1],[0,0,1,0]];;
f := [[1,1,0,0],[0,1,1,0],[0,0,1,0],[0,0,0,1]];;
Expand Down Expand Up @@ -131,9 +133,9 @@ Display( nine );
#!
#! A morphism in Category of matrices over GF(3)
#!
#! An object in FunctorCategory( Algebroid generated by the
#! right quiver q(2)[a:1->1,b:1->2,c:2->2], Category of matrices
#! over GF(3) ) given by the above data
#! An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over GF(3) ) given by the above data
nine( A.1 );
#! <A vector space object over GF(3) of dimension 5>
nine( A.2 );
Expand Down Expand Up @@ -251,9 +253,9 @@ Display( fortyone );
#!
#! A morphism in Category of matrices over GF(3)
#!
#! An object in FunctorCategory( Algebroid generated by the
#! right quiver q(2)[a:1->1,b:1->2,c:2->2], Category of matrices
#! over GF(3) ) given by the above data
#! An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over GF(3) ) given by the above data
etas := WeakDirectSumDecomposition( fortyone : random := false );;
dec := List( etas, eta -> List( SetOfObjects( A ),
o -> Dimension( Source( eta( o ) ) ) ) );
Expand Down Expand Up @@ -348,9 +350,9 @@ Display( Source( iso ) );
#!
#! A morphism in Category of matrices over GF(3)
#!
#! An object in FunctorCategory( Algebroid generated by the
#! right quiver q(2)[a:1->1,b:1->2,c:2->2], Category of matrices
#! over GF(3) ) given by the above data
#! An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over GF(3) ) given by the above data
Display( iso );
#! Image of <(1)>:
#! . . 1 . . . 2 1 . 1 1 . . 2 . . . 1 . . . . . . .
Expand Down Expand Up @@ -401,9 +403,9 @@ Display( iso );
#!
#! An isomorphism in Category of matrices over GF(3)
#!
#! A morphism in FunctorCategory( Algebroid generated by the
#! right quiver q(2)[a:1->1,b:1->2,c:2->2], Category of matrices
#! over GF(3) ) given by the above data
#! A morphism in FunctorCategory( Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over GF(3) ) given by the above data
eta := etas[9];
#! <(1)->3x25, (2)->3x16>
TensorProductOnMorphisms( eta, eta );
Expand Down Expand Up @@ -438,9 +440,9 @@ Display( six );
#!
#! A morphism in Category of matrices over GF(3)
#!
#! An object in FunctorCategory( Algebroid generated by the
#! right quiver q(2)[a:1->1,b:1->2,c:2->2], Category of matrices
#! over GF(3) ) given by the above data
#! An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over GF(3) ) given by the above data
emb := EmbeddingOfSumOfImagesOfAllMorphisms( unit, six );
#! <(1)->1x3, (2)->0x3>
Display( emb );
Expand All @@ -454,9 +456,9 @@ Display( emb );
#!
#! A morphism in Category of matrices over GF(3)
#!
#! A morphism in FunctorCategory( Algebroid generated by the
#! right quiver q(2)[a:1->1,b:1->2,c:2->2], Category of matrices
#! over GF(3) ) given by the above data
#! A morphism in FunctorCategory( Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over GF(3) ) given by the above data
s1 := Source( emb );
#! <(1)->1, (2)->0; (a)->1x1, (b)->1x0, (c)->0x0>
Display( s1 );
Expand All @@ -481,21 +483,24 @@ Display( s1 );
#!
#! A morphism in Category of matrices over GF(3)
#!
#! An object in FunctorCategory( Algebroid generated by the
#! right quiver q(2)[a:1->1,b:1->2,c:2->2], Category of matrices
#! over GF(3) ) given by the above data
#! An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over GF(3) ) given by the above data
Aop := OppositeAlgebroid( A );
#! Algebroid generated by the right quiver q_op(2)[a:1->1,b:2->1,c:2->2]
#! Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q_op(2)[a:1->1,b:2->1,c:2->2]" ) ) ) / relations
Yop := YonedaEmbedding( Aop );
#! Yoneda embedding functor
Display( Yop );
#! Yoneda embedding functor:
#!
#! Algebroid generated by the right quiver q_op(2)[a:1->1,b:2->1,c:2->2]
#! Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q_op(2)[a:1->1,b:2->1,c:2->2]" ) ) ) / relations
#! |
#! V
#! FunctorCategory( Algebroid generated by the right quiver
#! q(2)[a:1->1,b:1->2,c:2->2], Category of matrices over GF(3) )
#! FunctorCategory( Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over GF(3) )
proj1 := Yop( Aop.1 );
#! <(1)->3, (2)->3; (a)->3x3, (b)->3x3, (c)->3x3>
IsProjective( proj1 );
Expand Down Expand Up @@ -528,9 +533,9 @@ Display( proj1 );
#!
#! A morphism in Category of matrices over GF(3)
#!
#! An object in FunctorCategory( Algebroid generated by the
#! right quiver q(2)[a:1->1,b:1->2,c:2->2], Category of matrices
#! over GF(3) ) given by the above data
#! An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over GF(3) ) given by the above data
e1 := EmbeddingOfSumOfImagesOfAllMorphisms( unit, proj1 );
#! <(1)->1x3, (2)->1x3>
Source( e1 );
Expand Down Expand Up @@ -565,29 +570,35 @@ Display( five );
#!
#! A morphism in Category of matrices over GF(3)
#!
#! An object in FunctorCategory( Algebroid generated by the
#! right quiver q(2)[a:1->1,b:1->2,c:2->2], Category of matrices
#! over GF(3) ) given by the above data
#! An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over GF(3) ) given by the above data
#! @EndExample

#! The next calculation shows that the $3$-dimensional representation of $C_3$
#! associated to object $1$ is a single copy of the regular representation of $C_3$.

#! @Example
SumOfImagesOfAllMorphisms( s1, six );
#! <(1)->1, (2)->0; (a)->1x1, (b)->1x0, (c)->0x0>
#! @EndExample

#! The next calculation shows that the quotient representation <C>five</C> maps
#! its module at object $1$ monomorphically to the module at object $2$,
#! which must either be indecomposable of dimension $3$, or else the
#! direct sum of indecomposables of dimension $2$ and $1$.

#! @Example
SumOfImagesOfAllMorphisms( s1, five );
#! <(1)->0, (2)->0; (a)->0x0, (b)->0x0, (c)->0x0>
SumOfImagesOfAllMorphisms( unit, five );
#! <(1)->1, (2)->1; (a)->1x1, (b)->1x1, (c)->1x1>
#! @EndExample

#! The next calculation shows that the module at object $2$ for <C>six</C>
#! is indecomposable of dimension $3$.
#! We now have sufficient information to describe <C>six</C> completely.

#! @Example
SumOfImagesOfAllMorphisms( six, unit );
#! <(1)->0, (2)->1; (a)->0x0, (b)->0x1, (c)->1x1>
Expand Down Expand Up @@ -619,7 +630,7 @@ Display( proj2 );
#!
#! A morphism in Category of matrices over GF(3)
#!
#! An object in FunctorCategory( Algebroid generated by the
#! right quiver q(2)[a:1->1,b:1->2,c:2->2], Category of matrices
#! over GF(3) ) given by the above data
#! An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over GF(3) ) given by the above data
#! @EndExample
32 changes: 17 additions & 15 deletions examples/DecomposeOnceByRandomEndomorphism.g
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@ AsFpCategory( c3c3 );
GF3 := HomalgRingOfIntegers( 3 );
#! GF(3)
A := GF3[c3c3];
#! Algebroid generated by the right quiver q(2)[a:1->1,b:1->2,c:2->2]
#! Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations
IsLinearClosureOfACategory( A );
#! true
CatReps := FunctorCategory( A, GF3 );
#! FunctorCategory( Algebroid generated by the right quiver
#! q(2)[a:1->1,b:1->2,c:2->2], Category of matrices over GF(3) )
#! FunctorCategory( Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over GF(3) )
d := [[1,1,0,0,0],[0,1,1,0,0],[0,0,1,0,0],[0,0,0,1,1],[0,0,0,0,1]];;
e := [[0,1,0,0],[0,0,1,0],[0,0,0,0],[0,1,0,1],[0,0,1,0]];;
f := [[1,1,0,0],[0,1,1,0],[0,0,1,0],[0,0,0,1]];;
Expand Down Expand Up @@ -126,9 +128,9 @@ Display( fortyone );
#!
#! A morphism in Category of matrices over GF(3)
#!
#! An object in FunctorCategory( Algebroid generated by the
#! right quiver q(2)[a:1->1,b:1->2,c:2->2], Category of matrices
#! over GF(3) ) given by the above data
#! An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over GF(3) ) given by the above data
S := DirectSum( [ Source( iota ), Source( kappa ) ] );
#! <(1)->25, (2)->16; (a)->25x25, (b)->25x16, (c)->16x16>
Display( S );
Expand Down Expand Up @@ -216,9 +218,9 @@ Display( S );
#!
#! A morphism in Category of matrices over GF(3)
#!
#! An object in FunctorCategory( Algebroid generated by the
#! right quiver q(2)[a:1->1,b:1->2,c:2->2], Category of matrices
#! over GF(3) ) given by the above data
#! An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over GF(3) ) given by the above data
#! @EndExample

#! Comparing the matrices of <C>fortyone</C> with those of
Expand All @@ -242,9 +244,9 @@ Display( iota );
#!
#! A morphism in Category of matrices over GF(3)
#!
#! A morphism in FunctorCategory( Algebroid generated by the
#! right quiver q(2)[a:1->1,b:1->2,c:2->2], Category of matrices
#! over GF(3) ) given by the above data
#! A morphism in FunctorCategory( Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over GF(3) ) given by the above data
Display( Source( iota ) );
#! Image of <(1)>:
#! A vector space object over GF(3) of dimension 3
Expand All @@ -271,9 +273,9 @@ Display( Source( iota ) );
#!
#! A morphism in Category of matrices over GF(3)
#!
#! An object in FunctorCategory( Algebroid generated by the
#! right quiver q(2)[a:1->1,b:1->2,c:2->2], Category of matrices
#! over GF(3) ) given by the above data
#! An object in FunctorCategory( Algebroid( GF(3), FreeCategory(
#! RightQuiver( "q(2)[a:1->1,b:1->2,c:2->2]" ) ) ) / relations,
#! Category of matrices over GF(3) ) given by the above data
#! @EndExample

#! We can then look at the other embedding of the direct sum
Expand Down
Loading

0 comments on commit 38409d4

Please sign in to comment.