@@ -28,21 +28,84 @@ end );
28
28
# #
29
29
InstallMethod( FreydCategory,
30
30
[ IsCategoryOfGradedRows ] ,
31
- function ( underlying_category )
32
- local category, graded_ring;
33
-
34
- graded_ring := UnderlyingGradedRing( underlying_category );
35
-
36
- category := FREYD_CATEGORY( underlying_category, Concatenation( " Category of f.p. graded left modules over " , RingName( graded_ring ) ) );
37
-
38
- SetFilterObj( category, IsFpGradedLeftModules );
39
-
40
- AddObjectRepresentation( category, IsFreydCategoryObject and HasRelationMorphism and IsFpGradedLeftModulesObject );
41
-
42
- AddMorphismRepresentation( category, IsFreydCategoryMorphism and HasUnderlyingMorphism and IsFpGradedLeftModulesMorphism );
43
-
44
- return category;
45
-
31
+
32
+ function ( underlying_category )
33
+ local graded_ring, freyd, object_constructor, modeling_tower_object_constructor, object_datum, modeling_tower_object_datum, morphism_constructor, modeling_tower_morphism_constructor, morphism_datum, modeling_tower_morphism_datum, wrapper;
34
+
35
+ graded_ring := UnderlyingGradedRing( underlying_category );
36
+
37
+ freyd := FREYD_CATEGORY( underlying_category );
38
+
39
+ object_constructor := function ( cat, relation_morphism )
40
+
41
+ return CreateCapCategoryObjectWithAttributes( cat, RelationMorphism, relation_morphism );
42
+
43
+ end ;
44
+
45
+ modeling_tower_object_constructor := function ( cat, relation_morphism )
46
+
47
+ return CreateCapCategoryObjectWithAttributes( ModelingCategory( cat ), RelationMorphism, relation_morphism );
48
+
49
+ end ;
50
+
51
+ object_datum := function ( cat, object )
52
+
53
+ return RelationMorphism( object );
54
+
55
+ end ;
56
+
57
+ modeling_tower_object_datum := function ( cat, object )
58
+
59
+ return RelationMorphism( object );
60
+
61
+ end ;
62
+
63
+ morphism_constructor := function ( cat, source, underlying_morphism, range )
64
+
65
+ return CreateCapCategoryMorphismWithAttributes( cat, source, range, UnderlyingMorphism, underlying_morphism );
66
+
67
+ end ;
68
+
69
+ modeling_tower_morphism_constructor := function ( cat, source, underlying_morphism, range )
70
+
71
+ return CreateCapCategoryMorphismWithAttributes( ModelingCategory( cat ), source, range, UnderlyingMorphism, underlying_morphism );
72
+
73
+ end ;
74
+
75
+ morphism_datum := function ( cat, morphism )
76
+
77
+ return UnderlyingMorphism( morphism );
78
+
79
+ end ;
80
+
81
+ modeling_tower_morphism_datum := function ( cat, morphism )
82
+
83
+ return UnderlyingMorphism( morphism );
84
+
85
+ end ;
86
+
87
+ wrapper := WrapperCategory( freyd, rec (
88
+ name := Concatenation( " Category of f.p. graded left modules over " , RingName( graded_ring ) ),
89
+ category_filter := IsFreydCategory and IsFpGradedLeftModules,
90
+ category_object_filter := IsFreydCategoryObject and HasRelationMorphism and IsFpGradedLeftModulesObject,
91
+ category_morphism_filter := IsFreydCategoryMorphism and HasUnderlyingMorphism and IsFpGradedLeftModulesMorphism,
92
+ object_constructor := object_constructor,
93
+ object_datum := object_datum,
94
+ morphism_constructor := morphism_constructor,
95
+ morphism_datum := morphism_datum,
96
+ modeling_tower_object_constructor := modeling_tower_object_constructor,
97
+ modeling_tower_object_datum := modeling_tower_object_datum,
98
+ modeling_tower_morphism_constructor := modeling_tower_morphism_constructor,
99
+ modeling_tower_morphism_datum := modeling_tower_morphism_datum,
100
+ # enforce defaults
101
+ only_primitive_operations := false ,
102
+ wrap_range_of_hom_structure := false ,
103
+ ) );
104
+
105
+ SetUnderlyingCategory( wrapper, underlying_category );
106
+
107
+ return wrapper;
108
+
46
109
end );
47
110
48
111
# compute the category S-fpgrmod for a toric variety
@@ -58,19 +121,82 @@ end );
58
121
# #
59
122
InstallMethod( FreydCategory,
60
123
[ IsCategoryOfGradedColumns ] ,
61
- function ( underlying_category )
62
- local category, graded_ring;
63
-
64
- graded_ring := UnderlyingGradedRing( underlying_category );
65
-
66
- category := FREYD_CATEGORY( underlying_category, Concatenation( " Category of f.p. graded right modules over " , RingName( graded_ring ) ) );
67
-
68
- SetFilterObj( category, IsFpGradedRightModules );
69
-
70
- AddObjectRepresentation( category, IsFreydCategoryObject and HasRelationMorphism and IsFpGradedRightModulesObject );
71
-
72
- AddMorphismRepresentation( category, IsFreydCategoryMorphism and HasUnderlyingMorphism and IsFpGradedRightModulesMorphism );
73
-
74
- return category;
75
-
124
+
125
+ function ( underlying_category )
126
+ local graded_ring, freyd, object_constructor, modeling_tower_object_constructor, object_datum, modeling_tower_object_datum, morphism_constructor, modeling_tower_morphism_constructor, morphism_datum, modeling_tower_morphism_datum, wrapper;
127
+
128
+ graded_ring := UnderlyingGradedRing( underlying_category );
129
+
130
+ freyd := FREYD_CATEGORY( underlying_category );
131
+
132
+ object_constructor := function ( cat, relation_morphism )
133
+
134
+ return CreateCapCategoryObjectWithAttributes( cat, RelationMorphism, relation_morphism );
135
+
136
+ end ;
137
+
138
+ modeling_tower_object_constructor := function ( cat, relation_morphism )
139
+
140
+ return CreateCapCategoryObjectWithAttributes( ModelingCategory( cat ), RelationMorphism, relation_morphism );
141
+
142
+ end ;
143
+
144
+ object_datum := function ( cat, object )
145
+
146
+ return RelationMorphism( object );
147
+
148
+ end ;
149
+
150
+ modeling_tower_object_datum := function ( cat, object )
151
+
152
+ return RelationMorphism( object );
153
+
154
+ end ;
155
+
156
+ morphism_constructor := function ( cat, source, underlying_morphism, range )
157
+
158
+ return CreateCapCategoryMorphismWithAttributes( cat, source, range, UnderlyingMorphism, underlying_morphism );
159
+
160
+ end ;
161
+
162
+ modeling_tower_morphism_constructor := function ( cat, source, underlying_morphism, range )
163
+
164
+ return CreateCapCategoryMorphismWithAttributes( ModelingCategory( cat ), source, range, UnderlyingMorphism, underlying_morphism );
165
+
166
+ end ;
167
+
168
+ morphism_datum := function ( cat, morphism )
169
+
170
+ return UnderlyingMorphism( morphism );
171
+
172
+ end ;
173
+
174
+ modeling_tower_morphism_datum := function ( cat, morphism )
175
+
176
+ return UnderlyingMorphism( morphism );
177
+
178
+ end ;
179
+
180
+ wrapper := WrapperCategory( freyd, rec (
181
+ name := Concatenation( " Category of f.p. graded right modules over " , RingName( graded_ring ) ),
182
+ category_filter := IsFreydCategory and IsFpGradedRightModules,
183
+ category_object_filter := IsFreydCategoryObject and HasRelationMorphism and IsFpGradedRightModulesObject,
184
+ category_morphism_filter := IsFreydCategoryMorphism and HasUnderlyingMorphism and IsFpGradedRightModulesMorphism,
185
+ object_constructor := object_constructor,
186
+ object_datum := object_datum,
187
+ morphism_constructor := morphism_constructor,
188
+ morphism_datum := morphism_datum,
189
+ modeling_tower_object_constructor := modeling_tower_object_constructor,
190
+ modeling_tower_object_datum := modeling_tower_object_datum,
191
+ modeling_tower_morphism_constructor := modeling_tower_morphism_constructor,
192
+ modeling_tower_morphism_datum := modeling_tower_morphism_datum,
193
+ # enforce defaults
194
+ only_primitive_operations := false ,
195
+ wrap_range_of_hom_structure := false ,
196
+ ) );
197
+
198
+ SetUnderlyingCategory( wrapper, underlying_category );
199
+
200
+ return wrapper;
201
+
76
202
end );
0 commit comments