Skip to content

Commit 9033c59

Browse files
author
Tom Kuhmichel
committed
Use modeling_* options in ModulePresentationsForCAP
Closes homalg-project#980
1 parent 87ccffd commit 9033c59

File tree

1 file changed

+112
-70
lines changed

1 file changed

+112
-70
lines changed

ModulePresentationsForCAP/gap/ModulePresentationsAsFreydCategoryOfCategoryOfRowsOrColumns.gi

Lines changed: 112 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -15,60 +15,82 @@ InstallMethod( LeftPresentationsAsFreydCategoryOfCategoryOfRows,
1515
[ IsHomalgRing ],
1616

1717
function( ring )
18-
local category_of_rows, freyd, object_constructor, object_datum, morphism_constructor, morphism_datum, wrapper;
18+
local category_of_rows, freyd, object_constructor, modeling_tower_object_constructor, object_datum, modeling_tower_object_datum, morphism_constructor, modeling_tower_morphism_datum, morphism_datum, modeling_tower_morphism_constructor, wrapper;
1919

2020
category_of_rows := CategoryOfRows( ring : FinalizeCategory := true );
2121

22-
freyd := FREYD_CATEGORY( category_of_rows : FinalizeCategory := true );
22+
freyd := FreydCategory( category_of_rows : FinalizeCategory := true );
2323

24-
object_constructor := function( cat, object_in_freyd )
25-
26-
return ObjectifyObjectForCAPWithAttributes( rec( ), cat,
27-
UnderlyingMatrix, UnderlyingMatrix( RelationMorphism( object_in_freyd ) )
28-
);
24+
##
25+
object_constructor := function( cat, matrix)
2926

27+
return ObjectifyObjectForCAPWithAttributes( rec(), cat,
28+
UnderlyingMatrix, matrix );
29+
3030
end;
3131

32-
object_datum := function( cat, obj )
33-
local freyd, category_of_rows, relation_morphism;
32+
##
33+
modeling_tower_object_constructor := function( cat, matrix )
34+
local freyd, rows;
3435

3536
freyd := ModelingCategory( cat );
3637

37-
category_of_rows := UnderlyingCategory( freyd );
38+
rows := UnderlyingCategory( freyd );
39+
40+
return FreydCategoryObject( freyd,
41+
AsCategoryOfRowsMorphism( rows, matrix ) );
42+
43+
end;
44+
45+
##
46+
object_datum := function( cat, obj )
3847

39-
relation_morphism := CategoryOfRowsMorphism( category_of_rows,
40-
CategoryOfRowsObject( category_of_rows, NrRows( UnderlyingMatrix( obj ) ) ),
41-
UnderlyingMatrix( obj ),
42-
CategoryOfRowsObject( category_of_rows, NrCols( UnderlyingMatrix( obj ) ) )
43-
);
48+
return UnderlyingMatrix( obj );
4449

45-
return FreydCategoryObject( freyd, relation_morphism );
50+
end;
51+
52+
##
53+
modeling_tower_object_datum := function( cat, obj )
54+
55+
return UnderlyingMatrix( RelationMorphism( obj ) );
4656

4757
end;
4858

49-
morphism_constructor := function( cat, source, morphism_in_freyd, range )
59+
##
60+
morphism_constructor := function( cat, source, underlying_matrix, range )
5061

51-
return ObjectifyMorphismWithSourceAndRangeForCAPWithAttributes( rec( ), cat,
52-
source,
53-
range,
54-
UnderlyingMatrix, UnderlyingMatrix( UnderlyingMorphism( morphism_in_freyd ) ) );
62+
return ObjectifyMorphismWithSourceAndRangeForCAPWithAttributes( rec(), cat,
63+
source,
64+
range,
65+
UnderlyingMatrix, underlying_matrix );
5566

5667
end;
5768

58-
morphism_datum := function( cat, mor )
59-
local freyd, category_of_rows, morphism_datum;
69+
##
70+
modeling_tower_morphism_constructor := function( cat, source, underlying_matrix, range )
71+
local freyd, rows, rows_morphism;
6072

6173
freyd := ModelingCategory( cat );
6274

63-
category_of_rows := UnderlyingCategory( freyd );
75+
rows := UnderlyingCategory( freyd );
76+
77+
rows_morphism := CategoryOfRowsMorphism( rows, source, underlying_matrix, range );
78+
79+
return AsFreydCategoryMorphism( freyd, rows_morphism );
80+
81+
end;
82+
83+
##
84+
morphism_datum := function( cat, mor )
85+
86+
return UnderlyingMatrix( mor );
6487

65-
morphism_datum := CategoryOfRowsMorphism( category_of_rows,
66-
CategoryOfRowsObject( category_of_rows, NrRows( UnderlyingMatrix( mor ) ) ),
67-
UnderlyingMatrix( mor ),
68-
CategoryOfRowsObject( category_of_rows, NrCols( UnderlyingMatrix( mor ) ) )
69-
);
88+
end;
89+
90+
##
91+
modeling_tower_morphism_datum := function( cat, mor )
7092

71-
return FreydCategoryMorphism( freyd, ObjectDatum( cat, Source( mor ) ), morphism_datum, ObjectDatum( cat, Range( mor ) ) );
93+
return UnderlyingMatrix( UnderlyingMorphism( mor ) );
7294

7395
end;
7496

@@ -81,11 +103,10 @@ InstallMethod( LeftPresentationsAsFreydCategoryOfCategoryOfRows,
81103
object_datum := object_datum,
82104
morphism_constructor := morphism_constructor,
83105
morphism_datum := morphism_datum,
84-
# TODO: use new system
85-
modeling_tower_object_constructor := { cat, obj } -> obj,
86-
modeling_tower_object_datum := { cat, obj } -> obj,
87-
modeling_tower_morphism_constructor := { cat, source, mor, range } -> mor,
88-
modeling_tower_morphism_datum := { cat, mor } -> mor,
106+
modeling_tower_object_constructor := modeling_tower_object_constructor,
107+
modeling_tower_object_datum := modeling_tower_object_datum,
108+
modeling_tower_morphism_constructor := modeling_tower_morphism_constructor,
109+
modeling_tower_morphism_datum := modeling_tower_morphism_datum,
89110
only_primitive_operations := true,
90111
) : FinalizeCategory := false );
91112

@@ -129,60 +150,82 @@ InstallMethod( RightPresentationsAsFreydCategoryOfCategoryOfColumns,
129150
[ IsHomalgRing ],
130151

131152
function( ring )
132-
local category_of_columns, freyd, object_constructor, object_datum, morphism_constructor, morphism_datum, wrapper;
153+
local category_of_columns, freyd, object_constructor, modeling_tower_object_constructor, object_datum, modeling_tower_object_datum, morphism_constructor, modeling_tower_morphism_datum, morphism_datum, modeling_tower_morphism_constructor, wrapper;
133154

134155
category_of_columns := CategoryOfColumns( ring : FinalizeCategory := true );
135156

136-
freyd := FREYD_CATEGORY( category_of_columns : FinalizeCategory := true );
157+
freyd := FreydCategory( category_of_columns : FinalizeCategory := true );
137158

138-
object_constructor := function( cat, object_in_freyd )
139-
140-
return ObjectifyObjectForCAPWithAttributes( rec( ), cat,
141-
UnderlyingMatrix, UnderlyingMatrix( RelationMorphism( object_in_freyd ) )
142-
);
159+
##
160+
object_constructor := function( cat, matrix)
143161

162+
return ObjectifyObjectForCAPWithAttributes( rec(), cat,
163+
UnderlyingMatrix, matrix );
164+
144165
end;
145166

146-
object_datum := function( cat, obj )
147-
local freyd, category_of_columns, relation_morphism;
167+
##
168+
modeling_tower_object_constructor := function( cat, matrix )
169+
local freyd, columns;
148170

149171
freyd := ModelingCategory( cat );
150172

151-
category_of_columns := UnderlyingCategory( freyd );
173+
columns := UnderlyingCategory( freyd );
174+
175+
return FreydCategoryObject( freyd,
176+
AsCategoryOfColumnsMorphism( columns, matrix ) );
177+
178+
end;
179+
180+
##
181+
object_datum := function( cat, obj )
152182

153-
relation_morphism := CategoryOfColumnsMorphism( category_of_columns,
154-
CategoryOfColumnsObject( category_of_columns, NrCols( UnderlyingMatrix( obj ) ) ),
155-
UnderlyingMatrix( obj ),
156-
CategoryOfColumnsObject( category_of_columns, NrRows( UnderlyingMatrix( obj ) ) )
157-
);
183+
return UnderlyingMatrix( obj );
158184

159-
return FreydCategoryObject( freyd, relation_morphism );
185+
end;
186+
187+
##
188+
modeling_tower_object_datum := function( cat, obj )
189+
190+
return UnderlyingMatrix( RelationMorphism( obj ) );
160191

161192
end;
162193

163-
morphism_constructor := function( cat, source, morphism_in_freyd, range )
194+
##
195+
morphism_constructor := function( cat, source, underlying_matrix, range )
164196

165-
return ObjectifyMorphismWithSourceAndRangeForCAPWithAttributes( rec( ), cat,
166-
source,
167-
range,
168-
UnderlyingMatrix, UnderlyingMatrix( UnderlyingMorphism( morphism_in_freyd ) ) );
197+
return ObjectifyMorphismWithSourceAndRangeForCAPWithAttributes( rec(), cat,
198+
source,
199+
range,
200+
UnderlyingMatrix, underlying_matrix );
169201

170202
end;
171203

172-
morphism_datum := function( cat, mor )
173-
local freyd, category_of_columns, morphism_datum;
204+
##
205+
modeling_tower_morphism_constructor := function( cat, source, underlying_matrix, range )
206+
local freyd, columns, columns_morphism;
174207

175208
freyd := ModelingCategory( cat );
176209

177-
category_of_columns := UnderlyingCategory( freyd );
210+
columns := UnderlyingCategory( freyd );
211+
212+
columns_morphism := CategoryOfColumnsMorphism( columns, source, underlying_matrix, range );
213+
214+
return AsFreydCategoryMorphism( freyd, columns_morphism );
215+
216+
end;
217+
218+
##
219+
morphism_datum := function( cat, mor )
220+
221+
return UnderlyingMatrix( mor );
178222

179-
morphism_datum := CategoryOfColumnsMorphism( category_of_columns,
180-
CategoryOfColumnsObject( category_of_columns, NrCols( UnderlyingMatrix( mor ) ) ),
181-
UnderlyingMatrix( mor ),
182-
CategoryOfColumnsObject( category_of_columns, NrRows( UnderlyingMatrix( mor ) ) )
183-
);
223+
end;
224+
225+
##
226+
modeling_tower_morphism_datum := function( cat, mor )
184227

185-
return FreydCategoryMorphism( freyd, ObjectDatum( cat, Source( mor ) ), morphism_datum, ObjectDatum( cat, Range( mor ) ) );
228+
return UnderlyingMatrix( UnderlyingMorphism( mor ) );
186229

187230
end;
188231

@@ -195,11 +238,10 @@ InstallMethod( RightPresentationsAsFreydCategoryOfCategoryOfColumns,
195238
object_datum := object_datum,
196239
morphism_constructor := morphism_constructor,
197240
morphism_datum := morphism_datum,
198-
# TODO: use new system
199-
modeling_tower_object_constructor := { cat, obj } -> obj,
200-
modeling_tower_object_datum := { cat, obj } -> obj,
201-
modeling_tower_morphism_constructor := { cat, source, mor, range } -> mor,
202-
modeling_tower_morphism_datum := { cat, mor } -> mor,
241+
modeling_tower_object_constructor := modeling_tower_object_constructor,
242+
modeling_tower_object_datum := modeling_tower_object_datum,
243+
modeling_tower_morphism_constructor := modeling_tower_morphism_constructor,
244+
modeling_tower_morphism_datum := modeling_tower_morphism_datum,
203245
only_primitive_operations := true,
204246
) : FinalizeCategory := false );
205247

0 commit comments

Comments
 (0)