Skip to content

Commit 08890e2

Browse files
clean up in GroupsAsCats
1 parent 1ae3e09 commit 08890e2

File tree

2 files changed

+121
-85
lines changed

2 files changed

+121
-85
lines changed

GroupsAsCategoriesForCAP/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 := "GroupsAsCategoriesForCAP",
1212
Subtitle := "Groups as categories on one object",
13-
Version := "2025.08-01",
13+
Version := "2025.11-01",
1414
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)( ),
1515
License := "GPL-2.0-or-later",
1616

GroupsAsCategoriesForCAP/gap/GroupsAsCats.gi

Lines changed: 120 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ InstallMethod( GroupAsCategory,
1515
[ IsGroup ],
1616

1717
function( group )
18-
local group_name, category, is_finite;
18+
local group_name, group_as_category, is_finite;
1919

2020
if HasName( group ) then
2121
group_name := Name( group );
@@ -25,7 +25,7 @@ InstallMethod( GroupAsCategory,
2525
group_name := String( group );
2626
fi;
2727

28-
category :=
28+
group_as_category :=
2929
CreateCapCategoryWithDataTypes(
3030
Concatenation( "GroupAsCategory( ", group_name," )" ),
3131
IsGroupAsCategory,
@@ -37,58 +37,58 @@ InstallMethod( GroupAsCategory,
3737
fail
3838
: overhead := false );
3939

40-
category!.compiler_hints := rec(
41-
category_attribute_names := [
42-
"UnderlyingGroup",
43-
],
44-
);
40+
group_as_category!.compiler_hints :=
41+
rec( category_attribute_names := [
42+
"UnderlyingGroup",
43+
],
44+
);
4545

46-
SetUnderlyingGroup( category, group );
46+
SetUnderlyingGroup( group_as_category, group );
4747

48-
SetIsObjectFiniteCategory( category, true );
48+
SetIsObjectFiniteCategory( group_as_category, true );
4949

5050
is_finite := HasIsFinite( group ) and IsFinite( group );
5151

5252
if is_finite then
5353

54-
SetIsFiniteCategory( category, true );
54+
SetIsFiniteCategory( group_as_category, true );
5555

5656
if IsPackageMarkedForLoading( "FinSetsForCAP", ">= 2023.07-03" ) then
5757

58-
SET_HOMOMORPHISM_STRUCTURE_ATTRIBUTES_FOR_GROUP_AS_CATEGORY( category );
58+
SET_HOMOMORPHISM_STRUCTURE_ATTRIBUTES_FOR_GROUP_AS_CATEGORY( group_as_category );
5959

6060
fi;
6161

6262
fi;
6363

64-
INSTALL_FUNCTIONS_FOR_GROUP_AS_CATEGORY( category, is_finite );
64+
INSTALL_FUNCTIONS_FOR_GROUP_AS_CATEGORY( group_as_category, is_finite );
6565

66-
Finalize( category );
66+
Finalize( group_as_category );
6767

68-
return category;
68+
return group_as_category;
6969

7070
end );
7171

7272
##
7373
InstallMethod( GroupAsCategoryUniqueObject,
7474
[ IsGroupAsCategory ],
7575

76-
function( category )
76+
function( group_as_category )
7777

78-
return CreateCapCategoryObjectWithAttributes( category );
78+
return CreateCapCategoryObjectWithAttributes( group_as_category );
7979

8080
end );
8181

8282
##
8383
InstallMethod( GroupAsCategoryMorphismOp,
8484
[ IsGroupAsCategory, IsObject ],
8585

86-
function( category, element )
86+
function( group_as_category, element )
8787
local unique_object;
8888

89-
unique_object := GroupAsCategoryUniqueObject( category );
89+
unique_object := GroupAsCategoryUniqueObject( group_as_category );
9090

91-
return CreateCapCategoryMorphismWithAttributes( category,
91+
return CreateCapCategoryMorphismWithAttributes( group_as_category,
9292
unique_object,
9393
unique_object,
9494
UnderlyingGroupElement, element );
@@ -99,9 +99,9 @@ end );
9999
InstallOtherMethod( GroupAsCategoryMorphism,
100100
[ IsObject, IsGroupAsCategory ],
101101

102-
function( element, category )
102+
function( element, group_as_category )
103103

104-
return GroupAsCategoryMorphism( category, element );
104+
return GroupAsCategoryMorphism( group_as_category, element );
105105

106106
end );
107107

@@ -141,9 +141,9 @@ end );
141141
InstallMethod( ElementsOfUnderlyingGroup,
142142
[ IsGroupAsCategory ],
143143

144-
function( CG )
144+
function( group_as_category )
145145

146-
return Elements( UnderlyingGroup( CG ) );
146+
return Elements( UnderlyingGroup( group_as_category ) );
147147

148148
end );
149149

@@ -165,123 +165,157 @@ end );
165165

166166
InstallGlobalFunction( INSTALL_FUNCTIONS_FOR_GROUP_AS_CATEGORY,
167167

168-
function( category, is_finite )
169-
local group, equality_func,
170-
sets, t_obj, elements, size, RG, HOM_PERMUTATION_ARRAY;
168+
function( group_as_category, is_finite )
169+
local group;
171170

172-
group := UnderlyingGroup( category );
171+
group := UnderlyingGroup( group_as_category );
173172

174173
##
175-
AddIsEqualForObjects( category, {cat, a, b} -> true );
176-
177-
equality_func := {cat, alpha, beta} -> UnderlyingGroupElement( alpha ) = UnderlyingGroupElement( beta );
178-
179-
##
180-
AddIsEqualForMorphisms( category, equality_func );
174+
AddIsEqualForObjects( group_as_category,
175+
function( group_as_category, a, b )
176+
177+
return true;
178+
179+
end );
181180

182181
##
183-
AddIsCongruentForMorphisms( category, equality_func );
182+
AddIsEqualForMorphisms( group_as_category,
183+
function( group_as_category, alpha, beta )
184+
185+
return UnderlyingGroupElement( alpha ) = UnderlyingGroupElement( beta );
186+
187+
end );
184188

185189
##
186-
AddIsWellDefinedForObjects( category, {cat, x} -> IsIdenticalObj( category, CapCategory( x ) ) );
190+
AddIsCongruentForMorphisms( group_as_category,
191+
function( group_as_category, alpha, beta )
192+
193+
return IsEqualForMorphisms( group_as_category, alpha, beta );
194+
195+
end );
187196

188197
##
189-
AddIsWellDefinedForMorphisms( category,
190-
function( cat, alpha )
198+
AddIsWellDefinedForObjects( group_as_category,
199+
function( group_as_category, x )
191200

192-
return UnderlyingGroupElement( alpha ) in UnderlyingGroup( category );
201+
return IsIdenticalObj( group_as_category, CapCategory( x ) );
193202

194203
end );
195204

196205
##
197-
AddPreCompose( category,
198-
function( cat, alpha, beta )
206+
AddIsWellDefinedForMorphisms( group_as_category,
207+
function( group_as_category, alpha )
199208

200-
return GroupAsCategoryMorphism(
201-
category,
202-
UnderlyingGroupElement( alpha ) * UnderlyingGroupElement( beta )
203-
);
209+
return UnderlyingGroupElement( alpha ) in UnderlyingGroup( group_as_category );
204210

205211
end );
206212

207213
##
208-
AddIdentityMorphism( category,
209-
function( cat, unique_object )
214+
AddPreCompose( group_as_category,
215+
function( group_as_category, alpha, beta )
210216

211-
return GroupAsCategoryMorphism(
212-
category,
213-
One( group )
214-
);
217+
return GroupAsCategoryMorphism( group_as_category,
218+
UnderlyingGroupElement( alpha ) * UnderlyingGroupElement( beta ) );
215219

216220
end );
217221

218222
##
219-
AddInverseForMorphisms( category,
220-
function( cat, alpha )
223+
AddIdentityMorphism( group_as_category,
224+
function( group_as_category, unique_object )
221225

222-
return GroupAsCategoryMorphism(
223-
category,
224-
Inverse( UnderlyingGroupElement( alpha ) )
225-
);
226+
return GroupAsCategoryMorphism( group_as_category,
227+
One( group ) );
226228

227229
end );
228230

229231
##
230-
AddIsIsomorphism( category, {cat, mor} -> true );
232+
AddInverseForMorphisms( group_as_category,
233+
function( group_as_category, alpha )
234+
235+
return GroupAsCategoryMorphism( group_as_category,
236+
Inverse( UnderlyingGroupElement( alpha ) ) );
237+
238+
end );
231239

232240
##
233-
AddIsEpimorphism( category, {cat, mor} -> true );
241+
AddIsIsomorphism( group_as_category,
242+
function( group_as_category, mor )
243+
244+
return true;
245+
246+
end );
234247

235248
##
236-
AddIsMonomorphism( category, {cat, mor} -> true );
249+
AddIsEpimorphism( group_as_category,
250+
function( group_as_category, mor )
251+
252+
return true;
253+
254+
end );
237255

238256
##
239-
AddIsLiftable( category, {cat, mor1, mor2} -> true );
257+
AddIsMonomorphism( group_as_category,
258+
function( group_as_category, mor )
259+
260+
return true;
261+
262+
end );
240263

241264
##
242-
AddIsColiftable( category, {cat, mor1, mor2} -> true );
265+
AddIsLiftable( group_as_category,
266+
function( group_as_category, mor1, mor2 )
267+
268+
return true;
269+
270+
end );
243271

244272
##
245-
AddLift( category,
246-
function( cat, alpha, beta )
247-
return GroupAsCategoryMorphism(
248-
category,
249-
UnderlyingGroupElement( alpha ) * Inverse( UnderlyingGroupElement( beta ) )
250-
);
273+
AddIsColiftable( group_as_category,
274+
function( group_as_category, mor1, mor2 )
275+
276+
return true;
277+
251278
end );
252279

253280
##
254-
AddColift( category,
255-
function( cat, alpha, beta )
256-
return GroupAsCategoryMorphism(
257-
category,
258-
Inverse( UnderlyingGroupElement( alpha ) ) * UnderlyingGroupElement( beta )
259-
);
281+
AddLift( group_as_category,
282+
function( group_as_category, alpha, beta )
283+
284+
return GroupAsCategoryMorphism( group_as_category,
285+
UnderlyingGroupElement( alpha ) * Inverse( UnderlyingGroupElement( beta ) ) );
286+
260287
end );
261288

262289
##
263-
AddSetOfObjectsOfCategory( category,
264-
function( cat )
290+
AddColift( group_as_category,
291+
function( group_as_category, alpha, beta )
265292

266-
return [ GroupAsCategoryUniqueObject( cat ) ];
293+
return GroupAsCategoryMorphism( group_as_category,
294+
Inverse( UnderlyingGroupElement( alpha ) ) * UnderlyingGroupElement( beta ) );
267295

268296
end );
297+
298+
##
299+
AddSetOfObjectsOfCategory( group_as_category,
300+
function( group_as_category )
269301

270-
if is_finite then
302+
return [ GroupAsCategoryUniqueObject( group_as_category ) ];
271303

272-
elements := ElementsOfUnderlyingGroup( category );
304+
end );
305+
306+
if is_finite then
273307

274308
##
275-
AddSetOfMorphismsOfFiniteCategory( category,
276-
function( cat )
309+
AddSetOfMorphismsOfFiniteCategory( group_as_category,
310+
function( group_as_category )
277311

278-
return List( elements, el -> GroupAsCategoryMorphism( category, el ) );
312+
return List( ElementsOfUnderlyingGroup( group_as_category ), el -> GroupAsCategoryMorphism( group_as_category, el ) );
279313

280314
end );
281315

282316
if IsPackageMarkedForLoading( "FinSetsForCAP", ">= 2023.07-03" ) then
283317

284-
INSTALL_HOMOMORPHISM_STRUCTURE_FOR_GROUP_AS_CATEGORY( category );
318+
INSTALL_HOMOMORPHISM_STRUCTURE_FOR_GROUP_AS_CATEGORY( group_as_category );
285319

286320
fi;
287321

@@ -315,7 +349,8 @@ InstallOtherMethod( \/,
315349

316350
##
317351
InstallMethod( Down,
318-
[ IsGroupAsCategoryObject ],
352+
[ IsGroupAsCategoryObject ],
353+
319354
function( obj )
320355

321356
return "*";
@@ -324,7 +359,8 @@ end );
324359

325360
##
326361
InstallMethod( DownOnlyMorphismData,
327-
[ IsGroupAsCategoryMorphism ],
362+
[ IsGroupAsCategoryMorphism ],
363+
328364
function( mor )
329365

330366
return UnderlyingGroupElement( mor );

0 commit comments

Comments
 (0)