Skip to content

Commit f5e1925

Browse files
AddProjectionOntoCoequalizerOfIdentityAndAutomorphisms
1 parent 944744a commit f5e1925

4 files changed

Lines changed: 44 additions & 4 deletions

File tree

PackageInfo.g

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ SetPackageInfo( rec(
1010

1111
PackageName := "FinGSetsForCAP",
1212
Subtitle := "The (skeletal) elementary topos of finite G-sets",
13-
Version := "2026.05-02",
13+
Version := "2026.05-03",
1414

1515
Date := (function ( ) if IsBound( GAPInfo.SystemEnvironment.GAP_PKG_RELEASE_DATE ) then return GAPInfo.SystemEnvironment.GAP_PKG_RELEASE_DATE; else return Concatenation( ~.Version{[ 1 .. 4 ]}, "-", ~.Version{[ 6, 7 ]}, "-01" ); fi; end)( ),
1616
License := "GPL-2.0-or-later",

examples/SkeletalCategoryOfTransitiveLeftGSets.g

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ Display( TS3 );
1414
#! A CAP category with name SkeletalCategoryOfTransitiveLeftGSets( S3 ) \
1515
#! with 4 objects:
1616
#!
17-
#! 24 primitive operations were used to derive 80 operations for this category \
17+
#! 25 primitive operations were used to derive 80 operations for this category \
1818
#! which algorithmically
1919
#! * IsCategoryWithDecidableColifts
2020
#! * IsCategoryWithDecidableLifts
2121
#! * IsCategoryWithTerminalObject
2222
#! * IsFiniteCategory
23-
#! * IsCategoryWithCoequalizers
2423
#! * IsEquippedWithHomomorphismStructure
24+
#! * IsCategoryWithCoequalizers
2525
#! and not yet algorithmically
2626
#! * IsFinitelyPresentedCategory
2727
#! and furthermore mathematically

examples/notebooks/TS4.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@
112112
"text": [
113113
"A CAP category with name SkeletalCategoryOfTransitiveLeftGSets( S4 ) with 11 objects:\n",
114114
"\n",
115-
"24 primitive operations were used to derive 80 operations for this category which algorithmically\n",
115+
"25 primitive operations were used to derive 80 operations for this category which algorithmically\n",
116116
"* IsCategoryWithDecidableColifts\n",
117117
"* IsCategoryWithDecidableLifts\n",
118118
"* IsCategoryWithTerminalObject\n",

gap/SkeletalCategoryOfTransitiveLeftGSets.gi

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,46 @@ InstallMethod( SkeletalCategoryOfTransitiveLeftGSets,
342342

343343
end );
344344

345+
##
346+
AddProjectionOntoCoequalizerOfIdentityAndAutomorphisms( SkeletalTransitiveGSets,
347+
function ( SkeletalTransitiveGSets, target, diagram )
348+
local G, U, objects, t, l, gs, Ucoeq, index, cards, positions, pos, g, coeq;
349+
350+
G := UnderlyingGroup( SkeletalTransitiveGSets );
351+
352+
U := RepresentativesOfSubgroupsUpToConjugation( SkeletalTransitiveGSets );
353+
354+
objects := SetOfObjects( SkeletalTransitiveGSets );
355+
356+
t := ObjectNumber( target );
357+
358+
l := Length( diagram );
359+
360+
gs := List( [ 1 .. l ], i -> UnderlyingGroupElement( diagram[i] ) );
361+
362+
Ucoeq := Subgroup( G, Concatenation( GeneratorsOfGroup( U[t] ), gs ) );
363+
364+
index := Index( G, Ucoeq );
365+
366+
cards := CardinalitiesOfObjects( SkeletalTransitiveGSets );
367+
368+
positions := Filtered( [ 1 .. NumberOfObjects( SkeletalTransitiveGSets ) ], i -> cards[i] = index );
369+
370+
## pos := SafeUniqueEntry( positions, c -> IsConjugate( G, Ucoeq, U[c] ) );
371+
## but for performance we use:
372+
pos := SafeFirst( positions, c -> IsConjugate( G, Ucoeq, U[c] ) );
373+
374+
g := RepresentativeAction( G, Ucoeq, U[pos] );
375+
376+
coeq := objects[pos];
377+
378+
return MorphismConstructor( SkeletalTransitiveGSets,
379+
target,
380+
g,
381+
coeq );
382+
383+
end );
384+
345385
##
346386
AddIsHomSetInhabited( SkeletalTransitiveGSets,
347387
function ( SkeletalTransitiveGSets, source, target )

0 commit comments

Comments
 (0)